分析總結單片機定時器中斷的時間及誤差原因
發布時間:2015-11-24 責任編輯:echolady
【導讀】相(xiang)信(xin)眾(zhong)多(duo)工(gong)程(cheng)師(shi)都(dou)不(bu)想(xiang)遇(yu)到(dao)這(zhe)種(zhong)錯(cuo)誤(wu),應(ying)用(yong)單(dan)片(pian)機(ji)定(ding)時(shi)器(qi)時(shi),卻(que)在(zai)設(she)置(zhi)中(zhong)斷(duan)時(shi)間(jian)時(shi)出(chu)現(xian)誤(wu)差(cha)。細(xi)想(xiang)一(yi)下(xia),是(shi)什(shen)麼(me)原(yuan)因(yin)導(dao)致(zhi)單(dan)片(pian)機(ji)定(ding)時(shi)器(qi)的(de)中(zhong)斷(duan)時(shi)間(jian)設(she)置(zhi)部(bu)分(fen)出(chu)現(xian)了(le)誤(wu)差(cha)?這(zhe)種(zhong)誤(wu)差(cha)會(hui)導(dao)致(zhi)的(de)結(jie)果(guo)是(shi)什(shen)麼(me)?本(ben)文(wen)就(jiu)針(zhen)對(dui)這(zhe)些(xie)問(wen)題(ti)一(yi)一(yi)解(jie)析(xi)。
在單片機定時器的實際應用過程中,產生單片機定時器溢出中斷與CPU響應中斷的時間誤差,通常來說有兩個原因。一個是定時器溢出中斷信號時,CPU正在執行某指令。而另一個原因就是定時器溢出中斷信號時,CPU正在執行某中斷服務程序。下麵我們將會就這兩種造成誤差的原因展開分別分析。
CPU正在執行某指令時的誤差
在單片機定時器的使用過程中,由於CPU正在執行某指令時所造成的誤差,是導致中斷時間設置出現誤差的重要原因。由於CPU正在執行某指令,因此它不能及時響應單片機定時器的溢出中斷。當CPUzhixingcizhilinghouzaixiangyingzhongduansuoyanchidezuichangshijianweigaizhilingdezhilingzhouqi,jiwuchadezuidazhiweizhixinggaizhilingsuoxudeshijian。youyugezhilingdouyouduiyingdezhilingzhouqi,yincizhezhongwuchajiangyinCPU正在執行指令的不同而不同。如定時器溢出中斷時,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正zheng在zai執zhi行xing某mou個ge中zhong斷duan服fu務wu的de程cheng序xu而er造zao成cheng的de單dan片pian機ji中zhong斷duan程cheng序xu誤wu差cha,也ye是shi一yi個ge重zhong要yao的de誤wu差cha形xing成cheng原yuan因yin。當dang單dan片pian機ji定ding時shi器qi溢yi出chu中zhong斷duan信xin號hao時shi,此ci時shi如ru果guoCPU正zheng在zai執zhi行xing同tong級ji或huo高gao優you先xian級ji中zhong斷duan服fu務wu程cheng序xu,那na麼me它ta將jiang會hui繼ji續xu執zhi行xing這zhe些xie程cheng序xu,不bu能neng及ji時shi響xiang應ying定ding時shi器qi的de溢yi出chu中zhong斷duan請qing求qiu,其qi延yan遲chi時shi間jian由you中zhong斷duan轉zhuan移yi指zhi令ling周zhou期qiT1、中斷服務程序執行時間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個機器周期內。
相關閱讀:
設計技巧:上拉電阻如何搞定單片機抗幹擾
不容忽視的單片機係統抗幹擾問題
軟硬兼施,教你避免單片機EMC問題
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻




