<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 微控制器的抗干擾軟件編程方法

微控制器的抗干擾軟件編程方法

作者: 時(shí)間:2012-03-12 來(lái)源:網(wǎng)絡(luò ) 收藏

越來(lái)越多地用于各種電子領(lǐng)域,例如自動(dòng)化、工業(yè)控制中。隨著(zhù)金屬氧化物半導體的硅晶體管幾何尺寸的不斷縮小,系統設計中的電磁兼容性(EMC)問(wèn)題,成為采胳膊小尺寸器件進(jìn)行設計的必須考慮的主要問(wèn)題。

本文引用地址:http://dyxdggzs.com/article/171914.htm

在嵌入式微內部,對于內部產(chǎn)生的電磁發(fā)射,采用軟件措施的效果并不明顯。因為發(fā)射主要是由CPU中的內部時(shí)鐘和噪聲引起,而且高速開(kāi)關(guān)電流是由微中的多種不同的門(mén)所形成。如果芯片版圖設計時(shí)沒(méi)有考慮電磁兼容性,那么外部的PCB(印制電路板)將會(huì )大大增強那些不必要的噪聲信號。所以在很多設計中,采用軟件很難消除這種固有的電子發(fā)射影響。

10.gif

但是,在控制器應用中,卻可采用軟件的方式來(lái)抑制外來(lái)干擾。本文給出了一些常用設計技巧和應用。

一、內嵌軟件

在很多的應用中,用簡(jiǎn)單的設計,就可以將一個(gè)微控制器的干擾抑制效果大大提高。這種設計的魅力就在于實(shí)現該設計的費用較低,還可以節省PCB板上硬件成本??垢蓴_設計的常用技巧如下:

1.刷新端口引腳(Refreshing port pins):抗干擾軟件最簡(jiǎn)單的一個(gè)例子就是可以不斷地更新I/O端口和一些重要的寄存器。在大多數微控制器的應用中,軟件將會(huì )執行一個(gè)有規律的主循環(huán)。由于微控制器的I/O端口通??拷B接焊點(diǎn)(bond pads),而這些焊點(diǎn)通常是位于芯片的邊沿。當一個(gè)確定振幅的噪聲施加到微控制器時(shí),噪聲將會(huì )從芯片的邊沿向內傳入硅晶體中。這意味著(zhù)芯片邊沿的邏輯電路最容易被外部噪聲源破壞,輸入/輸出電路就屬于這種類(lèi)型。因此有規律的更新數據寄存器和數據說(shuō)明寄存器,就可以把這種故障的威脅降低。

2.檢測輸入腳(Polling inputs):另一個(gè)就是采用多次讀輸入腳數據,且取平均值作為該腳的正確數據方式。其典型的應用就是用軟件每隔10ms讀一次鍵盤(pán),以保證真實(shí)的鍵入發(fā)生。這種表決式做法被稱(chēng)作反彈跳保護。作為一種高頻率檢測某個(gè)端腳的Motorola HC05代碼的實(shí)例如圖1所示。

11.gif

圖1的程序可以很迅速地連續讀出該端口,如果有3次讀出結果相同,那么CPU將以進(jìn)位標志的狀態(tài)作為讀結果返回(這是HC05 CPU的BRSET和BRCLR的一個(gè)固有特征)。這個(gè)程序的問(wèn)題在于當輸入引腳是處于很嘈雜的環(huán)境時(shí),CPU將會(huì )按這個(gè)程序持續很長(cháng)時(shí)間,這在那些對時(shí)間要求較苛刻的應用中是不實(shí)際的。更好的一個(gè)程序就是多次讀出輸入引腳,并使寄存器遞增,如果結果小于某個(gè)數,那么就將它當作0;如果大于某個(gè)數,就作為1。這個(gè)程序通常會(huì )在有限時(shí)間內退出,以保證不會(huì )妨礙到該應用中其他程序的運行。

3.標記通過(guò)(Token Passing):在一些重要的處理中,標記通過(guò)用以確認任務(wù)已進(jìn)入受控方式而未失去控制。標記通過(guò)可以利用RAM里未用到的空間來(lái)完成。在應用的一段特定時(shí)間間隔里,該軟件將通過(guò)許多未用的RAM空間循環(huán)一個(gè)1.在任何一個(gè)重要任務(wù)被執行之前。這種循環(huán)檢查將會(huì )得出結果。結果檢測通過(guò),該任務(wù)將會(huì )被執行。如果以沒(méi)通過(guò),則說(shuō)明微控制器是從未指定的跳轉進(jìn)入該任務(wù),那么就跳轉去執行一個(gè)初始化程序。見(jiàn)圖2。

4.未使用的內存(Unused Memory):在大多數的應用中,程序的存儲器總有一些區域未使用。如果在一些事件中,程序計數器(Program Counter)被破壞且跳轉進(jìn)入未用的存儲空間,那么有些應該執行的控制就會(huì )起作用。例如,在16K字節的程序空間里存在未使用的500Byte的子塊。如果我們用SWI指令填滿(mǎn)這些未用空間,那么任何指向未用地區的無(wú)效激勵將會(huì )導致微控制器去讀取SWI矢量,而該向量是被編程跳轉到程序中的已知的起始位置。同樣,在微管制器的應用中,SWI也可用其它函數來(lái)替代,以填充那些未用的區域,其實(shí)例如圖3所示。

12.gif

請注意:記錄這些未用區域已被9D指令填滿(mǎn),且由一個(gè)有條件的跳變(Jump)跳到已知區域(known-place)。當這個(gè)微控制器運行至該已知區域時(shí),它將會(huì )被強制跳轉去執行初始化程序。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 方法 軟件編程 抗干擾 控制器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>