An Example Using A Master Roll Over Timer To Get Time Since Last Event
//----- DO IN 1mS HEARTBEAT TIMER -----
main_1ms_clock_timer_irq++;
//----- USING THE TIMER -----
unsigned long main_1ms_clock_timer_irq;
unsigned long main_1ms_clock_timer;
unsigned long process_last_time;
unsigned long process_1ms_time_since_last;
//Create a local copy of the timer (which won't change in the interrupt when being used - if no interrupt then no need to use)
main_1ms_clock_timer = main_1ms_clock_timer_irq;
while (main_1ms_clock_timer != main_1ms_clock_timer_irq) //Use sizeof(main_1ms_clock_timer) != the processor native bit length
main_1ms_clock_timer = main_1ms_clock_timer_irq;
//Start timing
process_last_time = main_1ms_clock_timer;
//Time since start
process_1ms_time_since_last = (main_1ms_clock_timer - process_last_time); //Time in mS since last time point with roll over of the timer inherantly compensated for
