Go Down

Topic: Attach to Timer0 Interrupt (Read 1 time) previous topic - next topic


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;

     // 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;



What do you think?



Go Up