Hat schon mal einer von euch ein Display mit S1D13700 erfolgreich angesteuert? Ich habe das Display (EA W320-8K3 von EA) grundsaetzlich laufen, aber ich bekomme kein Byte aus dem Displaymemory gelesen. (Kommando Memread 0x43) Haenge ich jedoch stattdessen ein altes Display mit SED1335 an meinen Controller so klappt dasselbe Programm vollkommen problemlos. Ich kann am Logicanalyzer sehen das der neue Controller auf Read nicht reagiert. Gibt es da noch einen Trick? Olaf p.s: Noch ein Tip fuer die Nutzer des W320-8k3. Das Display hat hinten auf der Platine ein Poti fuer die Kontrasteinstellung. Im Lieferzustand jedoch ist da ein 0-Ohm Widerstand auf externe Kontrasteinstellung geloetet. Im Datenblatt steht da kein Wort zu. Wenn man das nicht umloetet oder eine externe Kontrastspannung anloetet dann kann man sich die Finger wund programmieren und wird nie etwas auf dem LCD sehen. .-)
Ich habe mit beiden schon gearbeitet. Der 13700 ist ein wenig empfindlich bezöglich Störungen und ähnlichem. Ist dein Timing wirklich OK, keine Spikes auf der Leitung usw. ? Hast du den 68/80 Jumper richtig eingestellt ?
> Der 13700 ist ein wenig empfindlich bezöglich Störungen und ähnlichem. > Ist dein Timing wirklich OK, keine Spikes auf der Leitung usw. ? Ich hab das Display an einem Bus haengen, auf beiden Seiten Leitungstreiber und terminiert. Daran sollte es nicht liegen. Ich habs auch schonmal direkt an den Prozessor gehaengt ohne das es einen Unterschied macht. > Hast du den 68/80 Jumper richtig eingestellt ? Klaro. Ich kann den 13700 problemlos beschreiben. Also auch Text oder Bilder drauf ausgeben. Alles kein Problem. Ich kann nur nicht vom Display lesen. Das wird natuerlich dann zum Problem wenn ich nur einzelne Pixel setzen will weil ich dann ja den Zustand der benachbarten Pixel vom Display brauche. Ich jetzt mal testweise einen internen Buffer im Ram meiner CPU aufgemacht und lese nun daraus. Damit funktioniert nun alles. Aber das ist natuerlich irgendwie unbefriedigend weil es mit den alten LCDs funktioniert hat. Ich versuch mal einen Mitschnitt vom Logicanalyzer anzuhaengen. Olaf
Hier nochmal einen Mitschnitt von einem SED1335. Man kann schoen sehen wie der mit 0x55 antwortet, und der 13700 einfach stumm bleibt. So sieht uebriegens das Programm aus: /* Adresse setzen */ CREG=0x46; DREG=0xb0; DREG=0x04; /* 0x55 ins Displayram schreiben */ CREG=0x42; DREG=0x55; /* Adresse erneut setzen da das Register inkrementiert */ CREG=0x46; DREG=0xb0; DREG=0x04; /*Lesekommando */ CREG=MEMREAD; /* Etwas warten */ wait_sed1330(); /* Byte vom Display aus dem Kommandoregister lesen */ a=CREG;
Olaf wrote: >> Hast du den 68/80 Jumper richtig eingestellt ? > > Klaro. Ich kann den 13700 problemlos beschreiben. Also auch Text oder > Bilder drauf ausgeben. Alles kein Problem. Interessanterweise funktionieren einige Epson Controller im 68 Modus auch an einem 80er Bus, wenn das Timing langsam genug ist. Nur lesen funktioniert nicht richtig. Ich betreibe einen 13700 im direkten Adress Modus (also mit direktem Zugriff auf das interne SRAM über den Adress/Datenbus). Da funktioniert das Lesen eigentlich problemlos. Ich vermute deine RD\ Pulse sind zu kurz. Dem Timing nach sieht es nach wenigen 100ns aus. Laut Datenblatt braucht der 13700 4xTclk bis die Daten anstehen.
> Interessanterweise funktionieren einige Epson Controller im 68 Modus > auch an einem 80er Bus, wenn das Timing langsam genug ist. Nur lesen > funktioniert nicht richtig. Darueber hab ich gerade auch schonmal nachgesonnen, allerdings gibt es auf dem Display einen Jumper der mit J68/J80 beschriftet ist und der steht richtig. Aber ich glaub ich mess das gleich mal nach. > Ich betreibe einen 13700 im direkten Adress Modus (also mit direktem > Zugriff auf das interne SRAM über den Adress/Datenbus). Da funktioniert > das Lesen eigentlich problemlos. Das ist ja auch was ganz anderes. > Ich vermute deine RD\ Pulse sind zu kurz. Dem Timing nach sieht es nach > wenigen 100ns aus. Laut Datenblatt braucht der 13700 4xTclk bis die > Daten anstehen. Das ist nicht ganz falsch, es sind naemlich nur 300ns wenn mein Prozessor mit 20Mhz laeuft, ich hatte den aber auch schonmal mit 5Mhz laufen weil ich daran auch schon gedacht habe und dann waren sie auf jedenfall lang genug. Ich vermute momentan es haengt mit dem Timing zwischen CS und RD/WR zusammen. Laut Datenblatt braucht der 13700 da naemlich 5ns und 1330/1335 ist mit 0ns zufrieden und natuerlich (aechz) setzt meine Hardware beide Leitungen gleichzeitig. Aber irgendwie habe ich den Eindruck als wenn der 13700 ein bisschen lieblos zusammengeschustert wurde. Olaf
Olaf wrote: > Aber irgendwie habe ich den Eindruck als wenn der 13700 ein bisschen > lieblos zusammengeschustert wurde. Ja, das war auch mein erster Eindruck: Vor allem der 4/16 Farben Modus ist ist etwas dumm gelöst: Mann muss auch den Oszillator tauschen, wenn man den Modus umschaltet, ansonsten flimmert das LCD, da der Controller den Takt im 4/16 Modus durch 2/4 teilt.
> Ja, das war auch mein erster Eindruck: Vor allem der 4/16 Farben Modus
Ich habs jetzt uebrigens laufen. Lag wirklich am Timing. Ich hatte
meinen
Prozessor zwar schonmal runtergetacktet und da lief es auch nicht, aber
da muss es wohl noch ein anderes Problem gegeben haben.
Ich hab jetzt das Timing fuer RD/WR auf jeweils 600ns programmiert und
es geht. Aber eigentlich ist das doch ein Witz. Wofuer hat das Teil den
einen Intelkompatiblen Bus wenn es so schnarchlahm ist. Und die
aelteren Typen waren zumindest am Bus deutlich schneller.
Ausserdem haben die Dinge noch eine andere interessante Macke. Wenn man
die Resetleitung zieht dann bleibt der Controller stehen und hat einen
Zeilentreiber dauerhaft eingeschaltet. Das passiert bei mir z.b fuer
etwa
10s wenn ich eine neue Firmware ueber das BDM Interface reinlade. Diese
Zeile braucht dann spaeter meherere Sekunden um sich zu erholen.
Wenn die Hardware irgendwann mal einen dauernden Reset hinlegen sollte,
z.b weil etwas mit der Betriebsspannung nicht stimmt dann kann man das
LCD vermutlich schnell beerdigen.
Olaf
Olaf wrote: > Ich hab jetzt das Timing fuer RD/WR auf jeweils 600ns programmiert und > es geht. Aber eigentlich ist das doch ein Witz. Wofuer hat das Teil den > einen Intelkompatiblen Bus wenn es so schnarchlahm ist. Und die > aelteren Typen waren zumindest am Bus deutlich schneller. Ja, aber der alte 1335 hatte einen üblen, ich nenn ihn mal Bug: Sobald CS Low war, wurde die Datenausgabe zum LCD abgeschaltet und das SRAM stand voll dem Datenbus zur Verfügung. Viel Datentransfer -> dunkles LCD oder zumindest ein schlimmes flackern. Du könntest den Wait Pin verwenden, dann kannst du das Timing schneller stellen. > Ausserdem haben die Dinge noch eine andere interessante Macke. Wenn man > die Resetleitung zieht dann bleibt der Controller stehen und hat einen > Zeilentreiber dauerhaft eingeschaltet. Das ist normal und auch beim T6963 oder 1335 nicht anderst. Lösung: YDIS Pin verwenden.
Hallo Ich hab das Problem dass mein Display mit diesem Controller bei vielen schwarzen pixel zu flackern beginnt. Ihr habt da was von Oszillator tauschen geschrieben. Kann mir aber nicht vorstellen das man das muss. Es ist ja ne ganz normale Grafikansteuerung. Und trotzdem flackert es. Könnte mir mal jemand sagen wie ihr die Initialisierungsbefehele gesetzt habt? grus Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.