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
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 */
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.