Hallo,
ich bin fast am Verzweifeln. Ich habe ein Display EA DOGM163B, bei dem
schon die Initialisierung nicht funktioniert. Es gibt zwar im Forum
einige Beiträge, aber alles was ich versucht habe, geht nicht.
* Ansteuerung mit ATmega128
* Display versorgt mit 5V
* 100nF Abblock-Kondensator an Versorgungspins vom Display
* Beleuchtung ist an
* Hardware-SPI vom AVR (Pegel und Phasenlage gemäß Oszi OK)
* SPI-Takt 115,2 kHz (mit Oszi nachgemessen)
* RS und CS-Pins sind während dem Initialisieren immer auf Low
* Beschaltung des Displays wie folgt:
+5V: Pin 24, 25, 26, 30...37
GND: Pin 23, 27
NC: Pin 21, 22
MOSI-Signal vom AVR: Pin 28
SCK-Signal vom AVR: Pin 29
RS-Signal vom AVR: Pin 39
CS-Signal vom AVR: Pin 38
Hier die Initialisierung gemäß Display-Controller, die eigentlich so
funktionieren sollte (die Zeit der Funktion "delay_DOGM" beträgt ca.
100µs):
spi_fuer_DOGM(0b00111001); // Function set
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b00111001); // nochmals Function set
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b00011101); // int Oszillatorfrequenz wählen
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b01111100); // Contrast setzen 0x50
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b01010000); // Power/ICON/Contrast Control
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b01101100); // Follower Control // 0x6C
volatile unsigned int ucTimer;
// mind. 200 ms warten
for (ucTimer = 0 ; ucTimer < 2000 ; ucTimer++)
delay_DOGM(); // 100µs
spi_fuer_DOGM(0b00001111); // Display on/off-Control
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b00000110); // Entry Mode (Cursor Auto increment)
delay_DOGM(); // mind. 26,3µs warten
spi_fuer_DOGM(0b00000001); // Display löschen
delay_DOGM(); // mind. 26,3µs warten
... aber das Display bleibt davon unbeeindruckt. Es sollte ja der Cursor
auftauchen.
Das Display ist aber nicht defekt. Wenn ich es in das USB-Testboard vom
Displayhersteller stecke, funktioniert es problemlos.
Ich hoffe es kann mir jemand weiter helfen.
Gruß
Martin