針對(duì)單片機(jī)的干擾分析MCU的改進(jìn)
從表1可見,一個(gè)bit的變化完全改變了指令的意義,程序流或數(shù)據(jù)產(chǎn)生不可預(yù)測的變化。例如,表中的跳轉(zhuǎn)部分(bit 0, 2或5發(fā)生變化)可能不轉(zhuǎn)入死循環(huán),不引起Watchdog動(dòng)作,也有可能跳到非正常指令處,直至死循環(huán)。表中非跳轉(zhuǎn)指令則有可能改變累加器(bit 0, 1, 3, 4,6或7發(fā)生變化),數(shù)據(jù)RAM(bit 1,3, 6或7發(fā)生變化)或狀態(tài)寄存器(bit 0, 1, 3, 4,6或7發(fā)生變化)。如果錯(cuò)誤發(fā)生在指令的第2或第3字節(jié),數(shù)據(jù)的源或目的地址就錯(cuò)了。因此,即使Watchdog沒動(dòng)作,也不表示程序運(yùn)行正常。對(duì)8051其他指令作分析可得到類似的結(jié)果。由此可見,Watchdog至多保證系統(tǒng)不死機(jī),卻有可能掩蓋了數(shù)據(jù)的錯(cuò)誤。
F0設(shè)計(jì)中,在關(guān)鍵點(diǎn)大量采用了“MOV dir1,tmp”,“MOV tmp, dir2”的形式將數(shù)據(jù)從dir1送到dir2,而不采用“MOV A,@R1”類指令,以減小對(duì)原始數(shù)據(jù)破壞的可能性,從而為程序復(fù)執(zhí)創(chuàng)造條件。例如在備份數(shù)據(jù)Treh到Tbkh時(shí),先將Treh送tmp1,然后將數(shù)據(jù)由tmp1送到備份Tbkh,再校驗(yàn)Tbkh與Treh是否一樣。若不一樣,就重作備份。采用的部分程序如下:
MOVtmp1, Tbkh85 53 19
MOVA, tmp1E5 19
XRLA, Treh65 4C
JNZtbkp70 F1
其中“MOV A, tmp1”仍有破壞tmp1的可能性,但tmp1是Treh的拷貝,壞了可重做;“XRL A, Treh”有可能破壞Treh,但已無法作其他選擇。
在硬件抗干擾方面,有許多專用的電源監(jiān)控芯片,如TL7705等,但是它們只適合在較慢的電源擾動(dòng)下使用。對(duì)于直流電源的跌落干擾,MCU根本來不及作現(xiàn)場的保護(hù)工作,所以它不是解決快速干擾問題的辦法。
在F0中使用的辦法也不盡完善,一般單片機(jī)線路中還有很多外圍線路,例如F0中的光耦,3個(gè)光耦同時(shí)導(dǎo)通時(shí)要消耗約50 mA的電流,它們形成的動(dòng)態(tài)電阻很小,發(fā)生電源跌落時(shí),并聯(lián)于MCU的解耦電容對(duì)此電阻放電,無法保證MCU正常工作的額定電壓。如在MCU電源中串接高頻二極管,就會(huì)引起額外的電源消耗,在低功耗的應(yīng)用中也會(huì)形成新的缺點(diǎn)。有些功能強(qiáng)大的MCU本身功耗就大,容許的電源變化范圍小,能否依靠解耦電容對(duì)抗電源跌落還需要檢驗(yàn)。綜上所述,軟件解決辦法不徹底,硬件解決辦法也有很多缺點(diǎn)與限制。
3 MCU要增加的功能
由于干擾而使指令出錯(cuò)的問題不是Watchdog能解決的,特別是造成源數(shù)據(jù)錯(cuò)時(shí),程序復(fù)執(zhí)也不能糾正錯(cuò)誤的結(jié)果。程序設(shè)計(jì)者要在現(xiàn)成的指令體系中找到對(duì)源數(shù)據(jù)危害性概率最小的指令不容易。即使找到,也不能保證指令在有多bit跳變時(shí)源數(shù)據(jù)不錯(cuò)。另外,有些指令錯(cuò)誤也可能破壞其他處的數(shù)據(jù)。利用破壞數(shù)據(jù)概率最小的指令設(shè)計(jì)程序也不是好辦法,它既耗ROM空間,又費(fèi)運(yùn)行時(shí)間。
增大指令的Hamming距離可以改善這一情況。例如,給指令增加一到數(shù)位校驗(yàn)位,一旦指令通不過校驗(yàn),就不執(zhí)行,并重新取指。這樣,問題就有可能在產(chǎn)生后果前解決。就目前MCU的設(shè)計(jì)與生產(chǎn)水平而言,在技術(shù)與成本上這種增加不會(huì)有很大困難。雖然這一辦法在添加的校驗(yàn)位有限時(shí)仍會(huì)有一定出錯(cuò)概率,但這種概率可以小到能接受的程度。
為了更為可靠,作校驗(yàn)的線路可有某種冗余。連續(xù)重取指可能反映有其他故障,應(yīng)通過某種方式通知應(yīng)用層。為了不打擾程序設(shè)計(jì)者,這些指令的添加位應(yīng)該在寫入ROM時(shí)自動(dòng)生成,這樣就不會(huì)產(chǎn)生與現(xiàn)有產(chǎn)品的兼容性問題。
在早期的MCU應(yīng)用中,Watchdog是外置的,后來都集成到MCU里面去了。如果實(shí)現(xiàn)上述功能,MCU的抗干擾能力會(huì)更強(qiáng),Watchdog可能就不需要了。軟件的可靠性分析就可以將程序走飛和數(shù)據(jù)的完整性問題分割出來加以處理,軟件部分更專注于邏輯分析,意義深遠(yuǎn)。
電接點(diǎn)壓力表相關(guān)文章:電接點(diǎn)壓力表原理
評(píng)論