PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Antiblockierer



Ozzy
18.06.2009, 20:54
Moin,

wir haben hier für ein Projekt einen I2C-Bus mit 8 "Teilnehmern". Unser Problem ist, dass wenn ein Teilnehmer abstürzt, der ganze Bus blockiert ist, da er die SDA-Leitung runterzieht.
Gibt es eine Baustein, der so etwas verhindern kann? Also eventuell zwischen Teilnehmer und Bus anschließen oder so???

MfG, und vielen Dank?

021aet04
18.06.2009, 22:38
So etwas kenne ich zwar nicht, wie soll das Bauteil erkennen, welcher abgestürzt ist, aber es ist mindestens ein Master. Dieser überprüft die Leitung, und wenn er merkt, dass ein Teilnehmer abgestürzt ist, resettet oder schaltet die Versorgung mit einem Transistor oder Fet kurz ab.

mare_crisium
18.06.2009, 23:49
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

Yossarian
19.06.2009, 09:43
Hallo
Jeder Teilnehmer braucht einen Watchdog, der ihn bei einem Absturz vom Bus trennt.

Mit freundlichen Grüßen
Benno

Ozzy
01.07.2009, 15:20
Moin,

so weit so gut, aber was passiert, wenn die Stromversorgung zum Slave unterbrochen ist???

Yossarian
01.07.2009, 16:08
Hallo

aber was passiert, wenn die Stromversorgung zum Slave unterbrochen ist?
... dann ist der entsprechende Teilnehmer bzw. dessen Anschlüsse hochohmig.
Mit freundlichen Grüßen
Benno