Gast
#1799657
Hallo zusammen,
Ich habe eine Platine mit einem DOGM132 Display. Wie ich bei der Suche
in diesem Forum gefunden habe gibt es hier etliche, welche auch schon
mal mit diesem Displaytyp rumgespielt haben.
Mein Problem ist folgendes. Mit dem Gerät mit oben besagter Platine war
ich vor zwei Wochen beim EMV-Test. Soweit alles in Ordnung... einziges
Problem war, dass beim ESD-Test (wenn man die Nadel auf die Frontfolie
über dem Display platziert) manchmal das Display ausgefallen ist. Alle
anderen Komponenten arbeiteten brav weiter. Nach dem Neuinitialisieren
des Displays lief dann auch dieses wieder normal weiter. Meine Idee war
nun, dass man etwa 2mal pro Sekunde das Display ständig neu
initialisiert (so wie ich gehört habe ist dies eine verbreitete Variante
mein Problem zu umgehen). Nur leider wird beim Initialisieren dieses
Displaytyps das Display kurz aus- und wieder eingeschalten, so dass es
kurz flackert. Dies ist natürlich 2mal pro Sekunde mehr als störend!
Geht dies auch ohne dieses Verhalten? Oder eine andere Möglichkeit den
ESD-Test zu bestehen???
Hier meine Initialisierungsroutine:
#define DISPOFF 0xAE
#define DISPON 0xAF
#define DISPSTART 0x40
#define PAGEADR 0xB0
#define COLADRL 0x00
#define COLADRH 0x10
#define ADCNORMAL 0xA0
#define ADCREVERSE 0xA1
#define COMNORMAL 0xC0
#define COMREVERSE 0xC8
#define DISPNORMAL 0xA6
#define DISPREVERSE 0xA7
#define LCDBIAS9 0xA2
#define LCDBIAS7 0xA3
#define RESET 0xE2
#define SETPOWERCTRL 0x28
#define REGRESISTOR 0x20
#define SETCONTRAST 0x81
#define STATINDMODE 0xAC
#define BOOSTERRATIO 0xF8
// PINs auf Ausgänge setzen
// DOG132_TRIS_CS = 0;
DOG132_TRIS_RESET = 0;
DOG132_RESET_A0 = 0;
DOG132_TRIS_SCL = 0;
DOG132_TRIS_SI = 0;
// Alle Ausgänge zurücksetzen
// DOG132_PIN_CS = 1;
DOG132_PIN_RESET = 0;
DOG132_PIN_A0 = 0;
DOG132_PIN_SCL = 0;
DOG132_PIN_SI = 0;
delay_ms(1); // kurz warten
DOGM132_Reset(); // Display soll laut Datenblatt nach dem Spannung
anlegen geresettet werden
delay_ms(1); // nach dem Reset kurz warten
// DOG132_PIN_CS = 0; // Display enable
DOGM132_wait();
DOG132_PIN_A0 = 0; // Display command
DOGM132_wait();
// Displayinitialisierug wie im Datenblatt beschrieben
DOGM132_SPIout(DISPSTART + 0);
#if defined(DOGM132_Topview)
DOGM132_SPIout(ADCNORMAL);
DOGM132_SPIout(COMREVERSE);
#else
DOGM132_SPIout(ADCREVERSE);
DOGM132_SPIout(COMNORMAL);
#endif
DOGM132_SPIout(DISPNORMAL);
DOGM132_SPIout(LCDBIAS9);
DOGM132_SPIout(SETPOWERCTRL+7);
DOGM132_SPIout(BOOSTERRATIO);
DOGM132_SPIout(0);
DOGM132_SPIout(REGRESISTOR+3);
DOGM132_SPIout(SETCONTRAST);
DOGM132_SPIout(DOGM132_DISPLAY_STANDARTCONTRAST);
DOGM132_SPIout(STATINDMODE);
DOGM132_SPIout(0);
DOGM132_SPIout(DISPON);
// DOG132_PIN_CS = 1; // Display disable
DOGM132_wait();
Vielen Dank
Tobi