-
-
Erfahrener Benutzer
Roboter-Spezialist
Guten Morgen, robo_wolf,
ja, die Tastenflanke setzt immer nur den Zeitzähler zurück. -
Aber gehen wir doch mal den Fall „Ta0 und Ta7 betätigt“ durch. Dabei mache ich's wie Du und verwende für die Zustände der Menusteuerung (Bits2 und 3 des Zustandsbytes) statt der 0b00 den Buchstaben A, statt 0b01 das B usw. - Also, los geht's:
Angenommen, Ta0 wird zuerst betätigt. Die Tastenflanke (T=1) setzt den Zeitzähler zurück, der neue Zustand ist A.0.
Der Zeitzähler erreicht T0, bevor Ta7 betätigt wird: Die Prüfung des statischen Tastenzustands (CHKT07) liefert ein "Nein" (T=0). Der neue Zustand der Menusteuerung bleibt A. Der Zeitzähler läuft weiter, die Zustände laufen über A.1 bis A.3. Im Zustand A.3 bleibt bis eine neue Tastenflanke kommt.
Jetzt wird Ta7 betätigt. Die Menusteuerung ist noch in Zustand A.X. Der Zeitzähler springt auf 0 zurück und fängt an, T0 abzuzählen; der neue Zustand ist A.0.
Wenn er jetzt T0 erreicht, liefert die Prüfung des Tastenzustandes mit CHKT07 ein „Ja“ (T=1) und - voila - die Menusteuerung springt in den Zustand B.1. Der Zähler wird mit der Differenz (T1-T0) geladen und fängt an abzuzählen.
Wird jetzt noch eine Taste betätigt. Der Zeitzähler wird zurückgesetzt, der neue Zustand ist B.0. Erreicht der Zeitzähler T0, dann liefert die Tastenprüfung ein „Nein“, weil mehr als Ta0 und Ta7 betätigt sind, der neue Zustand ist A.1 und die Steuerung läuft weiter bis A.3.
Wird keine weitere Taste betätigt, dafür aber Ta0 oder Ta7 losgelassen, dann liefert die Prüfung nach Ablauf von T1 (Zustand B.1) ein „Nein“ und wir landen in Zustand A.2 und die Reise geht weiter bis A.3.
Wenn aber beim Erreichen von T1 sowohl Ta0 als auch Ta7 weiterhin betätigt sind, dann liefert CHKT07 ein „Ja“ und die Steuerung geht in den Zustand C.2 über. Ab jetzt wartet sie auf Eingaben, die den gewünschten Menupunkt auswählen.
Angenommen, Ta2 wird vor Erreichen der Totmannzeit betätigt. Das löst eine Tastenflanke aus, die den Zeitzähler wieder zurückgesetzt (das hast Du, glaub' ich, in Deiner Simulation vergessen
). Der neue Zustand ist C.0. Nach Ablauf von T0 wird der statische Tastenzustand geprüft (CHK_TASTEN). Je nachdem was dabei herauskommt muss jetzt die gewünschte Aktivität angestossen werden. Der Zeitzähler läuft derweil weiter. Wenn er die Totmannzeit erreicht, geht die Steuerung in den Zustand A.3 über und wartet auf die nächste Tastenflanke.
Alles klar?
mare_crisium
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen