Gast
#34604
Hallo alle, ich bin dabei mir ein mp3 spieler zu basteln, der auf mega16, sta013 und cs4331 basiert. später werde ich noch CF oder CD ranhängen als source für die mp3s aber im augenblick benutze ich noch die parralelle schnittstelle um daten an den controller zu senden. das datenblatt für den sta013 gibts hier : http://us.st.com/stonline/prodpres/dedicate/mp3/sta013.htm das design für die schaltung habe ich von hier : http://www.pjrc.com/tech/mp3/sta013.html ich kann über i2c mit dem decoder kommunizieren. uploade die 2007 byte paare aus der .bin von der st website, setze dann die werte aus tabelle 5 für 10Mhz crystal. setze PLAY, RUN, !MUTE. dann geht der Data_req hoch und mein controller fängt ann daten zu senden, mit folgender routine. #define MP3DDR DDRC #define MP3PORT PORTC #define MP3PIN PINC #define MP3DATA PC5 // serial data line #define MP3CLK PC4 // serial clock line #define MP3DATA_REQ PC3 #define MP3RST PC2 #define MP3DATA_LO cbi(MP3PORT,MP3DATA) #define MP3DATA_HI sbi(MP3PORT,MP3DATA) #define MP3CLK_LO cbi(MP3PORT,MP3CLK) #define MP3CLK_HI sbi(MP3PORT,MP3CLK) void sta_HWinit(void){ cbi(MP3PORT, MP3DATA); sbi(MP3DDR, MP3DATA); cbi(MP3PORT, MP3CLK); sbi(MP3DDR, MP3CLK); sbi(MP3PORT, MP3DATA_REQ); cbi(MP3DDR, MP3DATA_REQ); }; void sta_send_data(unsigned char byte){ char i; for(i = 7; i>=0;i--){ MP3CLK_LO; if((byte >>i)&1) MP3DATA_HI; else MP3DATA_LO; MP3CLK_HI; }; }; aus dem DAC kommt leider kein mucks. wenn ich das syncstatus register abfrage erhalte ich 0x00 (also : Research of sync word, seite 15 im datenblatt) und das Errorcode register enthält 0x20 ?!? obwohl es laut daten blatt nur 0x00,0x01 und 0x02 haben soll. ich nehme an, das 0x02 == 0x20 ist was auch sinn machen würde, denn 0x02 bedeutet DATA not available. ich bin mit meiner weissheit am ende. Ich hoffe, das jemand hiermit erfahrung hat und mir einen tipp geben kann. vielen dank im vorraus, john p.s. wenn bedarf besteht, kann ich noch die komplette source posten. (avr code & windows code um mp3 per lpt zu senden)