新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機系統中的抗干擾技術

        單片機系統中的抗干擾技術

        作者: 時間:2012-02-20 來源:網絡 收藏

        (3)空間隔離

        控制回路與其他大功率回路之間能夠分開放置的,盡量不要放置在同一空間中,如果二者必須在同一空間中的,要盡量加大二者的電氣距離,盡可能減小空間的電磁感應耦合和輻射耦合,或者將控制電路放在由金屬網或金屬盒構成的屏蔽體內。 此外,還有其他一些輔助性措施,如:晶振的外殼接地、中央處理器的電源端及各口線附近對地加去耦電容等。

        3.2 軟件方法

        除了硬件途徑外,采用相應的軟件抑制及補償措施,也可以起到有效的抗干擾作用。

        (1)各部分對干擾信號的反應

        ①中央處理器CPU

        CPU屬于高速數字器件,易受干擾的有運算器、控制器和控制寄存器。當電磁干擾信號竄入時,CPU將錯誤地執行指令,引起誤動作或者錯誤的結果;控制寄存器中的信息如果被噪聲修改,將導致初始化錯誤、尋址失敗乃至癱瘓。試驗表明,干擾信號大多數由總線導入CPU內;其中與外界聯系最頻繁、因而最容易受干擾的是程序指針PC,這種干擾往往引發致命錯誤,屬于重點防范和重點糾錯的對象。

        ②特殊功能寄存器SFR

        SFR包括各種 I/O端口的寄存器、各種片內部件的工作方式寄存器,以及堆棧指針、數據指針等等,其特點是傳遞數據的速度高,能夠與CPU的運行密切配合。如果某個 SFR被干擾信號改寫,則意味著運行的結果異常,輕者改變單片機內各部件的操作控制,重則導致整個的輸出紊亂,引發故障或安全事故。因此,對于與程序有關的內容必須提供及時有效的保護。

        (2)軟件補償措施

        對于已經侵入微處理機的噪聲,必須采取能夠維持功能的對應措施,以免出現意外停機或意外啟動,甚至引起意外事故。對CPU的誤動作和各種存儲器內容的誤修改,在應用軟件中插入相應的程序模塊,進行主動補償是一種簡便而可靠的方法。

        ①主動初始化

        這里的“初始化”泛指在各段程序中,對單片機及片外擴展器件的各種功能、端口或者方式、狀態等采取的永久性的或者臨時的設置。我們不僅要保證上電或復位后軟件能夠正確的實現各種級別的初始化,而且在程序中每次使用某種功能前,都要再一次對相應的控制寄存器設定動作模式。實踐證明,這一措施可以大大提高系統對于入侵干擾的自恢復性能。

        ②重復執行

        程序指令在執行的過程中或者保持之后,都有可能被噪聲修改,而導致控制失效乃至引發事故,為此應當盡量增加重要指令的執行次數以糾正干擾造成的錯誤。對于頻率較低的傳感器數據,建議在有效時間內多次采集并比較;對于控制外部設備的指令,則需要多次重復執行以確保有關信號的可靠性。為達此目的,可把重要的指令設計成定時掃描模塊,使其在整個程序的循環運行過程中反復執行。如此,即使干擾信號改寫了指令內容,也能在受控設備的反應時間內自動恢復正常。

        ③重要數據的保護和恢復

        編寫專門的數據保護子程序,是提高工控微機系統可靠性的有效途徑。在編寫程序的過程中,對于由指令改變結果性質的數據,可以考慮在每次改變后都盡可能地保護起來,以便在需要時能夠恢復正確值。若數據的保護量較大,建議擴展非易失性的SRAM作為片外數據存儲器,這種新型芯片具有很高的抗干擾性能,其缺點是目前的價位較高。

        (3)片內WDT控制

        “看門狗”(WDT)已經成為工控微機必不可少的成員之一,他可以防止程序“跑飛”或者出現“死循環”。有的單片機如PIC系列單片機片內就帶有 WDT監視定時器,通過軟件,定時清WDT監視定時器的值,當出現“死循環”或程序“跑飛”現象時,WDT監視定時器內的值計滿溢出,從而強迫程序復位,從頭開始。不帶片內WDT監視定時器的單片機,也可以利用微處理機內部閑置的定時/計數器,配合以適當的程序就可以方便地構成WDT。

        參考文獻
        [1] 何立民.單片機應用系統抗干擾[M].北京:北京航空航天大學出版社,2000.
        [2] 楊華舒,褚福濤.單片計算機系統抗干擾的軟件途徑[J].電子應用,2001(3):20-22.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贵溪市| 巢湖市| 类乌齐县| 普定县| 泾川县| 台中市| 忻州市| 集贤县| 历史| 深圳市| 璧山县| 乾安县| 竹北市| 资中县| 松江区| 阜康市| 中牟县| 南木林县| 蒙阴县| 兴和县| 仁怀市| 大城县| 荆门市| 聂荣县| 邳州市| 汉源县| 汉中市| 苏尼特左旗| 开化县| 池州市| 太康县| 平武县| 邛崃市| 嘉峪关市| 台南县| 武川县| 沿河| 鹤山市| 太和县| 康保县| 中牟县|