Forum: Mikrocontroller und Digitale Elektronik Unterschiede S1D13700 und SED1335


von Olaf (Gast)


Lesenswert?

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. .-)

von Benedikt K. (benedikt)


Lesenswert?

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 ?

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?


> 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

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

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;

von Benedikt K. (benedikt)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?


> 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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?


> 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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.