-
LCD hängt sich auf
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
-
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!!
-
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.
-
Hallo
Bist du sicher dass sich das Display aufhängt und nicht der Controller?
mfg Luca
-
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