锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

两大单片机定时器中断时间误差原因总结分析

时间:2022-06-27 15:00:00

单片机定时器在应用过程中,中断时间设置的误差是工程师最不愿意看到的错误之一。那么,是什么导致了单片机定时器中断时间设置的误差呢?这些误差的严重程度是什么?在今天的文章中,我们将总结和分析这个问题。

在单片机定时器的实际应用过程中,产生单片机定时器溢出中断和CPU通常有两个原因来响应中断的时间误差。一是定时器溢出中断信号时,CPU指令正在执行中。另一个原因是当定时器溢出中断信号时,CPU正在执行中断服务程序。下面我们将分别分析这两个误差的原因。

CPU执行指令时的误差

在使用单片机定时器时,由于CPU执行指令时造成的误差是中断时间设置误差的重要原因。CPU它正在执行一个指令,因此它不能及时响应单片机定时器的溢出中断。CPU执行该指令后,中断延迟的最长时间是该指令的指令周期,即误差的最大值是执行该指令所需的时间。由于每个指令都有相应的指令周期,因此会出现这种误差CPU不同的指令正在执行。例如,当定时器溢出中断时,CPU正在执行指令MOVA,Rn,最大误差是机器周期。执行指令MOVRn、direct最大误差是两个机器周期。CPU最大时间误差可达4个机器周期。在8051单片机指令系统中,大多数指令的指令周期为1-2个机器周期,因此最大时间误差一般为1-2个机器周期。如果振荡器振荡频率为fosc。而当CPU执行指令的机器周期数为Ci,最大时间误差为Δtmax1=12/fosc×Ci(us)。例如fosc=12MHZ,CPU正在执行乘法指令(Ci=4)此时最大时间误差可通过公式计算为:

Δtmax1=12/fosc×Ci=12/(12×106)×4=4×10-6(s)=4(μs)

CPU在执行中断服务程序时的误差

由于CPU单片机中断程序误差也是执行中断服务程序造成的一个重要原因。如果单片机定时器溢出中断信号,此时CPU同级或高优先级中断服务程序正在执行中,将继续执行这些程序,不能及时响应定时器溢出中断请求,延迟时间由中断转移指令周期T1.中断服务程序执行时间T2.中断返回指令的指令周期T3.中断返回原断点后执行下一个指令周期T4(如乘法指令)。中断转移指令和中断返回指令的指令周期分别为两个机器周期。中断服务程序的执行时间是程序中包含指令的指令周期的总和。因此,最大时间误差Δtmax2为:Δtmax2=(T1 T2 T3 T4)12/fosc=(2 T2 2 4)12/fosc=12(T2 8)/fosc。若设fosc=12MHZ,该公式可以计算最大时间误差:

Δtmax2=12(T2 8)/fosc=12(T2 8)/12×106=(T2 8)×10-6(s)=T2 8(μs)。

此时工程师需要注意的一个问题是,由于上述风格T2一般大于8,所以这个单片机定时器时间误差通常取决于正在执行的中断服务程序。CPU正在执行中断返回指令RETI、或正在读写IE或IP该误差在5个机器周期内。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章