Hallo Ich habe Probleme mit meinem glcd mit dem t6963 Controller Ich schaff es einfach nicht irgendwas anzuzeigen. Dazu weiß ich nicht ob meine Kontrastspannung stimmt, was das ganze natürlich erschwert. Aber der Reihe nach: Zum Problem Kontrast: Aus dem Datenblatt kann ich folgendes entnehmen Absolute Maximum Ratings Supply Voltage (Vcc-Vss) max 7.0V Supply Voltage (Vcc-Vee) max 28.0V DC Characteristics Supply Voltage (Vcc-Vss) min 4.5V, max 5.5V Supply Voltage (Vcc-Vee) min 12.4V, max 14.2V Also habe ich folgende Werte an den Spannungspins anliegen: Vss - GND Vcc - 5V Vee - -8.2V Damit erhalte gefleckte Stellen (hell und dunkel) siehe hier (oberes Bild) http://www.sc-bischofsmais.de/glcd.htm Das hat mir nicht gefallen, deshalb hab das Poti zum Einstellen von Vee besser aufgedreht. Bei ca. -12V schaut mein Display so aus, wie im oberen Link (unteres Bild). Die Frage is, was stimmt nun? Sollte man sich an die Werte im Datenblatt halten? (also -8,2V) Oder stimmen die -12V? Das ist mein erstes Problem. Dann schaffe ich es einfach nicht irgendwas am Display anzeugen zu lassen. Controller Mega16 Display mit t6963 Controller (240x64 Pixel) Alles in Assembler programmiert (nicht Lachen, das hat seinen Grund) Datenleitung PortB/PinB Steuerleitung PortC Bei der Verdrathung bin ich mir zu 100% sicher, dass die stimmt! Im Anhang ist mein Code (Teil1). Ich würde mich sehr freuen, wenn da mal einer drüberschauen könnte. Danke schon im vorraus Hias
also die 8,2V haben bei mir gerecht! das sieht bei mir genauso aus wie auf dem ersten bild, wenn das LCD nicht Initialisiert ist! check noch ma die initialisierung!
Hi! @Hias: Habe Deinen Code (glcdrountine.asm) ein bißchen angeschaut und da ist mir aufgefallen das Du nach der Datenausgabe CD auf low beläßt. Das ist Mist! Ein paar Regeln zur Ansteuerung eines LCD mit T6963(C): 1. Anfangszustand der Controllbits: RD = high WR = low CD = high CE = high 2. Nach der Datenausgabe unbedingt CD wieder zurückstellen auf high da sonst der T6963 ausgebremst wird, warumm auch immer, aber ich glaube was von einer IRQ-Auslösung bei CD = low im Datenblatt des T6963 gelesen zu haben. Dafür braucht man bei der Comando-Ausgabe nur CE auf low und dann wieder auf high zu setzen, sogar ohne Wartezyklen (NOP) dazwischen. 3. Bei der Statusabfrage (STA0 und 1 oder STA3) muß man auf RD = low und WR = high einstellen. Auch diese gehören nach der Abfrage wieder zurückgestellt wie unter Punkt 1. Stellt man nach jeder Art von Transfehr von/zum Display die Controll-Bits wie unter Punkt 1 wieder her geht der T6963 ab wie nix und zwischen CE = low und CE = high ist kein Warten nötig. So sollte es sein: Init der Controll-Bits wie unter Punkt 1. Comando-Ausgabe: Statusabfrage Bit 0 und 1 Comando auf Datenport CE = low CE = high Datenausgabe: Statusabfrage Bit 0 und 1 Daten auf Datenport CD = low CE = low CE = high CD = high Status lesen (Bit 0 und 1 oder Bit 3 (Auto-Write)): WR = high RD = low CE = low Abfrage von Bit 0 und 1 oder Bit 3 auf high in einer Schleife CE = high RD = high WR = low MfG Andi
Hallo! Danke Andi! : ) Leider geht immer noch nichts! Ich weiß, dass er bis zu main-schleife (code teil1) durchläuft. Aber er löscht weder Text noch Graphic. Auch darstellen tut er nichts. Der aktualisierten Code ist im Anhang. MfG Hias
War etwas zu voreilig mit den 0 Wartezyklen. Ich habe das umstellen der Controll-Bits auf Read mit CE = low in einer Sub gemacht da ich auch den Autowrite-Status brauche und da ist ein RET am Ende (4 Takte). Bei der Statusprüfung muß vor der Abfrageschleife was rein. Probiers mal so: check: push r16 ldi r16,0x00 ; datenleitungen alle eingänge out ddrdat,r16 ldi r16,0xff out outdat,r16 sbi outcon,wr ; status check cbi outcon,rd cbi outcon,ce nop nop nop wait: in r16,indat ; status read andi r16, 0b000000011 cpi r16, 0x03 brne wait sbi outcon,ce ; disable chip sbi outcon,rd cbi outcon,wr pop r16 ret Wenns nicht geht, vielleicht noch ein NOP davor. MfG Andi
Und noch was, Du aktivierst den AND-Mode?!? ldi r16,0b10000011 ; and modus rcall command Damit siehst Du erst was, wenn im Text- und Grfikarray Pixel aufeinander treffen. Ich würde erst mal den OR-Mode probieren: ldi r16,0x80 ; or modus rcall command Der XOR-Mode ist auch ganz net. Damit wird der Inhalt zwischen Text- und Grafik invertiert. ldi r16,0x81 ; xor modus rcall command MfG Andi
Also an der Stelle dürften ja die nops egal sein. In der Schleife bleibt er ja sowieso so lange bis STA,0 und STA,1 beide high sind. Oder? Ich habs auf Or umgestellt. Aber immer noch keine Besserung : / Danke Hias
Mir is noch was eingefallen. Ich hab auf meinem Display noch nie! irgendwelche sich ändernde Pixel gesehen. Das finde ich nicht normal. Oder bekommt man erst was zu sehen, wenn die Initialisierung funktioniert. Komisch is, dass das Programm sowohl durch textclear als auch graphicvlear durchläuft, aber des löschen irgendwie ned funktioniert!? Fraglich ist ob die Adressen im RAM stimmen (in meinen Augen sind die richtig, aber vielleicht denk ich falsch)!? hias
naja wenn du das LCD initialiserst, sollte es kurz aufblinken! wenn es das nicht macht, ist noch irgendwas in der initialisierung murx
Ja also wenn die initialisierung gehen würde, dann müsste es ja auch die display-fläche löschen. Nein ich hab eher gemeint ob man vorher schon irgendwas erkennen kann? Hias
naja vor der initialisierung hast du so nen "halbkontrast" so dass es weder voll ausgesteuert ist, noch wirklich gelöscht!
ja etwa so wie im oberen bild! so sieht mein LCD aus, wenns nicht initialisiert ist! Das Problem mit JTAG hatte ich bei meiem Touchscreen (tastenmatrix) bin erst nach ca einer halben stunde draufgekommen, als ich LEDs angeschlossen hab Gg
sorry ich muss besser schreiben: ich hab jtag enable, also nicht deaktiviert.
wenn JTAG enabled ist, kannst du den port nicht benutzen da er für das JTAG reserviert ist, und keine aktion bei ihm ankommt!
Dann tu das! Du hast CD und CE an einen JTAG-Pin. Ist JTAG an sind die Portpins PC2 - PC5 ausser Funktion für normale Dinge. Oder nimm PortD als Controll-Port. MfG Andi
Hehe! Es geht! Danke!!!!!!! Was mir aber noch nicht gefällt is dieser komische Hintergrund! Der is genauso wie im ersten Bild. Also so blau mit hellen und dunklen stellen! Die Schrift ist weiß! Kann man des ned irgendwie invertieren? Vielen vielen Dank! Hias
Ganz einfach! Du stellst auf XOR-Mode um und füllst das Grafik-Array mit Pixel (also 1920 Bytes mit 0xFF). Aber noch mal zu den Takten. Bei der Comando- und Datenausgabe ist zwischen CE = low und CE = high keine Wartezeit nötig. Bei der Statusabfrage muß man dem T6963C erst mal ein bißchen Zeit lassen um die Bits richtig zu setzen, also nach dem CE = low ein paar NOPs vor dem ersten IN sonst liegt das OUT von vorher an. Den Reset brauchst Du eigentlich nicht an einen AVR-Pin anzuschließen. Reicht, wenn der an der Resetschaltung für den AVR mit dran hängt. Gutes Gelingen Andi
Danke hab ich jetzt gemacht! Leider heut des invertieren ned hin! Ich bekomm ein komisches Muster auf das display. ich mach mal ein bild von. aber erst morgen. ich bin mir sicher, dass des was mit den speicher-adressen zu tun hat. stimmen die denn? Außerdem haut das mit dem Xor noch ned hin. Die Pixel rundherum sind nich blau der text weiterhin weiß. Vielen dank nochmal Hias
Mensch, Du kennst XOR nicht? Das LCD stellt Grafik und Text übereinander gelegt dar (Overlay). Trift ein gesetzter Punkt vom Text-Bereich auf einen gesetzten Grafik-Punkt, invertieren sich die Punkte, 1 xor 1 = 0. Das mit dem komischen Muster kann an den Adressen liegen. Habe im DB-PDF was gelesen von Adresse 0000h bis 7FFFh für das Upper-LCD und 8000h bis FFFFh für das Lower-LCD. Betrift allerdings den Dualscan-Betrieb, weis nicht, ob das bei Deinem so geschaltet ist also z. B. mit linker und rechter Hälfte. Lies Dir dazu das Datenblatt vom LCD und auch die PDF-Dateien vom T6963C, leicht zu finden mit Google, gründlich durch. MfG Andi
Das ist aber ein sehr schönes GLCD, wo hast Du das denn her? LG Michael
Hallo! Ich hab des bei ebay ersteigert. Da is ein Typ der öfters Mal eins reinstellt. einfach mal nach "dmf5010" suchen. Hias
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.