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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.