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
Stefan D. schrieb: > da das LCD-Display nicht immer benötigt wird, soll dieses komplett > ausgeschaltet werden. Was sagt das Damla, lohnt das überhaupt?
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?
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?!
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.
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.
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"
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.
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.
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 ;)
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.
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.
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.
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.
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
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?
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.
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?
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
Falls du dazu noch weitere Fragen hast, zeichne mal einen Schaltplan auf und messe die Signalpegel mit einem Oszilloskop.
Ich bin zur Zeit auf Urlaub, melde mich wenn ich wieder zu Hause bin und die Pegel mit dem Oszi untersucht habe LG Markus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.