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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.