Hallo, ich möchte gerne noch einmal einen Elm Chan SD-wav-player Thread öffnen. Es geht ums Code-Verstehen von dem Wunderding hier http://elm-chan.org/works/sd20p/report.html bzw. Anhang. Ich versteh den Teil nicht so richtig, in dem er die Daten von der SD-Karte in den RAM schaufelt bzw. den Timer damit füttert für die PWM. In der Endlosschleife von play() in der main findet das irgendwie statt. Er liest mit pf_read(0, btr, &rb); Wobei FRESULT pf_read ( void* Buffer, /* Pointer to the read buffer */ WORD ByteToRead, /* Number of bytes to read */ WORD* BytesRead /* Pointer to the variable to return number of bytes read */ ); Dann schreibt er die Daten auf Adresse Null? Und wie wird dann der Timer bzw. OCR1A/B beschrieben? Steh ich da so auf dem Schlauch? Viele Grüße
Gast
#3849320
Hi, Wenn der buff Parameter 0 ist, benutze "Buff". Gruß Marvin pff.c: void* buff, /* Pointer to the read buffer (NULL:Forward data to the stream)*/ asmfunc.S: fb_wave: ; Forward intermediate data bytes to the wave FIFO sbic _FLAGS, 4 ;if (16bit data) R21:R20 /= 2; lsr r21 ; sbic _FLAGS, 4 ; ror r20 ;/ sbic _FLAGS, 1 ;if (Stereo data) R21:R20 /= 2; lsr r21 ; sbic _FLAGS, 1 ; ror r20 ;/ lds r22, FifoWi ;r22 = FIFO write index 3: ldi XL, lo8(Buff) ;X = Buff + R22 ldi XH, hi8(Buff) ; main.c: BYTE Buff[256]; /* Audio output FIFO */
Gast
#3849336
Ach, und: asmfunc.S: ;----------------------------------------------------------------------- ----; ; ISR for Audio Output Interrupt ;----------------------------------------------------------------------- ----; ; ISR(TIMER0_COMPA_vect); ; ; Pop an audio sample from FIFO and put it to the DAC.
Ach ok wie cool ist das denn. Danke! Was ein freak :D
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.