mikrocontroller.net

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


Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Z. (zellm)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin M. (martin69)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.