Open
Description
@earlephilhower Please check the busy-wait (idle == false)
while (pwmState.pwmUpdate) {
if (idle) {
delay(0);
}
MEMBARRIER();
}
from static IRAM_ATTR void _notifyPWM(PWMState *p, bool idle)
from IRAM_ATTR bool _stopPWM_weak(uint8_t pin)
A. This causes a busy wait inside an ISR (#8043).
B. The IRQ for PWM (NMI) does interrupt other ISRs that may be busy-waiting in notifyPWM. OK.
C. Won't any other GPIO interrupt still be blocked by the waiting ISR in A? Therefore, depending on how long PWM needs to clear the ISR in A to continue in _notifyPWM
, every GPIO IRQ gets delayed? Does this leave room for acceptable responsiveness?
Metadata
Metadata
Assignees
Labels
No labels