Forum: Mikrocontroller und Digitale Elektronik Display DOGM132 ständig initialisieren


von TobiasSch (Gast)


Lesenswert?

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

von Dominik M. (lauso)


Lesenswert?

Hallo Tobi,
ich kenne genau das Problem.
Als erstes habe ich das Display hinter eine dickere Folie gepack.
Weiter später hinter eine Plexiglasscheibe.
Wer sagt denn das sofort nach dem ESD Impuls was das Display ausfallen 
läßt wieder angehen muß.
Ich habe die initialisierung alle 30 Sekunden.
Laß uns das ganze mal Praxisbezogen sehen.
Wie wahrscheinlich ist es denn, daß das Display über ESD grade ausfällt.
M.E liegt dies bei unter 1%. In der Regel kann dies mit der Prüfstelle 
argumentiert und besprochen werden, so daß Du ohne Probleme beim ESD 
durchkommst.
Viel Erfolg

Gruß

Lauso

von TobiasSch (Gast)


Lesenswert?

Naja, selbst wenn beim Gerät nur jede halbe Sekunde das Display flackert 
ist es störend für den Anwender. Ich habe da aber eine neue Idee, ist es 
irgendwie möglich bei diesem Display die Register, welche beim 
Initialisieren gesetzt werden wieder auszulesen? Dann könnte ich doch 
ständig die Register auslesen und wenn durch einen ESD-Impuls ein Fehler 
auftritt dieses Register neu beschreiben... Könnte dies funktionieren?

Tobi

von Martin (Gast)


Lesenswert?

... Könnte dies funktionieren? ...

Kannst du denn die Register zurücklesen? Soweit ich weiß geht das nicht 
bei allen DOG-Displays bzw. Betriebsmodi.

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
Noch kein Account? Hier anmelden.