Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/28/10 06:28
Read: times


 
#176945 - Avoid ISR jitter using timer T1
Responding to: ???'s previous message
Also, the time spend in the ISR code between stop T1 and start T1 varies, depending on the
if (++multiplier == 20)
 
comparison.
A better way should be to take care of timer T1 first and then make any actions, so to avoid jitter every time the comparison comes true.

/*--------------------------------------------
    This occurs every 50ms
---------------------------------------------*/
void timer_1_interr(void) interrupt 3
{
    static unsigned char data multiplier = 0;
    TR1 = 0;
    TF1 = 0;
    TH1 = SOFT_RTC_TH1_RELOAD;    //reload timer 1
    TL1 = SOFT_RTC_TL1_RELOAD;
    TR1 = 1;

    if (++multiplier == 20) {
       multiplier = 0;
       soft_RTC_ticks++; 
    }

    if (multitap_timeout)    //dec if not already 0
       multitap_timeout--;            

}

 


and combined with the zero comparison by Per,

/*--------------------------------------------
    This occurs every 50ms
---------------------------------------------*/
void timer_1_interr(void) interrupt 3
{
    static unsigned char data multiplier = 20;
    TR1 = 0;
    TF1 = 0;
    TH1 = SOFT_RTC_TH1_RELOAD;    //reload timer 1
    TL1 = SOFT_RTC_TL1_RELOAD;
    TR1 = 1;

    if (--multiplier == 0) {
       multiplier = 20;
       soft_RTC_ticks++;          
    }

    if (multitap_timeout)         //dec if not already 0
       multitap_timeout--;            

}

 


K.L.Angelis

List of 23 messages in thread
TopicAuthorDate
Ideas for Multi-tap keyboard routine            01/01/70 00:00      
   just follow            01/01/70 00:00      
   Multi-tap is not too difficult            01/01/70 00:00      
      Two-step operation. Keyboard input + post-processing            01/01/70 00:00      
         State Machine!            01/01/70 00:00      
            Agree 100%            01/01/70 00:00      
               Time to code            01/01/70 00:00      
                  Software Timers!            01/01/70 00:00      
                     Practical Limits            01/01/70 00:00      
                        Don't lock up in infinite loops everywhere            01/01/70 00:00      
                           In the pseudo code...            01/01/70 00:00      
                           State Machine            01/01/70 00:00      
                              Divide by 5            01/01/70 00:00      
                                 Timer resolution            01/01/70 00:00      
                              State Machine            01/01/70 00:00      
                              Looks not bad programming practice            01/01/70 00:00      
                  Using Timer May Still be Possible            01/01/70 00:00      
                     Done !            01/01/70 00:00      
                        Very Cool!!!            01/01/70 00:00      
                        Compare with zero is better            01/01/70 00:00      
                           Avoid ISR jitter using timer T1            01/01/70 00:00      
                           Code!            01/01/70 00:00      
                              Thanks Munish...            01/01/70 00:00      

Back to Subject List