PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mal wieder ein LCD-Problem



Lincolnmhkn
24.01.2005, 10:14
Hallo allesamt!

Habe ein Problem bei dem ich nicht so recht weiß worans liegt. Habe am STK500 ein LCD mittels einem Mega16 mit externem 8MHZ Quarz angeschlossen.
Hintergrund ist, daß ich einen eingelesenen AD-Wert auf dem Display angezeigt haben möchte. Theorethisch funktioniert das, nur springt er nach den jeweiligen 5s jedesmal an einen anderen Punkt auf dem Display oder gibt "kyrillische" Schriftzeichen aus! Kann das irgendwie an der Prozessorfrequenz liegen? Fusebits sind bei externen 8MHz gesetzt.
Wäre dankbar für nen Tip!

Gruss, Martin

Programm ist:

$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcd = 16 * 2
Config Portc = Output
Initlcd
Do
Cls
Locate 1 , 2
Lcd "Test "
Wait 5
Loop
End

khazad
24.01.2005, 11:34
Also ich habe bei meiner LCD routine das mit Portc = output weggelassen denke aber nicht das es daran liegt wenn du den cursor erste ziele erste position legen willst dann musst du aber locate 1 , 1 machen und nicht locate 1 , 2
und das init lcd kannst du auch weg lassen der init automatisch nach dem config


Mfg Maik



-hoffe war alles richtig bitte berichtig mich wenn ich falsch liege

24.01.2005, 13:29
Habs gemacht, ändert sich aber nix. locate 1,2 hab ich gemacht, weil wenn ich 1,1 angebe, dann fehlt immer der erste Buchstaben. Keine Ahnung warum. Kanns doch was mit der Frequenz zu tun haben?

Andree-HB
24.01.2005, 15:18
Probiere es doch mal so, läuft bei mir einwandfrei :



$regfile = "m16def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcd = 16 * 2

Do
cls
Upperline
Lcd "Test "
Wait 3
Lowerline
Lcd "Test 2 "
wait 3
Loop
End

P.S. Das mit dem Springen liegt mit Sicherheit an einem fehlenden/überschüssigen Leerzeichen im LCD-Befehl, daher geht die Formatierung flöten

Lincolnmhkn
25.01.2005, 10:11
Danke für das Programm, aber das hat am Anfang auch nicht gefunzt. Ich hab jetzt allerdings herausgefunden wo das Problem lag: Ich lasse das ganze jetzt bei 1MHz mit dem internen Oszillator laufen, dann funktioniert es! Zumindest läuft die Schleife dann etwa 10mal hintereinander ab ohne Probleme, und erst danach kommt wieder mist.
Hab ich nen Denkfehler was die externen Quarze angeht?
Welches Bit muß ich denn nun wirklich bei 8MHz setzen?
Gruß, Martin

albundy
25.01.2005, 10:49
Sind denn die Fusebit's entsprechend auf externen Takt umgestellt ?
Das kann man z.B. in PonyProg unter Security Configuration Bit's auslesen.
(SUT0 und SUT1 , sowie CKSEL0 bis 3 müssten auf "1" stehen)
Bei einem neuen ATMEGA ist immer der interne Takt eingestellt.
Da wird der externe Quarz nicht benutzt.

Lincolnmhkn
27.01.2005, 17:42
Die Fusebits hab ich umgestellt. Das komische ist ja, daß es auch mit internem Takt nicht funktioniert. Das senden ans LCD funktioniert, aber er verhaut die Ziffern immer wieder und nach einer Weile kommt nur noch Mist. Ich versteh das nicht!

albundy
27.01.2005, 18:14
Könnte es sein, dass JTAG noch enabled ist ?
Liegt ja auch auf Port C.