Harden firmware state and transfer handling
This commit is contained in:
@@ -119,8 +119,7 @@ Der Werksreset ist keine PC-Funktion, sondern Teil der Firmware:
|
||||
## Nebenläufigkeit
|
||||
|
||||
Encoder-Callbacks laufen im EIC-Interrupt, Matrixcallbacks im Loop. Beide
|
||||
schreiben in dieselbe `CEventQueue`; `processEvents()` liest im Loop. Die Queue
|
||||
besitzt aktuell keinen Interruptschutz für den Matrix-Push und verwirft Events
|
||||
bei Überlauf. Das ist eine bekannte Einschränkung, keine garantierte
|
||||
Multi-Producer-Sicherheit; siehe
|
||||
[09_known_limitations.md](09_known_limitations.md).
|
||||
schreiben in dieselbe `CEventQueue`; `processEvents()` liest im Loop. Der
|
||||
Matrixcallback maskiert Interrupts während seines Queue-Pushs, sodass Loop und
|
||||
ISR den Tail-Index nicht gleichzeitig ändern. Bei Überlauf werden Events
|
||||
weiterhin verworfen.
|
||||
|
||||
Reference in New Issue
Block a user