Hallo Leute. Habe heute nach ein wenig probieren den VS1011 dazugebracht
mir eine MP3 abzuspielen :) doch sobald die erste Freude verflogen war,
stellte ich fest, dass das Lied doppelt so lang dauerte wie normal,
gleich mal alles gecheckt. DREQ Abfrage ok DREQ Signal auch. dann habe
ich nach der Initialisierung das CLOCKF Register ausgelesen. ergebnis 2
mal 0x00. Ich kann, was ich auch anstelle das Register nicht auf 0x9800
setzen. Da es jetzt 0 ist, denkt der VS1011, er würde mit 24,576MHz
laufen. Deswegen ist bei meinem 12,288 MHz Quarz alles zu langsam und zu
tief.
Hat jemand eine Idee woran es liegen könnte?? muss man das CLOCKF
register sofort nach dem RESET setzen oder erst nachdem man alle anderen
gesetzt hat?
Code:
1 | clock:
|
2 | cbi portd, cs
|
3 | nop
|
4 | nop
|
5 | ldi r16, 2
|
6 | rcall send
|
7 | ldi r16, 0x03
|
8 | rcall send
|
9 | ldi r16, 0x98
|
10 | rcall send
|
11 | ldi r16, 0
|
12 | rcall send
|
13 | nop
|
14 | sbi portd, cs
|
15 | warten:
|
16 | sbis pind, dreq
|
17 | rjmp warten
|
und die sende Routine:
1 | send: ;Senderoutine für SPI
|
2 | out spdr, r16
|
3 | send1:
|
4 | sbis SPSR, SPIF
|
5 | rjmp send1
|
6 | in r16, SPDR
|
7 | ret
|
P.S. Ich benutze einen ATmega32-16PU mit 14,7456 MHz. Und alle anderen
Register (Lautstäre, SCI_MODE9 kann ich beschreiben.
So hoffentlich tut sich jemand den langen Text an!
Und schonim voraus vielen Dank für Ratschläge