PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C-Bus mit ausgeschalteten Teilnehmern



bart
02.08.2006, 21:46
Hallo,

habe mal eine Frage. Ich habe mehrere I2C Teilnehmer z.B RNBFRA, KEYLCD IO-Ports ... an einem I2C-Bus. Wenn ich nun die Spannungsversorgung des KEYLCD abschalte und weiterhin angestöpselt lasse, killt mir das den kompletten Bus, sprich das RNBFRA macht garnichts mehr!

Warum und was kann ich dagegen tun?

Mobius
03.08.2006, 12:52
Wahrscheinlich, weil der angeschlossene Moul die beiden Leitungen (eigentlich genügt es auch schon eine ^^) aktiv nach low zieht. So denkt jeder, der Bus sei besetzt (CLK auf low) und traut sich nicht, seine Daten auf diesen zu setten, beziehungsweise alle erhalten plötzlich nur noch 0-en als Daten (SDATA auf low). Dies kommt daher zustande, dass keiner die Leitungen aktiv nach 5V ziehen kann/darf/soll (open collector).

Was du tun kannst? Das einzige, was mir so auf die Schnelle einfällt (außer den Teilnehmer NICHT abzuschalten) wäre, die beiden Leitungen (und die Versorgungsspannung) mit einem Relay physikalisch vom Bus zu trennen. Bräuchtest halt ein 3-poliges Relay pro Teilnehmer...

MfG
Mobius

€dit: Ansonsten, wäre es vielleicht möglich, das Modul nur in den Ruhemodus zu schicken? Kenn mich leider mit AVRs nicht aus und weiß daher leider nicht, ob es möglich ist, den µC durch einen I2C Interrupt aus diesem zu reißen. Wäre halt eine weitere Möglichkeit, den, zumindest PIC sind im Sleep seeehr sparsam (wenige 100µA)...

Reeper
03.08.2006, 13:01
Eine Alternative zum Relai wären evtl. 2 Transistoren
Dazu braucht man aber noch ein freien Digitalport.
Diesen als Ausgang und auf jeweils 2 npn Transistoren (mit 4k7 Vorwiderstand), die jeweils in der SDA und SCL Leitung hängen O:) [/code]

uwegw
03.08.2006, 15:33
Mit nur 2 Transistoren ists nicht getan, weil die Leitungen ja bidirektional betriben werden.
Man könnte mal versuchen, einen 4066 als Schalter für den Bus zu benutzen.