微控制器的抗干擾軟件編程方法
發(fā)布時(shí)間:2007/8/29 0:00:00 訪問次數(shù):438
微控制器越來越多地用于各種電子領(lǐng)域,例如自動(dòng)化、工業(yè)控制中。隨著金屬氧化物半導(dǎo)體的硅晶體管幾何尺寸的不斷縮小,系統(tǒng)設(shè)計(jì)中的電磁兼容性(EMC)問題,成為采胳膊小尺寸器件進(jìn)行設(shè)計(jì)的必須考慮的主要問題。
在嵌入式微控制器內(nèi)部,對(duì)于內(nèi)部產(chǎn)生的電磁發(fā)射,采用軟件措施的效果并不明顯。因?yàn)榘l(fā)射主要是由CPU中的內(nèi)部時(shí)鐘和噪聲引起,而且高速開關(guān)電流是由微控制器中的多種不同的門所形成。如果芯片版圖設(shè)計(jì)時(shí)沒有考慮電磁兼容性,那么外部的PCB(印制電路板)將會(huì)大大增強(qiáng)那些不必要的噪聲信號(hào)。所以在很多設(shè)計(jì)中,采用軟件很難消除這種固有的電子發(fā)射影響。
但是,在控制器應(yīng)用中,卻可采用軟件的方式來抑制外來干擾。本文給出了一些常用設(shè)計(jì)技巧和應(yīng)用。
一、內(nèi)嵌抗干擾軟件
在很多的應(yīng)用中,用簡(jiǎn)單的抗干擾設(shè)計(jì),就可以將一個(gè)微控制器的干擾抑制效果大大提高。這種抗干擾設(shè)計(jì)的魅力就在于實(shí)現(xiàn)該設(shè)計(jì)的費(fèi)用較低,還可以節(jié)省PCB板上硬件成本。抗干擾設(shè)計(jì)的常用技巧如下:
1.刷新端口引腳(Refreshing port pins):抗干擾軟件最簡(jiǎn)單的一個(gè)例子就是可以不斷地更新I/O端口和一些重要的寄存器。在大多數(shù)微控制器的應(yīng)用中,軟件將會(huì)執(zhí)行一個(gè)有規(guī)律的主循環(huán)。由于微控制器的I/O端口通常靠近連接焊點(diǎn)(bond pads),而這些焊點(diǎn)通常是位于芯片的邊沿。當(dāng)一個(gè)確定振幅的噪聲施加到微控制器時(shí),噪聲將會(huì)從芯片的邊沿向內(nèi)傳入硅晶體中。這意味著芯片邊沿的邏輯電路最容易被外部噪聲源破壞,輸入/輸出電路就屬于這種類型。因此有規(guī)律的更新數(shù)據(jù)寄存器和數(shù)據(jù)說明寄存器,就可以把這種故障的威脅降低。
2.檢測(cè)輸入腳(Polling inputs):另一個(gè)方法就是采用多次讀輸入腳數(shù)據(jù),且取平均值作為該腳的正確數(shù)據(jù)方式。其典型的應(yīng)用就是用軟件每隔10ms讀一次鍵盤,以保證真實(shí)的鍵入發(fā)生。這種表決式做法被稱作反彈跳保護(hù)。作為一種高頻率檢測(cè)某個(gè)端腳的Motorola HC05代碼的實(shí)例如圖1所示。
圖1的程序可以很迅速地連續(xù)讀出該端口,如果有3次讀出結(jié)果相同,那么CPU將以進(jìn)位標(biāo)志的狀態(tài)作為讀結(jié)果返回(這是HC05 CPU的BRSET和BRCLR的一個(gè)固有特征)。這個(gè)程序的問題在于當(dāng)輸入引腳是處于很嘈雜的環(huán)境時(shí),CPU將會(huì)按這個(gè)程序持續(xù)很長(zhǎng)時(shí)間,這在那些對(duì)時(shí)間要求較苛刻的應(yīng)用中是不實(shí)際的。更好的一個(gè)程序就是多次讀出輸入引腳,并使寄存器遞增,如果結(jié)果小于某個(gè)數(shù),那么就將它當(dāng)作0;如果大于某個(gè)數(shù),就作為1。這個(gè)程序通常會(huì)在有限時(shí)間內(nèi)退出,以保證不會(huì)妨礙到該應(yīng)用中其他程序的運(yùn)行。
3.標(biāo)記通過(Token Passing):在一些重要的處理中,標(biāo)記通過用以確認(rèn)任務(wù)已進(jìn)入受控方式而未失去控制。標(biāo)記通過可以利用RAM里未用到的空間來完成。在應(yīng)用的一段特定時(shí)間間隔里,該軟件將通過許多未用的RAM空間循環(huán)一個(gè)1.在任何一個(gè)重要任務(wù)被執(zhí)行之前。這種循環(huán)檢查將會(huì)得出結(jié)果。結(jié)果檢測(cè)通過,該任務(wù)將會(huì)被執(zhí)行。如果以沒通過,則說明微控制器是從未指定的跳轉(zhuǎn)進(jìn)入該任務(wù),那么就跳轉(zhuǎn)去執(zhí)行一個(gè)初始化程序。見圖2。
4.未使用的內(nèi)存(Unused Memory):在大多數(shù)的應(yīng)用中,程序的存儲(chǔ)器總有一些區(qū)域未使用。如果在一些事件中,程序計(jì)數(shù)器(Program Counter)被破壞且跳轉(zhuǎn)進(jìn)入未用的存儲(chǔ)空間,那么有些應(yīng)該執(zhí)行的控制就會(huì)起作用。例如,在16K字節(jié)的程序空間里存在未使用的500Byte的子塊。如果我們用"SWI"指令填滿這些未用空間,那么任何指向未用地區(qū)的無效激勵(lì)將會(huì)導(dǎo)致微控制器去讀取SWI矢量,而該向量是被編程跳轉(zhuǎn)到程序中的已知的起始位置。同樣,在微管制器的應(yīng)用中,SWI也可用其它函數(shù)來替代,以填充那些未用的區(qū)域,其實(shí)例如圖3所示。
請(qǐng)注意:記錄這些未用區(qū)域已被9D指令填滿,且由一個(gè)有條件的跳變(Jump)跳到已知區(qū)域(known-place)。當(dāng)這個(gè)微控制器運(yùn)行至該已知區(qū)域時(shí),它將會(huì)被強(qiáng)制跳轉(zhuǎn)去執(zhí)行初始化程序。
二、看門狗電路
一個(gè)看門狗電路通常被描述成一塊在有規(guī)律的時(shí)間間隔中進(jìn)行更新的硬件,該更新必須由微控制器或是使微控制器重新啟動(dòng)的電路來完成。一個(gè)外部的看
微控制器越來越多地用于各種電子領(lǐng)域,例如自動(dòng)化、工業(yè)控制中。隨著金屬氧化物半導(dǎo)體的硅晶體管幾何尺寸的不斷縮小,系統(tǒng)設(shè)計(jì)中的電磁兼容性(EMC)問題,成為采胳膊小尺寸器件進(jìn)行設(shè)計(jì)的必須考慮的主要問題。
在嵌入式微控制器內(nèi)部,對(duì)于內(nèi)部產(chǎn)生的電磁發(fā)射,采用軟件措施的效果并不明顯。因?yàn)榘l(fā)射主要是由CPU中的內(nèi)部時(shí)鐘和噪聲引起,而且高速開關(guān)電流是由微控制器中的多種不同的門所形成。如果芯片版圖設(shè)計(jì)時(shí)沒有考慮電磁兼容性,那么外部的PCB(印制電路板)將會(huì)大大增強(qiáng)那些不必要的噪聲信號(hào)。所以在很多設(shè)計(jì)中,采用軟件很難消除這種固有的電子發(fā)射影響。
但是,在控制器應(yīng)用中,卻可采用軟件的方式來抑制外來干擾。本文給出了一些常用設(shè)計(jì)技巧和應(yīng)用。
一、內(nèi)嵌抗干擾軟件
在很多的應(yīng)用中,用簡(jiǎn)單的抗干擾設(shè)計(jì),就可以將一個(gè)微控制器的干擾抑制效果大大提高。這種抗干擾設(shè)計(jì)的魅力就在于實(shí)現(xiàn)該設(shè)計(jì)的費(fèi)用較低,還可以節(jié)省PCB板上硬件成本?垢蓴_設(shè)計(jì)的常用技巧如下:
1.刷新端口引腳(Refreshing port pins):抗干擾軟件最簡(jiǎn)單的一個(gè)例子就是可以不斷地更新I/O端口和一些重要的寄存器。在大多數(shù)微控制器的應(yīng)用中,軟件將會(huì)執(zhí)行一個(gè)有規(guī)律的主循環(huán)。由于微控制器的I/O端口通?拷B接焊點(diǎn)(bond pads),而這些焊點(diǎn)通常是位于芯片的邊沿。當(dāng)一個(gè)確定振幅的噪聲施加到微控制器時(shí),噪聲將會(huì)從芯片的邊沿向內(nèi)傳入硅晶體中。這意味著芯片邊沿的邏輯電路最容易被外部噪聲源破壞,輸入/輸出電路就屬于這種類型。因此有規(guī)律的更新數(shù)據(jù)寄存器和數(shù)據(jù)說明寄存器,就可以把這種故障的威脅降低。
2.檢測(cè)輸入腳(Polling inputs):另一個(gè)方法就是采用多次讀輸入腳數(shù)據(jù),且取平均值作為該腳的正確數(shù)據(jù)方式。其典型的應(yīng)用就是用軟件每隔10ms讀一次鍵盤,以保證真實(shí)的鍵入發(fā)生。這種表決式做法被稱作反彈跳保護(hù)。作為一種高頻率檢測(cè)某個(gè)端腳的Motorola HC05代碼的實(shí)例如圖1所示。
圖1的程序可以很迅速地連續(xù)讀出該端口,如果有3次讀出結(jié)果相同,那么CPU將以進(jìn)位標(biāo)志的狀態(tài)作為讀結(jié)果返回(這是HC05 CPU的BRSET和BRCLR的一個(gè)固有特征)。這個(gè)程序的問題在于當(dāng)輸入引腳是處于很嘈雜的環(huán)境時(shí),CPU將會(huì)按這個(gè)程序持續(xù)很長(zhǎng)時(shí)間,這在那些對(duì)時(shí)間要求較苛刻的應(yīng)用中是不實(shí)際的。更好的一個(gè)程序就是多次讀出輸入引腳,并使寄存器遞增,如果結(jié)果小于某個(gè)數(shù),那么就將它當(dāng)作0;如果大于某個(gè)數(shù),就作為1。這個(gè)程序通常會(huì)在有限時(shí)間內(nèi)退出,以保證不會(huì)妨礙到該應(yīng)用中其他程序的運(yùn)行。
3.標(biāo)記通過(Token Passing):在一些重要的處理中,標(biāo)記通過用以確認(rèn)任務(wù)已進(jìn)入受控方式而未失去控制。標(biāo)記通過可以利用RAM里未用到的空間來完成。在應(yīng)用的一段特定時(shí)間間隔里,該軟件將通過許多未用的RAM空間循環(huán)一個(gè)1.在任何一個(gè)重要任務(wù)被執(zhí)行之前。這種循環(huán)檢查將會(huì)得出結(jié)果。結(jié)果檢測(cè)通過,該任務(wù)將會(huì)被執(zhí)行。如果以沒通過,則說明微控制器是從未指定的跳轉(zhuǎn)進(jìn)入該任務(wù),那么就跳轉(zhuǎn)去執(zhí)行一個(gè)初始化程序。見圖2。
4.未使用的內(nèi)存(Unused Memory):在大多數(shù)的應(yīng)用中,程序的存儲(chǔ)器總有一些區(qū)域未使用。如果在一些事件中,程序計(jì)數(shù)器(Program Counter)被破壞且跳轉(zhuǎn)進(jìn)入未用的存儲(chǔ)空間,那么有些應(yīng)該執(zhí)行的控制就會(huì)起作用。例如,在16K字節(jié)的程序空間里存在未使用的500Byte的子塊。如果我們用"SWI"指令填滿這些未用空間,那么任何指向未用地區(qū)的無效激勵(lì)將會(huì)導(dǎo)致微控制器去讀取SWI矢量,而該向量是被編程跳轉(zhuǎn)到程序中的已知的起始位置。同樣,在微管制器的應(yīng)用中,SWI也可用其它函數(shù)來替代,以填充那些未用的區(qū)域,其實(shí)例如圖3所示。
請(qǐng)注意:記錄這些未用區(qū)域已被9D指令填滿,且由一個(gè)有條件的跳變(Jump)跳到已知區(qū)域(known-place)。當(dāng)這個(gè)微控制器運(yùn)行至該已知區(qū)域時(shí),它將會(huì)被強(qiáng)制跳轉(zhuǎn)去執(zhí)行初始化程序。
二、看門狗電路
一個(gè)看門狗電路通常被描述成一塊在有規(guī)律的時(shí)間間隔中進(jìn)行更新的硬件,該更新必須由微控制器或是使微控制器重新啟動(dòng)的電路來完成。一個(gè)外部的看
熱門點(diǎn)擊
- 在PC上運(yùn)行的實(shí)時(shí)操作系統(tǒng)LabVIEW R
- Keil C動(dòng)態(tài)內(nèi)存管理機(jī)制分析及改進(jìn)
- ARM內(nèi)核的中斷技術(shù)
- 交流異步電動(dòng)機(jī)矢量控制系統(tǒng)的嵌入式設(shè)計(jì)
- 視頻采集卡Windows95驅(qū)動(dòng)程序設(shè)計(jì)
- Microwindows在遠(yuǎn)程紅外抄表器中的
- 8051單片機(jī)在線升級(jí)軟件的方法
- 采用8位單片機(jī)驅(qū)動(dòng)PCI總線網(wǎng)卡的設(shè)計(jì)方案
- 基于ARM和FPGA的多功能車輛總線嵌入式系
- 基于I2C總線的MSP430單片機(jī)應(yīng)用系統(tǒng)設(shè)
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究