fwiw, here’s how I’m dealing with micros() rollovers:
#define MICROS_ROLLOVER ((unsigned long)59652323)
static unsigned long us_delta(unsigned long old_us, unsigned long new_us)
{
new_us -= old_us;
if((long)new_us < 0)
new_us += MICROS_ROLLOVER;
return new_us;
}
So when I want the delta between old_micros and micros() I use us_delta(old_micros, micros()) and never have to worry about getting caught in a rollover (given that the time between old_micros and micros() is less than MICROS_ROLLOVER)