Hallo Leute,
zur Zeit möchte ich ein GLCD "NANYA LMC 76S026A" mit der Auflösung
128_128
mit T6963-controller in Betrieb nehmen und steuere es über ein
MCP23S17-Port-Expander über den SPI-Bus.
Die Unterprogramme für den MCP23S17 sind bereits mit anderen GLCDs oder
LCDs erprobt und werden als Einwandfrei angenommen. SPI läuft vorerst
auf 62 kHz. Schneller geht auch.
Leider erscheint auf dem Nanya-GLCD keinerlei Schrift. Es erscheint
überhaupt nichts. Nur beim Einschalten erscheint eine Linie, die nach
dem Initialisieren weg ist. Der Kontrast ist so weit eingestellt, daß
man eine leichte Verdunkelung der Bildfläche erkennen kann. Stärkerer
Kontrast bringt ebenfalls keine Strukturen.
Was seit Anfang an funtioniert, ist die Ausgabe des Status-Registers. Es
erscheinen sinnvolle-Bit-Werte. Erstaunlich ist nur ein
unterschiedliches Verhalten dieser Bits nach dem Programmieren per
SPI-Interface des Mega88. Erst erneutes Einschalten der Betriebsspannung
bringt sinnvolle Bits und läßt das Programm wieder laufen.
Programmierstecker sei abgezogen.
Auf dem Display ist ein 8k-RAM verbaut. Das heißt die Adressen, die man
für Text, Grafik und CG-RAM vorgibt, müssen in diesem Bereich sinnvoll
angegeben sein. Genau an dieser Stelle kenne ich mich nicht wirkich aus.
Das bedeutet, daß meine bisherigen Versuche erfolglos waren trotz
Studium des Datenblattes und diverser zusätzlicher Dokumente.
Vielleicht kann mir jemand die Vorgaben für den T6963-Controller
speziell für das 128x128 GLCD erklären bitte oder es findet jemand im
Codebeispiel einen Fehler.
Verwendet habe ich diese Datenblätter:
http://www.pollin.de/shop/downloads/D120993D.PDF
Datenblatt allgemein:
http://www.lcd-module.com/fileadmin/eng/pdf/zubehoer/t6963c.pdf
Zusatzinfos/Erklärung, was im Datenblatt genau gemeint ist:
AN-029-Toshiba_T6963C.pdf
https://www.sparkfun.com/.../AN-029-Toshiba_T69...
Notizen eines umbekannten Progammierers zu einem speziellen von ihm
programmierten Display:
http://www.krafti.co.uk/steve/t6963c.htm
T6963C Data
PDF My interpretation of the T6963 data sheet - 2nd draft revised 4/98
in Abode Acrobat format.
Programmbeispiele von hier:
Beitrag "LCD Library T6963c"
mit freundlichem Gruß
Schaltung herzeigen!
Du weißt, dass dieses Display -15V braucht, um irgendetwas anzuzeigen,
und dass es im Gegensatz zu anderen T6963-basierten Displays keinen
integrierten DC-DC-Wandler hat?
Ich frag ja nur.
fchk
Hallo,
ja, weiß ich und die -14,5 ... -16 Volt kommen aus dem daneben
aufgebauten DC-Wandler auch raus. Diesen Punkt wollte ich mit diesen
Sätzen hier bereits abgehandelt wissen:
"Der Kontrast ist so weit eingestellt, daß man eine leichte Verdunkelung
der Bildfläche erkennen kann. Stärkerer Kontrast bringt ebenfalls keine
Strukturen."
Sonst hätten diese beiden Sätze keine Berechtigung.
Die Schaltung ist nicht geheim, jedoch nicht als vorzeigbares Bild
vorhanden, da es sich um ein Einzelstück handelt. Im Prinzp erstelle ich
die Schaltungen immer als Tabellen, die die Verbindungen zwischen den
Sockeln darstellen.
Am selben PORT-Expander kann noch im anderen Sockel ein 128x64 GLCD mit
KS0108-controller angeschlossen werden, das einwandfrei geht. Die
Zuordnung der Signale erfolgt so wie in den defines angegeben. Siehe
auskommentierter Teil am Ende des Programmbeispiels.
Im Wesentlichen geht es mir um das richige Einstellen der
Adressbereiche. Es ist eines mit 8 k RAM.
mfG
Also, mal davon ausgehend, dass die Ports alle richtig verknubbelt sind
und die Timings stimmen, ist die Aussage, dass die Linie nach dem
Initialisieren verschwindet schon mal recht gut, denn das heisst, dass
das Display zumindest "etwas" verstanden hat.
Deinen Code hab ich überflogen und kann damit nix anfangen, zu wirr.
Daher hab ich auch nicht weiter danach gesucht, ob du das RAM des
Displays löschst. Falls nicht, solltest du nämlich nach dem Aktivieren
der Ausgabe (Text- und/oder Grafik-RAM) völlig wirre Pixel oder eben
Texte sehen (so war's zumindest immer bei meinen Displays), d.h. falls
ich das löschen übersehen habe, nimm es mal raus und schau ob was
angezeigt wird.
Ansonsten gibt's bzgl. der RAM-Aufteilung an sich keine Vorgaben, die
kannst du dir selbst festlegen.
Ausgehend von 8x8 Pixeln für die Schriftgröße wären das also bei 128x128
Pixeln Displaygröße:
(128 x 128) / 8 = 1024 Byte für Grafikbereich => 0x0400
(128 / 8) x (128 / 8) = 256 Byte für Textbereich => 0x0100
Du kannst frei wählen, ob du nun z.B. den Grafikbereich an den Anfang
schiebst, dann den Text und den Rest zur freien Verwendung, oder zuerst
freier Platz und dann Text-/Grafik. Kannst meinetwegen auch Text, dann
freier Bereich und dann Grafik, aber das wär n bisschen unsinnig, zumal
du für den CharacterGenerator ja evtl. auch noch Platz brauchst.
Ich habe das RAM i.d.R. immer von hinten aufgefüllt, also freier Platz
beginnend bei 0x0000, somit brauch ich nicht noch groß Offsetrechnung
machen, wenn ich den freien Bereich für Applikationsvariablen benutze
(Offsetrechnung musst du zwar für Grafik-/Text eh machen, aber
wenigstens einen Offset kann man sich dann sparen).
Die Berechnungen dazu sind ja auch relativ einfach.
Die TextArea entspricht der Anzahl der horizontalen Pixel geteilt durch
die horizontale Zeichenbreite, bei FS = 0 als 128 / 8 => 16.
Dasselbe gilt für die GraphicArea.
Kannst mal hier reingucken:
http://www.hantronix.com/files/down/t6963app.pdf
Da steht ne passende Initialisierung drin - musst sie halt für deine
Anwendung passend füllen (auf den Displaymode achten!).
Das ist die Grundinitialisierung, für CG etc. musst du dann entsprechend
erweitern, aber damit solltest du etwas sehen. Falls du wie oben erwähnt
doch das RAM vor dem Einschalten löschst, dann müsstest du spätestens
dann etwas sehen, wenn du den Adresspointer auf Grafik-/Textbereich
setzt und etwas hineinschreibst (ggf. mit AutoWrite-Befehl).
Gruß Ralf
Alles nach Datenblatt angeschlossen, auch mit Abblockkondensatoren?
Stromversorgung stabil?
Gibt es Compilerwarnungen?
50ms Startup time eingehalten?
Wenn ein KS0108 geht und ein T6963 nicht, dann ist das doch ein Hinweis.
Vielleicht habe ich das auch nicht verstanden.
Schaltplan und vollständiger Programmcode wäre nett.
Horst Meier schrieb:> Ralf schrieb:>> (128 x 128) / 8 = 1024 Byte für Grafikbereich => 0x0400>> 2048 Bytes.> Besser is das...
Öhm... war nur n Test ob er aufpasst :)
Ist natürlich falsch, mein Fehler, sorry.
Ralf
Hallo,
erst Mal vielen Dank für die Zuschriften und den neuen Link! Mir sind
die Einstellungen jetzt eher klar.
Zu Testzwecken habe ich mal einen Teil des RAMs mit aufsteigenden Zahlen
beschreiben und die gelesenen Werte wieder anzeigen gelassen auf dem
Terminal. (siehe Dateianhang)
Wie man leicht erkennt, erscheinen die Zahlen 0..63 drei Mal
hintereinander, dann erfolgt ein Sprung auf 192.
Vermutung: Kurzschluss der Datenleitungen D6 und D7, deshalb erscheinen
Zahlen >63 nicht. Erst wenn D6 und D7 beide eingeschaltet sind,
erscheinen wieder korrekte Angaben.
Umstände: 20 plg Flachbandkabel mußte an die Platine angelötet werden,
Lötraster kleiner als 2,54mm. Als Löter wurde der "Optimist erster Güte,
gutgelaunt, Liedchen trällernd" angestellt.
Ursache: Kein Mikroskop beim Löten verwendet, elektrische Endkontrolle
der Lötung nicht hinreichend gut. Verfahren zum Anlöten des
Flachbandkables an schmale Lötpins mangelhaft.
Auswirkung:
Da der Kurzschluß direkt am 128x128-display sitzt, konnte das wahlweise
sparat angeschlossene andere 128x64-Display trotzdem funktionieren.
Wegen dem Kurzschluß werden auch Befehle verfälscht. Vermutlich deshalb
keine Anzeige auf dem Display.
Abhilfe: Beseitigung des Kurzschlusses, Personal unterweisen, neues
Anfordern vom Verleiher. Verleiher wechseln. Keine günstigen Displays
einkaufen. Vorgaben der Einkaufsabteilung neu formulieren. Mehrkosten
steuerlich absetzen.
schönes Neues Jahr!
mit freundlichem Gruß