ATmega644P TWI-ausgeschaltete Komponenten stören Bus

OP #2275532
Lesenswert?

Hallo Community....

Ich habe ein kleines Problem mit dem TWI des ATmega644P.

Undzwar habe ich verschiedene I2C-Sensoren am Bus hängen. Die Sensoren 
können über den uC ein bzw. ausgeschaltet werden. Die VCC Pins hängen 
direkt an den Pins des Controllers. Dachte mir das wäre die einfachste 
Variante da die Sensoren nur einen gerinegn Strom benötigen und ich mir 
somit Transistoren sparen kann.

Die ganze Schaltung stellt einen Datenlogger dar. Dieser besitzt ein 
RTC-Baustein welcher dauerhaft mit Spannung versorgt wird und somit der 
einzige am Bus hängende, dauerhaft aktive Baustein ist.

Nun war ein Sensor angeschlossen, SCL, SDA, GND waren mit dem Bus 
verbunden, VCC vom Sensor über den Controller auf Masse gezogen sodass 
der Sensor praktisch aus war. Nun hatte ich über den UART die sekunden 
aus dem RTC ausgeben lassen. Ist der Sensor physikalisch angeschlossen, 
bleibt der I2C schon beim schreiben der START-Condition hängen. (Mit 
Logicanalyzer geprüft). Das Clocksignal wird zwar rausgegeben, aber auf 
der SDA Leitung tut sich nichts. Dies passiert unabhängig vom Zustand 
der VCC-Leitung des Sensors. Ziehe ich den Sensor vom Logger ab, so 
läuft die Kommunikation einwandfrei.

Das verwunderliche ist allerdings, dass genau die selbe Software auf 
einem ATmega88 mit nur einem, dauerhaft verbauten Sensor (SHT21 von 
Sensirion) und dem selben RTC, astrein funktioniert. Auch die Bestromung 
des Sensors ist identisch.

Kann sich jemand vorstellen was die Kommunikationsprobleme auslöst?

Hardware: ATmega644P
Sensor: HYT271 oder SHT75
AVR-Studio 5.0


Danke schonmal im Voraus
OP #2275574
Lesenswert?

Gut, wenn der Sensor aber nicht angeschlossen ist und ich den VCC-Pin 
trotzdem auf logisch Null schreibe dürfte es doch auch nicht 
funktionieren. Der Controller weiss doch nicth ob ein Sensor 
angeschlossen ist oder nicht. Oder verstehe ich da was falsch?
#2275591
Lesenswert?

Die Schutzdioden sind im Sensor!

Ein I2C-Bus ist dann gestört, sobald ein Teilnehmer ohne VCC ist.
Es kann sein, daß VCC offen statt auf GND reicht, um die VCC über die 
Dioden und die Pullups ein kleines bischen anzuliften, daß schon High 
erkannt wird. Aber sauber ist sowas nicht.

Willst Du VCC abschalten, mußt Du auch die I2C-Leitungen trennen, z.B. 
mit nem 74HC4066 (der immer VCC bekommt).


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren