Projekt

Allgemein

Profil

Aktionen

Touch » Historie » Revision 2

« Zurück | Revision 2/3 (diff) | Weiter »
Maximilian Seesslen, 20.12.2022 18:05


Touch

Eval

Der TSC2007 loest beim Druecken und Loslassen des Displays Interrupts aus.
Das Auslesen der Koordinaten loest selbst Interrupts aus.
Diese muessen waerend dem Auslesen gesperrt sein.
Ueber die Z-Werte kann Druecken oder Loslassen ermittelt werden. Bei leichter Beruehrung koennen einige Events verloren gehen (zittern der Interrupts).
Es sollen nur Aenderungen beim Auslesen bewertet werden (Filterung beim Auslesen vs. Interrupts?).

State machine

High-Interrupt setzt statemachine in "hit", sofern nicht schon im pressed status.
Low-Interrupt setzt statemachine in "release", sofern im pressed status. Im "Hit"-Fall wird nichts gemacht.

Event-Loop prueft, ob touch gedrueckt wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im idle oder release, gehe nach hit.
Event-Loop prueft, ob losgelassen wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im pressed, gehe nach release.

  • Idle: .
  • Hit: Event-Loop liest im "hit" die koordinate aus (Weitere interrupts sollten nicht stoeren). Initiiere Pieps. Es wird nach "pressed" gewechselt.
  • Pressed: es werden alle 100ms die Koordinaten erneuert. Das Widget wird ueberprueft. Gggf. wird das selektierte Widget gewechselt.
  • Release: Schicke event an Widget. Gehe nach idle.

Die Touch-Klasse hat 3 Signale; pressed, released, clicked.
Ophio kann diese entsprechend verdrahten.
CBringup kann sie auch verdrahten und wartet auch ein clicked mit entsprechenden koordinaten.

Die Signale werden in der Main-Event-Loop ausgefuehrt, ein CRing/Event-Speicher ist nicht notwendig.

Von Maximilian Seesslen vor etwa 2 Jahren aktualisiert · 2 Revisionen