Forum: Mikrocontroller und Digitale Elektronik I2C Hängt - Problemlösung


von Tubie (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier ein kleineres Problem mit der TWI Schnittstelle am AVR. 
Diese gibt beim empfangen nicht immer das TWINT Bit zurück. Es wird 
nicht zurückgegeben, weil eines der 4 slave nicht richtig auf den Bus 
reagiert. Vermutlich eine Störung oder so.

Das passiert relativ selten aber dann hängt der ganze µC. Ich habe in 
den ganzen Programmen, die im Netz zu finden sind aber noch nie eine 
Fehlerbehandlung gesehen. Wird dabei davon ausgegangen, das I2C immer 
100% fehlerfrei ist? Kann es nicht doch mal sein das irgendwo ein Bit 
verschluckt wird - wie bei mir.


Mein Lösungsvorschlag:
Vor dem senden des StartBit einen rückwärts Zähler setzten, welcher in 
den Lese/Schreib Routinen immer wieder neu gesetzt wird. Erreicht der 
Zähler vor dem StopBit den Wert 0, so liegt ein Timing Fehler vor und 
der Fehler wird ausgegeben.

In den Routinen selbst dürfen dann I2C Schleifen nur wiederholt werden, 
wenn der Zähler nicht 0 ist.


Den Watchdog Timer möchte ich erst einsetzten, wenn der rest fehlerfrei 
läuft.

Gruß,

Tubie

von Entwickler (Gast)


Lesenswert?

Was sind das für slaves, wie lang ist die Verdrahtung des Busses, wie 
groß sind die pullup Widerstände und wie sieht die gemeinsame Masse aus?

von Tubie (Gast)


Lesenswert?

Hallo,

die Slaves sind 24c512, DS1307, DS2482-800 bisher ist der fehler ca. 5x 
aufgetaucht - innerhalb eines Jahres - beim programmieren mit JTAG 
interface. Ist also nicht sehr oft.

Ich habe allerdings einen 4. Slave (Mega8) den ich gerade programmiere 
und konte bedingt durch einen Programmfehler im Mega8 diesen Fehler am 
Master (Mega32) herbeirufen. Die Fehler, die selten auftreten, könnte 
der interne Watchdog abfangen. Ich möchte nur sicherstellen, falls der 
Mega8 oder ein anderer Baustein mist baut, ich das System in einem 
kontrollierten Zustand habe und ggf. eine Fehlermeldung habe.

Gruß,
Tubie

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.