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. |