Hallo zusammen,
ich befasse mich gerade zum ersten mal mit dem TWI/I2C Bus
und versuche mit einem ATmega8 (in Assembler) eins dieser
0,91" OLED Displays (128x32 Px, SSD1306, zB. EBay 162891883868)
ans leuchten zu bringen (An 5V, soll angeblich gehen).
Wälze jetzt schon seit einigen Stunden die Datenblätter,
und das Internet durch, aber es will einfach nicht.
Stand jetzt startet der ATmega und wartet eine halbe
Sekunde um dem Display Zeit zu lassen hochzufahren.
Laut Datenblatt vom Displaycontroller müssten alle
Werte (Kontrast, etc.) nach dem Reset für meine Zwecke passen,
es soll erstmal nur leuchten.
Dann spreche ich es an.
Nachfolgend mein Verständnis:
Laut Datenblatt ist der Displaycontroller über die Adressen
3C oder 3D ansprechbar.
Wie im angehängten "command table" zu sehen benötige ich die
Befehle
0xA5 => alle Pixel auf AN
0xAF => Display einschalten/aufwecken
Damit das Display die Befehle als solche interpretiert,
muss ich ein 0x80 voran schicken. (auf 0x00 folgt ein Datenbyte,
auf 0x40 folgt ein Datensatz).
Also sende ich:
START -> SLA_W -> 0x80 -> 0xA5 -> 0x80 -> 0xAF -> STOP
(Reihenfolge nach Datenblatt Displaycontroller)
Was passiert? Das Diplay leuchtet nach dem Datenempfang
ganz kurz (ca. 0,5s) komplett auf, aber recht dunkel,
und geht dann sofort wieder aus.
Was habe ich bereits probiert?
- Zuerst das Display wecken, schlafend kann es ja keine Daten empfangen.
- Nach dem Aufwecken eine Pause eingefügt, damit es in Ruhe starten kann
- Nur mit 0xA5 angesprochen
- Nur mit 0xAF angesprochen
Das Ergebnis ist immer das gleiche: kurzes aufblinken.
Die Pakete werden ordnungsgemäß verschickt und der Empfang quittiert,
im Anhang ist eine Beispielmessung.
Online finde ich nur Beispiele mit irgendwelchen Libraries,
prinzipiell ist das Vorgehen, also die gesendeten Pakete,
aber das gleiche wie bei mir, allerdings kann ich da ja nicht
nachvollziehen was noch alles (von den Libraries im Hintergrund)
mitgesendet wird (Stichwort: Initialisierung).
Kann es gar sein, dass das Display die 5V doch nicht so gut
verträgt und nach dem Empfang einfach abstürzt/resettet?
(Habe gerade leider keine 3,3V Quelle zum testen)
Würden die Signale dann aber so sauber quittiert?
Oder hab ich einfach etwas essentielles übersehen?
Vielleicht kann mir ja jemand auf die Sprünge helfen.
Liebe Grüße