Forum: Mikrocontroller und Digitale Elektronik VS1011 spielt nicht richtig


von Schoasch (Gast)


Lesenswert?

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???

von Schoasch (Gast)


Lesenswert?

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

von Rooney B. (rooney)


Lesenswert?

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?

von Jupp (Gast)


Lesenswert?

"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?

von Schoasch (Gast)


Lesenswert?

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.

von Benedikt K. (benedikt)


Lesenswert?

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.

von Schoasch (Gast)


Lesenswert?

Dann werde ich wohl am besten gleich Streaming einführen, wenn man DREQ 
im A.... ist. Probiers mal aus

von let (Gast)


Lesenswert?

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.

von Schoasch (Gast)


Lesenswert?

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?

von Benedikt K. (benedikt)


Lesenswert?

Kommt drauf an, wie oft ein Byte falsch ankommt. Wenn die Daten ungültig 
sind, ignoriert der VS1011 diese. Das würde dann auch Stille erzeugen.

von let (Gast)


Lesenswert?

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.

von Schoasch (Gast)


Lesenswert?

danke let du bist der größte es funktioniert

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.