Forum: Mikrocontroller und Digitale Elektronik LCD EA DOGM204N-A funktioniert nur gelegentlich


von Ottmar K. (wil1)



Lesenswert?

LCD EA DOGM204N-A spinnt?

Seit einigen Tage bemühe ich mich mit dem PIC18F45K20 per Assembler 
(MPLAB 8.92) das LCD EA DOGM204N-A zum Arbeiten zu bringen. Den Code 
habe ich beigefügt.

Die Beschaltung folgt dem Datenblatt von electronic assembly, Stand 
2015.7 (siehe beigefügten Schaltplan).

Ebenso folgt die  Initialisierungssequenz dem Datenblatt wie in der 
Anlage ersichtlich. Nachdem dies erfolglos war, wird jetzt 3x im 
8-Bit-Modus und dann im 4Bit-Modus initialisiert (vgl. ASM-File).

Nach dem Einschalten der Versorgungsspannung (3,3V) zeigt das LCD 
entweder nichts oder aber gelegentlich und rein zufällig den Text, 
welchen das Programm vorgibt (siehe Anlage).

Dabei läuft die Software sauber durch, wie ich an den im Programmlauf 
geschalteten Kontroll-LEDs erkennen kann.

Schalte ich dann die Spannungsversorgung aus und schalte erneut ein, 
tut sich meist nichts, gelegentlich lässt sich ein schwaches Pixelmuster 
sehen, es kann aber auch sein, dass alle Zeilen mit kräftig schwarzen, 
vollen Digits belegt sind oder aber - welche Freude - der Vorgabetext 
wird wieder einmal fehlerlos ausgegeben!

Wenn das LCD korrekt ausgibt, messe ich am den Anschlüssen mit dem DVM 
(Ri=10MOhm):
Pin   31  Vdd  3,27V  Sollwert=3,3V
  32  Vss  0V (GND)
  44  RESET  3,27V

  23   Vout   11,90V
  24  V0  10,16V
  25  V1  8,39V
  26  V2  6,74V
  27  V3  3,39V
  28  V4  1,76V
Diese Spannungswerte sind stabil und verändern sich auch nicht während 
der Spannungsmessung.

Schalte ich jetzt die Schaltung ab und dann wieder ein, bleibt die 
Anzeige meist leer und ich messe dazu an den Anschlüssen Pin 23 - 24 
irreguläre Werte:
2,62V, 2,62V, 2,02V, 0,06V, 0,16V.

Offensichtlich arbeitet die Ladungspumpe nicht.

Hatte das Problem vielleich schon jemand und weiß Abhilfe?

mfG  Ottmar

von spess53 (Gast)


Lesenswert?

Hi

>Offensichtlich arbeitet die Ladungspumpe nicht.

Dann ersetze erst mal die Elkos durch Keramikkondensatoren.

MfG Spess

von Ottmar K. (wil1)


Lesenswert?

spess53 schrieb:
>
> Dann ersetze erst mal die Elkos durch Keramikkondensatoren.
>
Hmm...
würde ich gerne machen, habe aber 1µF in Keramik nicht auf Lager und 
auch keine Folienkondensatoren. Wenn der Fehler daran liegen sollte, 
muss ich mich wohl bis zur nächsten Bestellung gedulden...

Ottmar

von WehOhWeh (Gast)


Lesenswert?

Das hat vermutlich nichts mit den Kondensatoren zu tun, sonst würde es 
nie gescheit funktionieren.
Die Displays laufen normalerweise auch mit Elkos, zumindest nehme ich 
die immer auf dem Breadboard dafür her. Bei mir hat das bisher immer 
geklappt.

Ich tippe da eher auf ein Softwareproblem.

Mir ist schon folgendes passiert (allerdings DOGS):
Nach dem Einschalten lief es nie, nach dem Programmieren des Controllers 
immer.
Ursache:
Keine Wartezeit nach dem Einschalten der Versorgung, das Display hat 
einen Resetcontroller drin, man muss 5ms warten.

Vielleicht ist es bei dir sowas ähnliches?

von Ottmar K. (wil1)


Lesenswert?

WehOhWeh schrieb:

> Mir ist schon folgendes passiert (allerdings DOGS):
> Nach dem Einschalten lief es nie, nach dem Programmieren des Controllers
> immer.
> Ursache:
> Keine Wartezeit nach dem Einschalten der Versorgung, das Display hat
> einen Resetcontroller drin, man muss 5ms warten.

Hallo WehOhWeh,
besten Dank für Deinen Hinweis! Um die "Qualität" der Elkos aufzuwerten 
(Reststrom) habe ich sie mal zur Probe mit 22µf Tantal in Reihe 
geschaltet.

