新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機應(yīng)用系統(tǒng)的抗干擾解決方案

        單片機應(yīng)用系統(tǒng)的抗干擾解決方案

        作者: 時間:2012-03-26 來源:網(wǎng)絡(luò) 收藏

        3.2 軟件陷阱技術(shù)

        軟件冗余技術(shù)適用于干擾后PC指向不正確的程序區(qū),當(dāng)跑飛程序進入非程序區(qū)(如EPROM未使用的空間)或表格區(qū)時,使用冗余指令的措施已不再適用,可采用軟件陷阱的辦法攔截跑飛程序,將其迅速引向一個指定的位置,執(zhí)行一段對程序運行出錯的處理程序。軟件陷阱可采用以下形式:
        NOP
        NOP
        LJMP ERROR ;ERROR為指定地址,安排有出錯處理程序

        軟件陷阱可安排在下面幾個區(qū)域。

        ①未使用的中斷向量區(qū)。

        當(dāng)干擾使未使用的中斷開放,并激活這些中斷時,就會引起系統(tǒng)程序的混亂,如果在這些地方設(shè)置陷阱,就能及時捕捉到錯誤中斷。

        ②未使用的EPROM區(qū)。

        假設(shè)使用了一片2764,但程序并沒有用完這個2764區(qū)域,這些非程序區(qū)可以用0000020000數(shù)據(jù)填滿,020000是指令LJMP 0000H的機器碼,當(dāng)跑飛程序進入此區(qū)后,便會迅速自動進入正確軌道。

        ③數(shù)據(jù)表格區(qū)。

        由于表格中內(nèi)容和檢索值有一一對應(yīng)關(guān)系,在表格中安排陷阱將會破壞其連續(xù)性和對應(yīng)關(guān)系,應(yīng)在表格區(qū)的尾部設(shè)置軟件陷阱。

        ④程序區(qū)。

        前面已介紹,跑飛的程序在用戶程序內(nèi)部跳轉(zhuǎn)時可用指令冗余技術(shù)加以解決,也可以設(shè)置軟件陷阱,更有效地抑制程序跑飛。程序設(shè)計常采用模塊化設(shè)計,模塊化的程序是由一序列執(zhí)行指令構(gòu)成的,一般不能在這些指令串中間任意安排陷阱,否則正常執(zhí)行的程序也可能被抓走,可以將陷阱指令分散放置在各模塊之間的空余單元中。正常程序中不執(zhí)行這些陷阱指令,但當(dāng)程序跑飛一旦進入陷阱區(qū),馬上將程序拉回正確軌道。陷阱的多少視用戶程序的大小而定,一般每1K字節(jié)有幾個陷阱就夠了。

        ⑤非EPROM芯片空間

        MCS-51有64K程序系統(tǒng)空間,一般除了EPROM芯片占用的地址外,還剩余大片未編程的EPROM空間。當(dāng)PC跑飛進入這些空間時,讀入數(shù)據(jù)為0FFH,對51系列而言,相當(dāng)于指令MOV R7,A,將修改R7的內(nèi)容。

        當(dāng)CPU讀程序存儲器時,會產(chǎn)生一個PSEN的低電平信號,可利用該信號和EPROM的地址譯碼信號產(chǎn)生選通信號,引起一個空閑的中斷,在中斷服務(wù)程序中設(shè)置軟件陷阱,將跑飛程序拉入正規(guī)。圖2是一個實例。

        28.gif

        3.3 看門狗技術(shù)

        PC受到干擾引起程序失控,有可能使程序進入死循環(huán),指令冗余和陷阱技術(shù)都不能解決這個問題,通常采用看門狗技術(shù)(Watchdog)。該技術(shù)就是不斷監(jiān)視程序循環(huán)運行的時間,若發(fā)現(xiàn)時間超過已知的循環(huán)設(shè)定時間,即認為進入死循環(huán),然后強迫程序返回到0000H入口地址,在0000H安排出錯處理程序,使系統(tǒng)納入正規(guī)。看門狗技術(shù)既可由硬件實現(xiàn),也可以由軟件來實現(xiàn),二者還可以結(jié)合使用。



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 邻水| 藁城市| 库伦旗| 保德县| 板桥市| 曲麻莱县| 福鼎市| 隆尧县| 冷水江市| 教育| 饶平县| 定西市| 额尔古纳市| 筠连县| 卓尼县| 平泉县| 沙河市| 颍上县| 汤阴县| 双峰县| 云梦县| 云龙县| 麟游县| 大新县| 桂东县| 十堰市| 安阳市| 兴城市| 乌苏市| 蓬溪县| 芜湖县| 应用必备| 巴青县| 清流县| 阿克陶县| 瑞金市| 阳江市| 海淀区| 龙井市| 台北市| 南投市|