Hallo, Leute!
Ich versuche zu verstehen, was gerade an meiner Schaltung passiert...
Oft (~ jede zweites Mal) kann der Wecker die MP3 nicht abspielen oder
sehr schlecht abspielen.
Manchmal ist die Lautstärke SEHR niedrig, manchmal wird abgespielt, aber
bei der Hälfte des Tempos, manchmal ist GAR NICHTS zu hören.
Mein Code ist folgendes:
1 | while(!fat_feof(fd))
|
2 | {
|
3 | bzero(mp3, 32);
|
4 | if((r = fat_read_file(fd, mp3, 32)) != 0)
|
5 | {
|
6 | vsSetChipSelect();
|
7 | for(i = 0; i < r;)
|
8 | if(bit_is_set(VS_PIN, VS_DREQ_PIN))
|
9 | vsSendData(mp3[i++]);
|
10 | }
|
11 | }
|
Also, nix besonderes...
Hat jemand eine Erklärung, was der VS1011e noch will um richtig
abzuspielen?
Vor jedem abspielen schicke ich auch einen SOFT-RESET:
1 | vsClearChipSelect();
|
2 | spiWriteByte(VS1001_WRITE);
|
3 | spiWriteByte(0);
|
4 | spiWriteByte(0x00);
|
5 | spiWriteByte(0x04);
|
6 | vsSetChipSelect();
|
7 | _delay_us(10);
|
8 | loop_until_bit_is_set(VS_PIN, VS_DREQ_PIN);
|
9 | _delay_ms(100);
|
10 |
|
11 | vsClearBSync();
|
12 | SPDR = 0x00;
|
13 | spiWriteByte(0x00);
|
14 | spiWriteByte(0x00);
|
15 | spiWriteByte(0x00);
|
16 | vsSetBSync();
|
Und dazu 2048 "0"-Bytes.
Danke für eure Meinungen!
Luca Bertoncello