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
<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.
@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.
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
@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
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.
@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
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
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
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
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.
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
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
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.
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).
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.