Gast
#1991014
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