Forum: Mikrocontroller und Digitale Elektronik DOGM163B, 5V, SPI: Initialisierung geht nicht


von Martin M. (martin69)


Lesenswert?

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

von Frank K. (fchk)


Lesenswert?

Martin M. schrieb:

> * 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

Was ist mit Reset Pin 40? Sollte auch auf +5V.

fchk

von Frank K. (fchk)


Lesenswert?

Was mir sonst noch auffällt: Deine Initialisierungssequenz ist ein klein 
wenig anders als im Datenblatt von EA beschrieben:
0x39,0x1d,0x50,0x6c,0x7c,0x0f,0x01,0x06

Keine Ahnung, ob das wichtig ist, aber ansonsten finde ich beim 
Rüberschauen nichts, was sonst falsch sein könnte.

fchk

von Martin M. (martin69)


Lesenswert?

Frank K. schrieb:
> Was ist mit Reset Pin 40? Sollte auch auf +5V.

oh Schande schäm, den hab ich doch glatt übersehen. Nun gehts. Vielen 
Dank für den Tipp!!!!! Manchmal sieht man vor lauter Bäume den Wald 
nicht.

von Michael Z. (zellm)


Lesenswert?

Hallo Martin,

würdest du eventuell deinen gesamten Quellcode bezüglich SPI und 
Display-steuerung hier veröffentlichen?

Ich versuche gerade mit einem Atmega8 einen Konverter von RS232 auf SPI 
zu realisieren, um dann ein DOGM-Display vom PC aus anzusteuern. Dabei 
wäre es eine super Sache mal in deinen Code rein zu schauen.

viele Grüße

Michael

von Martin M. (martin69)


Angehängte Dateien:

Lesenswert?

Hallo Michael,

anbei der Sourcecode. Ich hoffe es hilft....

Ich verwende das 3-zelige Display nicht mehr, sondern habe mich nun für 
ein Grafikdisplay mit 128x64 Pixel entschieden.

Gruß
Martin

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.