Forum: Mikrocontroller und Digitale Elektronik LCD 202A in Bascom - intialisiert nicht richtig


von Lui (Gast)


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!!

von Paul Baumann (Gast)


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

von Lui (Gast)


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.

von Otto (Gast)


Lesenswert?

Hallo Lui,

schreibe mal einen anderen Text wie "1234567900" in das Display um zu 
prüfen, ob evtl eine Datenleitung unterbrochen ist.

Gruss Otto

von Lukas -. (lukas)


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!

von Otto (Gast)


Lesenswert?

Kontrolliere die Datenleitungen auf Kurzschluss (auch unterenander) oder 
Unterbrechung.

von Lukas -. (lukas)


Lesenswert?

Das habe ich mit nem Durchgangsprüfer zwar schon gemacht, aber ich geh 
nochmal mit nem "Ohmmeter" ran, vielleicht ist ja irgendwo eine 
hochohmige verbindung.

von Herby (Gast)


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

von Lukas -. (lukas)


Lesenswert?

Nein, das geht auch nicht, dann gibt Bascom mir die Fehlermeldung:

Error 12, Unknown Config Parameter zurück.

von Herby (Gast)


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

von Stefan S. (digitali)


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

von Lukas -. (lukas)


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!!

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.