PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Display spinnt!? (Gelöst -->Atmega644 zu langsam!)



DanielSan
11.08.2009, 17:15
Hi,

könnt ihr mir mal helfen bitte. Mein Atmega644 ist irgendwie zu langsam für "waitms 500" benötigt er ca. 6sekunden.

Ich vermute, das die Fusebits nicht stimmen. Aber bevor ich da was kaputt mache frage ich lieber hier nochmal nach.
Achja auf dem LCD wird nichts ausgegeben. Kann das am timing liegen welches ja vermutlich dann auch nicht passt oder?

Mein Programm sieht so aus:

$regfile = "m644def.dat"
$baud = 19200
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000

Config Pind.7 = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Porta.6 , Rs = Porta.7

Do
Waitms 500
Pind.7 = 1
Cls
Lcd "pind.7 = 1"
Waitms 500
Pind.7 = 0
Cls
Lcd "pind.7 = 0"

Loop

End

EDIT:
Wenn ich "$crystal = 1000000" einsetze, läuft er schon schneller aber ich habe den eindruck das es relativ unregelmäßig ist.
Ich habe mal am Kontrast gedreht es scheint als würde nur eine Zeile was anzeigen. Es handelt sich um ein TC1602A-09T(R).

Danke
MFG Daniel

linux_80
11.08.2009, 17:40
Aja,
wenn der 644er (und andere AVRs) nur 1/8 des angegebenen/gewollten Taktes läuft, ist noch ein Fusebit falsch eingestellt.
Nennt sich CKDIV8, im orig. Zustand wird der Takt nochmal durch 8 geteilt.

DanielSan
11.08.2009, 17:44
Danke Linux_80
Das hat mein Geschwindigkeitsproblem gelöst!

Allerdings habe ich noch Probleme mit meinem LCD. Hat da noch jemand ne Idee?

Danke

Sauerbruch
11.08.2009, 17:44
Ich vermute, das die Fusebits nicht stimmen. Aber bevor ich da was kaputt mache frage ich lieber hier nochmal nach.

Beides ist ein guter Ansatz :-)
Einen extrem hifreichen Fusebit-Kalkulator findest du hier:

http://www.engbedded.com/fusecalc/

Dort kannst du feststellen, dass beim Mega664 im Auslieferungszustand das CKDIV8-fusebit gesetzt ist, d.h. der Takt intern durch 8 geteilt wird. Wenn du es löschst, läuft der Controller auch mit den gewünschten 8MHz.

So ein richtiges Eigentor kann man sich eigentlich nur mit dem SPIEN-fusebit schießen. Wenn das gelöscht ist, klappt die serielle Programmierung nicht mehr, der Chip ist dann nur noch mit ´nem "High-Voltage"-Programmer zu retten.

Also - experimentier´ mal damit rum, ist alles halb so wild!!

Edit: Schon wieder 4 Minuten zu spät :-)

linux_80
11.08.2009, 17:52
Zum LCD,
das ist an PortC wie's aussieht, deshalb nochmal zu den Fusebits, hier wird JTAG noch aktiviert sein.

DanielSan
11.08.2009, 18:07
Ok das habe ich geändert es war wirklich noch auf Jtag. Danke

Allerdings liegt das Problem weiterhin vor.

MFG Daniel

DanielSan
11.08.2009, 18:48
So jetzt hab ich einiges im Inet gelesen.

Ich habe nun den RW Pin auf gnd gelegt (software technisch) weil ich das auf der Bascom Seite zufällig entdeckt habe.

Jetzt wird schonmal was angezeigt auch wenns nur schwachsinn ist. Allerdings ist trotzdem nur eine Zeile sichtbar.

EDIT:

So nächstes Update:

Ich habe die Datenleitungen DB0 - DB3 abgekniffen und RW per software auf gnd gelegt. Jetzt Funktioniert das Display. Ist zwar ein bisschen schade, weil ichs im 8bit modus betreiben wollte aber ich denke so gehts auch.

MFG Daniel