Re: 請問大家都是用什麼方法防止CPU程式跑掉死當機
|
||||
---|---|---|---|---|
高級會員
|
恩... master 前輩已經說出答案了...
之前有一個project 是再多一個保障 main mcu 會送pwm 給slave mcu.. 如果pwm 終止,則判定 main mcu 死機 slave mcu 送reset 訊號....
發表於: 2006/7/19 17:05
|
|||
|
Re: 請問大家都是用什麼方法防止CPU程式跑掉死當機
|
||||
---|---|---|---|---|
資深會員
|
WDT(Watch Dog Timer)
-- 好啦!我知道這不是什麼新鮮事了...
發表於: 2006/7/19 14:24
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
請問大家都是用什麼方法防止CPU程式跑掉死當機
|
||||
---|---|---|---|---|
新會員
|
請問大家對於運轉中的單晶片,因干擾而產生死當機,
從硬體上如何偵測到,讓它重新開機 從軟體上如何偵測到,讓它重新開機 希望有經驗的朋友能夠提供一下意見 補充1:下面是從大陸網站找到的資料,有詳細介紹了幾個防止程式跑掉即再RESET的方法 提高單片機系統可靠性的設計方法 http://219.133.31.204:81/gate/big5/ww ... /20065/2716521514844.html 補充2: 這對岸的文章 單片機測控系統中的抗干擾技術 http://219.133.31.204:81/gate/big5/ww ... e/20067/620305622530.html 概述 干擾是造成單片機測控系統故障的主要原因之一。干擾對系統的影響輕則影響測量與控制精度,重則使工作系統完全失常。要消除干擾必須抓住形成干擾的三要素,即:干擾源、耦合通道和接收設備。 1干擾因素 在單片機測控系統中,主要存在空間輻射干擾、信號通道干擾、電源干擾和數字電路引起的干擾。 抗干擾就是針對干擾的產生性質、傳播途徑、侵入的位置和侵入的形式,採取適當的方法消除干擾源,抑制耦合通道,減弱電路對噪聲干擾的敏感性,通常需要採取“綜合治理”的措施。 (1) 合理選擇元器件 根據電器參數選擇合理器件以滿足系統性能要求。儘量選用集成度高、溫漂小、抗干擾性能好以及功耗小的元器件。 (2) 電源干擾的抑制 在交流電網進線端並接壓敏電阻,吸收浪涌電壓,也可防雷。高頻電感與電路電容組成的低通濾波器,可抑制電網引入的高頻噪聲。可採取模擬電路與數字電路的電源分開、電源浮空技術、使用電源隔離變壓器、隔離電源技術和電源濾波技術。在設計濾波器時必須注意讓諧振頻率遠小於干擾頻率。 (3) 電場、磁場干擾的抑制 採用由導電性能良好的金屬作遮罩盒,並接大地,則遮罩盒內電力線不會影響外部,同時外部的電力線也不會穿透遮罩盒進入內部,前者可抑制干擾源,後者可阻截干擾的傳輸途徑,起電場隔離的作用。磁路遮罩是採用高磁材料並以封閉式結構為妥,並接大地。 (4) 接地技術 單片機測控系統中的高頻電路應就近多點接地,低頻電路應一點接地;交流地和信號地不能共用;將系統的各個部分全部與大地浮置起來,但系統中的各機殼接地;對於數字地,印刷板中的地線應成網狀,而且其他佈線不要形成環路,特別是環繞外周的環路,印刷板中的條線不能長距離平行,不得已時,應加隔離電極和跨接線或遮罩;當A/D轉換器的模擬信號較弱時,可採用三線採樣雙層遮罩浮地技術提高抗共模干擾的能力;系統中的高增益放大電路最好用金屬罩遮罩起來。將遮罩體接到放大電路的公共端,將寄生電容短路防止反饋,避免放大器的震蕩;對於功率地,由於地線的電流較大,接地線的線徑應較粗,且與小信號地線分開,連直流地;對於小信號前置放大電路本身採用一點接地,不能一個電路多點接地,A/D前置放大電路一般浮空。記憶體放大電路的印刷電路板上一點入地,這類放大器的地線一定要遠離功率地和噪聲地。 (5) 通道干擾 a) 隔離技術 隔離分對模擬信號的隔離和對數字信號的隔離,對數字信號的隔離通常採用光電耦合器。因這種方法信號的傳遞是通過光信號實現的沒有直接的電信號連接,因此隔離了干擾的傳遞途徑,但這種方法隔離不斷輻射,感應干擾,且光電耦器件隔離傳導干擾的能力只有1kV左右。在具體電路設計時在A/D後和D/A前加光電耦合器,其電源與微機的電源必須獨立,地線必須分開,保證微機與現場僅有光的聯繫,切斷干擾通路也避免形成環流,對於強干擾或長線傳輸可採用兩次隔離,既可消除干擾,又能解決長線驅動和阻抗匹配等問題。對於模擬信號的隔離,通常採用隔離放大器,利用隔離放大器內的變壓器將信號磁耦合,隔斷通路的線路連接,從而切斷干擾源,也可採用光電耦合器實現模擬信號隔離,即由電壓-頻率轉換器VFC把模擬信號轉換成數字信號再通過光電耦合器隔離,而光電耦合器的輸出信號在由頻率-電壓轉換器FVC轉換成模擬藕擰T詼嗟閶不丶觳馕⒒低持腥舯徊廡藕瘧浠下潿嗦紡D飪乜裳∮糜篩苫杉痰縉骰蚴杉痰縉髯齔傻牡縟莘啥墑蕉嗦紡D飪乩辭卸媳徊廡藕龐胄藕磐ǖ賴牧擼傭鸕嬌垢扇拋饔謾S捎詬郝齔宕淇垢扇拍芰Ρ日齔邇浚裕話閽誄は嘰涫保捎酶郝齔宕洹6宜俁炔桓呤保謔級擻們鞅扔靡話愕腡TL效果要好。用OC門作雙向總線傳輸可以把輸出端連在一起,直接用來單向、雙向總線傳輸。 b) 通道中器件選擇與抗干擾 多路轉換器的輸入常常受到各種環境噪聲的污染,尤其易受到共模噪聲的干擾。在多路轉換器輸入端接入共模扼流圈,可抑制外部感測器引入的高頻共模噪聲。轉換器高頻採樣時產生的高頻噪聲,應在單片機與A/D之間採用光電耦合器隔離。在感測器工作環境複雜和惡劣時,應選擇測量放大器,使其在微弱信號系統中廣泛用作前置放大器。為了防止共模噪聲竄入系統可以採用隔離放大器。採樣保持器電路(S/H)在採樣與保持兩種狀態轉換時,會竄入干擾,為了減少誤差,印刷電路佈線時,使邏輯輸入端的走線與模擬輸入端盡可能距離遠些,或者將模擬輸入端用地線包圍起來,以降低線間寄生電容耦合和隔斷漏電通路。降低邏輯輸入信號的幅度也可以減少寄生耦合和漏電耦合干擾。配置總線驅動器可提高總線的負載能力,改善信號波形。當總線的負載接近負載總線的驅動能力時,可能會影響總線信號的邏輯電平,可通過連接某I/O線到數據線來改善總線的不平衡程度,提高系統的可靠性。在總線上適當安裝上拉電阻也可提高總線信號傳輸的可靠性。 (6) 佈線抗干擾設計 為防止長線傳輸中的竄擾,採用交差走線是行之有效的辦法。長線傳送時,功率線、載流線和信號線分開,電位線和脈衝線分開。把空餘的輸入端與使用端並聯。把空餘的輸入端通過一個電阻接高電平,這種方法適用於慢速、多干擾的場合。把空餘的輸入端懸空,用一反相器接地。這種方法適用於要求嚴格的場合。在數字電路的每塊組件上,都要分別裝設高頻去耦電容,而且這些電容應充分靠近集成塊,而不應集中在印刷板上每一端。每塊印刷板的電源引進端也應加去耦電容。直流配電線的引出端應儘量作成低阻抗傳輸線。由於快速邏輯電路產生高頻干擾,所以這些電路均應按高頻電路處理,應將邏輯電路的印刷板良好接地。存儲器的佈線抗干擾設計,一般採取的措施有:數據線、地址線、控制線要儘量縮短,以減少對地電容。由於開關噪聲嚴重,要在電源入口處以及每片存儲晶片的VCC與GND之間接入去耦電容。由於負載電流大,電源線和地線要加粗,走線儘量短。印製板兩面的三總線互相垂直,以防止總線之間的電磁干擾。總線的始端和終端要配置合適的上拉電阻,以提高高電平噪聲容限,增加存儲器端口在高阻狀態下抗干擾能力和削弱反射波干擾。三總線與其他擴展板相連接時,通過三態緩衝門後連接。可以有效防止外界電磁干擾,改善波形和削弱反射干擾。 (7) 軟體抗干擾措施 a) 數字濾波技術 通常使用的方法有:算術平均法、中值法、抑制脈衝算術平均法、一階慣性濾波法、程式判斷濾波法和遞推平均濾波法等。 b) 軟體冗餘 對於條件控制系統,對控制條件的一次採樣、處理控制輸出改為多采樣、處理控制輸出。可有效地消除偶然干擾。 c) 設置軟體陷阱 當由於干擾使作業系統失控而進入非程式區時,用引導指令強行將捕獲到的亂飛程式引向復位入口地址,在此處將程式轉向專門對程式出錯進行處理的程式,使程式納入正軌。 d) 重要指令冗餘 對程式流向起決定作用的指令(如RET、RETI、LCALL、JZ、JC、JNC等)和某些對系統工作狀態起重要作用的指令(如SETB、EA等)的後面,可重復寫上這些指令,以確保這些指令的正確執行。 e) “看門狗”技術 PC受到干擾而失控,引起程式亂飛,也可能使程式進入“死迴圈”。指令冗餘技術、軟體陷阱技術不能使失控的程式擺脫“死迴圈”的困境,通常採用程式監視技術,又稱“看門狗”技術(Watchdog),“看門狗”技術就是不斷監視程式迴圈運行時間,若發現時間超過已知的迴圈設定時間,則認為系統陷入了“死迴圈”,然後強迫程式返回到0000H入口,在0000H處安排一段出錯處理程式,使系統運行納入正軌。在設計看門狗時可設計兩個定時器,一個為短定時器,一個為長定時器,並各自獨立,短定時器像典型看門狗一樣工作,它保證一般情況下看門狗有快的反映速度,長定時器的定時大於CPU執行一個主迴圈程式的時間,用來防止看門狗失效。 f) 數據的保護與恢復技術 在編寫程式的過程中,對於由指令改變結果性質的數據,可以考慮在每次改變後都盡可能地保護起來,以便必要時恢復。有時電腦在強制復位後,I/O端口和特殊寄存器SFR中的內容都將變成晶片出廠時的設定值,這很有可能引起系統的運行混亂。因此單片機在重新啟動後,應當首先執行數據恢復程式,把控制端口等重要寄存器被保護的內容恢復還原。 g) NOP的使用 在雙字節和3字節指令之後插入兩個單字節NOP指令,這可保證指令不被拆散。因為“亂飛”的程式即使落到操作數上,由於兩個空操作指令NOP的存在,不會將其後的指令當操作數執行,從而使程式納入正軌。
發表於: 2006/7/19 10:00
|
|||
|