logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Mmc card wav player na atmega32

werewolf15 20 Paź 2011 21:44 2249 3
REKLAMA
  • #1 10048405
    werewolf15
    Poziom 14  
    Właśnie znalazłem taki oto programik służący do odtwarzania plików wav z karty mmc na atmedze32.Moja prośba jest następująca: czy ktoś mógł by podany niżej program mi bardzo jasno wyjaśnić. Chodzi mi o to żebym wiedział co jest po co napisane i jak można to zmienić według własnych potrzeb(np: w którym miejscu zmienia się nazwę odtwarzanego pliku itp).


    Cytat:
    $regfile = "m16def.dat"
    $crystal = 11059200 '



    Config Pinc.4 = Input
    Pause Alias Pinc.4
    '-------------------------------
    Config Pinc.5 = Input
    Kelid Alias Pinc.5
    '--------------------------------
    Config Pinc.6 = Input
    Kelid2 Alias Pinc.6
    '-------------------------------
    Config Pinb.4 = Output


    Config Pind.3 = Output
    Set Portd.3
    '---------------------------------
    Config Debounce = 20
    '-------------------------------------
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
    Pwm1a = 255
    Pwm1b = 255
    'Constants
    'warter are FAM & Behnam


    Const Msbl = 0
    Const Msbh = 1
    Const Dly = 2
    Const Bits8 = 8
    Const Bits16 = 16
    Const Bits32 = 32

    'Dim
    Dim Dat As Byte
    Dim Resp As Byte
    Dim I As Word
    Dim Addr As Long
    Dim Adres As Long
    Dim Tanzim As Byte
    Dim Ali As Byte
    Dim Test As Long
    Dim Copy As Long
    Dim Shomare As Long
    Dim Hassan As Byte
    'Aliases
    Cs Alias Portb.0
    Mosi Alias Portb.1
    Clk Alias Portb.3
    Miso Alias Pinb.2

    'Declarations
    Declare Sub Minit
    Declare Sub Mread(byval Addr As Long )
    'Configs
    Config Portb.2 = Output
    Config Portb.0 = Output
    Config Portb.3 = Output
    Config Pinb.1 = Input


    Waitms 300
    Config Spi = Soft , Din = Pinb.2 , Dout = Portb.1 , Ss = Portb.0 , Clock = Portb.3

    Enable Interrupts
    Enable Spi

    Spiinit

    '******** MAIN PROGRAM *************

    Reset Portd.3
    Main:
    'Initialize the MMCC
    Minit
    Adres = 1048576
    Ali = 0
    Reset Portd.3

    Inja:
    Toggle Portb.4
    Mread Adres

    Debounce Pause , 1 , Stop_play , Sub
    Debounce Kelid2 , 1 , Jolo2 , Sub
    Debounce Kelid , 1 , Jolo , Sub

    Adres = Adres + 512

    'baraye in ke ta dastgah roshan shod peygham 1 ra ped konad
    '-----------------------------------------------------------------
    If Ali = 0 Then
    Adres = Adres + 5120000
    Test = 512 * 7800
    'Test = 512 * 8000
    Adres = Adres - Test
    Ali = 1

    Test = Adres
    End If
    '-------------------------------------------------------------------
    Goto Inja

    Xloop:
    Set Cs
    Shiftout Mosi , Clk , Dat , Msbl
    Endloop:
    Goto Endloop
    End 'end program
    '***************************** END OF PROGRAM **********************************
    '======= SUB ROUTINES AND FUNCTIONS =======
    'warter are FAM & Behnam
    '*** INITIALIZATION OF MMC ***
    Sub Minit
    Set Cs

    Dat = &HFF
    For I = 1 To 10
    Shiftout Mosi , Clk , Dat , Msbl
    Next I

    Resp = 255
    Reset Cs

    Cmd0:
    Dat = &H40
    Shiftout Mosi , Clk , Dat , Msbl

    Addr = &H00000000
    Shiftout Mosi , Clk , Addr , Msbl

    Dat = &H95
    Shiftout Mosi , Clk , Dat , Msbl

    While Resp <> &H01
    Shiftin Miso , Clk , Resp , Msbl
    Wend

    Set Cs
    Waitms 50
    Reset Cs
    Dat = &HFF

    Cmd1:
    While Resp <> &H00
    'warter are FAM & Behnam
    Set Cs
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl
    Reset Cs
    Dat = &H41
    Shiftout Mosi , Clk , Dat , Msbl
    Addr = 0
    Shiftout Mosi , Clk , Addr , Msbl
    Dat = &HFF
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl
    Wend

    Dat = &HFF
    Set Cs
    End Sub




    'warter are FAM & Behnam
    '**** READ routine assumes ADDR uses Status subroutine *****
    Sub Mread(byval Addr As Long)
    Set Cs
    Dat = &HFF
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl
    Reset Cs

    Dat = &H51
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftout Mosi , Clk , Addr , Msbl

    Dat = &HFF
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl


    While Resp <> 0
    Shiftin Miso , Clk , Resp , Msbl
    Wend

    While Resp <> &HFE
    Shiftin Miso , Clk , Resp , Msbl
    Wend

    For I = 1 To 512
    Shiftin Miso , Clk , Resp , Msbl

    Pwm1a = Resp
    Pwm1b = Resp
    Waitus 29
    'Waitus 3 'ÓŃÚĘ
    Next I

    Shiftin Miso , Clk , Resp , Msbl
    Shiftin Miso , Clk , Resp , Msbl
    Set Cs
    'warter are FAM & Behnam
    End Sub








    Jolo:
    Adres = Adres + 153600

    For Shomare = 1 To 500
    If Kelid = 0 Then Return
    Waitms 1
    Next

    Adres = Adres + 972800


    Return





    Jolo2:
    Adres = Adres - 153600

    For Shomare = 1 To 500
    If Kelid2 = 0 Then Return
    Waitms 1
    Next


    Adres = Adres - 972800

    If Adres < Test Then Adres = Test
    Return



    Stop_play:
    Set Portd.3
    Pwm1a = 255
    Pwm1b = 255
    Copy = Adres
    Do
    Debounce Pause , 1 , Play
    Loop
    Play:
    Reset Portd.3
    Adres = Copy
    Return

    Taki program napewno przyda się nie tylko mi ale i innym użytkownikom forum.
    Oto link do strony ze schematem http://www.avrprojects.info/avr-projects/mmc-card-based-wav-player/
  • REKLAMA
  • #2 10051466
    asembler
    Poziom 32  
    No i frytki do tego
  • REKLAMA
  • #3 10051998
    nsvinc
    Poziom 35  
    werewolf15 napisał:
    czy ktoś mógł by podany niżej program mi bardzo jasno wyjaśnić. Chodzi mi o to żebym wiedział co jest po co napisane i jak można to zmienić według własnych potrzeb(np: w którym miejscu zmienia się nazwę odtwarzanego pliku itp).

    Program jest napisany w celu odtwarzania kolejnych próbek pobierania w formacie najpewniej PCM, bez systemu plików. Skoro niema systemu plików, to nie zmienisz nazwy pliku z odtwarzaną muzyczką ;]

    Dodatkowo, nieznane nam są twoje potrzeby, a jak wszyscy wiemy, każdy ma inne :)
  • #4 10211567
    danielpoland
    Poziom 13  
    Ten program czyta kartę "jak leci" czyli wszystko po kolei, system plików nie ma znaczenia.
    Nazwy pliku nie czyta. Do Wav Playera użyj najlepiej AVR-DOSa , gdzieś jest temat o odtwarzaniu WAV w BASCOMIE.
REKLAMA