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
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
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?
Ich frage mich auch, warum es mit der selben Konfiguration bei dem vorherigen Logger funktioniert hat. War halt nur ein Sensor drauf.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.