Forum: Mikrocontroller und Digitale Elektronik Probleme mit LCD-Display (S1D13700)


von Filippé M. (Firma: Norris Vietnam-Reisen GmbH) (mcspeckfett)


Angehängte Dateien:

Lesenswert?

Moin Leute.

Langsam bin ich mit meinem Latein am Ende.
Ich hab hier ein Display von Display Elektronik (DEM320240I FGH-PW 
A-Touch) mit dem Controller S1D13700 von Epson drauf. Angeschlossen hab 
ich das in der "Generic Bus"-Konfiguration mit indirekter Adressierung 
an einen FM3 von Fujitsu.



Ich hab erst versucht den S1D13700 nur mit den Infos aus dem Datenblatt 
anzusteuern. Die Kommunikation zwischen FM3 und S1D13700 scheint auch 
anständig zu funktionieren. Wenn ich Zeuch in den SRam vom 
LCD-Contreroller schreibe kann ich genau die gleichen Werte wieder aus 
selbigem auslesen.

Das Oszi gibt mir auch recht ^^.

Aber dieses verdammte Display will ums Verrecken nichts anzeigen. Ich 
habs dann mit einer etwas angepassten Bib. für den SED1335 hier aus dem 
Forum probiert, aber da komm ich genau so weit. 
(http://en.radzio.dxp.pl/sed1335/)

Die Kontrastspannung die das Display bekommen soll is auch vorhanden 
(ca. -20V mit Poti einstellbar).

Das einzige was ich aus dem Display raus hole is ein Flackern wenn ich 
den Speicher des S1D13700 vollschreibe mit 0xff. Dann sieht man ein 
schwaches Flackern wenn man in einem sehr flachen Winkel aufs Display 
schaut.

Ich bin mir nicht sicher ob ich irgendwelche Register im S1D13700 falsch 
gesetzt hab oder so. Ich hab da meiner Meinung nach alles durchprobiert.

Ich würde mich extremst freuen wenn dieses Ding überhaupt ma was 
anzeigen würde :D

Hatte jemand schon mal ein ähnliches Problem?

Ich hab ma die beiden Signifikanten Quelldateien in den Anhang gepackt.


Datenblatt des Displays: 
http://www.display-elektronik.de/DEM320240I_FGH-PW_A-TOUCH.pdf


Achso ja bevor ichs vergesse. Der FM3 läuft mit 80Mhz. Deswegen hab ich 
da relativ lange Warteschleifen eingebaut, weil das Quarz am S1D13700 
nur ein 20Mhz-Quarz is. Außerdem is das ganze Zeug grad auf nem 
Steckbrett.

Die lcd_init(); -Funktion soll das Display initialisieren und zum Test 
irgendwas ausgeben. (Also wirklich nix besonderes, denkt man ^^).


Was mir noch aufgefallen ist: Beim durchmessen der Schaltung des 
Displays viel mir auf, dass das Potential am AS#-Pin (siehe DB des 
S1D13700) auf Masse liegt. Im DB wird aber gesagt das beim benutzen des 
Generic Busses dieser Pin an VCC liegen soll. (Auch gibts dazu ein 
hinweis in der Errata im DB) Könnte das das Problem sein?


ich bedanke mich schon mal im Voraus für Anregungen.
von W.S. (Gast)


Lesenswert?

Ähem.. ich hab mir zwar jetzt nicht die Zeit genommen, das Datenblatt 
dieses Controllers auszugraben und intensiv deine Quellen durchzusehen, 
aber du hast da in den eigentlichen Ausgaberoutinen ne Menge 
auskommentiert.

Bist du sicher, daß du alles wirklich wichtige dringelassn hast?

Ich nehme mal an, daß man bei einem Grafik-Display nicht viel sieht, 
wenn man bloß ein paarmal "test test test" dort reinschreibt. Versuche 
mal, das ganze Display mit einem Muster zu füllen, z.B. abwechselnd 55h, 
AAh, 3Ch und C3h, damit man was sieht.

Kannst du mit dem Kontrastregler das Bild so einigermaßen schwarz 
regeln?

Ich vermute, daß du was beim Initialisieren falsch gemacht hast. Also 
guck dort noch mal.

W.S.
von Fox Mulder (Gast)


Lesenswert?

lcd_send_cmd(DISP_ON)

Hier fehlt schon mal der Parameter (REG 0Ah).
von Fox Mulder (Gast)


