File tree Expand file tree Collapse file tree 1 file changed +9
-11
lines changed Expand file tree Collapse file tree 1 file changed +9
-11
lines changed Original file line number Diff line number Diff line change @@ -178,17 +178,15 @@ int ICACHE_RAM_ATTR stopWaveform(uint8_t pin) {
178178 }
179179 // If user sends in a pin >16 but <32, this will always point to a 0 bit
180180 // If they send >=32, then the shift will result in 0 and it will also return false
181- uint32_t mask = 1 <<pin;
182- if (!(waveformEnabled & mask)) {
183- return false ; // It's not running, nothing to do here
184- }
185- waveformToDisable |= mask;
186- // Ensure timely service....
187- if (T1L > microsecondsToClockCycles (10 )) {
188- timer1_write (microsecondsToClockCycles (10 ));
189- }
190- while (waveformToDisable) {
191- /* no-op */ // Can't delay() since stopWaveform may be called from an IRQ
181+ if (waveformEnabled & (1UL << pin)) {
182+ waveformToDisable = 1UL << pin;
183+ // Must not interfere if Timer is due shortly
184+ if (T1L > microsecondsToClockCycles (10 )) {
185+ timer1_write (microsecondsToClockCycles (10 ));
186+ }
187+ while (waveformToDisable) {
188+ /* no-op */ // Can't delay() since stopWaveform may be called from an IRQ
189+ }
192190 }
193191 if (!waveformEnabled && !timer1CB) {
194192 deinitTimer ();
You can’t perform that action at this time.
0 commit comments