On Feb 20, 2013, at 2:08 , David Brown <address@hidden>
wrote:
Another option that might be usable (depending on how things are
split within different modules) is to make the ISR just a wrapper
for the "real" code:
class x { friend void ::timerInterrupt(void); private : int i; };
class x the_x;
static void timerInterrupt(void) { the_x.i++; }
ISR(TIMER1_OVF_vect) { timerInterrupt(); }
With non-negligible optimisations enabled, the static
timerInterrupt function will be inlined within the ISR function, so
there is no extra overhead. (Normally there can be significant
overhead if an interrupt function calls an external function.)
Just a thought for another style.
Yeah, that's how I had been doing it, but I wanted to ensure I didn't
have the overhead in this case, even when no optimizations were
used.