atmel-samd: Fix the neopixel delay method so it handles overflow better.
This commit is contained in:
parent
3b17980822
commit
a8dae22ae9
@ -37,8 +37,12 @@ static inline void delay_cycles(uint8_t cycles) {
|
||||
uint32_t stop = start - cycles;
|
||||
if (start < cycles) {
|
||||
stop = 0xffffff + start - cycles;
|
||||
while (SysTick->VAL < start || SysTick->VAL > stop) {}
|
||||
} else {
|
||||
// Make sure the systick value is between start and stop in case it
|
||||
// wraps around before we read its value less than stop.
|
||||
while (SysTick->VAL > stop && SysTick->VAL <= start) {}
|
||||
}
|
||||
while (SysTick->VAL > stop) {}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user