Forum: Mikrocontroller und Digitale Elektronik GLCD mit T6963-Controller und 8kRAM ansteuern klappt nicht


von roehrenvorheizer (Gast)


Angehängte Dateien:

Lesenswert?

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ß

von Frank K. (fchk)


Lesenswert?

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

von roehrenvorheizer (Gast)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

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

von Horst M. (horst)


Lesenswert?

Ralf schrieb:
> (128 x 128) / 8 = 1024 Byte für Grafikbereich => 0x0400

2048 Bytes.
Besser is das...

von Pete K. (pete77)


Lesenswert?

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.

: Bearbeitet durch User
von Ralf (Gast)


Lesenswert?

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

von roehrenvorheizer (Gast)


Angehängte Dateien:

Lesenswert?

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ß

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.