Forum: Mikrocontroller und Digitale Elektronik LCD Display (I2C) von VCC und I2C-Bus trennen und ausschalten, wie?


von Stefan D. (Gast)


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

von Teo D. (teoderix)


Lesenswert?

Stefan D. schrieb:
> da das LCD-Display nicht immer benötigt wird, soll dieses komplett
> ausgeschaltet werden.

Was sagt das Damla, lohnt das überhaupt?

von John (Gast)


Lesenswert?

Stefan D. schrieb:
> 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.

Wie soll das Trennen des OLEDs Störungen vom LCD verhindern?

von Stefan D. (Gast)


Lesenswert?

Ich wollte ein „Bidirectional level shifter“ verwenden. Wenn die 5V 
deaktiviert werden, trennt der Mosfet SDA und SCL vom restlichen Bus.

Was mir noch nicht klar ist, ob diese „Bidirectional level shifter“ auch 
mit 5V auf beiden „Seiten“ funktioniert?!

von Stefan F. (Gast)


Lesenswert?

Stefan D. schrieb:
> Ich wollte ein „Bidirectional level shifter“ verwenden.

Meinst du diese teile, die aus einem MOSFET pro Leitung bestehen? Dann 
beachte die parasitäre Diode im Transistor und wie sie sich auswirkt. 
Hier kommt es darauf an, sie richtig herum zu drehen.

von Peter D. (peda)


Lesenswert?

Was denn nun, LCD oder OLED?
OLEDs haben oft einen Power-Down-Mode und beim LCD kann man das 
Backlight abschalten, um Strom zu sparen.
Um den I2C-Bus zu trennen, kann man Analogschalter benutzen, z.B. 
74HC4066.

von Sebastian R. (sebastian_r569)


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"

von Axel S. (a-za-z0-9)


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.

von Stefan F. (Gast)


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.

von M. K. (sylaina)


Lesenswert?

Stefan D. schrieb:
> da das LCD-Display nicht immer benötigt wird, soll dieses komplett
> ausgeschaltet werden.

Was hast du denn für ein I2C Display? Eines mit SSD1306 oder SH1106 
Controller? Da gib es Befehle für einen Standby des Displays, genügt dir 
vielleicht schon ;)

von Jim M. (turboj)


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.

von W.S. (Gast)


Lesenswert?

Stefan D. schrieb:
> Hat jemand eine Idee, wie man dies am besten in Hardware umsetzen kann?

Dazu 3 Analogschalter wie z.B. NC7SZ66 o.ä. Je einer für SDA, SCL und 
VCC des abzuschaltenden Chips. Mit etwa 5 Ohm sind die Dinger eben auch 
für VCC geeignet.

W.S.

von Axel S. (a-za-z0-9)


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.

von Stefan D. (Gast)


Angehängte Dateien:

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.

von mw73 (Gast)


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

von Stefan F. (Gast)


Lesenswert?

Auf welche Flanken oder Pegel reagieren denn die Interrupt-Leitungen und 
welchen Pegel haben sie tatsächlich im Moment der Störung?

Stürzt er auch ab, wenn du I²C in der Software gar nicht nutzt?

von mw73 (Gast)


Lesenswert?

Die Interrupts habe ich auf steigende Flanke konfiguriert.
Der controller stürzt bereits ab, wenn an den ExtInt noch gar nichts 
hängt.
Wenn ich I2C gar nicht aktiviere, funktionieren natürlich die ExtInt wie 
gewünscht.

von Stefan F. (Gast)


Lesenswert?

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

Offene Pins haben zufällige Signale. Eventuell arbeitet der µC dann nur 
noch die ISR ab und bekommt keine Zeit für andere Aufgaben. Hast du das 
bedacht?

von mw73 (Gast)


Lesenswert?

Hmm, ja, aber an den Alternativpins hängt ja immer noch die RTC über die 
Bussleitungen.

Wahrscheinlich wird mein Vorhaben nicht funktionieren, I2C und EXTINT 
gleichzeitig zu betreiben

von Stefan F. (Gast)


Lesenswert?

Falls du dazu noch weitere Fragen hast, zeichne mal einen Schaltplan auf 
und messe die Signalpegel mit einem Oszilloskop.

von mw73 (Gast)


Lesenswert?

Ich bin zur Zeit auf Urlaub, melde mich wenn ich wieder zu Hause bin und 
die Pegel mit dem Oszi untersucht habe

LG
Markus

von Peter D. (peda)


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".

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.