www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI ist nachtragend


Autor: Daniel Braun (khani)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.