Forum: Mikrocontroller und Digitale Elektronik T6963C und Data Auto Write Mode


von Günter R. (galileo14)


Lesenswert?

Hallo,

ich habe bei einem LCD mit dem Toshiba-T6963C-Controller festgestellt,
daß es Probleme geben kann (bzw. bei mir immer gibt), wenn man im
Data-Auto-Write-Mode Daten ausgibt, aber die eigentlichen Daten leer
sind (z.B. Null-String), d.h. wenn man dem Controller den
Data-Auto-Write-Befehl gibt (B0) und dann gleich den Auto-Reset (B2),
ohne daß dazwischen eigentliche Daten ausgegeben werden.

Dann erscheinen auf meinem Display sonderbare Zeichen, nämlich "Ä0"
(die "0" ist dabei auch noch davon abhängig, auf welche Adresse ich
das TextRAM plaziert habe - wenn man diese Adresse ändert, ändert sich
das "0"-Zeichen; das "Ä" bleibt aber immer gleich.

Kennt jemand diesen Effekt und weiß, woran es liegt?

Danke.

Günter

von Werner B. (Gast)


Lesenswert?

<Mode joking=on>
 Das "Ä" ist Umgangssprachlich ein "WIE BITTE?". Das sollte (im
deutschspachigen Raum) bekannt sein.
</Mode>

Fang doch leere Zeichenstöme ab bevor die den AutoWrite Befehl gibts.

von Günter R. (galileo14)


Lesenswert?

@Werner:

Habe ich selbstverständlich längst getan; dennoch würde es mich
interessieren, ob es sich um ein Fehlverhalten des Controllers handelt,
wenn man dennoch B0 und B2 ohne Daten sendet, oder ob an meinem Aufbau
etwas nicht stimmt.

von Ralf (Gast)


Lesenswert?

Verwendest du Delays oder die Statusabfrage?
Im Auto-Modus gelten die normalen Statusbits nicht!
Wird das B2 auch korrekt als Befehl und nicht als Daten ans Display
geschickt?

Ralf

von Günter R. (galileo14)


Lesenswert?

@Ralf:

Ich verwende die Statusabfrage, so, wie es das Datenblatt vorschreibt,
nämlich zunächst STA0 und STA1 für den B0-Befehl, danach STA3 für ggf.
Daten und den B2-Befehl. Die Befehle sende ich natürlich als CMD's,
nicht als Daten.

Hast Du ein solches Display und mal das beschriebene ausprobiert?

Günter

von Werner B. (Gast)


Lesenswert?

Ich habe ganz andere Phänomene mit dem T6963C.
Am Philips LSP2292 ( ARM7TDMI): Aus dem internen Flash läuft das
Programm mit AutoWrite, aus dem externen RAM unter uClinux nicht mehr.
Nur noch Pixel. Muss auf WRITE_INC ausweichen.
Ich kann nur auf Timingprobleme bei der Statusabfrage im zusammenspiel
mit der 16-bit breiten Anbindung des externen Ram tippen.

von Günter R. (galileo14)


Lesenswert?

@Werner:

Das ist interessant. Ich habe nämlich auch noch weitere Probleme mit
dem T6963C. In bestimmten Situationen erhalte ich auf dem Display eine
"0" (Null); diese bekomme ich nur weg, wenn ich in der
Schreib-Schleife eine große Zahl (genauer: 20) NOP's einschiebe. Ich
habe schon alle möglichen Variationen in den Basis-Funktionen
(LCD-Zeichen schreiben/lesen) durchgespielt, mit mehr oder mit weniger
NOP's, mit CE vor WR oder umgekehrt - hat alles nichts gebracht, nur
die 20 NOP's (immer im Zusammenspiel mit dem Data-Auto-Modus). Dabei
müßte eigentlich eine erfolgreiche Statusabfrage den Weg für weitere
Operationen ebnen - aber es ist wohl nicht so ...

Hast Du mal die beschriebene Sache getestet (Data Auto Write, dann Auto
Reset, ohne Daten dazwischen)?

Günter

von Michael U. (Gast)


Lesenswert?

Hallo,

@galileo14:
ich habe nur mal schnell eine Zeile, die ich im Auto-Mode schreibe,
durch eine Zeile der Länge 0 ersetzt, es wird also nur noch
AUTO_WRITE_ON und danach gleich AUTO_WRITE_OFF geschickt, keine
Probleme, keine falschen Zeichen.

@Werner B.:
Timing ist irgendwie eigenartig, ich hatte das Display Memory-Mapped am
ATMEGA8515. bis 8MHz kein Problem, bei 16MHz teilweise falsche Pixel.
Laut Diagrammen hätte das Timing bei 16MHz mit einem Wait sicher passen
müssen, ging aber nicht.
2 Waits, testweise Bustreiber in allen Leitungen weil vielleicht wegen
der Kabellänge, war dem T6963C völlig egal, speziell im Textmode immer
die optisch ähnlichen Fehler.
Nun wird es eben doch per Portzugriff bedient, war nur so schön
einfach, einfach ein lds oder sts zum Display statt der Bitwackelei...

Gruß aus Berlin
Michael

von Günter R. (galileo14)


Lesenswert?

Hallo, Michael,

danke. Dann funktioniert's wohl im Prinzip. Ich hab's ja gelöst,
indem ich bei Datenlänge null nichts mehr aufrufe. Aber es juckt mich
trotzdem, einen Fehler zu finden ...

Günter

von Ralf (Gast)


Lesenswert?

Hi Günter,

ich hab ein 240x128 Display, ich werd das bei Gelegenheit mal
ausprobieren, ein B0 und direkt danach ein B2,ich hoffe, ich komm am
Wochenende dazu...

Ralf

von Günter R. (galileo14)


Lesenswert?

@Ralf: Prima, danke schon mal .. Eilt aber nicht.  Günter

von LC-HC (Gast)


Lesenswert?

Hallo, jetzt mal etwas anderes:
Ich bin im mom. auch mal wieder am basteln mit dem T6963C und 240 * 128
Grafikdisplay. Leider klappts noch nicht so ganz, obwohl ich versuche
mich erstmal mit Initialisierung und dem korrekten timing zu
beschäftigen. Hierzu hätte ich dann auch gleich eine Frage. Und zwar
ist mir der Resetvorgang nicht ganz geheuer, das Display wird per
RC-Schaltung über den RS Pin Zurückgesetzt, jedoch Funktioniert das nur
selten, bzw. wenn ich erst das Display anschalte und kurz darauf (1-3
sek) den µC. Im Datenblatt hab ich dazu nichts gefunden, außer nat. das
Resettiming.

von Michael U. (Gast)


Lesenswert?

Hallo,

zumindest mein 240x128 scheint intern einen sauberen PowerOn-Reset zu
machen.
Ich habe allerdings Reset noch an einem Portpin dran. Die Wartezeit
nach dem Auslösen von Reset oder nach einem PowerOn-Reset, bis das
Display ready geht, ist aber ziemlich lang und sollte auch eingehalten
werden.

Gruß aus Berlin
Michael

von Günter R. (galileo14)


Lesenswert?

Ich habe den LCD-Reset-Pin parallel zum Prozessor-Reset geschaltet; das
funktioniert einwandfrei. Evt. kann man ja eine kurze Wait-Schleife von
z.B. 100 ms ablaufen lassen, bevor man das Display anspricht.

Unbedingt muß man daran denken, nach der Initialisierung des T6963C
zuerst mal den Speicher des Displays (i.d.R. sind das 8K Bytes) zu
löschen (d.h. mit 0x00 zu beschreiben), denn dieser Vorgang wird vom
LCD-Reset nicht abgedeckt (das RAM im LCD-Display ist ja ein externer
Baustein zum T6963C). Andernfalls werden wirre Zeichen angezeigt.

Günter

von LC-HC (Gast)


Lesenswert?

Danke. Nur nochmal zum Vergleich: ich schalte das Display an, warte eine

Zeit "x" ab, bis Displayintern der PowerOn Reset durchgeführt wurde
und
starte nach der Zeit "x" die Initfunktion auf dem uC ( bei der auch
nochmal resetet wird) ? Sorry, wenn ich so blöd komm, aber ich krieg´s
einfach nicht gebacken, zzzz..
Also Danke erstmal, Cya.

von Günter R. (galileo14)


Lesenswert?

Kommst ja nicht blöd ... Die Vorgehensweise ist okay. Wenns nicht
funktioniert, kanns ja nur in Fehlern im Init-Code liegen. Zuerst würde
ich die Basic-Level-Ausgabe-Funktion anschauen, ggf. durchsteppen, um zu
sehen, ob die Steuersignale (WR, RD, CE etc.) korrekt erzeugt werden, in
der richtigen Reihenfolge (mit dem Oszi oder einem Logiktaststift
anschauen).

von LC-HC (Gast)


Lesenswert?

All right, ich test das jetzt nochmal übers we und dann meld ich mich am
montag wieder;) Bis hierher vielen Dank für die prompte Hilfe !!

mfg,

Simon

von Michael U. (Gast)


Lesenswert?

Hallo,

ich weiß nicht, ob es Dir hilft, in der Codesammlung hatte ich mal
meine Assembler-Routinen reingeworfen.
Die Grundroutinen sind die 1:1 Umsetzung des Z80-Codes aus dem
Datenblatt.
Mal schauen, ob ein Link von hier klappt:
http://www.mikrocontroller.net/forum/read-4-386899.html#new

Gruß aus Berlin
Michael

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.