LCD 202A in Bascom - intialisiert nicht richtig

Gast #1225593
Lesenswert?

Moin,

ich habe hier ein LCD mit 20 x 2 Zeichen von reichelt

http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A5211;GROUPID=3005;ARTICLE=31659;START=0;SORT=user;OFFSET=16;SID=27htIfiqwQARsAAEeAr1s44f740631e7f651e12f97976f02317d6

an einen Atmel AVR ATMEGA16 angeschlossen. Das ganze soll im 4-Bit Modus 
laufen.
Das Programm habe ich in Bascom geschrieben und sieht wie folgt aus:
1
$regfile = "m16def.dat"
2
$crystal = 8000000
3

4
Waitms 500                                                  'zeit zum Initialisieren
5

6
Config Portc = Output
7

8
Portc.5 = 0                                                 'RW auf Low
9
Portc.7 = 0                                                 'Hintergrundbeleuchtung aus
10

11
Config Lcdbus = 4
12
Config Lcd = 20 * 2
13
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4
14

15

16
Cls                                                         'Text ausgeben
17
Lcd "!1AQaq"
18

19
Do
20
Loop
21
End


Nach dem flashen des µC sollte nun auf dem Display "!1AQaq" angezeigt 
werden. Er zeigt aber "/ ? " am rechten Rand des LCDs an.

Wenn man in die Zeichentabelle des LCDs schaut, dann sieht es so aus, 
als wenn das LCD gar nicht im 4-Bit Modus arbeitet und die "lower 4 bit" 
(die nicht angeschlossen sind) immer als "1111" erkennt.

Hat jemand eine Idee, warum das LCD nicht korrekt arbeitet?

Vielen Dank im vorraus!!
Gast #1225626
Lesenswert?

Es kann (wird) sein, daß das JTAG Interface aktiviert ist.
(Auslieferungszustand)

Du kannst es aber abschalten, in dem Du im IO_Register MCUCSR das Bit 7
(JTD) auf 1 setzt. Das Ganze muß aber 2 mal nacheinander erfolgen, damit
es Wirkung erzielt. Schau mal in's Datenblatt auf die Seite 229, da 
steht
es erklärt.

MCUCSR.7 = 1
und das Gleiche nocheinmal...



MfG Paul
Gast #1225639
Lesenswert?

Hallo,


ich habe den µC mit AVR-Studio geflasht und habe dort in den Fuses das 
Häkchen bei "JTAG Enabled" rausgenommen. (und dann natürlich auf 
"programm" gedrückt) verify war auch erfolgreich. Zusätzlich habe ich 
zwei mal
1
MCUCSR.7 = 1

in Bascom Programm reingeschrieben. Das bringt aber auch nichts.
#1225648
Lesenswert?

Ich hab' grad gemerkt, dass ich nicht eingeloggt war. Also Lui(Gast) und 
Lukas(lukas) sind eine Person ;-)

ich habe jetzt mal "1234567890aaaaaaaaaa" in das LCD geschrieben. jetzt 
zeigt er wieder nur auf den letzten 4stellen der ersten Zeile etwas an.
Die genauen Zeichen sind: "? ?/"
Das sind wieder nur Zeichen aus der untersten Reihe der Zeichentabelle 
des LCDs.

Vielen Dank für eure Hilfe!
Gast #1225661
Lesenswert?

Hallo Lucas,

das ganze ist hier zu finden:

Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , 
Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4

Schreibe richtig:

Config Lcdpin  Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = 
Portc.3 , E = Portc.6 , Rs = Portc.4

Dein Eintrag = PIN bringt das problem!

Gruß

Herbert
Gast #1225669
Lesenswert?

Hallo Lucas,

Habe gerade Blösinn geschrieben!

Hier ein Auszug aus meinem Bascom Programm:

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , 
Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Lcd = 16 * 2                               ', Chipset = Ks077 
'configure lcd screen
Config Lcdbus = 4

Das funktioniert aber nur mit Port C wenn die JTAG Fuse nicht gesetzt 
ist!
Habe auch schonmal fast einen Tag mit der Fehlersuche verbracht, bis mir 
die Fuse eingafallen ist. Ist im neuem Chip gesetzt!

So jetzt viel Spaß

Herbert
#1225696
Lesenswert?

Hallo,

also mit folgendem Beispiellisting habe ich schon auf hunderte von 
HD44780 LCD's erfolgreich ein "Hello World" draufgezaubert:

-------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , 
Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2

Config Lcd = 16 * 4

Initlcd
Cursor Off
Cls

Locate 1,1
LCD" Hello World!"
-------------------

Nichts mehr und auch nichts weniger.
Steht auch alles so in der Bascom-Hilfe drin. Und wenn das nicht 
funktioniert ist JTAG aktiv, oder halt falsch verkabelt.

Mit freundlichen Gruessen
Digitali
#1225710
Lesenswert?

Wow, den "Initlcd"-Befehl kannte ich noch gar nicht. Bei allen anderen 
LCDs ging das bisher immer ohne. Aber jetzt geht es:
1
$regfile = "m16def.dat"
2
$crystal = 8000000
3

4

5
Waitms 500                                                  'zeit zum Initialisieren
6
Config Portc = Output
7

8
Portc.5 = 0                                                 'RW auf Low
9
Portc.7 = 0                                                 'Hintergrundbeleuchtung aus
10

11

12

13
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4
14
Config Lcd = 20 * 2
15

16

17
Initlcd
18
Cls
19

20
Locate 1 , 1
21
Lcd "1234567890aaaaaaaaaa"                                 'Text ausgeben
22

23
Do
24
Loop
25
End


Vielen Dank an alle!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren