Hallo Leute, ich habe hier eine interessante Beobachtung. Vielleicht kennt jemand das Phänomen und kann mir sagen, was das heißen soll. Meine Applikation (auf dem AVR) macht folgendes : 1. SPI als Master einschalten und Pins entsprechend konfigurieren 2. ein Befehlsbyte absenden 3. ein Adressbyte senden 4. irgendeinen Murks senden (damit Takt beim Slave ankommt) 5. ein Datenbyte auslesen (aus SPDR) (highbyte) 6. noch einen Murks senden 7. noch ein Datenbyte lesen (low byte) 8. SPI ausschalten Die Schritte 1-8 finden im Laufe des Gesamtprogramms öfters statt, aber immer in dieser Reihenfolge. Jetzt meine Beobachtung : Wenn ich nach einem Reset des Mikrocontrollers (übrigens ein ATmega32) mit dessen Reset-Pin die oben beschriebenen Schritte durchführe, dann liest der AVR aus meinem angeschlossenen Slave-Device (VS1003B) den Wert 0x9800 aus - das ist gut, denn das hatte ich auch erwartet. Führt man die angegebenen Schritte ein zweites Mal aus (ohne AVR-Reset), dann erhält man 0x0098. Das heißt aus irgendeinem Grund bleibt das zweite Datenwort im Empfangspuffer kleben und wird beim nächsten Mal als empfangenes Datenbyte gelesen. Wenn man einfach vor Schritt 1 präventiv ein Mal aus dem SPDR liest, dann ist alles OK. Hat das schon mal jemand beobachtet und gibt es eine rationale Erklärung dafür oder ist das ein unbekanntes Phänomen (jedenfalls deutet im Datenblatt nichts darauf hin - die SPI-Section kann ich dann bald auswendig) ? MfG, Daniel.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.