Ozzy,

bist Du sicher, dass es der "Absturz" des Teilnehmers und die SDA-Leitung ist, der den Bus blockiert? Könnte es nicht folgender Vorgang sein:

Der Master spricht einen Teilnehmer (Slave) mit einem "Read"-Befehl an. Dann hält der Slave die SCL-Leitung auf Null, um den Bus zu belegen, bis er die angeforderten Daten bereitgestellt hat. Er gibt SCL erst wieder frei, wenn er anfangen will, die angeforderten Daten an den Master zu senden. - Es ist mir öfter passiert, dass der Slave sich beim Zusammensuchen der Daten verheddert hat und nie zu senden anfing. Dann blieb die SCL-Leitung auf Null und der Bus war mausetot.

Eine Gegenmassnahme ist, die Teilnehmer alle nur noch als Master-Transmitter auftreten zu lassen. D.h. ein Master sendet einem Slave die Aufforderung, bestimmte Daten zurückzumelden. Danach gibt er den Bus frei. Der angesprochene Teilnehmer sucht die Daten zusammen und sendet sie als Master an den Anforderer zurück. Wenn er beim Datensuchen abstürzt, wartet der Anforderer zwar vergeblich auf die Daten - aber der Bus bleibt betriebsbereit . Voraussetzung für dieses Verfahren ist, dass jede Botschaft die TWI-Adresse des Absenders enthält.

mare_crisium