Nabend zusammen,
Bin wohl der X te der ein Problem mit dem VS1011 hat. Alles überprüft,
der ATMega 32 spuckt schön 32Bytes raus, wenn Dreq auf high geht.
Komisch ist nur, dass ich nichts höre, aber wenn ich in der Routine, in
der die 32 B gesendet werden, die daten nachdem sie zum VS geschickt
wurden über Uart zum PC schicke, höre ich sehr stockende Musik. Nun habe
ich die SPI Frequenz gesenkt, weil ich gedacht habe, dass das Ding
vielleicht Pausen braucht (meine VS SPI freq: 4MHz, für die SD Karte
8MHz, gleicher Bus). Kommt aber immer diese stockende, unverständliche
Musik. Was kann hier falsch sein???
Ach ja noch ein paar daten:
Crystal: 24,576 Mhz
Initialisierung des VS:
Hard Reset (warten...)
set new SDI Mode
und schon gehts los mit den ersten daten falls dreq 1
Wie schnell reagierst du auf DREQ? Wenn die Musik stockt, dann scheint
es, als wenn du den VS1011 zu langsam mit Daten versorgst. Wieviele
Bytes schreibst du runter? 32 oder so lange bis DREQ wieder low geht?
"Komisch ist nur, dass ich nichts höre, aber wenn ich in der Routine, in
der die 32 B gesendet werden, die daten nachdem sie zum VS geschickt
wurden über Uart zum PC schicke, höre ich sehr stockende Musik."
Den Satz verstehe ich jetzt nicht. Wieso schickst du Daten zum PC? Die
Übertragung ist doch sehr langsam, wie versorgst du den VS in dieser
Zeit mit Daten? Oder wie jetzt?
Rooney:
ich schreibe 32Bytes, dann schaue ich ob Dreq immer noch 1 ist, falls
ja, nochmal 32B, immer so weiter, aber höchstens 16 mal, denn dann ist
ein Block weg und ein neuer muss geholt werden.
Jupp:
Dass es komisch ist kommt mir auch so vor. Die daten schickte ich für
die ersten Tests zum PC, um zu sehen ob der Mega die Daten überhaupt
richtig ausspuckt. Diese Tests sind alle erfolgreich verlaufen. (Habe
auch alle Tests in der AN gemacht, Firmware, Sinetest, alles OK). Im
jetzigen Programm werden natürlich keine DAten mehr an den PC geschickt.
Bloß hört man dann nichts. Und da man alles probieren muss, habe ich
kurz die Routine eingefügt und siehe da: Extrem Stockende Musik. Das ist
jetzt sehr widersprüchig, denn die Uart Routine braucht Zeit.
;Beispiel1:
Schleife 32B:
bla bla
send spi zum VS
bla bla
rjmp Schleife 32B
; richtig aber ich höre nichts ):
;Beispiel2:
Schleife 32B:
bla bla
send spi zum VS
sende zum PC
bla bla
rjmp Schleife 32B
; sehr stockende Musik ?!?!?!?!?!?!
Ich habe alles in ASM geschrieben und auf so wenige Takte wie möglich
optimiert.
Das klingt danach, als wenn du Daten sendest, obwohl der VS1011 keine
haben möchte. Das würde zumindest erklären, warum es mit den UART
Routinen geht.
Probier mal folgendes: Baue anstelle der UART Routine eine Schleife ein
und variiere deren Länge, so dass du in etwa genau die Bitrate der mp3
Datei triffst. Wenn die Musik dann weitestgehend fehlerfrei abgespielt
wird, passt etwas mit dem DREQ Pin nicht.
Arbeitest du mit Chip Select und Hardware SPI? Falls ja, wann
kippst du den CS-Pin um? Vielleicht passiert das während das
letzte Byte noch übertragen wird.
Das einzige Problem das mir beim DREQ bekannt ist das die Leitung
während der Übertragung eines 32 Byte Blocks kurz auf 0 kippen kann.
Daher soll das Signal nur dazu verwendet werden um festzustellen
ob ein Block geschickt werden soll.
sehr interessant. Mir ist gerade aufgefallen, dass das der FAll sein
kann. Werde ich prüfen. Aber macht ein Byte wirklich so viel
unterschied? ICh meine wenn einmal ein Byte fehlt oder falsch übertragen
wird, kann es dann sein, dass man nichts hört? Nur wegen einem Byte?
Wegen eines ganzen Bytes vielleicht nicht. Aber die Übertragung wird
ja dann mittendrin unterbrochen.
Den Fall hatte ich vor kurzem mit dem VS1033 und einem LPC2368.
Da kam auch kein Ton.