您的位置 首页 IOT

单片机定时器中止时间误差原因剖析

在单片机定时器的应用过程中,在中断时间设置方面出现误差是工程师们最不愿见到的错误之一。那么,都是哪些原因导致了单片机定时器的中断时间设置出现

单片机定时器的使用过程中,在中止时刻设置方面呈现差错是工程师们最不肯见到的过错之一。那么,都是哪些原因导致了单片机定时器的中止时刻设置呈现了差错呢?这些差错的的严峻程度又是怎样的呢?在今日的文章中,咱们将会针对这一问题打开总结和剖析。

单片机定时器的实践使用过程中,发生单片机定时器溢出中止与CPU呼应中止的时刻差错,一般来说有两个原因。一个是定时器溢出中止信号时,CPU正在履行某指令。而另一个原因便是定时器溢出中止信号时,CPU正在履行某中止服务程序。下面咱们将会就这两种构成差错的原因打开别离剖析。

CPU正在履行某指令时的差错

在单片机定时器的使用过程中,因为CPU正在履行某指令时所构成的差错,是导致中止时刻设置呈现差错的重要原因。因为CPU正在履行某指令,因而它不能及时呼应单片机定时器的溢出中止。当CPU履行此指令后再呼应中止所推迟的最长时刻为该指令的指令周期,即差错的最大值为履行该指令所需的时刻。因为各指令都有对应的指令周期,因而这种差错将因CPU正在履行指令的不同而不同。如定时器溢出中止时,CPU正在履行指令MOVA,Rn,其最大差错为1个机器周期。而履行指令MOVRn、direct时,其最大差错为2个机器周期。当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(如乘法指令)组成。中止搬运指令和中止回来指令的指令周期都别离为2个机器周期。中止服务程序的履行时刻为该程序所含指令的指令周期的总和。因而,最大时刻差错Δ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个机器周期内。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/141972.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部