LCD Display (I2C) von VCC und I2C-Bus trennen und ausschalten, wie?

Gast #5899282
Lesenswert?

Hallo,

da das LCD-Display nicht immer benötigt wird, soll dieses komplett 
ausgeschaltet werden.
Damit das ausgeschaltete LCD-Display die anderen Teilnehmer auf dem 
I2C-Bus nicht stören soll, muss der I2C Bus und VCC vom OLED getrennt 
werden.

Hat jemand eine Idee, wie man dies am besten in Hardware umsetzen kann?

Gruß Stefan
#5900055
Lesenswert?

Stefan D. schrieb:
> muss der I2C Bus und VCC vom OLED getrennt
> werden.

Von wem kommt denn das "muss"?

Spontan würde ich sagen, dass ein ausgeschaltetes Gerät auf einem 
I2C-Bus keine Probleme bereiten kann. Die CLK- und Daten-Anschlüsse 
sollten im ausgeschalteten Zustand hochohmig sein (so wie im normalen 
Betrieb auch).

Klingt für mich ein bisschen nach "Lösung sucht Problem"
#5900102
Lesenswert?

Sebastian R. schrieb:
> Spontan würde ich sagen, dass ein ausgeschaltetes Gerät auf einem
> I2C-Bus keine Probleme bereiten kann. Die CLK- und Daten-Anschlüsse
> sollten im ausgeschalteten Zustand hochohmig sein

Sind sie aber möglicherweise nicht.

> (so wie im normalen Betrieb auch).

Im normalen Betrieb liegt die Betriebsspannung am I²C Slave an. Die 
vermutlich vorhandenen Schutzdioden an den Eingängen sind dann für alle 
erlaubten Pegel auf SCL/SDA immer gesperrt.

Ohne Betriebsspannung führt ein H-Pegel auf einer dieser Leitungen aber 
dazu, daß die Schutzdiode in Richtung Vcc leitet und dann wird der I²C 
Slave über die Schutzdiode versorgt. Bzw. im Fall des TE das ganze 
Display. Und weil der H-Pegel nur von einem Pullup kommt, kann es gut 
sein, daß der Bus dadurch gestört wird.

Nun kann man die SDA/SCL Leitungen natürlich so implementieren, daß 
sie keine solche Schutzdiode nach Vcc haben. Das würde man dann aus dem 
Datenblatt des Displays entnehmen können. Aber nachdem der TE den 
genauen Typ seines Displays geheim halten will, ja sich noch nicht mal 
entscheiden kann ob es ein LCD oder OLED ist - da kann man gar nichts 
sagen. Ist aber auch gut. Wer keine gescheite Frage stellt, kriegt halt 
keine Antwort.

Dazu kommt noch, daß praktisch alle Displays sich per Software so weit 
abschalten lassen, daß sie nur noch Strom im sub-µA Bereich brauchen. 
Das harte Abschalten der Versorgungsspannung ist vermutlich gar nicht 
nötig.
Gast #5900112
Lesenswert?

Sebastian R. schrieb:
> Die CLK- und Daten-Anschlüsse
> sollten im ausgeschalteten Zustand hochohmig sein (so wie im normalen
> Betrieb auch).

Und genau daran scheitert es oft, denn wenn ein Slave keine 
Spannungsversorgung hat, dann ist der High Pegel in der Regel außerhalb 
seiner maximum ratings und wird durch die ESD Schutzdioden (falls 
vorhanden) abgeleitet. Ergo: High Pegel funktionieren nicht mehr.
#5900201
Lesenswert?

Axel S. schrieb:
> Die
> vermutlich vorhandenen Schutzdioden an den Eingängen sind dann für alle
> erlaubten Pegel auf SCL/SDA immer gesperrt.

Es sei denn der Chipentwickler hat vorher mal die I²C Spec gelesen.

Dann sind nämlich keine einfachen Dioden an den I²C Busleitungen, und im 
Dabla steht bei "Absolute Maximum Ratings" nicht was von VCC+0,3 Volt 
sondern eine feste Spannung wie 5,5V unabhängig von VCC.

Der Fall "unversorgter Chip am I²C Bus" war von Phillips nämlich 
durchaus vorgesehen in der Spec.

Die einfachen ESD Dioden nach VCC man übrigens mit 'nem Multimeter 
nachmessen. Sind sie vorhanden, bräuchte man sowas wie Analogschalter 
als Bustrenner.
#5900294
Lesenswert?

Jim M. schrieb:
> Axel S. schrieb:
>> Die
>> vermutlich vorhandenen Schutzdioden an den Eingängen
>
> Es sei denn der Chipentwickler hat vorher mal die I²C Spec gelesen.
...
> Der Fall "unversorgter Chip am I²C Bus" war von Phillips nämlich
> durchaus vorgesehen in der Spec.

Aha. Dieses Detail war mir bisher entgangen. Gut zu wissen.
Darauf verlassen würde ich mich trotzdem nicht unbedingt.
Gast #5900880
Lesenswert?

Hallo zusammen,

ich schalte nun den I2C Bus über ein Level Shifter.
An LV (vom LevelShifter) hängt das LCD-Display und HV der restliche I2C 
Bus (beide 5V). VCC vom LCD schalte ich über zwei Transistoren, siehe 
Anhang.

Nach dem einschalten muss ich das LCD wieder initialisieren. Das ganze 
funktioniert hier sehr gut. :)

Vielen Dank, für die vielen Antworten.

Stefan D.
Angehängte Dateien:
Gast #5902036
Lesenswert?

Ich hätte zu diesem Thema auch eine Frage:
Ich habe einen Mega2560, bei dessen Start ich kurz über I2C auf eine 
DS3231 zugreife. Danach würde ich gerne I2C deaktivieren, da ich die 
externen Interrupts nutzen würde, die ebenfalls an sda und scl sind. Für 
sda und scl gibt es ja am Mega Alternativpins, an denen ich die DS3231 
auch angeschlossen habe. Sobald ich aber die die externen Iterrupts 
aktiviere, stürzt der Mega ab bzw. geht in Dauerreset. Auch ein 
Zurücksetzten der I2C-Register bringt nichts. Hat hierfür jemand eine 
Idee? Würde der Sleepmode für I2C vielleicht was bringen? Achja, ich 
benutze die Fleury-Lib.

Grüße
Markus
#5902442
Lesenswert?

mw73 schrieb:
> Ich hätte zu diesem Thema auch eine Frage:

Es ist ne saublöde Idee, sich an ein Thread anzuhängen. Du wirst so 
viele Antworten auf die Ursprungsfrage provozieren.

mw73 schrieb:
> Sobald ich aber die die externen Iterrupts
> aktiviere, stürzt der Mega ab bzw. geht in Dauerreset.

Ein AVR kann nicht abstürzen. Selbst bei hoher Interruptlast führt er 
immer noch das Main aus, nur langsamer.

Einen scheinbaren Rest gibt es, wenn man Interruptquellen freigibt, zu 
denen kein Handler installiert ist. Diesen Scheinreset macht der 
default-Handler, den man auch umbiegen kann.

mw73 schrieb:
> Der controller stürzt bereits ab, wenn an den ExtInt noch gar nichts
> hängt.

Interrupts auf floatende Pins freigeben, fällt unter die Rubrik "Garbage 
In, Garbage Out".

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