in the while loop in main() that busywaits until we can scan again, the
compiler was optimizing out the function call, it seems like, when i
wrote `(uint8_t)timer__get_milliseconds()`; if i cast the whole
expression (not just the function) to `(volatile uint8_t)`, or if i just
didn't cast anything at all, it worked. not sure why the compiler would
optimize the function call out like that though, even if it was cast...
this happened when i put it in a for loop too. i need to research it
just a little more, and write a warning about it in the timer
documentation.