Hallo,
ich verwende mehrere Oleds 2x16 Zeichen von Wisechip und habe bei
einigen ein Problem mit der Initialisierung.
So sieht die Init aus:
1 | delay_ms(200msec); // 200msec Wartezeit
|
2 | lcd_out(0x03); // 4 bit Modus init
|
3 | delay_ms(10); // 10msec Wartezeit
|
4 | lcd_out(0x03); // 4 bit Modus init
|
5 | delay_ms(10); // 10msec Wartezeit
|
6 | lcd_out(0x03); // 4 bit Modus init
|
7 | delay_ms(10); // 10msec Wartezeit
|
8 |
|
9 | lcd_out(0x02); // 4 bit Modus init
|
10 | delay_ms(100); // 10msec Wartezeit
|
11 |
|
12 | lcd_command(0x08);
|
13 | lcd_command(0x01);
|
14 | lcd_command(0x06); // Entry Mode Set RE = 0
|
15 | lcd_command(0x2A); // Function Set RE wird 1
|
16 | lcd_command(0x08); // Extended Function Set, RE = 1
|
17 | lcd_command(0x2A); // Function Set RE wird 1
|
18 | lcd_command(0x79); // OLED Characterization, SD wird 1
|
19 | lcd_command(0xDA); // Set SEG Pins Hardware Configuration
|
20 | lcd_command(0x10); // Set SEG Pins Hardware Configuration
|
21 | lcd_command(0x78); // OLED Characterization, SD wird 0
|
22 | lcd_command(0x28); // Function Set RE wird 0
|
23 | lcd_command(0x02); // Return Home
|
24 |
|
25 | lcd_command(0x0C); // Display ON
|
Wie ihr seht, sende ich zu Beginn dreimal 0x03 (nur ein Nibble), einige
Oleds funktionieren damit perfekt, bei anderen "darf" ich nur zweimal
0x03 (Nibble) senden damit sie funktionieren.
Die Oleds sind alle vom gleichen Typ und laut Hersteller von der
gleichen Charge.
Die Delays habe ich testweise schon jeweils auf das zehnfache gesetzt,
hat keine Veränderung gebracht.
Ich teste alle Oleds (10 Stück) mit einer Hardware (Oled ist steckbar,
keine Kabel, direkt auf der Platine mit Stiftleiste verbunden), ein
Hardwarefehler der Platine kann also ausgeschlossen werden (denke ich).
Hat jemand eine Idee was da falsch läuft?
Vielen Dank
Peter