Lesenswert?

Filippé Menuisier schrieb:
> Was mir noch aufgefallen ist: Beim durchmessen der Schaltung des
> Displays viel mir auf, dass das Potential am AS#-Pin (siehe DB des
> S1D13700) auf Masse liegt.

Wie ist denn CNF[3:2] beschaltet?
von Filippé M. (Firma: Norris Vietnam-Reisen GmbH) (mcspeckfett)


Lesenswert?

ahh danke erst mal für die Antworten :D


W.S. schrieb:
> Versuche
> mal, das ganze Display mit einem Muster zu füllen, z.B. abwechselnd 55h,
> AAh, 3Ch und C3h, damit man was sieht.

Das werd ich morgen nochmal probieren.

W.S. schrieb:
> Kannst du mit dem Kontrastregler das Bild so einigermaßen schwarz
> regeln?

Also wenn ich dieses Flackern erzeuge (alles voll mit 0xff) kann ich das 
mit dem Kontrast-Poti wegregeln. Aber so richtig schwarz (auch wenn ich 
dem Display nix sende usw.) bekomm ich das nicht. Wenn ich die ca. -20V 
direkt an den entsprechenden Pin anlege ändert sich da auch nix.

Ich werde morgen nochmal die Initialisierungsgeschichte durchschauen. 
Aber eigentlich müsste es doch was anzeigen, wenn ich den internen 
Buchstabengenerator benutze. (Werd das mal testen wenn ich den Layer als 
Grafiklayer anstatt als Textlayer einstelle)

Fox Mulder schrieb:
> lcd_send_cmd(DISP_ON)
>
> Hier fehlt schon mal der Parameter (REG 0Ah).

Ich hab das DB so verstanden das man nicht immer alle Parameter setzen 
muss (sofern die Register entsprechende Werte schon haben).
Ich werd dann mal den selben Parameter mitschicken wie bei dem 
DISP_OFF-Befehl paar Zeilen davor.

Fox Mulder schrieb:
> Wie ist denn CNF[3:2] beschaltet?

Die liegen beide auf Masse. Das hab ich extra mehrfach durchgeklingelt. 
Weil ich erst dachte dass eventuell dieser M6800-Modus oder so 
konfiguriert sein könnte. (Das sieht man auch weil beide Pins auf der 
Massenfläche liegen) Leider sind diese Pins , einschließlich dieses 
AS#-Pins fest verbunden. Also gibt keine Jumper auf dem Ding. (Nur so 
ein Paar irrelevante wie z.B. Bohrungen auf Masse usw.)
von Fox Mulder (Gast)


Lesenswert?

Filippé Menuisier schrieb:
> Ich hab das DB so verstanden das man nicht immer alle Parameter setzen
> muss (sofern die Register entsprechende Werte schon haben).
> Ich werd dann mal den selben Parameter mitschicken wie bei dem
> DISP_OFF-Befehl paar Zeilen davor.

Ich würde power_save und disp_off löschen und nur disp_on am Ende vom 
Init lassen. Nach dem disp_on und vor dem Löschen des Speichers sollte 
man schon irgendwas auf dem Bildschirm sehen. Dann müssen auch die Pins 
Richtung Display aktiv sein. Sonst gibt es auch nichts auf dem Display 
zu sehen.
von Filippé M. (Firma: Norris Vietnam-Reisen GmbH) (mcspeckfett)


Lesenswert?

So Es gibt ein Lebenszeichen von sich :D

Ich hab den Display_Off-Befehl einfach mal weggelassen und den 
entsprechenden Parameter hinter den Display_On-Befehl gesetzt.

Ausserdem schien mir was bei dem TC/R-Parameter nicht zu stimmen.

Was aber letztendlich zum Funktionieren geführt hat war das doppelte 
Aufrufen der init-Funktion. K.A. warum. Das Display scheint beim 1. Mal 
nicht richtig aus dem  Sleep-Modus zu kommen.

Ich denke das liegt daran das ich immo alles aufm Steckbrett habe und 
die internen Pullups vom µC benutze. Vielleicht versteht das LCD da am 
Anfang nur Müll.

(während dem Reset sieht man auch wie der Curser wegläuft)


Ab dann läuft es aber stabil.


vorerst(!) is das Thema hier mal gelöst. :D

Danke an die Antwortschreiber
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.