Hallo, ich hatte mir vor kurzem erst ein OLED (0.96 Zoll - 126px * 64px) aus China zugelegt. Darauf habe ich einfach mal zum testen das OLED Sketch von Adafruit für den Arduino Uno drauf geladen, dass auch ohne Einschränkungen funktioniert hat. Mein nächstes Ziel war es ein eigenes Assembler Programm zum Ansteuern des Displays zu schreiben, was ich bis heute nicht hinbekommen hatte trotz der Hilfe hier im Forum. Nun habe ich heute mal aus Laune wieder das Arduino Uno OLED Sketch drauf geladen, aber es hat nicht funktioniert. An der Schaltung hatte sich nichts verändert, alles blieb beim alten. Nun zu meiner Frage, kann das OLED durch falsche Assembler Anweisungen kaputt gegangen sein (z.B. weil ich nicht an das Bitrate Register gedacht hatte)? Ich bedanke mich schon mal :D
Vielleicht hast du dem COB eine elektrostatische Ladung verpasst. oder er hat durch zu viel Bewegung den Kontakt zum Kabel verloren. Oder du hast versehentlich den Ausgang der Ladungspumpe kurzgeschlossen.
Zum Kern der Frage: Nein, durch Software lässt sich dieses Modul nicht zerstören. Steinalte Weißheit: Wer den Fehler nicht findet, sucht an der falschen Stelle...
:
Bearbeitet durch User
int 21h schrieb: > An der Schaltung hatte sich nichts verändert, alles blieb beim alten. Wie genau sieht die denn aus? Hast du den I2C richtig eingestellt, stimmt die Adresse, sind Pullups an SDA/SCK vorhanden? Lässt du das Display auch aktualisieren (display()-Funktion wird benutzt? ;))?
Stefanus F. schrieb: > Vielleicht hast du dem COB eine elektrostatische Ladung verpasst. Was ist ein COB? Stefanus F. schrieb: > Oder du hast versehentlich den Ausgang der Ladungspumpe kurzgeschlossen. Ladungspumpe kurzgeschlossen? Ist das ein Bauteil am OLED oder an der Schaltung? pegel schrieb: > int 21h schrieb: > ein OLED > > Nur eins? Normal kauft man doch mehr davon zum spielen. Ich habe mir jetzt mal 3 weitere Nachbestellt, aber wird eine ganz Weile dauern bis die antreffen. Willi S. schrieb: > Zum Kern der Frage: > Nein, durch Software lässt sich dieses Modul nicht zerstören. Ganz Sicher? Die Schaltung im OLED kann durch zu schnelle oder falsche Datenübertragung nicht kaputt gehen? M. K. schrieb: > int 21h schrieb: > An der Schaltung hatte sich nichts verändert, alles blieb beim alten. > > Wie genau sieht die denn aus? Hast du den I2C richtig eingestellt, > stimmt die Adresse, sind Pullups an SDA/SCK vorhanden? Lässt du das > Display auch aktualisieren (display()-Funktion wird benutzt? ;))? Ja natürlich, ich musste lediglich den fertigen Quellcode compilieren und hochladen ohne etwas umzustellen. Der Code lief ja auch bis vor kurzem. Die Jumper und Pull-ups an der Schaltung habe ich auch vorsichtshalber ersetzt. Der Arduino Uno samt uC ist auch heil.
int 21h schrieb: > Was ist ein COB? Der Display-Controller. Er befindet sich bei diesen OLED auf dem Flachkabel nahe dem Display-Glas. COB = Chip On Board > Ladungspumpe kurzgeschlossen? > Ist das ein Bauteil am OLED oder an der Schaltung? Ich dachte, du hast mit dem Datenblatt gearbeitet. Die Ladungspumpe erhöht die Versorgungsspannung für das OLED. Sie ist Bestandteil des COB, kann aber auch ausgeschaltet werden und durch eine externe zweite Spannungsquelle ersetzt werden. >> Nein, durch Software lässt sich dieses Modul nicht zerstören. > Ganz Sicher? Ich würde dafür keine Garantie geben, aber Zerstörung durch Software halte ich für sehr unwahrscheinlich. Was aber leicht geht: Das OLED mit zu viel Kontrast frühzeitig verschleissen.
Ich habe nun endlich den Fehler? gefunden. Es macht für mich irgendwie keinen Sinn, aber wenn ich beim Arduino OLED Sketch die Slave Adresse von 0x3D auf 0x3C änder, funktioniert es. Von mir blieb dieser Wert unverändert (Steht sogar als Kommentar 0x3D daneben)! Ich kann mir das irgendwie nicht erklären
Du hast vermutlich den Pin D/C# nicht beschaltet, sodaß sein Pegel nicht eindeutig ist. Den SSD1306 spreche ich übrigens unter der Basisadresse 0x78 mit D/C# auf GND an ;-)
m.n. schrieb: > Du hast vermutlich den Pin D/C# nicht beschaltet An den Displays mit I2C Interface gibt es keinen D/C Pin!
Ich empfehle, zwischen Display und Platine mit Display drauf zu unterscheiden.
Stefanus F. schrieb: > Ich empfehle, zwischen Display und Platine mit Display drauf zu > unterscheiden. So wie sich der TO gibt bin mir fast sicher dass er eine Platine mit Display draufgepappt vorliegen hat.
m.n. schrieb: > Den SSD1306 spreche ich übrigens unter der Basisadresse 0x78 mit D/C# > auf GND an ;-) So so, übrigens ich bediene das D/C Bit mit dem beim I2C-Protokoll (das du ja auch meinst) mit dem Control Byte. Siehe auch Protokoll- Hinweise im Datenblatt des SSD1306.
Syndedi Sator schrieb: > An den Displays mit I2C Interface gibt es keinen D/C Pin! Gut, daß Du sie alle kennst ;-) Aber am Controller gibt es diesen Pin und das ist das Entscheidende. Vielleicht nennt sich der Anschluss ja A0 oder SA0 oder Arduino-XY. Keine Ahnung, was die Leute sich alles einfallen lassen - Hauptsache es gibt eine LIB.
m.n. schrieb: > Aber am Controller gibt es diesen Pin und das ist das Entscheidende. Nö, das Entscheidende ist ob er wirksam ist. Und das ist er nicht da er im Fall der I2C-Bus Selektion als Slave Adresse wirkt. Und diese ist damit fest verdrahtet.
Syndedi Sator schrieb: > da er im Fall der I2C-Bus Selektion als Slave Adresse wirkt. Was hast Du nicht verstanden? Es geht doch gerade um die eingestellte Adresse :-(
Das Modul wird von mehreren Firmen hergestellt und sind die Adressen nicht überall gleich. Es gibt genau 4 Möglichkeiten mit gerade/ungerade und linksbündig 8-Bit oder rechtsbündig 7-Bit ausgedrückt. Logischerweise zieht sich diese Problematik auch durch alle Software und Doku hindurch, jenachdem welches Modul der Bastler zufällig im Einsatz hatte...
Manchmal denke ich, es wäre besser gewesen, bei I²C mit 8-bit Adressen zu arbeiten. Dann wäre das R/W Flag das neunte Bit und niemand käme auf die Idee, diese beiden Sachen zu einer Zahl zusammen zu fassen.
Stefanus F. schrieb: > Manchmal denke ich, es wäre besser gewesen, bei I²C mit 8-bit Adressen > zu arbeiten. Dann wäre das R/W Flag das neunte Bit und niemand käme auf > die Idee, diese beiden Sachen zu einer Zahl zusammen zu fassen. Im Standard ist es ausdrücklich geregelt, aber sogar die IC-Hersteller scheinen komplett verzweifelt und geben die Adressen in ihren Datenblättern meistens BINÄR mit 1/0 und R/W-Bit auf A0 an. Echt köstlich...
Stefanus F. schrieb: > Manchmal denke ich, es wäre besser gewesen, bei I²C mit 8-bit > Adressen zu arbeiten. Dann wäre das R/W Flag das neunte Bit und niemand > käme auf die Idee, diese beiden Sachen zu einer Zahl zusammen zu fassen. Endlich spricht es mal jemand aus. Ich sehe es genauso
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.