Update firmware documentation and agent guidance
This commit is contained in:
+8
-1
@@ -41,8 +41,15 @@ static void isr_enc0_b() { handle_encoder(0); }
|
||||
## ISR-Sicherheit
|
||||
|
||||
- `s_state[]` und `s_accum[]` sind `volatile`
|
||||
- `CEventQueue::push()` ist ISR-sicher (atomare Index-Inkremente auf Single-Core-M0+, kein Heap)
|
||||
- Der Callback-Pointer `s_cb` wird einmalig in `setup()` gesetzt, bevor Interrupts aktiviert werden
|
||||
- ISR-Wrapper führen nur Dekodierung und Queue-Push aus; sie rufen kein USB,
|
||||
NVM, LED-Rendering oder `delay()` auf
|
||||
|
||||
Wichtig: Die Queue wird zusätzlich vom Matrixcallback im Loop beschrieben.
|
||||
Ein Encoderinterrupt kann diesen Push unterbrechen. Die Implementierung ist
|
||||
damit nicht streng Single-Producer und besitzt für diesen Fall aktuell keinen
|
||||
Interruptschutz. Details:
|
||||
[09_known_limitations.md](09_known_limitations.md).
|
||||
|
||||
## Initialisierung
|
||||
|
||||
|
||||
Reference in New Issue
Block a user