Hi Leute, ich brauch eure Hilfe, ich bin seit letzter Woche dran ein
graphisches LC-Display zum laufen zu bringen, aber bisher konnte ich es
nicht mal Initialisieren, nachdem ich jetzt massenhaft Beiträge
durchgelesen habe, hab ich mal angefangen mein eigenes Programm zu
schreiben, dass folgende ist dabei herausgekommen, aber wenn ich es auf
den µC (Atmega 16L auf STK500 board)spiele dann flimmert das Display
leicht, in der ersten "Zeile" werden keine Pixel angezeigt und und der
Rest sieht aus wie ein Schweizer Käse, manche Bildpunkte sieht man,
andre nicht. Ich hab alle Leitungen zum Display hin bzw. weg durch
gemessen und alle Signale mit dem Oszi überprüft, der Atmel macht was
ich will, nur der Controller auf dem LCD nicht:) also liegt das Problem
denk ich mal irgendwo im Programm, aber ich konnte nichts finden. Das
hier ist mein erster Versuch in diese Richtung, ich Versuche mich zwar
durch zuschlagen aber mir passieren noch viele Fehler, wenn jemand vllt.
eine Idee hat worans liegen könnte nur raus damit
Hier ist noch mein Pinning falls das irgendwas hilft
>Vss (Pin1) = GND>Vdd (Pin2) = VTG (+5V vom STK 500)>Vo (Pin3) = Regelbare gleichspannung, ca 0 - 1,5V...>A0 (Pin4) = RA1>CS1 (Pin5) = RA2>CS2 (Pin6) = RA3>NC (Pin7) = RA4>NC (Pin8) = RA5>R/W (Pin9) = RA6>DB0 (Pin10)= RD0>DB1 (Pin11)= RD1>DB2 (Pin12)= RD2>DB3 (Pin13)= RD3>DB4 (Pin14)= RD4>DB5 (Pin15)= RD5>DB6 (Pin16)= RD6>DB7 (Pin17)= RD7>RES (Pin18)= RA7>A (Pin19)= 5V (+1 Vorwiderstand ca 4,2V)>K (Pin20)= GND
1
.nolist
2
.include "m16def.inc"
3
.list
4
5
.def a = r16
6
.def b = r17
7
.def c = r18
8
.def Temp = r19
9
.def Temp1 = r20
10
.def Temp2 = r21
11
.equ GLCD_Data = PORTD
12
.equ GLCD_DDR_Data = DDRD
13
.equ GLCD_Ctrl = PORTA
14
.equ GLCD_DDR_Ctrl = DDRA
15
.equ A0 = PA1
16
.equ CS1 = PA2
17
.equ CS2 = PA3
18
.equ RW = PA6
19
.equ RES = PA7
20
21
22
23
24
ldi Temp,LOW(RAMEND)
25
out SPL,Temp
26
ldi Temp,HIGH(RAMEND)
27
out SPH,Temp
28
;----------------------
29
cbi GLCD_Ctrl,RES ;Display resetten vor der
30
sbi GLCD_Ctrl,RES ;initialisierung
31
;----------------------
32
33
;---------------------------------
34
ldi b,149 ;Zeit die der Controller braucht um sich
Wollte mich auch schon mal mit diesem Controller beschäftigen, aber
derzeit fehlen noch die praktischen Erfahrungen. Kann daher nix dazu
sagen, ob die Initialisierung so richtig ist.
Was mir an deinem Programm auffiel, war(in GLCD_COMMAND):
1
cbi GLCD_CTRL,RW
ohne zugehöriges sbi bleibt die Leitung auf low und der Controller hängt
bei Lesen fest.
Soweit ich weiß gibt's beim SED1520 keinen Clear-Befehl, wirre Zeichen
dürften da normal sein.
Verwendest du 3MHz? Ab 8MHz könnten die Puls-Zeiten zu kurz sein.
Mark
Hi
>ldi a,0b10101111>rcall GLCD_COMMAND
So etwas macht man mit Konstanten
.equ disp_on = 0b10101111
....
ldi a,disp_on
Der Befehl Display On ist eigentlich der letzte in der Initialisierung.
Auch der Rest kommt mir beim Überfliegen etwas komisch vor. Lt.
Datenblatt ist folgendes zu initialisieren:
(a) Display off
(b) Display start line register: First line
(c) Static drive off
(d) Column address counter: Address 0
(e) Page address register: Page 0
(f) Select duty: 1/32
(g) Select ADC: Forward (ADC command D0 = “0”, ADC status flag = “1”)
(h) Read modify write off
Dein 'GLCD_COMMAND:' kannst du so nur in der Initialisierung benutzen.
Sonst darf nur eine Displayhälfte angesprochen.
>loop1>nop>rjmp loop
?????
MfG Spess
hey, ja ich weis der pin R/W muss auch low sein um schreiben zu
können(ich hab den text quasi wortwörtlich von nem pic assembler
umgeschnipselt hast recht, der gehört raus aber stören tut er auch
nicht:)), wenn er high ist kannst du daten auslesen, ich verwende 4 MHz,
aber hast recht, ich füg noch ein paar nops ein, vll bringt das was
mfg tobi
@ spess, in meinem Programm kommt noch n bisschen was dass ich nicht mit
rein gestellt habe, es ist für die Initialisierung nicht wichtig, und
zum testen wollte ich nicht dass der µC diesen teil abarbeitet also habe
ich nach die Initialisierung ne Endlosschleife gesetzt, tut mir leid ich
hab das wohl übersehen
ich hab mir die Reihenfolge von mehreren Quellen aus dem Internet (nicht
aus dem Datenblatt, bei dem blicke ich nicht ganz durch) geholt, gut
möglich dass die nicht ganz stimmen, ich probiere es mal mit von dir
geposteter.
danke, mfg Tobi