Forum: Mikrocontroller und Digitale Elektronik mein glcd zeigt nichts an


von Hias (Gast)


Angehängte Dateien:

Lesenswert?

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

von Hias (Gast)


Angehängte Dateien:

Lesenswert?

Teil 2 vom Code

von Hauke Radtki (Gast)


Lesenswert?

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!

von Andi (Gast)


Lesenswert?

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

von Hias (Gast)


Angehängte Dateien:

Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Hias (Gast)


Angehängte Dateien:

Lesenswert?

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

von Hias (Gast)


Lesenswert?

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

von Hauke Radtki (Gast)


Lesenswert?

naja wenn du das LCD initialiserst, sollte es kurz aufblinken! wenn es
das nicht macht, ist noch irgendwas in der initialisierung murx

von Hias (Gast)


Lesenswert?

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

von Hauke Radtki (Gast)


Lesenswert?

naja vor der initialisierung hast du so nen "halbkontrast" so dass es
weder voll ausgesteuert ist, noch wirklich gelöscht!

von Hias (Gast)


Lesenswert?

wie in meinem Bild also?
(oberes Bild)

Hias

von Andi (Gast)


Lesenswert?

Hast Du JTAG deaktiviert?

MfG
Andi

von Hauke Radtki (Gast)


Lesenswert?

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

von Hias (Gast)


Lesenswert?

ja hab ich!
Was hat das damit zu tun?
Bitte klärt mich auf : )

von Hias (Gast)


Lesenswert?

sorry ich muss besser schreiben:
ich hab jtag enable, also nicht deaktiviert.

von Hauke Radtki (Gast)


Lesenswert?

wenn JTAG enabled ist, kannst du den port nicht benutzen da er für das
JTAG reserviert ist, und keine aktion bei ihm ankommt!

von Andi (Gast)


Lesenswert?

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

von Hias (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Hias (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Rubitschka (Gast)


Lesenswert?

Das ist aber ein sehr schönes GLCD, wo hast Du das denn her?

LG
Michael

von Hias (Gast)


Lesenswert?

Hallo!
Ich hab des bei ebay ersteigert.
Da is ein Typ der öfters Mal eins reinstellt.
einfach mal nach "dmf5010" suchen.
Hias

von Thorran M. (kleineronkel)


Lesenswert?

kannst du den funktionierenden code nochmal online stellen?

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.