mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ärger mit Statusregister des TWI


Autor: Hundertvolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade, das TWI mit einem ATmega32 zum Laufen zu bekommen. 
Da ich ständig fehlerhafte Daten bekommen habe, hab ich das ganze Befehl 
für Befehl, in der Reihenfolge wie es im Datenblatt steht, über die UART 
(Terminalprogramm) gesteuert händisch abgetestet - mit dem Digital-Oszi 
an den beiden Leitungen. Erstmal geht alles, aber trotzdem - ich kann 
mich nur wundern, was ich da sehe...

Und zwar kommt es dazu, dass wenn z.B. für einen Busreset nach einem 
Fehler mehrere Stop-Conditions hintereinander gesendet werden, der µC 
SCL und SDA beide auf GND zieht, dabei aber im TWSR die 0x08 stehen hat 
(also "Start Condition gesendet"!). In diesem Zustand funktioniert auf 
dem Bus natürlich nichts mehr richtig. Daten werden dabei übrigens 
gesendet, aber die Leitungen bleiben im Ruhezustand immer auf low, und 
Start und Stop werden nicht korrekt gesendet.

Schicke ich dann nochmal Stop, gehen die Leitungen wieder auf high, und 
im TWSR steht 0x00. Laut Datenblatt bedeutet dieser Zustand einen 
Busfehler, in dem man eine Stop Condition senden soll. Wenn ich das 
mache, fällt er aber wieder in den "beide Leitungen low, 
TWSR=0x08"-Zustand.

Was stimmt denn jetzt? Und wie kann ich unter diesen Umständen einen 
Busfehler von einer gesendeten Start-Condition unterscheiden?
Er gerät nämlich manchmal bei "normalen" Busbedingungen in so einen 
Zustand...

Autor: Hundertvolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edit: ich hab inzwischen festgestellt, dass der Mega32 im Idle-Zustand 
den Befehl, eine Stop-Condition zu senden, wie eine Start-Condition 
behandelt. Ob er dann auch den Interrupt auslöst hab ich noch net 
rausfinden können... sieht also so aus, als müsste ich da in der Logik 
Sorge für tragen, das hätten die aber ruhig mal ins Datasheet schreiben 
können...

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.