Fixed encoder direction
This commit is contained in:
+6
-1
@@ -13,12 +13,17 @@ Encoder-SW-Tasten laufen **nicht** durch diesen HAL, sondern durch den Matrix-Sc
|
||||
|
||||
```
|
||||
Zustand = (A << 1) | B → 4 Bits: 00 / 01 / 10 / 11
|
||||
LUT[prev<<2 | cur] → +1 (CW), -1 (CCW), 0 (ungültig/Prellen)
|
||||
LUT[prev<<2 | cur] → Roh-Vorzeichen, 0 (ungueltig/Prellen)
|
||||
```
|
||||
|
||||
Mechanische Encoder erzeugen 4 Flanken pro Raste → Akkumulator zählt Halbschritte.
|
||||
Ein Event wird erst gefeuert wenn `|accum| >= 4` (= ein vollständiger Klick).
|
||||
|
||||
Die VersaPad-PCB-Verdrahtung liefert das Quadratur-Vorzeichen gegenueber der sichtbaren Drehrichtung invertiert. Deshalb bleibt die LUT konventionell, aber der HAL dreht das Vorzeichen vor dem Callback mit `ENCODER_DIRECTION_SIGN = -1`. Nach aussen gilt weiterhin:
|
||||
|
||||
- `direction = +1` -> `ENC_CW`
|
||||
- `direction = -1` -> `ENC_CCW`
|
||||
|
||||
## ISR-Aufbau
|
||||
|
||||
8 ISR-Wrapper (je einer pro Pin, da `attachInterrupt` keinen Parameter unterstützt):
|
||||
|
||||
Reference in New Issue
Block a user