Project: Dyno. Check it out, for criticism and advice

GoForSmoke:
And the millis() counter not being updated while interrupts are disabled (like during IRQs) is something I got (shown in docs) from Arduino. Why do you suppose that is?

All they are saying is that if you disable interrupts (eg. by being in another ISR) for too long, then it might miss a tick. But since the timer fires every 1024 uS (roughly once a millisecond) you would have to disable interrupts for a long time for that to be a worry.

If you consider that at 115200 baud you would get an interrupt every 86.8 uS (being 1/11520) then the serial interrupt handler would have to be done in that time or it would miss incoming serial data ... which it doesn't.

I would guess that servicing an incoming serial byte would take around 15 uS, so you could do that, and send a byte (say, another 15 uS) and still have a lot of free time before your timer interrupt fired, once every 1024 uS.

It's people who try to do massive amounts of calculations inside their ISRs that might miss timer ticks, but there is a way around that ... don't do it. Leave the processing for the main loop, once the ISR has exited.