Moin,
Ich hätt da gern mal ein Problem ;)
Ich habe letztens hier im Forum ein 240*128 T6963c Display gekauft
(Danke nochmal dafür!) und begonnen daran rumzubasteln und mir eine
kleine C-Lib zu schreiben. (Das, was in der Codesammlung war hat mich
nicht befriedigen können ;)).
Es lief auch eigentlich alles auf Anhieb. Teilweise sind zwar Sachen
EXTREM schlecht dokumentiert (nicht nur im Datenblatt - auch im Rest des
Internets). Als Beispiel das Auto Writing: Fast alle Quellen sagen, dass
nach einem Auto-Write Command ein STA3 Bit-check gemacht werden muss. Es
muss aber ein STA0/1 Check gemacht werden, was ich in einem
verschlungenen Thread-Beitrag hier im Forum gefunden habe.
Nunja, jedenfalls geht es darum Custom Chars darzustellen. Ich setze per
"SET OFFSET POINTER" den CGRAM Bereich des Chips auf 1800-1FFF:
1 | //Set CGRAM Address to 1800-1FFF
|
2 | T6963cPutData(3);
|
3 | T6963cPutData(0);
|
4 | T6963cPutCmd(T6963C_CMD_SETOFFSET);
|
Die Routinen funktionieren übrigens. Ich denke nicht, dass dort der
Fehler liegt.
Anschließend lade ich an Adresse 1C00 (1800 + 80h*8 Weil Zeichen 0-7F
aus dem internen CGROM kommen) die 8 Bytes meines Custom Chars.
Sieht in etwa so aus:
1 | const uint8_t g_CustomChars[128*8] PROGMEM =
|
2 | {
|
3 | 0, 24, 28, 30, 30, 28, 24, 0,
|
4 |
|
5 | };
|
1 | T6963cWriteChunkAt_P(T6963C_ADDR_CGRAMH, g_CustomChars, sizeof(g_CustomChars));
|
Mit dem gleichen Befehl fülle ich auch den Grafik-RAM (aus dem Flash).
Hier kann der Hund also ebenfalls nicht begraben liegen.
Danach schreibe ich an die Text-Adresse einen Teststring. Normale
Zeichen (Also diese, die an 0-7F liegen und aus dem internen CGROM
kommen) klappen perfekt. Sobald ich aber Zeichen 80h ausgeben will kommt
nicht mein Custom Char. Nein, es kommt auch kein zufälliges Bitmuster,
weil eventuell der RAM-Write für das Zeichenmuster fehlgeschlagen ist.
Nein, es kommt der entsprechende Extended ASCII Code
(http://asciitable.com/).
Schreibe ich mal testweise andere Extended ASCII Codes, werden auch
diese ausgegeben.
Jetzt die Frage: Ist etwas an meinem Vorgehen falsch? Was mich wundert
ist, dass im T6963c garkein CG für Extended ASCII Codes vorhanden ist.
Kann es sein, dass auf meinem Display irgendwo ein ROM in den
Speicherbereich gemappt ist, wo extended ASCII Codes drinstehen? Dann
könnte ich mir aber nicht erklären, warum die Zeichen ebenfalls korrekt
angezeigt werden, wenn ich beim OFFSET-POINTER mal testweise einen
anderen Speicherbereich einstelle.
Weiß jemand Rat? Das Display ist ein DG-24128-06