Ja ja der TWI,

ich baue gerade einen Hausbus mit TWI.
Das Kabel ist sehr lang und Störer sind in der Nähe.

Die Routinen von Peter Fleury habe ich auch verwendet und es kam zu bösen Hängern.
Diese Routinen sind starr auf das Protokoll ausgerichtet. Kommt es zu abweichenden Verhalten, wegen Störung auf der Leitung oder weil ein Teilnehmer nicht exakt konform ist, hängt die Sache gerne in Endlosschleifen.
Bei mir half nur:
-Statussignale ausgeben, damit ich sehen konnte, in welcher Warteschleife die TWI Routinen gerade sind.
-Am Oszi (viele Kanäle sind nützlich) Statussignale und Datensignale anschauen.
-Im Code die Hängestelle finden und viel Nachdenken.

Bei meinem Bus mit den Störungen half nur:
-alle potentiellen Enlosloops sind mit Timeouts versehn. Er kann sich nun nirgends mehr festlaufen.

Wenn Du noch einen logischen Fehler hast, sollte Dir wie oben beschrieben ein Oszi am besten helfen.


Gruß
Bernhard