Forum: Mikrocontroller und Digitale Elektronik Elm Chan sd wav player


von B. B. (tronix2)


Angehängte Dateien:

Lesenswert?

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

von Marvin (Gast)


Lesenswert?

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 */

von Marvin (Gast)


Lesenswert?

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.

von B. B. (tronix2)


Lesenswert?

Ach ok wie cool ist das denn. Danke!
Was ein freak :D

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
Noch kein Account? Hier anmelden.