hotijack
30.05.2007, 15: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
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