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