PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD hängt sich auf



hotijack
30.05.2007, 14:21
Hallo,

ich habe eine Menüsteueurung mit einem LCD 2*16 und einem Drehencoder realisiert.
LCD = EA W162B-N3LW (HD44780 kompatibel)
uC = ATmega 32

Funktionsweise:
Ein Eingang des Encoders ist am INTo angeschlossen, löst dieser nun eine Interrupt aus, so wird in der Routine der zweite Eingang abgefragt und entsprechend eine Zählvariable inkrementiert oder dekrementiert. Des Weiteren besitzt der Encoder einen Drucktaster. Mit diesem wird die aktuelle Menüauswahl bestätigt.

So weit funktioniert die Menüsteuerung. Jedoch habe ich ein Problem, wenn ich den Drehencoder irgendwann einmal drehe, dann steigt das Display aus und zeigt nichts mehr an. Davor lässt sich das Menü aber eine gewisse Zeit lang ohne Probleme bedienen.

Während des Aufbaus des Displaytextes habe ich den INT0 disabeled. Außerdem frage ich das Busy-Flag des Displays mit ab. (LCD4BUSY.lib)

Ich hoffe es kann mir jemand weiterhelfen.

Freundlichen Gruß.

Hotijack

zumgwadrad
30.05.2007, 14:37
Hi,
mit welchem Systemtakt arbeitest du? Und wie lang ist die Zuleitung zu deinem Display! Hatte das gleiche Problem, ich steuere mit Tastern durch mein Menü und des hat sich dann auch irgendwann aufgehängt und nur noch Buchstabensalat ausgegeben!
Hatte so ungefähr ne 60cm zuleitung, habe die dann auf jetzt so ca. 12cm runtergekürzt und alles geht.
Wenn du die lange Leitung brauchst dann versuch es mit niederem Systemtakt oder du musst halt die Zuleitungen verdrillen oder ziehst einen haufen koaxkabel.
Viel Erfolg noch!!

hotijack
30.05.2007, 14:45
Takt des uC = 14,7456 MHz.
Die Leitung ist im Moment ca. 20cm. Jedoch ist das Display auf ein Steckboard gesteckt. Werd es mal probieren es direkt anzulöten.

Danke für den Tip.

Spion
30.05.2007, 15:46
Hallo

Bist du sicher dass sich das Display aufhängt und nicht der Controller?

mfg Luca

Jaecko
30.05.2007, 16:47
Vermutung: Dass der Controller beim Interrupt zwar in INT0 reinspringt, diese aber nicht mehr verlässt (Schleife); da bleibt dann kaum noch Zeit für anderes