Hallo zusammen,

ich bin gerade dabei mir mit Hilfe eines LCDs und 4 "Softkeys" darunter ein Menü aufzubauen. Dabei sind die 4 Taster so unter dem Display angeordnet, dass ich auf dem 4x20er Display in der untersten Zeile jeweils die Funktion der Taste in dem jweiligen Untermenü angezeigt bekomme.

Derzeit frage ich die Tasten mit debounce ab. Das entprellt zwar schön, hat aber den Nachteil, dass dass auf dem Zustand der Taste geschaut wird und nicht auf die Zustandsänderung.

Folgendes Problem ergibt sich:

Beispiel:
Ich bin im Hauptmenü, drücke auf "Taste 4" um ins Untermenü 4 zu kommen. Dort ist aber die Taste 4 schon wieder mit der "Unter-Untermenü 4" Funktion belegt. Da das Programm ja viel schneller durchläuft als ich die Taste wieder loslassen kann "rausche" ich automatisch ins zweite Untermenü ohne eine Chance zu haben ins erste zu kommen.

Ich sehe jetzt zwei Möglichkeiten das Problem zu lösen:

1.) Verwendung von Interrupts und Auswerten der Flanke des Signals

Problem:

* begrenzte Anzahl der Int
* IMHO kann ich den Interruptvektor nur global genau ein mal festlegen. Somit könnte ich dann beim Drücken ein und der selben Taste nicht mehrer Funktionen anspringen

2.) Beim ersten Schleifendurchlauf eine Variable setzen, diese erst wieder zuücknehmen (also Null setzen) wenn die Taste zwischenzeitlich mal null war und dann die Schleife erst verlassen wenn die Variable wieder zurückgesetzt wurde. So ganz hab ich es selbst noch nicht ausgetüftelt...



...gibts da einen Standardweg für solche Probleme? Wie kann ich es angehen? Wer kann mir Tipps geben???

Viele Grüße
ElCapitano