Jetzt funktioniert die Anzeige im Gegensatz zu vorher immer dann, wenn 
ich den Controller programmiere. Beim Einschalten weiterhin recht 
selten. Evtl. sind meine Elkos doch von mieser Qualität.

Allerdings war schon immer, wie aus meinem beigefügten Code ersichtlich, 
vor der Initialisierung 250ms Wartezeit eingefügt.

LcdInit
;--INITIALIZATION SEQUENCE 4BIT-INTRFACE
   movlw    .250       ;Power ON,wait time >5ms after VDDIO/ VDD/VCI 
stable
   CALL     Delay1ms   ;delay=250ms
   movlw    0x33       ; 1. FUNCTION SET   8 bit, DL = 1
   movwf    LCD_LAT    ;    b'00111000'0x38

mfG Ottmar

von Niklas R. (Gast)


Lesenswert?

Bestehen noch Probleme?
Betreibst du das display mit SPI?

Falls ja, kannst du dir vllt Hilfe von meinem Treiber 
Beitrag "Treiber für DOGM204 - A" holen.

von Ottmar K. (wil1)


Lesenswert?

Hallo Niklas,

besten Dank fuer Deinen Hinweis. Wegen der Probleme habe ich die weitere 
Bearbeitung verschoben, bis ich wieder  mal Zeit dafuer habe. Werde dann 
Deinen Treiber mal anwenden.

mfG Ottmar

von Daniel V. (daniel_v415)


Lesenswert?

Hallo Ottmar,

hattest du dafür bereits eine Lösung gefunden?

MfG Daniel

von Geröll (Gast)


Lesenswert?

Oha, der Thread ist ja schon uralt.
Aber ich hatte erst kürzlich ähnliche Probleme, mit anderen LCDs, 
verschiedene Module, alle über Portexpander am gleichen I2C Bus. Einige 
initialisierten problemlos, andere nicht. Meine Hypothese war, dass es 
am Timing innerhalb der Initialisierungssequenz lag. Ballert man die 
8-Bit Initialisierung zu schnell raus, kamen ein paar Module damit nicht 
klar. Aber inbesondere beim Umschalten 8-Bit -> 4-Bit war es wichtig, 
dass das Hinterherschicken des Low-Nibbles nicht zu lange dauerte. Wenn 
das Low-Nibble nicht innerhalb von 25µs auf das High-Nibble folgte, 
hielten die das wohl für ein neues Datenwort oder was der Geier. Mir 
wirkte es ein bißchen so als das Modul dann zwar in 4-Bit Kommunikation, 
aber mit einem Nibble Versatz. Schickte man in dem Zustand eine neue 
Initialisierungssequenz rein, war das Verhalten nicht mehr vorhersehbar. 
Teilweise initialisierte gar nix, teilweise erschienen falsche Zeichen, 
vermutlich wegen High<->Low-Nibble-Drehern.

Mittlerweile habe ich ein Timing gefunden, das allen meinen verwendeten 
LCDs schmeckt.

von Thomas K. (Gast)


Lesenswert?

Hallo Ottmar,

bei mir tritt exakt dasselbe Fehlerbild auf! Konntest du damals etwas 
herausfinden, an was es lag?

Viele Grüße Thomas

von Thomas K. (Gast)


Lesenswert?

Ich habe das Problem bei mir gelöst!

Ich hatte den Reset-Pin des Displays nicht gut beschaltet. Hatte diesen 
direkt an der Versorgungsspannung hängen. Beim Power-up hatte der 
Controller damit offenbar Probleme. Mit einem RC Glied (10kOhm und 
100nF) am Reset-Pin funktioniert das Display nun einwandfrei.
Es steht übrigens auch im Datenblatt des SSD1803A, dass nach dem 
Power-up ein Reset durchgeführt werden sollte. Ich denke das kann man 
aber auch gut über die Verzögerung des RC-Glieds realisieren.

Grüße

von Peter D. (peda)


Lesenswert?

Geröll schrieb:
> Aber inbesondere beim Umschalten 8-Bit -> 4-Bit war es wichtig,
> dass das Hinterherschicken des Low-Nibbles nicht zu lange dauerte. Wenn
> das Low-Nibble nicht innerhalb von 25µs auf das High-Nibble folgte,
> hielten die das wohl für ein neues Datenwort oder was der Geier.

Solange Du noch im 8Bit-Mode bist, darfst Du natürlich keine Befehle im 
4Bit-Mode senden, sondern nur Nibble. Wenn Du schneller als 25µs bist, 
wird das 2. Nibble ignoriert.
Wenn man es aber richtig macht, kann man beliebig langsam senden.
Hier mal ein korrektes Init:
https://www.avrfreaks.net/forum/tutc-lcd-tutorial-1001

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.