Forum: Mikrocontroller und Digitale Elektronik Probleme mit Display (KS0108B)


von Eumel (Gast)


Lesenswert?

Hallo,
Ich versuche gerade eher weniger erfolgreich das LCD-Modul TG12864B-13B 
von Pollin mit einem Atmega48 anzusteuern.
Verdrahtung ist:
DB0-DB7 an PB0-PB7
D/C an PC0
R/W an PC1
E an PC2
CS1 an PC3
CS2 an PC 4
RST an Vcc

Das Display "funktionier" also die Kontrastpannung passt und ich sehe 
Pixel.
Mein Code soll auf dem Display ein 8*8 Pixel großes Schachbrett 
erzeugen. Das klappt aber nicht wirklich. Nach einem Reset zeigt das 
Display manchmal nichts an, manchmal ein fehlerhaftes Schachbrett unten 
links und manchmal ein fehlerhaftes Schachbrett oben rechts.
Um Timing Probleme auszuschließen läuft der Controller mit 128 kHz, das 
sollte dem Display eigentlich mehr als ausreichend Zeit lassen.

Vielen Dank für Eure Hilfe :)
1
.include "m48def.inc"
2
3
rcall INIT
4
rcall SELECT1
5
ldi r16, 0b00111111 ;linkes Display einschalten
6
rcall SENDCOM
7
ldi r16, 0b01000000  ;Y Adresse = 0
8
rcall SENDCOM
9
ldi r16, 0b10111000  ; Page = 0
10
rcall SENDCOM
11
ldi r16, 0b11000000  ; Startline = 0
12
rcall SENDCOM
13
14
ldi r16, 0b01010101  ;Schachbrett
15
rcall SENDDAT
16
ldi r16, 0b10101010
17
rcall SENDDAT
18
ldi r16, 0b01010101
19
rcall SENDDAT
20
ldi r16, 0b10101010
21
rcall SENDDAT
22
ldi r16, 0b01010101
23
rcall SENDDAT
24
ldi r16, 0b10101010
25
rcall SENDDAT
26
ldi r16, 0b01010101
27
rcall SENDDAT
28
ldi r16, 0b10101010
29
rcall SENDDAT
30
31
32
33
end:
34
    rjmp end
35
36
37
38
39
INIT:
40
    push r16
41
    ldi r16, 255
42
    out DDRB, r16
43
    out DDRC, r16
44
    pop r16
45
    ret
46
47
48
ENABLE:
49
    sbi PORTC, PC2
50
    nop
51
    cbi PORTC, PC2
52
    ret
53
54
SELECT1:
55
    cbi PORTC, PC4
56
    sbi PORTC, PC3
57
    ret
58
59
SELECT2:
60
    cbi PORTC, PC3
61
    sbi PORTC, PC4
62
    ret
63
64
SENDCOM:
65
    cbi PORTC, PC0
66
    cbi PORTC, PC1
67
    out PORTB, r16
68
    rcall ENABLE
69
    ret
70
71
SENDDAT:
72
    sbi PORTC, PC0
73
    cbi PORTC, PC1
74
    out PORTB, r16
75
    rcall ENABLE
76
    ret

von Eumel (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Bild des Fehlers.

von OllerEumel (Gast)


Lesenswert?

Eumeldiedeumel :D

von Eumel (Gast)


Lesenswert?

Ich hab bis jetzt, leider erfolgslos, drangesessen. Würde mich sehr 
freuen, wenn jemand mal kurz über den code schaut oder mir irgendwie 
anders weiterhelfen kann.

von Andreas D. (rackandboneman)


Lesenswert?

Hast Du, trotz des niedrigen Taktes, die Signale bereits einmal mit 
einem Oszilloskop angesehen? Ground Bounce und Übersprechen werden auch 
bei 128 Hz nicht besser :)

Also ich würde danach als nächstes:

-sicherstellen dass der Takt wirklich so niedrig ist wie Du denkst.

-etwas Delay hinter SELECT1 einfügen und ausprobieren ob das irgendetwas 
ändert.

-RST mal wirklich ansteuern, mit erzkonservativen Timings, statt es auf 
VCC zu legen.

-ggf die andere Displayhälfte ansteuern und vergleichen (bezieht sich 
dein oben links/oben rechts auf das gesamte Panel oder auf innerhalb 
einer Hälfte?).

-Die Timings im DB nochmal studieren. Insbesondere auch verifizieren mit 
welchem Takt der Displaycontroller selbst läuft (gerade bei 
Surplus-Textdisplays wurden da emetisch aktive Reittiere zahlreich in 
der Nähe des pharmazeutischen Einzelhandels observiert, evtl kann das 
auch bei den Grafikdisplays so sein).

von jensman (Gast)


Lesenswert?

Ich hatte ein ähnliches Problem mit dem Display von Pollin (allerdings 
das mit blauer Hintergrundbeleuchtung) nach einiger Sucherei hab ich 
dann festgestellt das CS1 und CS2 vertauscht waren, außerdem waren die 
Lötbrücken der Hintergrundbeleuchtung falsch verbunden also 19 war LED+ 
und 20 LED-

von Eumel (Gast)


Lesenswert?

So, mittlerweile läufts. :)
Ich hab allerdings noch eine Frage zu der ich im Datenblatt keine 
Antwort gefunden habe. Gibt es nach bestimmten Befehlen auch Wartezeiten 
( wie beim hd44780 z.b. beim return home) ?

von holger (Gast)


Lesenswert?

>So, mittlerweile läufts. :)

Und wo war das Problem?

von Eumel (Gast)


Lesenswert?

Ich muss ganz eherlich sagen, so genau weiß ich es nicht. Hab den Code ( 
war ja noch nicht viel) einfach nochmal geschrieben und versucht, das 
timing Diagramm aus dem Datenblatt so genau wie möglich umzusetzen.

von Andreas D. (rackandboneman)


Lesenswert?

Eine solche Lösung hat immer einen gewissen Beigeschmack und lässt einen 
selbst unsicher.

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.