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


von Hundertvolt (Gast)


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

von Hundertvolt (Gast)


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

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.