Forum: Mikrocontroller und Digitale Elektronik ATmega644P TWI-ausgeschaltete Komponenten stören Bus


von Rush .. (rush)


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

von Peter D. (peda)


Lesenswert?

Rush ... schrieb:
> VCC vom Sensor über den Controller auf Masse gezogen sodass
> der Sensor praktisch aus war.

Dann werden SDA/SCL über die internen Schutzdioden auf max 0,7V 
geklemmt.
Kein Wunder, daß dann nichts mehr geht.


Peter

von Rush .. (rush)


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?

von Rush .. (rush)


Lesenswert?

Ich frage mich auch, warum es mit der selben Konfiguration bei dem 
vorherigen Logger funktioniert hat. War halt nur ein Sensor drauf.

von Peter D. (peda)


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

von Rush .. (rush)


Lesenswert?

Ah ok, verstehe. Na dann werde ich mich wohl mal an die Arbeit machen. 
Danke dir

Gruß, Konrad

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.