اطلاعیه

Collapse
No announcement yet.

اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

    با سلام .

    من یک ماژول VS1003 خریدم .


    اونو به مگا 32 با این شماتیک وصل کردم . پایه های TX , RX را به جایی وصل نکردم .




    http://www.up2.98ia.com/images/05845720100353587717.jpg
    بقیه پایه هم عینا نام پایه هایی که روی ماژول نوشته .

    فایل LISTA.TXT تو MMC یخته میشه ولی هیچی توش نیست .
    MP3 هم پخش نمیشه حتی اگه اسم فایلو مستقیم ارسال کنم .

    اینم سورسم ؟؟

    کد:
    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////
    '
    ' MP_3_PLAYER with VS1001k FOR MP3.FILES FORMAT Name 8.3 FAT16 AVR-DOS 5.5
    ' data 14-06-2007 versione BASCOM 1.8.11.3 AVR-DOS 5.5
    ' written by GIOVANNI DE LUCA
    ' HTTP://delucagiovanni.interfree.it       robot applications and others
    ' HTTP://WWW.LNS.INFN.IT             nuclear phisics applications
    ' HTTP://www.youtube.com/tubincolo        my video mobile-robots
    ' deluca@lns.infn.it               my e-mail
    ' to control it's used serial port com1 and pul "UP" to change songs
    ' to make test I used 64Mb MMC with 20 songs in the MMC
    ' but I thing that it's possible read bigger MMC memory without problem
    '
    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////
    
    $prog &HFF , &H4F , &HC5 , &HFF               'FUSE BITS generated
    $regfile = "M32def.dat "                  'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
    $crystal = 8000000
    Config Porta = Output
    Porta = 0
    Set Porta.0
    Wait 3
    Reset Porta.0
                              'BUT this NOT TESTED
    '-------------------------------------------------------------------------------
    Config Timer1 = Timer , Prescale = 64
    Config Clock = Soft
    Enable Interrupts
    Enable Timer1
    On Timer1 Timer_1
    Config Date = Dmy , Separator = .
    '-------------------------------------------------------------------------------
     Vs_clock Alias Portd.6
     Vs_mosi Alias Portd.5
     Vs_miso Alias Pind.4
     Xcs Alias Portd.3
     Bsync Alias Portd.2
     Dreq Alias Pind.1
     Xreset Alias Portd.0
     Led Alias Portb.5
     Avanti Alias Pinb.6
    '-------------------------------------------------------------------------------
    Config Avanti = Input                    'pulsante avanti
    Config Led = Output                     'led
    Config Vs_miso = Input                   'serial input vs-1001
    Config Vs_mosi = Output                   'serial out  vs-1001
    Config Vs_clock = Output                  'serial clock vs-1001
    Config Xcs = Output                     'VS Chip Select
    Config Xreset = Output                   'VS Reset
    Config Dreq = Input                     'VS Data Request
    Config Bsync = Output                    'VS Stream Request
    '-------------------------------------------------------------------------------
    Declare Sub Vs_init()
    Declare Sub Soft_reset()
    Declare Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
    Declare Function Vs_read(byval Vs_address As Byte) As Word
    Declare Sub Send_mp3(byval Filename As String)
    '-------------------------------------------------------------------------------
    Const Vs_rd = &B0000_0011                  'Write command vs1001
    Const Vs_wr = &B0000_0010                  'Read command vs1001
    Const Vs_mode = 0
    Const Vs_status = 1
    Const Vs_clockf = 3
    Const Vs_decode_time = 4
    Const Vs_audata = 5
    Const Vs_volume = 11
    '-------------------------------------------------------------------------------
    Dim B As Byte
    Dim I As Integer
    Dim J As Long
    Dim Curbyte As Long
    Dim S As String * 20
    Dim Sample_rate As Word
    Dim Bit_rate As Word
    Dim Is_stereo As Word
    Dim Audata As Word
    Dim Filename As String * 11
    Dim Mmc_data(512) As Byte                  '512 byte
    Dim Tempo_new As Word
    Dim Tempo_old As Word
    Dim Flag_read As Bit
    Dim Flag_play As Bit
    Dim Comando As String * 10
    Dim Mode_low As Byte
    Dim Mode_hig As Byte
    Dim Volume As Word
    Dim Volume_low As Byte
    Dim Volume_hig As Byte
    '-------------------------------------------------------------------------------
    $include "Config_AVR-DOS.BAS"
    $include "Config_MMC.bas"
    Wait 3
    B = Drivereset()
    If Drivecheck() <> 0 Then
    Set Porta.0
    Wait 2
    Reset Porta.0
    End If
    If Driveinit() <> 0 Then
    Set Porta.1
    Wait 2
    Reset Porta.1
    End If
    If Initfilesystem(1) <> 0 Then
    Set Porta.2
    Wait 2
    Reset Porta.2
    End If
    '-------------------------------------------------------------------------------
    Bsync = 0
    Xreset = 0
    Xcs = 1
    Portb.6 = 1                         'res pull up
    Flag_play = 0                        'sta suonando ?
    Flag_read = 1
    '-------------------------------------------------------------------------------
    Open "Lista.txt" For Output As #9
    Print #9 , "Ali - SOHEIL"                  'create file.list in MMC
    S = Dir( "*.mp3")
    While Len(s) > 0
     ' Print S ; " " ; Filedate() ; " " ; Filetime() ; " " ; Filelen()
      Print #9 , S                       'memorizza la lista
      S = Dir()
    Wend
    Close #9
    End                        'gia letto ?
    '-------------------------------------------------------------------------------
    '-------------------------- PROGRAM START -------------------------------------
    '-------------------------------------------------------------------------------
    Set Porta.4
    Vs_init
    Wait 3                           'reset hardware e inizializza
    Reset Porta.4
    Wait 1
    '-------------------------------------------------------------------------------
    '--------------------------- MAIN PROGRAMM -------------------------------------
    '-------------------------------------------------------------------------------
    S = "azan.mp3"
    Set Porta.4                         'READ filename Mp3
    Call Send_mp3(s)
    Set Porta.3                         'play mp3
    End
    
    '(
    Do
     Open "Lista.txt" For Input As #9             'OPEN LA LISTA
        While Eof(#9) = 0
          Line Input #9 , S                'READ filename Mp3
          Call Send_mp3(s)                 'play mp3
        Wend
     Close #9
    Loop
    End
    ')
    '-------------------------------------------------------------------------------
    '---------------------------- TIMER 1 ------------------------------------------
    '-------------------------------------------------------------------------------
    Timer_1:
       If Bsync = 0 And Flag_play = 1 And Flag_read = 1 Then 'per leggere inforamzioni
        Flag_read = 0
        Audata = Vs_read(vs_audata)
        Sample_rate = Audata And &H1E00
        Rotate Sample_rate , Right , 9
        Bit_rate = Audata And &H1FF
        Is_stereo = Audata And &H8000
        Rotate Is_stereo , Right , 15
        ' Print Sample_rate ; "," ; Bit_rate ; " Kbs," ; Is_stereo    'print informations
       End If
    
       If Bsync = 0 And Flag_play = 1 And Flag_read = 0 Then
        Tempo_new = Vs_read(vs_decode_time)
          ' If Tempo_new <> Tempo_old Then Print Tempo_new ; " Sec"
        Tempo_old = Tempo_new
       End If
    Return
    '-------------------------------------------------------------------------------
    '------------------------------ MP3 SUBROUTINES --------------------------------
    '-------------------------------------------------------------------------------
    Function Vs_read(byval Vs_address As Byte) As Word
     Xcs = 0                          'Xcs low
      B = Vs_rd
      Shiftout Vs_mosi , Vs_clock , B , 1
      Shiftout Vs_mosi , Vs_clock , Vs_address , 1
      B = 0
      Shiftin Vs_miso , Vs_clock , B , 1
      Vs_read = B
      Shift Vs_read , Left , 8
      B = 0
      Shiftin Vs_miso , Vs_clock , B , 1
      Vs_read = Vs_read + B
     Xcs = 1                          'Xcs high
    End Function
    '-------------------------------------------------------------------------------
    '-------------------------------- WRITE ROUTINE --------------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
     Xcs = 0
      B = Vs_wr
      Shiftout Vs_mosi , Vs_clock , B , 1
      Shiftout Vs_mosi , Vs_clock , Vs_address , 1
      Shiftout Vs_mosi , Vs_clock , Data1 , 1
      Shiftout Vs_mosi , Vs_clock , Data2 , 1
     Xcs = 1
    End Sub
    
    
    
    '-------------------------------------------------------------------------------
    '------------------------------- RESETTA E INIZILIZZA --------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_init()
     Xreset = 0
      Waitms 5
     Xreset = 1
      Waitms 10
    
     Do : Led = Dreq : Loop Until Dreq = 1
     Vs_write Vs_mode , &H0 , &H4               'reset
    
     Do : Led = Dreq : Loop Until Dreq = 1
     Vs_write Vs_mode , &H0 , &H0
    
     Do : Led = Dreq : Loop Until Dreq = 1
     Mode_low.7 = 0                      'set to zero
     Vs_write Vs_mode , &H4 , Mode_low             'bass
    
      Do : Led = Dreq : Loop Until Dreq = 1
     Vs_write Vs_mode , &H4 , &H40
    
     Do : Led = Dreq : Loop Until Dreq = 1
     Vs_write Vs_clockf , &H9B , &HE8             'clockf 12.288 MHz VS1003
    
     Do : Led = Dreq : Loop Until Dreq = 1
     Vs_write Vs_volume , &H0E , &H0E             'volume =0 massimo
    
    End Sub
    '-------------------------------------------------------------------------------
    '--------------------------- SOFT RESET VS1001 ---------------------------------
    '-------------------------------------------------------------------------------
    Sub Soft_reset
     Do : Led = Dreq : Loop Until Dreq = 1           'wait Dreq
     Vs_write Vs_mode , &H0 , &H4               'reset
    
    End Sub
    '-------------------------------------------------------------------------------
    '---------------------------- SEND FILE MP3 ------------------------------------
    '-------------------------------------------------------------------------------
    Sub Send_mp3(byval Filename As String)
     Soft_reset                        'resetta vs1001
     Flag_read = 1                       'per leggere una volta sample rate etc
     Flag_play = 0                       'inizia a leggere dopo che è stato letto il primo pacchetto
    
     Open Filename For Binary As #10              'apri il file mp3 e play song
    
     Do : Led = Dreq : Loop Until Dreq = 1           'wait Dreq
    
     While Eof(#10) = 0
        Get #10 , Mmc_data(1) , , 512            'preleva 512 byte
        Do : Led = Dreq : Loop Until Dreq = 1        'wait Dreq
    
        For I = 1 To 16
          For J = 1 To 32
           Bsync = 1
            Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte) , 1
           Bsync = 0
          Incr Curbyte
          Next J
        Do : Led = Dreq : Loop Until Dreq = 1        'wait Dreq
        Next I                        'first 32
      Curbyte = 1                       'after 16 16x32=512 byte
      If Avanti = 0 Then Goto Esci              'pulsante up
      Flag_play = 1                      'playing primo pacchetto
     Wend
    
    Esci:
     Flag_play = 0                       'stop play
     Close #10
     For I = 1 To 2048                     'send 2048 zeros to clear buffer
      B = 0
      Shiftout Vs_mosi , Vs_clock , B , 1           'send 2048 byte
     Next I
    
     Waitms 100                        'aspetta 100
    End Sub
    '-------------------------------------------------------------------------------
    دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

    #2
    پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

    اون عکسه باز نمی شه
    از برد بورد یا شماتیکتون یه عکس بذارید بهتر دوستان می تونند کمکتون کنند.
    قال علي(ع): زكاه العلم بذله لمستحقه، و جهادالنفس في العمل به.

    امام علي(ع) فرمود: زكات علم، بذل و آموزش آن به طالب و مستحق دانش است كه شايستگي آموزش و آموختن را داشته باشد، و تلاش و كوشش نفس در عمل به علم و دانش است.

    مصابيح الهداه ، ص701، به نقل از غررالحكم

    دیدگاه


      #3
      پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

      Http://uplod.ir/erna07rl89g1/Untitled-1.jpg.htm


      البته اونم باز میشه .
      دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

      دیدگاه


        #4
        پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

        این کد که اصلا توی mega32 جا نمیشه :eek:
        من کامپایل زدم متغییرای Config_AVR-DOS.BAS که همون اولیش هم هست رو نتونست جا کنه

        من این ماژول رو با atmega128 راه اندازی کردم ولی برنامش با c و کدویژن هست.
        اما یه نمونه کد vb هم داشتم
        شاید این بهتر باشه

        کد:
        $regfile = "M128def.dat "                  'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
        $crystal = 8000000                     'or any
        '$baud = 115200
        
        $swstack = 128
        $hwstack = 128
        $framesize = 128
        
        
        '-------------------------------------------------------------------------------
        'Config Clock = Soft
        'Config Date = Dmy , Separator = .
        'Enable Interrupts
        'Time$ = "20:22:00"
        'Date$ = "16.04.08"
        '-------------------------------------------------------------------------------
        $lib "lcd4busy.lib"
        Const _lcdport = Porta
        Const _lcdddr = Ddra
        Const _lcdin = Pina
        Const _lcd_e = 2
        Const _lcd_rw = 1
        Const _lcd_rs = 0
        
        Config Lcd = 16 * 2
        Config Lcdbus = 4
        Config Pind.0 = Input
        Config Pind.4 = Output
        Config Pind.5 = Output
        Config Pind.7 = Output
        Config Pinb.4 = Output
        Config Pinc.0 = Output
        'Config Porte = Input
        'Config Int7 = Falling
        
        '-------------------------------------------------------------------------------
        Dim B As Byte
        Dim A1 As Byte
        Dim A2 As Byte
        Dim L As Byte
        Dim Ff As Byte
        Dim S As String * 30
        Dim Diskf As Long
        Dim Disks As Long
        Dim Vs_w As Byte
        Dim Vs_r As Byte
        Dim Sc_mode_ad As Byte
        Dim Sc_bass_ad As Byte
        Dim Sc_clockf_ad As Byte
        Dim Sc_aiaddr_ad As Byte
        Dim Sc_vol_ad As Byte
        Dim I As Word
        Dim Buffer(512) As Byte
        
        '-------------------------------------------------------------------------------
        Mmc_csn Alias Portb.4
        Dreq Alias Pind.0
        Xcs Alias Portd.4
        Xdcs Alias Portd.5
        Xrst Alias Portd.7
        Sled Alias Portc.0
        '-------------------------------------------------------------------------------
        Vs_w = 2
        Vs_r = 3
        Sc_mode_ad = 0
        Sc_bass_ad = 2
        Sc_clockf_ad = 3
        Sc_aiaddr_ad = 10
        Sc_vol_ad = 11
        Sled = 0
        
        '-------------------------------------------------------------------------------
        Set Xcs
        Set Xdcs
        Set Xrst
        Bitwait Dreq , Set
        
        Reset Mmc_csn                        'enable MMC (chip select=cs Active low)
        Cursor Off
        
        Cls
        Lcd "Initiation..."
        Set Sled
        
        $include "Config_AVR-DOS.BAS"                'include avr-dos
        $include "Config_MMC.bas"                  'include mmc
        
        Ff = Drivereset()                      'not AVR-DOS Routine
        Ff = Driveinit()                      'not AVR-DOS Routine
        
        '$external Waitms
        
        'Mmc_ok = Drivecheck()
        'If Mmc_ok = 0 Then
        '  Cls
        '  Lcd "Error on MMC!"
        '  Locate 2 , 1
        '  Lcd "error:" ; Mmc_ok
        '  End
        'End If
        
        If Gbdriveerror <> 0 Then
        Cls
        Lcd "Error Config"
        Locate 2 , 1
        Lcd Gbdriveerror
        End
        End If
        Lcd "DOS & MMC Inited"
        Reset Sled
        Wait 2
        
        Set Sled
        Cls
        Lcd "Initializing FAT"
        Locate 2 , 1
        B = Initfilesystem(1)                    'init file system
        If B <> 0 Then
          Lcd "Error On File System"
          Wait 1
          Cls
          Lcd "Sorry!"
          Locate 2 , 1
          Lcd "Good Bye..."
          End                           'end program
        Else
          Reset Sled
          Lcd "FAT Initialized"
        End If
        Wait 2
        Cls
        Lcd "DOS Version: " ; Ver()
        Wait 2
        
        '-------------------------------------------------------------------------------
        '------------------------------- PROGRAM START ------------------------------
        '-------------------------------------------------------------------------------
        Dim Sfilename As String * 20
        
        Cls
        Lcd "Now Create File:"
        
        Diskf = Diskfree()
        Disks = Disksize()
        
        Ff = Freefile()
        Open "info.txt" For Output As #ff              'create file in MMC
        
        S = Str(diskf)
        Print #ff , S ; " Byte Disk Free Space"
        S = Str(disks)
        Print #ff , S ; " Byte Disk Size"
        
        Print #ff ,
        Print #ff , "Files Founded:"
        
        Sfilename = Dir( "*.*")
        While Len(sfilename) > 0
          Sfilename = Dir()
          Print #ff , Sfilename
        Wend
        
        Close #ff
        
        Cls
        Lcd "Free " ; Diskf ; " Byte"
        Locate 2 , 1
        Lcd "Size " ; Disks ; " Byte"
        
        Wait 2
        Cls
        Lcd "Introducing..."
        Locate 2 , 1
        Lcd "VS1003 !!!"
        Wait 2
        
        Set Mmc_csn
        
        Set Sled
        Lcd "Reseting VS1003."
        Reset Xrst
        Waitms 1
        Set Xrst
        Waitus 500
        
        Bitwait Dreq , Set
        Reset Sled
        
        Cls
        Lcd "Initializing VS"
        Set Sled
        
        Reset Xcs
        Spiout Vs_w , 1
        Spiout Sc_mode_ad , 1                    'Halate Kariyeh VS1003
        A1 = 8
        A2 = 0
        Spiout A1 , 1
        Spiout A2 , 1
        Set Xcs
        Waitus 500
        Bitwait Dreq , Set
        
        Reset Xcs
        Spiout Vs_w , 1
        Spiout Sc_bass_ad , 1                    'Tanzime Bass va Treble
        A1 = &H79
        A2 = &HF7
        Spiout A1 , 1
        Spiout A2 , 1
        Set Xcs
        Waitus 500
        Bitwait Dreq , Set
        
        Reset Xcs
        Spiout Vs_w , 1
        Spiout Sc_clockf_ad , 1                   'Tanzimeh Clock va PLL bar royeh Adade 3
        A1 = &H80
        A2 = 0
        Spiout A1 , 1
        Spiout A2 , 1
        Set Xcs
        Waitus 500
        Bitwait Dreq , Set
        
        Reset Xcs
        Spiout Vs_w , 1
        Spiout Sc_aiaddr_ad , 1                   'Barnameyeh Karbari Nadarim
        A1 = 0
        A2 = 0
        Spiout A1 , 1
        Spiout A2 , 1
        Set Xcs
        Waitus 500
        Bitwait Dreq , Set
        
        Reset Xcs
        Spiout Vs_w , 1
        Spiout Sc_vol_ad , 1                    'Tanzime Volume Rooyeh Haddeaksar
        A1 = 0
        A2 = 0
        Spiout A1 , 1
        Spiout A2 , 1
        Set Xcs
        Waitus 500
        Bitwait Dreq , Set
        
        Cls
        Lcd "VS1003 initiated"
        Reset Sled
        Wait 1
        Cls
        Lcd "playing file:"
        
        Ff = Freefile()
        Open "song.mp3" For Binary As #ff              'create file in MMC
        Locate 2 , 1
        Lcd Ff
        Do
          Reset Mmc_csn
          Get #ff , Buffer(1) , , 512
          Set Mmc_csn
        
          Set Sled
        
          Reset Xdcs
          For I = 1 To 512
           Spiout Buffer(i) , 1
           Bitwait Dreq , Set
          Next I
          Set Xdcs
        
          Reset Sled
        Loop Until Eof(#ff) <> 0
        
        Cls
        Lcd "Ended."
        Close #ff
        
        End                             'end program

        پایه های SPI میکرو و کارت و VS مشترکه
        قال علي(ع): زكاه العلم بذله لمستحقه، و جهادالنفس في العمل به.

        امام علي(ع) فرمود: زكات علم، بذل و آموزش آن به طالب و مستحق دانش است كه شايستگي آموزش و آموختن را داشته باشد، و تلاش و كوشش نفس در عمل به علم و دانش است.

        مصابيح الهداه ، ص701، به نقل از غررالحكم

        دیدگاه


          #5
          پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

          نوشته اصلی توسط mohammad3
          این کد که اصلا توی mega32 جا نمیشه :eek:
          من کامپایل زدم متغییرای Config_AVR-DOS.BAS که همون اولیش هم هست رو نتونست جا کنه

          من این ماژول رو با atmega128 راه اندازی کردم ولی برنامش با c و کدویژن هست.
          اما یه نمونه کد vb هم داشتم
          شاید این بهتر باشه

          کد:
          $regfile = "M128def.dat "                  'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
          $crystal = 8000000                     'or any
          '$baud = 115200
          
          $swstack = 128
          $hwstack = 128
          $framesize = 128
          
          
          '-------------------------------------------------------------------------------
          'Config Clock = Soft
          'Config Date = Dmy , Separator = .
          'Enable Interrupts
          'Time$ = "20:22:00"
          'Date$ = "16.04.08"
          '-------------------------------------------------------------------------------
          $lib "lcd4busy.lib"
          Const _lcdport = Porta
          Const _lcdddr = Ddra
          Const _lcdin = Pina
          Const _lcd_e = 2
          Const _lcd_rw = 1
          Const _lcd_rs = 0
          
          Config Lcd = 16 * 2
          Config Lcdbus = 4
          Config Pind.0 = Input
          Config Pind.4 = Output
          Config Pind.5 = Output
          Config Pind.7 = Output
          Config Pinb.4 = Output
          Config Pinc.0 = Output
          'Config Porte = Input
          'Config Int7 = Falling
          
          '-------------------------------------------------------------------------------
          Dim B As Byte
          Dim A1 As Byte
          Dim A2 As Byte
          Dim L As Byte
          Dim Ff As Byte
          Dim S As String * 30
          Dim Diskf As Long
          Dim Disks As Long
          Dim Vs_w As Byte
          Dim Vs_r As Byte
          Dim Sc_mode_ad As Byte
          Dim Sc_bass_ad As Byte
          Dim Sc_clockf_ad As Byte
          Dim Sc_aiaddr_ad As Byte
          Dim Sc_vol_ad As Byte
          Dim I As Word
          Dim Buffer(512) As Byte
          
          '-------------------------------------------------------------------------------
          Mmc_csn Alias Portb.4
          Dreq Alias Pind.0
          Xcs Alias Portd.4
          Xdcs Alias Portd.5
          Xrst Alias Portd.7
          Sled Alias Portc.0
          '-------------------------------------------------------------------------------
          Vs_w = 2
          Vs_r = 3
          Sc_mode_ad = 0
          Sc_bass_ad = 2
          Sc_clockf_ad = 3
          Sc_aiaddr_ad = 10
          Sc_vol_ad = 11
          Sled = 0
          
          '-------------------------------------------------------------------------------
          Set Xcs
          Set Xdcs
          Set Xrst
          Bitwait Dreq , Set
          
          Reset Mmc_csn                        'enable MMC (chip select=cs Active low)
          Cursor Off
          
          Cls
          Lcd "Initiation..."
          Set Sled
          
          $include "Config_AVR-DOS.BAS"                'include avr-dos
          $include "Config_MMC.bas"                  'include mmc
          
          Ff = Drivereset()                      'not AVR-DOS Routine
          Ff = Driveinit()                      'not AVR-DOS Routine
          
          '$external Waitms
          
          'Mmc_ok = Drivecheck()
          'If Mmc_ok = 0 Then
          '  Cls
          '  Lcd "Error on MMC!"
          '  Locate 2 , 1
          '  Lcd "error:" ; Mmc_ok
          '  End
          'End If
          
          If Gbdriveerror <> 0 Then
          Cls
          Lcd "Error Config"
          Locate 2 , 1
          Lcd Gbdriveerror
          End
          End If
          Lcd "DOS & MMC Inited"
          Reset Sled
          Wait 2
          
          Set Sled
          Cls
          Lcd "Initializing FAT"
          Locate 2 , 1
          B = Initfilesystem(1)                    'init file system
          If B <> 0 Then
            Lcd "Error On File System"
            Wait 1
            Cls
            Lcd "Sorry!"
            Locate 2 , 1
            Lcd "Good Bye..."
            End                           'end program
          Else
            Reset Sled
            Lcd "FAT Initialized"
          End If
          Wait 2
          Cls
          Lcd "DOS Version: " ; Ver()
          Wait 2
          
          '-------------------------------------------------------------------------------
          '------------------------------- PROGRAM START ------------------------------
          '-------------------------------------------------------------------------------
          Dim Sfilename As String * 20
          
          Cls
          Lcd "Now Create File:"
          
          Diskf = Diskfree()
          Disks = Disksize()
          
          Ff = Freefile()
          Open "info.txt" For Output As #ff              'create file in MMC
          
          S = Str(diskf)
          Print #ff , S ; " Byte Disk Free Space"
          S = Str(disks)
          Print #ff , S ; " Byte Disk Size"
          
          Print #ff ,
          Print #ff , "Files Founded:"
          
          Sfilename = Dir( "*.*")
          While Len(sfilename) > 0
            Sfilename = Dir()
            Print #ff , Sfilename
          Wend
          
          Close #ff
          
          Cls
          Lcd "Free " ; Diskf ; " Byte"
          Locate 2 , 1
          Lcd "Size " ; Disks ; " Byte"
          
          Wait 2
          Cls
          Lcd "Introducing..."
          Locate 2 , 1
          Lcd "VS1003 !!!"
          Wait 2
          
          Set Mmc_csn
          
          Set Sled
          Lcd "Reseting VS1003."
          Reset Xrst
          Waitms 1
          Set Xrst
          Waitus 500
          
          Bitwait Dreq , Set
          Reset Sled
          
          Cls
          Lcd "Initializing VS"
          Set Sled
          
          Reset Xcs
          Spiout Vs_w , 1
          Spiout Sc_mode_ad , 1                    'Halate Kariyeh VS1003
          A1 = 8
          A2 = 0
          Spiout A1 , 1
          Spiout A2 , 1
          Set Xcs
          Waitus 500
          Bitwait Dreq , Set
          
          Reset Xcs
          Spiout Vs_w , 1
          Spiout Sc_bass_ad , 1                    'Tanzime Bass va Treble
          A1 = &H79
          A2 = &HF7
          Spiout A1 , 1
          Spiout A2 , 1
          Set Xcs
          Waitus 500
          Bitwait Dreq , Set
          
          Reset Xcs
          Spiout Vs_w , 1
          Spiout Sc_clockf_ad , 1                   'Tanzimeh Clock va PLL bar royeh Adade 3
          A1 = &H80
          A2 = 0
          Spiout A1 , 1
          Spiout A2 , 1
          Set Xcs
          Waitus 500
          Bitwait Dreq , Set
          
          Reset Xcs
          Spiout Vs_w , 1
          Spiout Sc_aiaddr_ad , 1                   'Barnameyeh Karbari Nadarim
          A1 = 0
          A2 = 0
          Spiout A1 , 1
          Spiout A2 , 1
          Set Xcs
          Waitus 500
          Bitwait Dreq , Set
          
          Reset Xcs
          Spiout Vs_w , 1
          Spiout Sc_vol_ad , 1                    'Tanzime Volume Rooyeh Haddeaksar
          A1 = 0
          A2 = 0
          Spiout A1 , 1
          Spiout A2 , 1
          Set Xcs
          Waitus 500
          Bitwait Dreq , Set
          
          Cls
          Lcd "VS1003 initiated"
          Reset Sled
          Wait 1
          Cls
          Lcd "playing file:"
          
          Ff = Freefile()
          Open "song.mp3" For Binary As #ff              'create file in MMC
          Locate 2 , 1
          Lcd Ff
          Do
            Reset Mmc_csn
            Get #ff , Buffer(1) , , 512
            Set Mmc_csn
          
            Set Sled
          
            Reset Xdcs
            For I = 1 To 512
             Spiout Buffer(i) , 1
             Bitwait Dreq , Set
            Next I
            Set Xdcs
          
            Reset Sled
          Loop Until Eof(#ff) <> 0
          
          Cls
          Lcd "Ended."
          Close #ff
          
          End                             'end program

          پایه های SPI میکرو و کارت و VS مشترکه
          دوست عزیز امکانش هست نمونه برنامه c رو اینجا قرار بدهید
          تو بگو ای سنگ صبور تو صبوری یا دل من
          تو بگو ای جام بلور تو شکستی یا دل من

          دیدگاه


            #6
            پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

            نوشته اصلی توسط امین شیخ نجدی
            دوست عزیز امکانش هست نمونه برنامه c رو اینجا قرار بدهید
            من از کد آقای اسدی http://www.eca.ir/forum2/index.php?topic=47701.0 استفاده کردم و جمع و جورش کردم برای کار خودم.
            البته یکم قاتی پاتیه ولی کد های مربوط به پخش توسط vs توش مشخصه
            قال علي(ع): زكاه العلم بذله لمستحقه، و جهادالنفس في العمل به.

            امام علي(ع) فرمود: زكات علم، بذل و آموزش آن به طالب و مستحق دانش است كه شايستگي آموزش و آموختن را داشته باشد، و تلاش و كوشش نفس در عمل به علم و دانش است.

            مصابيح الهداه ، ص701، به نقل از غررالحكم

            دیدگاه


              #7
              پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

              نوشته اصلی توسط mohammad3
              این کد که اصلا توی mega32 جا نمیشه :eek:
              من کامپایل زدم متغییرای Config_AVR-DOS.BAS که همون اولیش هم هست رو نتونست جا کنه

              من این ماژول رو با atmega128 راه اندازی کردم ولی برنامش با c و کدویژن هست.
              اما یه نمونه کد vb هم داشتم
              شاید این بهتر باشه

              کد:
              $regfile = "M128def.dat "                  'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
              $crystal = 8000000                     'or any
              '$baud = 115200
              
              $swstack = 128
              $hwstack = 128
              $framesize = 128
              
              
              '-------------------------------------------------------------------------------
              'Config Clock = Soft
              'Config Date = Dmy , Separator = .
              'Enable Interrupts
              'Time$ = "20:22:00"
              'Date$ = "16.04.08"
              '-------------------------------------------------------------------------------
              $lib "lcd4busy.lib"
              Const _lcdport = Porta
              Const _lcdddr = Ddra
              Const _lcdin = Pina
              Const _lcd_e = 2
              Const _lcd_rw = 1
              Const _lcd_rs = 0
              
              Config Lcd = 16 * 2
              Config Lcdbus = 4
              Config Pind.0 = Input
              Config Pind.4 = Output
              Config Pind.5 = Output
              Config Pind.7 = Output
              Config Pinb.4 = Output
              Config Pinc.0 = Output
              'Config Porte = Input
              'Config Int7 = Falling
              
              '-------------------------------------------------------------------------------
              Dim B As Byte
              Dim A1 As Byte
              Dim A2 As Byte
              Dim L As Byte
              Dim Ff As Byte
              Dim S As String * 30
              Dim Diskf As Long
              Dim Disks As Long
              Dim Vs_w As Byte
              Dim Vs_r As Byte
              Dim Sc_mode_ad As Byte
              Dim Sc_bass_ad As Byte
              Dim Sc_clockf_ad As Byte
              Dim Sc_aiaddr_ad As Byte
              Dim Sc_vol_ad As Byte
              Dim I As Word
              Dim Buffer(512) As Byte
              
              '-------------------------------------------------------------------------------
              Mmc_csn Alias Portb.4
              Dreq Alias Pind.0
              Xcs Alias Portd.4
              Xdcs Alias Portd.5
              Xrst Alias Portd.7
              Sled Alias Portc.0
              '-------------------------------------------------------------------------------
              Vs_w = 2
              Vs_r = 3
              Sc_mode_ad = 0
              Sc_bass_ad = 2
              Sc_clockf_ad = 3
              Sc_aiaddr_ad = 10
              Sc_vol_ad = 11
              Sled = 0
              
              '-------------------------------------------------------------------------------
              Set Xcs
              Set Xdcs
              Set Xrst
              Bitwait Dreq , Set
              
              Reset Mmc_csn                        'enable MMC (chip select=cs Active low)
              Cursor Off
              
              Cls
              Lcd "Initiation..."
              Set Sled
              
              $include "Config_AVR-DOS.BAS"                'include avr-dos
              $include "Config_MMC.bas"                  'include mmc
              
              Ff = Drivereset()                      'not AVR-DOS Routine
              Ff = Driveinit()                      'not AVR-DOS Routine
              
              '$external Waitms
              
              'Mmc_ok = Drivecheck()
              'If Mmc_ok = 0 Then
              '  Cls
              '  Lcd "Error on MMC!"
              '  Locate 2 , 1
              '  Lcd "error:" ; Mmc_ok
              '  End
              'End If
              
              If Gbdriveerror <> 0 Then
              Cls
              Lcd "Error Config"
              Locate 2 , 1
              Lcd Gbdriveerror
              End
              End If
              Lcd "DOS & MMC Inited"
              Reset Sled
              Wait 2
              
              Set Sled
              Cls
              Lcd "Initializing FAT"
              Locate 2 , 1
              B = Initfilesystem(1)                    'init file system
              If B <> 0 Then
                Lcd "Error On File System"
                Wait 1
                Cls
                Lcd "Sorry!"
                Locate 2 , 1
                Lcd "Good Bye..."
                End                           'end program
              Else
                Reset Sled
                Lcd "FAT Initialized"
              End If
              Wait 2
              Cls
              Lcd "DOS Version: " ; Ver()
              Wait 2
              
              '-------------------------------------------------------------------------------
              '------------------------------- PROGRAM START ------------------------------
              '-------------------------------------------------------------------------------
              Dim Sfilename As String * 20
              
              Cls
              Lcd "Now Create File:"
              
              Diskf = Diskfree()
              Disks = Disksize()
              
              Ff = Freefile()
              Open "info.txt" For Output As #ff              'create file in MMC
              
              S = Str(diskf)
              Print #ff , S ; " Byte Disk Free Space"
              S = Str(disks)
              Print #ff , S ; " Byte Disk Size"
              
              Print #ff ,
              Print #ff , "Files Founded:"
              
              Sfilename = Dir( "*.*")
              While Len(sfilename) > 0
                Sfilename = Dir()
                Print #ff , Sfilename
              Wend
              
              Close #ff
              
              Cls
              Lcd "Free " ; Diskf ; " Byte"
              Locate 2 , 1
              Lcd "Size " ; Disks ; " Byte"
              
              Wait 2
              Cls
              Lcd "Introducing..."
              Locate 2 , 1
              Lcd "VS1003 !!!"
              Wait 2
              
              Set Mmc_csn
              
              Set Sled
              Lcd "Reseting VS1003."
              Reset Xrst
              Waitms 1
              Set Xrst
              Waitus 500
              
              Bitwait Dreq , Set
              Reset Sled
              
              Cls
              Lcd "Initializing VS"
              Set Sled
              
              Reset Xcs
              Spiout Vs_w , 1
              Spiout Sc_mode_ad , 1                    'Halate Kariyeh VS1003
              A1 = 8
              A2 = 0
              Spiout A1 , 1
              Spiout A2 , 1
              Set Xcs
              Waitus 500
              Bitwait Dreq , Set
              
              Reset Xcs
              Spiout Vs_w , 1
              Spiout Sc_bass_ad , 1                    'Tanzime Bass va Treble
              A1 = &H79
              A2 = &HF7
              Spiout A1 , 1
              Spiout A2 , 1
              Set Xcs
              Waitus 500
              Bitwait Dreq , Set
              
              Reset Xcs
              Spiout Vs_w , 1
              Spiout Sc_clockf_ad , 1                   'Tanzimeh Clock va PLL bar royeh Adade 3
              A1 = &H80
              A2 = 0
              Spiout A1 , 1
              Spiout A2 , 1
              Set Xcs
              Waitus 500
              Bitwait Dreq , Set
              
              Reset Xcs
              Spiout Vs_w , 1
              Spiout Sc_aiaddr_ad , 1                   'Barnameyeh Karbari Nadarim
              A1 = 0
              A2 = 0
              Spiout A1 , 1
              Spiout A2 , 1
              Set Xcs
              Waitus 500
              Bitwait Dreq , Set
              
              Reset Xcs
              Spiout Vs_w , 1
              Spiout Sc_vol_ad , 1                    'Tanzime Volume Rooyeh Haddeaksar
              A1 = 0
              A2 = 0
              Spiout A1 , 1
              Spiout A2 , 1
              Set Xcs
              Waitus 500
              Bitwait Dreq , Set
              
              Cls
              Lcd "VS1003 initiated"
              Reset Sled
              Wait 1
              Cls
              Lcd "playing file:"
              
              Ff = Freefile()
              Open "song.mp3" For Binary As #ff              'create file in MMC
              Locate 2 , 1
              Lcd Ff
              Do
                Reset Mmc_csn
                Get #ff , Buffer(1) , , 512
                Set Mmc_csn
              
                Set Sled
              
                Reset Xdcs
                For I = 1 To 512
                 Spiout Buffer(i) , 1
                 Bitwait Dreq , Set
                Next I
                Set Xdcs
              
                Reset Sled
              Loop Until Eof(#ff) <> 0
              
              Cls
              Lcd "Ended."
              Close #ff
              
              End                             'end program

              پایه های SPI میکرو و کارت و VS مشترکه

              چرا کامپایل میشه !!! اینو ببینید ؟؟؟

              http://uplod.ir/l66c61zml7nz/MP3_Player.zip.htm

              دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

              دیدگاه


                #8
                پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

                کسی تا حالا کار نکرده ؟؟؟
                دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                دیدگاه


                  #9
                  پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

                  تورو خدا یکی بگه چه کار کنم .من نیاز شدید به این پروژه دارم .
                  دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                  دیدگاه


                    #10
                    پاسخ : اتصال ماژول VS1003 به مگا32 و پخش MP3 (کسی کار کرده)؟

                    کسی با این ماژول کار نکرده بابا پدرم در اومد ؟؟؟؟
                    دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                    دیدگاه

                    لطفا صبر کنید...
                    X