- | beepSemaphore |
- Binary Semaphore | – |
- timerIsr alle 10 ms |
- beepTask Core 0, Prio 5 |
- Takt für Beep-State-Machine; ersetzt direkten ISR-Aufruf von PiepPattern::TaskCyclic() |
+ beepTaskHandle |
+ Task Notification | 32-bit Zähler im TCB |
+ timerIsr alle 10 ms
vTaskNotifyGiveFromISR |
+ beepTask Core 0, Prio 5
ulTaskNotifyTake(pdTRUE, …) |
+ Takt für Beep-State-Machine. Kein Heap-Objekt nötig, schneller als Semaphore. pdTRUE = Zähler nach Take auf 0 → verhält sich wie Binary Semaphore. |
| rfEventQueue |
- Queue – RfEvent_t | 32 Einträge × 5 B |
- pinLevelChangeIsr bei jeder Flanke |
- rfDecodeTask Core 0, Prio 4 |
- Überträgt {dtMicros, pinValue}; alle 5 Receiver-State-Machines laufen jetzt im Task-Kontext |
+ Queue – RfEvent_t | 8 Einträge × 5 B |
+ pinLevelChangeIsr bei jeder Flanke
xQueueSendFromISR |
+ rfDecodeTask Core 0, Prio 4
xQueueReceive |
+ Überträgt {dtMicros, pinValue}. dtMicros wird in der ISR gemessen und by-value kopiert — Task decodiert den gespeicherten Wert, kein erneutes micros() nötig. Queue statt Notification, weil Nutzdaten übertragen werden. |