LCD 202A in Bascom - intialisiert nicht richtig

Gast #1225593
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
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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.