Projekt

Allgemein

Profil

Touch » Historie » Version 3

Maximilian Seesslen, 20.12.2022 18:20

1 1 Maximilian Seesslen
h1. Touch
2
3
h2. Eval
4
5
Der TSC2007 loest beim Druecken und Loslassen des Displays Interrupts aus.
6
Das Auslesen der Koordinaten loest selbst Interrupts aus.
7
Diese muessen waerend dem Auslesen gesperrt sein.
8
Ueber die Z-Werte kann Druecken oder Loslassen ermittelt werden. Bei leichter Beruehrung koennen einige Events verloren gehen (zittern der Interrupts).
9
Es sollen nur Aenderungen beim Auslesen bewertet werden (Filterung beim Auslesen vs. Interrupts?).
10
11 2 Maximilian Seesslen
h3. State machine
12
13 3 Maximilian Seesslen
High-Interrupt setzt statemachine in "hit", sofern im idle. Gehe nach pressed wenn im release (avoid strange peep).
14 2 Maximilian Seesslen
Low-Interrupt setzt statemachine in "release", sofern im pressed status. Im "Hit"-Fall wird nichts gemacht.
15
16
Event-Loop prueft, ob touch gedrueckt wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im idle oder release, gehe nach hit.
17
Event-Loop prueft, ob losgelassen wurde, aber kein Interrupt ausgeloest wurde: Diagnose. Wenn im pressed, gehe nach release.
18
19
* Idle: .
20 1 Maximilian Seesslen
* Hit: Event-Loop liest im "hit" die koordinate aus (Weitere interrupts sollten nicht stoeren). Initiiere Pieps. Es wird nach "pressed" gewechselt.
21 3 Maximilian Seesslen
* Pressed: Lese Koordinaten. De-/Selektiere das (alte) Widget. Gehe zu pressedWait
22
* pressedWait: nach 100ms gehe nach "pressed"
23 2 Maximilian Seesslen
* Release: Schicke event an Widget. Gehe nach idle.
24
25 1 Maximilian Seesslen
Die Touch-Klasse hat 3 Signale; pressed, released, clicked.
26
Ophio kann diese entsprechend verdrahten.
27
CBringup kann sie auch verdrahten und wartet auch ein clicked mit entsprechenden koordinaten.
28
29
Die Signale werden in der Main-Event-Loop ausgefuehrt, ein CRing/Event-Speicher ist nicht notwendig.