Dear Arduino Enthusiasts,
I'd like to suggest a small improvement to the Arduino API. Some sketches do need a periodic interrupt. Most of them "sacrifice" timer1 or timer2 for this purpose. However, Arduino already has an interrupt happening about every millisecond. Why not add a "hook" to it, so that it gets accessible by sketch functions!?
I'd suggest to modify wiring.c in the following way:
volatile static voidFuncPtr timer0_intFunc = 0; void attachTimer0Interrupt(void (*userFunc)(void)) { ** timer0_intFunc = userFunc;** }
SIGNAL(TIMER0_OVF_vect) { // copy these to local variables so they can be stored in registers // (volatile variables must be read from memory on every access) unsigned long m = timer0_millis; unsigned char f = timer0_fract;
m += MILLIS_INC; f += FRACT_INC; if (f >= FRACT_MAX) { f -= FRACT_MAX; m += 1; }
timer0_fract = f; timer0_millis = m; timer0_overflow_count++;
** if(timer0_intFunc)** ** timer0_intFunc();** }
What do you think?
Cheers,
Andreas