| ??? 10/11/12 21:58 Read: times | #188629 - The timer simply increments Responding to: ???'s previous message | 
| Sorry for any confusion
 The timer ISR is 
void ONE_KHZ_ISR (void) interrupt 5 {
    TF2 = 0;                            // Reset Interrupt
   WDTCN = 0xA5;
   gui_mSecCount++;   
   gb_mSecTick = TRUE;
   timer_count++;						//this is count for our sort out timers tick
										//we use this to make sure we don't miss a timer event 
										//if we take too long processing something, this will always fire.
}
 I would have thought that is pretty short..... Then at some non critical non ISR point in my code I call. TIMERS_sort_out_timers(); 
//call this on a 1mSec or more tick that is not on an interrupt.
void TIMERS_sort_out_timers(void){
	unsigned char i;
	unsigned int elapsed_msecs;
	elapsed_msecs = timer_count;
	timer_count = 0;
	for (i = 0; i < NUMBER_OF_TIMERS; i++){				//step through each of our timers
		if (timer_array[i].current_value != 0){			//see if we have already expired.
//			timer_array[i].current_value --;			//if not then decrement the timer toward 0 
			timer_array[i].current_value -= elapsed_msecs;			//if not then decrement the timer toward 0 or past 0 
			if (timer_array[i].current_value <= 0){		//now see if we have timed out
				if (timer_array[i].timer_type == timer_periodic){	//if we run on a periodic timer 
					timer_array[i].current_value = timer_array[i].reset_value;	//reload the timer 
				}
				timer_array[i].timeout_func(timer_array[i].func_args);			//if we have timed out then perform the function in our callback.
			}
		}
	}
}
 In this manner I am not hanging around in an interrupt. And I'm not processing an expired timer in the ISR? Regards Marshall | 
| Topic | Author | Date | 
| Timers - Function Pointers | 01/01/70 00:00 | |
| Too much for a '51? | 01/01/70 00:00 | |
| I Agree | 01/01/70 00:00 | |
| Function Pointers... | 01/01/70 00:00 | |
| you are violating KISS | 01/01/70 00:00 | |
| Various Timer Functions | 01/01/70 00:00 | |
| Thanks Michael | 01/01/70 00:00 | |
| regardless, you are violating KISS | 01/01/70 00:00 | |
| even on ARM | 01/01/70 00:00 | |
| The timer simply increments | 01/01/70 00:00 | |
| bug | 01/01/70 00:00 | |
| more bugs | 01/01/70 00:00 | |
| thanks   | 01/01/70 00:00 | 



