下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机定时器中断时间误差的分析及补偿作者冰晓日期2009-1-8 8:09:000推荐摘要:本文分析了单片机定时器溢出中断与CPU响应中断的时间误差,并给出了补偿误差的方法和实例。关键词:单片机;定时器;中断;误差1前言单片机内部一般有若干个定时器。 如8 0 5 1单片机内部有定时器0和定时器1。在定时器计数溢出时,便向CPU发出中断请求。 当CPU正在执行某指令或某中断服务程序时,它响应定时器溢出中断往往延迟一段时间。 这种延时虽对单片机低频控制系统影响甚微, 但对 单片机高频控制系统的实时控制精度却有较大的影响,有时还可能造成控制事故。为扩大单片机的应用范围,本文介绍它的定时器溢出中断与
2、CPU响应中断的时间误差、补偿误差的方法和实例。2误差原因、大小及特点产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。一是定时器溢出中断信号时,CPU正在执行某指令; 二是定时器溢出中断信号时, CPU正在执行某中断服务 程序。2.1. CPU正在执行某指令时的误差及大小由于CPU正在执行某指令,因此它不能及时响应定时器的溢出中断。当CPU执行此指令后再响应中断所延迟的最长时间为该指令的指令周期,即误差的最大值为执行该指令所需的时间。由于各指令都有对应的指令周期,因此这种误差将因CPU正在执行指令的不同而不同。如定时器溢出中断时,CPU正在执行指令MOVA, Rn,其最大误差为1
3、个机器周期。而执行指令MOVRn , direct时,其最大误差为2个机器周期。当CPU正在执行乘法 或除法指令 时,最大时间误差可达4个机器周期。 在8 0 5 1单片机指令系 统中,多数指令的指令周期为12个机器周期,因此最大时间误差一般为12个机器周期。若振荡器振荡频率为f osc , CPU正在执行指令的机器周期数为Ci,则最大时间 误差为tmax1 = 12/foscXCi ( us )。例如 f osc = 12MHZ , CPU 正在执行乘法指令(Ci= 4),此时的最大时间误差为:Atmax1 = 12/foscXCi = 12/(12X106) X4 = 4X10-6( s
4、)=4 (卩 s )2.2 CPU正在执行某中断服务的程序时的误差及大小定时器溢出中断信号时, 若CPU正在执行同级或高优先级中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求,其延迟时间由中断转移指令周期T1、 中断服务程序执行时间T2、 中断返回指令的指令周期T3及中断返回原断点后执行下一条 指令周期T4 (如乘法指令)组成。中断转移指令和中断返回指令的指令周期都分别为2个 机器周期。中断服务程序的执行时间为该程序所含指令的指令周期的总和。因此,最大时间误差 A tmax2为:Atmax2= (T1+T2+T3+T4)12/fosc=(2+T2 + 2 + 4)12/
5、 fosc = 12(T2 + 8)/ fosc若设f osc = 12MHZ,则最大时间误差为:Atmax2 = 12(T2 + 8)/ fosc =12(T2 + 8)/12X106=(T2 + 8)X10-6(s)=T2 + 8(s)。由于上式中T2一般大于8,因此,这种时间误差一般取决于正在执行的中断服务程序。当CPU正在执行中断返回指令RETI、或正在读写IE或IP指令时,这种误差在5个机器周期内。2.3误差非固定性特点定时器溢出中断与CPU响应中断的时间误差具有非固定性特点。即这种误差因CPU正在执行指令的不同而有相当大的差异。如CPU正在执行某中断服务程序,这种误差将远远大于执行
6、一条指令时的误差。后者误差可能是前者误差的几倍、几十倍、 甚至更大。 如同样只执行一条指令,这种误差也有较大的差别。如执行乘法指令MULAB比执行MOV A,Rn指令的时间误差增加了3个机器周期。这种误差的非固定不仅给误差分析带来不便,同时也给误差补偿带来困难。3 误差补偿方法由于定时器产生溢出中断与CPU响应中断请求的时间误差具有非固定性,因此,这种误差很难用常规方法补偿。为此,本文介绍一种新方法。现介绍该方法的基本思路、定时器新初 值及应用情况。3.1 基本思路为使定时器溢出中断与CPU响应中断实现同步,该方法针对中断响应与中断请求的时间误差,对定时器原有的计数初值进行修改, 以延长定时器
7、计数时间, 从而补偿误差。 在该方法 中,当定时器溢出中断得到响应后, 即停止定时器的计数,并读出计数值。 该计数值是定时 器溢出后,重新从OOH开始每个机器周期继续加1所计的值。然后,将这个值与定时器的停止计数时间求和。 若在定时器原计数初值中减去这个和形成新计数初值, 则定时器能在新 计数初值下使溢出中断与CPU响应中断实现同步,从而达到误差的补偿要求。3.2 定时器新计数初值若定时器为计数方式,操作方式为1,则计数器初值X0=216t0Xfosc/12。式中f osc为振荡器的振荡频率。 t0为需要定时的时间, 也为中断的间隔时间。 X0为 定时器原计数初值。 在对定时器溢出中断与CPU
8、响应中断时间误差进行补偿时,定时器的新计数初值X1为:X1=216t3X fosc/12t3=t0+t1+t2式中t0为中断间隔时间。 t1为定时器停止计数时间, 该时间为定时器停止计数到重新启 动计数之间所有程序指令周期数的总和。t2为定时器溢出中断后, 重新从OOH开始直至计数器停止时计的值。 在误差补偿中,若将定时器计数初值X1取代X0,则可使定时器下次的溢出中断与CPU响应中断实现同步。3.3 实例要求补偿定时器每1ms产生一次溢出中断时的中断响应延迟的误差。若振荡器振荡频率fosc=12MHZ, 定时器工作在计数方式, 工作模式为1,则补偿中断响应时间误差时 的定时器新初值X1为:X
9、1 = 216 t3X fosc/12 = 216(t0+t1) t2 = 216(10 0 0 +1 3 ) t2误差补偿程序为:0CLREA ;关CPU中断1CLRTRi;停止定时器计数2MOVR0,#OOH;RO清零3MOVR0,#LOW(216);定时器最大计数值的低8位送RO4MOVA, R05SUBBA,#LOW(10 0 0 + 1 3 );2 16的低8位减去(t0+t1)的低8位送累加器A6SUBBA,TLi;216的低8位减去(t0+t1+t2)的低8位送TLi7MOVTLi,A8MOVR0,#OOH;R0清零9MOVR0,#HIGH(216) ;216的高8位送R010 MOVA,R011 SUBB A,#HIGH( 1 0 0 0 + 1 3 );2 16的高8位减去(t0+ t1)的高8位送A12 SUBB A,THi;2 16的高8位减去(t0+ t1 +t2 )的高8位送A13 MOV THi, A14 SETB TRi;重新启动定时器在上式和上段程序中, 由于fosc=12MHZ,中断间隔时间为1ms, 因此tO的机器周期数为1 0 0 0。由于第1条指令到第14条指令的指令周期的机器周期数之和为13,因此,t1为13个机器周
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新形势下老年用品产品行业顺势崛起战略制定与实施分析报告
- 2025年玉环市选调公务员考试试卷真题
- 2025年铜川辅警真题
- 2026.07.10塑料颗粒夜间全自动装车机
- 孩子抚养协议书(15篇)
- 小学主题班会课件:强化安全教育提升自我保护意识
- 关于2026年潜在合作伙伴的初步洽谈函(6篇)
- 2026第十医院面试题目及答案
- 警惕交通隐患安全护航成长小学主题班会课件
- 2026反诈中心面试题目及答案
- 智慧树知到《中国近现代史纲要(山东师范大学)》2025章节测试附答案
- VATS术中出血和处理
- 《房车亚克力外推窗技术规范》
- 110KV电压互感器局部放电试验
- 20以内加减法之凑十法、破十法、平十法图解练习题
- 深圳大学《算法设计与分析》2023-2024学年期末试卷
- 肝硬化肝性脑病诊疗指南(2024年版)解读
- 大学物理实验智慧树知到期末考试答案章节答案2024年山东交通学院
- 小区物业安全生产工作方案
- 2024年江苏江南水务股份有限公司招聘笔试参考题库附带答案详解
- 绍兴市国企招聘考试真题及答案
评论
0/150
提交评论