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