Forum: Mikrocontroller und Digitale Elektronik Nochmal EA DOGM162


von Tobias P. (hubertus)


Lesenswert?

tag auch,
ich habe ein problem mit meinem EA DOGM162-display.
ich weiss, dass es dazu schon einen thread gibt, aber des ist
mittlerweile etwas sehr lang und unübersichtlich geworden, so hielt ich
es für eine bessere idee einen neuen thread zu erstellen.
also folgendes:
ich habe ein uC-board mit dem siemens C517A aufgebaut.
das funktioniert mittlerweile schon recht gut, und nachdem es mir jetzt
verleidet ist, immer nur LEDs leuchten zu lassen und über den UART
sinnlose daten mit meinem laptop auszutauschen habe ich mich nochmal an
das display gewagt.
nun habe ich es im 8 bit-modus: DB0...DB7 an P4, E an P3.3, RS an P3.4
und RW an P3.5 - soweit so gut. RESET habe ich mit dem resetausgang des
microcontrollers verbunden (der C517A hat einen reset ausgang, der
jeweils bei einem reset auf low geht).
alles ist genau gemäss datenblatt des displays angeschlossen.
nun versuche ich schon seit stunden, das display zu initialisieren - es
geht einfach nicht!! nie tut sich was. ich habe die init-beispiele aus
den datenblatt des ST7036 und des displays selbst probiert - ohne
erfolg. das display ist NEU - das kann doch nicht kaputt sein!! was
mache ich falsch? liegts am timing? ich habe jetzt die watezeiten
soweit heraufgeschraubt, dass ich mittlerweile 65 ms warte. ist das zu
lang? oder immernoch zu kurz? dazu prüfe ich jedesmal das busy flag,
doch das scheint sich überhaupt nie zu ändern. es ist immer H.

ich wäre echt froh, wenn jemand dazu was wüsste und mir helfen könnte,
langsam verzweifle ich echt.

grüsse
  tobias

von Tino N. (tino)


Lesenswert?

Hier mal meine Init hab auch ewig gebraucht bis ich das Teil am Laufen
hatte .

BYTE const LCD_INIT_STRING[9] =
{0x29,0x1c,0x52,0x69,0x70,0x0c,0x28,0x01,0x06};




void lcd_init() {
    BYTE i;
    set_tris_lcd(LCD_WRITE);
    lcd.rs = 0;
    lcd.rw = 0;
    lcd.enable = 0;
    delay_ms(5);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_ms(5);
    }
    lcd_send_nibble(2);
      delay_ms(5);
    for(i=0;i<=8;++i)   {
       lcd_send_byte(0,LCD_INIT_STRING[i]);
      delay_ms(5);
    }

Hoffe das hilft dir soweit . Achja hast du das Teil im 3,3V oder 5V
Modus laufen ?
Ach was mir da gerade auffällt ... Falls mich nicht alles täuscht ist
der Reseteingang des Displays nicht auf low zu ziegen sondern auf High
bei Reset . Du würdest praktisch immer einen Reset machen . Also prüfe
mal dein Schaltbild denn der Reset des DOG ist High aktiv .


Mfg Tino

von Tino N. (tino)


Lesenswert?

Sorry ist doch Low-aktiv dann war das wohl ein anderes Display mit dem
Reset . Aber guck mal über die Init vielleicht holft sie dir ja .

von Tobias P. (hubertus)


Lesenswert?

hallo tino,
danke für dein programmbeispiel.
ich probiere das morgen aus, heute reichts wahrscheinlich nicht mehr
;)
ich habe mich in der zwischenzeit of über das etwas amateurhafte
datenblatt geärgert, das electronic assembly zu dem display anbietet.
die sache ist nicht ganz lupenrein, z.b. hängt der reset-pin mal an
plus, mal an minus, je nach dem, welches bildchen oder welche tabelle
man anschaut. dann ist der reset-pin mal als "RESET" und ein anderes
mal als "/RESET" bezeichnet... welche bezeichnung gilt jetzt??
zumindest das weiss ich ja nun dank deiner beschreibung ;)

gruss
  tobias

von Wolfram Hildebrandt (Gast)


Lesenswert?

Das Datenblatt von Electronic Assembly hat mehrere Fehler.
Sehr lustig. Man kann sie aber finden, wenn man etwas mitdenkt.
Ich habe hier irgendwo im Forum einige Code-Beispiele u.a. auch in C
zur Verfügung gestellt. Daran kann man sich dann orientieren.
Das Ganze ist im Endeffekt sehr einfach und sollte hinzubekommen sein.

von Tobias P. (hubertus)


Lesenswert?

hallo wolfram,
kann schon sein, dass du recht hast, wenn d sagst, man finde die fehler
im datenblatt wenn man mitdenkt.
aber ich habe leider noch absolut keine erfahrung mit lc-displays,
deshalb meine ich KANN man nicht wissen, dass der RESET-pin low-aktiv
ist, wenn man es nicht schon anderswo so gesehen hat (das jetzt nur als
beispiel).
ich werd auf jeden fall noch nach einigen codebeispielen von dir
suchen.

gruss
  tobias

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.