單片機系統(tǒng)的故障重現(xiàn)設計及實現(xiàn)
串口SIO效應
串口SIO效應實驗主要是看串口通訊是否出錯。要觀察到這種故障現(xiàn)象,就必須讓單片機運行串口通訊程序。由于51型單片機只有一個串口,而要使其進行通訊,最少需要兩個串口,這就至少需要有兩套單片機系統(tǒng),這將使設備和實驗復雜化。在認真研究串口工作原理后,終于找到了只用一個單片機模擬串口通訊的方案:把CPU的TXD和RXD短接,將TXD端發(fā)出的數(shù)據(jù)直接送入RXD進行接收,使單片機工作于自發(fā)自收狀態(tài),通過檢查接收與發(fā)送的數(shù)據(jù)是否相等判斷通訊是否正常。當然,仍需采用循環(huán)等待技術,使通訊循環(huán)進行,當運行正常時,在P1.1口產(chǎn)生脈沖信號,使紅色LED亮。如果通汛出現(xiàn)異常,數(shù)碼管將顯示出錯信息,并將LED熄滅。
定時器CTC效應
為使CTC工作失誤故障重現(xiàn),可在主程序中加入允許CTC中斷的指令,使程序運行時,CTC一直在工作,等待電磁脈沖來干擾。 定時器采用CPU內(nèi)部定時器0,工作方式為方式1。編寫CTC0的中斷子程序,與軟件計數(shù)器R0配合,在P1.1口產(chǎn)生一個方波信號,驅(qū)動LED閃亮。主程序等待K按下指令,等待期間進行干擾實驗。如果LED閃亮異常,表明CTC工作不正常。以下為定時器0的中斷子程序:
實驗結果
在設計該單片機系統(tǒng)以前,曾用一單片機最小應用系統(tǒng)做效應實驗,結果只能觀察到死機現(xiàn)象。而將該系統(tǒng)用于效應實驗后,觀察到了硬件損壞、A/D轉(zhuǎn)換誤差增大、內(nèi)存數(shù)據(jù)改變、程序跳轉(zhuǎn)、死機、CTC工作失誤、串口通訊出錯和程序存儲器E2PROM內(nèi)容被改寫等多種故障現(xiàn)象。通過大量、反復地實驗,測出了各種故障出現(xiàn)的閾值,分析了故障出現(xiàn)的原因。
圖4是示波器記錄下的串口RXD引腳上的正常信號和通訊出錯時的干擾波形。圖4表明,RXD上有很強的干擾信號,而且低電平被展寬了3~4倍。根據(jù)實驗數(shù)據(jù)及串口工作原理,得出申行通訊出錯的原因有兩個:1.干擾使SIO電路工作失誤,如串口控制寄存器SCON內(nèi)容改變,發(fā)送或接收SBUF內(nèi)容改變等,這些都可能引起接收數(shù)據(jù)和發(fā)送數(shù)據(jù)不符,從而使通訊出錯;2.RXD線上的干擾信號使串行數(shù)據(jù)發(fā)生混亂,從而使接收數(shù)據(jù)出錯。
評論