Platz-Spar-Trick, der nicht funktoniert: Ziel: OLED+ISP-Buchse mit 8 Pins. Eigentlich würde man 9 Pins brauchen - aber da MISO nur für ISP benötigt wird, soll MISO auch RESET für das OLED sein. Dass MISO bei Hardware-SPI automatisch Eingang ist, sollte nicht stören: Ein Pullup am Display zieht MISO hoch, das OLED ist im Betrieb mit Hardware-SPI dadurch nicht im Reset. Wenn man es resetten will, beendet man SPI, definiert den PIN kurz als Output, gibt Low aus. Nur klappt es nicht: Störungen im Display. Meistens Streifen, oft an gleicher Stelle, obwohl der Refresh den komplette Displayinhalt ersetzt. Der OLED-Code ist mit anderen Platinen ausgetestet, SPI-Frequenz wurde versuchsweise minimiert. Es gibt die Störungen nur, wenn man den Reset-Eingang des OLED per 2K2 oder 4K7 oder 10K auf 5V zieht - aber keine, wenn man ihn auf einen MCU-Pin legt, der 5V ausgibt. Der Pullup ist direkt am Display, das sich auf einer separaten Platine befindet. Wenn ich die Reset-Leitung im Betrieb (nach dem initialen Reset und dem Starten der Display-Testscheife) von MISO auf einen anderen MCU-Pin umstecke, der 5V ausgibt, bleibt es störungsfrei. Wenn ich den Reset-Pin des OLED im Betrieb von der Mikrocontroller-Platine trenne und nur den 2K2 wirken lassen, kommen nach einiger Zeit Störungen. Ich habe irgendwo gelesen, dass der Reset bei OLEDs nicht immer korrekt realisiert ist (kein Spannunswandler auf 3V3), kann mich aber nicht an mehr erinnern. Könnte es damit zusammenhängen? Ich ziehe den ja auf 5V. Aber wieso geht es mit einem MCU-Pin?
Hi, evt. zieht der Reset des Displays phasenweise mehr Strom als Du mit dem Pullup lieferst. Versuch mal einen C mit 100n an den Reset des Displays zu legen. Gruß Andreas
Danke für den Tip. Es hat geholfen. Ich nehme allerdings an, Du meintest 100N zwischen Reset-Pin und GND - damit der Pull-Up den C aufläd. Das hatte keinen Effekt. Seltsamerweise ist der Fehler restlos weg, wenn ich 100N zwischen Reset und VCC installiere?!
Oops, zu früh gefreut. Jetzt ist es wieder passiert.
Der Reset-Pin muss anscheinend direkt auf 5V liegen, damit das SSD1306-SPI-Display störungsfrei bleibt. Selbst mit einem 1K-Pullup am Reset-Pin läuft das Display nicht ohne Störungen. Wenn ich von Hardware-SPI zu Software-SPI wechsle und damit MISO, also meinen OLED-Reset, als Output konfigurieren kann und High ausgebe, statt den Pin bei Hardware-SPI von einem Pull-Up hochziehen zu lassen, läuft es störungfrei.
Michael schrieb: > Nur klappt es nicht: Störungen im Display. Ein Pullup nützt da garnichts. Bei Programmieren ist auf MISO reichlich Gezappel und kein konstant high. Wenn der MISO nur immer high wäre, bräuchte man ihn ja zum Programmieren nicht. Nimm den MISO als einen Datenpin des OLED.
> Bei Programmieren ist auf MISO reichlich Gezappel
Das wäre egal, beim Programmieren ist das Display nicht dran, da der
ISP-SPI-OLED-Header dann vom ISP-Programmierer belegt wird.
Im Normalbetrieb ist MISO nutzlos, das Display hat keinen Output,
deshalb wollte ich den nutlosen Pin als Display-Reset nehmen. Leder wird
er durch Harwdare-SPI zwangsweise zum Input: Deshalb brauche ich einen
Pull-Up, um den Reset auf High (idle) zu halten.
Inzwischen verdächtige ich das erstmals verwendete Schaltnetzteil. Das
scheint das Display ziemlich zu stören. Vieleicht ist der Reset des OLED
nur eine besonderes empfindliche Antenne?
Bau den Pullup mal spaßeshalber auf der displayseitigen Seite der Leitung ein, nahe am Displaycontroller. Wie lang ist die Leitung, wie dicht liegt die Reset-Leitung an den Datenleitungen? Wie liegt sie relativ zu den Versorgungsleitungen? Zieht das Display kurze heftig gepulste Ströme aus der Versorgung, ist die Versorgung displayseitig ordentlich abgeblockt um das zu verhindern?
:
Bearbeitet durch User
> Bau den Pullup mal spaßeshalber auf der displayseitigen Seite der Leitung ein Dort hatte ich es probiert. > ist die Versorgung displayseitig ordentlich abgeblockt um das zu verhindern? Das Display hat 10uF (keramisch) zwischen VCC und GND. Ich weiß aber, dass das sonst auch ohne geht, setze dieses Displays schon länger ein. > Wie lang ist die Leitung 30-40cm > wie dicht liegt die Reset-Leitung an den Datenleitungen? Auf der Platine nicht nenennswert, siehe Anhang (Reset/MISO hervorgehoben, ganz links GND, ganz rechts VCC, neben Reset MOSI und SCK, so wie sich das durch die MCU-Pin-Reihenfolge ergibt). Danach kommt ein loses Kabelbündel. > Wie liegt sie relativ zu den Versorgungsleitungen? Das könnte das Problem sein. Ich setze erstmals ein 600mA-Mini-Schaltnetzteil ein und habe damit 230V auf der Platine. Unter dem Schaltnetzteil soweit wie möglich eine durchgehende Massefläche auf dem Top-Layer. Signale überwiegend auf Bottom. Aber die OLED-SPI-Buchse liegt nur ~1cm daneben. > Zieht das Display kurze heftig gepulste Ströme aus der Versorgung Der Displaytest lässt es zwar ordentlich flackern (displayfüllende Animationen mit 10-20 FPS, schnelles Invertieren des ganzen Displays usw.), aber diese Displays sollen nicht mehr als 20-30mA brauchen. Das Netzteil liefert kurzzeitig auch 1A. Ich habe keinen externen Elko zur Pufferung dran (meines Wissens ist einer drin), aber heute versuchsweise mal 1000uF angeschlossen - ohne Effekt.
Hi, was passiert denn auf der Reset Leitung, wenn das Display flackert? Konntest Du da irgend etwas mit dem Oszi sehen? (an Reset und GND des Displays gemessen? Notfalls würde ich einen Jumper zu Vcc an die Reset legen, den Du beim Programmieren entfernst. So oft sollte das ja nicht vorkommen. Du kannst ja auch mit einem 100 Ohm Angstwiderstand jumpern, falls Du den Jumper mal beim programmieren vergisst. Michael schrieb: > aber heute versuchsweise > mal 1000uF angeschlossen - ohne Effekt. Das dürfte wenig helfen. Dafür ist die Induktivität von Elkos zu hoch. Das ist höchstens in Kombination mit mehreren Keramik C's a 100n sinnvoll. Auch die Vcc mal gegen GND direkt am Display mit dem Oszi messen. Gruß Andreas
:
Bearbeitet durch User
> was passiert denn auf der Reset Leitung, wenn das Display flackert?
Ich habe kein Oszi. Offensichtlich passiert aber kein Reset. Der
OLED-Chip gerät "nur" in einen seltsamen Zustand. z.B. streifenförmige
Fehler an bestimmter Stelle, oder Displayversatz-Fehler, die bleiben,
obwohl jeder Frame das Display komplett neu beschreibt - so als ob ein
Mapping zwischen RAM und Display verloren gehen würde.
Ich habe inzwischen mal eine völlig andere, ältere Platine von mir, mit
anderer OLED-Platine (auch SSD1306, auch SPI-Interface, andere
Displayfarbe, Carrier-PCB von einem anderen ebay-Verkäufer), testweise
so betrieben. In diesem Test wurde der Reset nur vom MCU-Pullup
hochgezogen und es lief kein fordernder Displaytst:
Da gibt auch Fehler, wenn auch nicht so heftig, so doch von ähnlicher
Art. Bildschirmbereiche verschieben sich. Das scheint mit dem
dargestellten Inhalt zusammenzuhängen. Die getestete Firmware gibt
meistens nur Text aus und dabei passiert nichts (innerhalb der
Testzeit). Eine displayfüllende Animation mit maximaler Geschwindigkeit
verursacht dagegen Versatz-Fehler.
Könnte mit der Anzahl eingeschalteter OLED-Punkte zusammenhängen.
Vielleicht zieht/braucht der Chip aus der Reset-Leitung Strom? Ich
müsste mal was stärkeres als 100N an den Reset-Pin hängen (an VCC ist
schon 10uF). Inzwischen bin ich allerdings mit Software-SPI glücklich
und treibe den Reset per MCU-Pin und werde da nicht mehr weiter
nachforschen.
Habe das angeblich 5V-tolerante Display zerlegt. 3.3V-Spannnunswandler ist zwar drauf, aber der Reset und andere IO-Leitungen gehen direkt an das SSD1306-Display, das IMHO nicht 5V-tolerant ist.
Laut Datenblatt verträgt ein SSD1306 4V, auf Inputs VCC + 0,3V, also betreibe ich ihn an 5V-Outputs 0,7V über dem Limit. Kann man einfach Dioden in die vier Leitungen MSIO, SCK, C/D und CS schalten? Daten fliessen nur von der MCU zum Display (bei Hardware-SPI allerdings mit bis zu 9,2MHz).
Michael schrieb: > und werde da nicht mehr weiter > nachforschen. Das ließ Dir wohl doch keine Ruhe. ;-) Zur Sache: das ich schon heftig. Obwohl ich mir damit allein den Effekt nicht erklären kann. Das hieße ja daß Reset außerhalb der Spec beschaltet sein muß damit es fuktioniert. Aber wer weiß was bei diesem Display noch alles an Designregeln mißachtet wurde. Das mit den Dioden ist sehr grenzwertig. Bei kleinen Strömen sind das eher 0.5V die da abfallen. Aber da vorher ja nichts kaputtging..... Besser ist ein ordentlicher Pegelwandler Gruß Andreas
:
Bearbeitet durch User
> Das ließ Dir wohl doch keine Ruhe. ;-)
Nicht so ganz, meine Platine ist auf die Fensterbank gefallen, danach
war das OLED kaputt und musste runter (Dremel) und man konne die
Rückseite sehen.
Ich habe Widerstände (Reste von 4K7 bis 5K6) in MOSI, SCK, CS, C/D und
RESET gelegt, dann schaffen es die Clamping-Dioden anscheinend,
jedenfalls reicht es dann, den Reset per Pull-Up hochzuziehen. Das war
aber nur ein kurzer Test mit der langsameren Geschwindigkeit von
Software-SPI.
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.