目前,在許多情況下,設計人員會用軟件實現以往由硬件才能完成的電路功能,其中部分原因是低成本的微處理器(μP)為大家提供了廣泛的選擇。軟件常常是解決問題成本最低、靈活性最高的方案,但它也迫使設計人員進行一些額外的測試以確保系統的可靠性。當然,如果程序沒有代碼錯誤也就不存在上述問題,細心的測試能夠在1000條指令中減少1至10條錯誤。而設計人員則希望在10,000條指令中出錯率不要超過十處。 在臺式機系統中出現導致系統癱瘓的軟件錯誤并不可怕,因為用戶只需重新啟動系統即可,它只會造成少量數據的丟失。然而,對于運行在工控系統的軟件,系統則必須能夠在沒有人為干預的條件下恢復故障。這一特性在兩種情況下非常關鍵:一種是高有效性系統,如服務器、電話系統以及生產線等;另一種是高可靠性系統,因為這種系統一旦出現錯誤將造成傷害,如汽車、醫療設備、工業控制、機器人、自動門等。即使不考慮這些要求嚴格的應用,系統在無需用戶干預的條件下自動(按下復位鍵或重新上電)從故障狀態下恢復也是很有益處的,這種設備的好處是顯而易見的,因為用戶不希望設備內部出現問題。改善這類系統可靠性的一種簡單、有效的措施是采用看門狗電路。 1看門狗 看門狗實際上是一個計數器,它需要在一定的看門狗延時周期內被清零,如果沒有清零動作,看門狗電路將產生一個復位信號以使系統重新啟動或建立一個非屏蔽中斷(NMI)并執行故障恢復子程序。大多數看門狗電路是沿觸發,這樣,無論是上升沿還是下降沿觸發看門狗的輸入端(WDI)通常都能夠清計數器。WDI引腳一般連接在處理器的一個I/0口,這條口線可由軟件觸發。圖1所示是微處理器通過在WDl腳發送脈沖清除看門狗定時器以防止復位的連接方式,實際上,清看門狗計數器的命令必須在主程序內。如果看門狗沒有被清零,復位后軟件將從地址為0000(啟動程序)的子程序處開始運行。計算主程序的運行時間往往很困難,因為在此期間可能需要多次調用子程序,這與系統輸入有關。因此,設計人員常常選擇看門狗延時周期遠遠高于測試到的或計算出的循環時間。圖2所示是正常工作情況下(看門狗在延時周期內被請零)的看門狗信號和復位信號。圖3所示為看門狗計數器溢出時引發一次復位的時序示意圖。工業標準的看門狗電路延時周期一般在l00ms~2s范圍內,當然,也有些可調節或定制的看門狗電路能夠覆蓋更寬的延時范圍(30ms至幾分鐘)。如果主程序的執行時間對于看門狗電路而言過長,設計人員可以在主程序的不同部位多次執行看門狗觸發命令,也可以選用看門狗延時周期更長的器件。 一種防止系統滯留在死循環的技術是在主程序的初始化部分將相應的I/O引腳置為高電平,而在主程序的另一部分將其置為低電子。如果軟件在主程序的起始部分進入了死循環,由于WDI始終保持高電平,看門狗將產生延時輸出而使系統復位。如果采用一個低-高-低的脈沖,看門狗將被清零,但系統仍處于阻塞狀態。為解決這個問題,一種比較成熟的方法是對程序中的多項任務進行監視,并對每項任務設置一個標志,只有當全部標志置位后,看門狗電路才被觸發。執行全部任務的時間要比看門狗超出周期短。在更復雜的系統中,還存在一些潛在問題,如存儲器泄漏、堆棧溢出等,此時系統同樣需要對這些情況進行監視,盡管對這些問題的討論超出了本文的范圍,但通過合理的程序設計、認真審核代碼或采用特殊的軟件工具也可以解決上述問題。 2 內部看門狗與外部看門狗 許多μP都集成了可編程看門狗功能,軟件控制可禁止其工作。通常內置看門狗易受代碼錯誤的影響,它無法提供外部獨立看門狗電路所具有的保護能力,因此在對安全性能要求較高的應用中(如自動門、醫療設備、機器人等),內置看門狗是無法接受的,從而使管理層采用獨立的外部看門狗電路。現利用外部看門狗電路降低高可靠性系統的風險是一個極好的嘗試。 2.1簡單的看門狗+復位 通?撮T狗延時將重新復位系統,大多數看門狗電路與 μP復位集成在一起,它同時可以監視處理器的供電電壓。在出現看門狗延時或電源電壓跌落的情況下均可產生復位動作,MAX823~MAX825系列產品就包含了這兩種功能,它們可提供標準的復位電壓門限、標準的看門狗延時周期和復位延遲,僅消耗6μA電流。而且這些器件具有超小型SC70封裝。 2.2工廠預置看門狗系列 MAX6316~MAX6322系列可提供26種工廠預置的復位電壓門限、4種看門狗延時周期、4種復位延遲以及4種輸出配置。 2.3用電容調節的看門狗 如果應用中需要靈活的看門狗延時周期,設計人員可以選用可調節電路,MAX6746~MAX6753系列產品不但提供了工廠預置的復位電壓門限,也提供了分壓編程的復位電壓門限,另外,還可以利用外部電容來調節看門狗的延時周期和復位延遲。圖4 所示是其典型工作電路,其中: 復位電壓由分壓器R1/R2決定; 復位延遲時間由電容CSRT設置; 看門狗延時周期由電容Csw放置。 圖5是CSWT在100pF~100nF時所對應的看門狗延時周期范圍,設計人員利用如此寬范圍的看門狗延時周期可以為任何應用提供解決方案。需要說明的是:MAX6301-MAX6304系列基本與MAX6746-MAX6753系列相同,它們均可提供SO或DIP封裝。 2.4較長啟動/延時周期和引腳可選的看門狗 對于啟動過程較長的應用,可提供兩個不同的延時周期設計:即一個較長的初始化延時周期和一個較短的正常工作延時周期。MAX6369-MAX6374系列便具有引腳可編程的啟動延遲,其可選范圍為200ms~60s。一些版本還提供有看門狗的首次邊沿激活功能,以滿足啟動過程更長的應用。在這些芯片中,看門狗電路在啟動過程中被禁止,而只允許來自μP相關I/O引腳的第一個邊沿才可以激活看門狗電路。 2.5多電壓監控看門狗 對于雙電源供電系統,MAX6358-MAX6360系列可以監視兩路標準電壓,并提供長啟動周期和標準延時周期的看門狗;對于三組電源供電或需要高有效和低有效復位輸出的系統,設計人員可以選用MAX6721-MAX6729系列產品,這些器件能提供長啟動周期和標準延時周期的雙模式看門狗功能。并可監視兩路標準的電源電壓(MAX6721-MAX6722)或兩路標準電壓加上一路可調電壓(MAX6723-MAX6724)。同時,這些器件還帶有手動復位輸入,電源失效比較器、雙復位輸出和RESET、RESET輸出等。 2.6超高可靠窗式看門狗 為獲得超高的可靠性,設計人員可以利用MAX6323/MAX6324窗式看門狗電路,使用這些器件時必須在規定的窗口定時周期內為看門狗提供清零脈沖,有效脈沖可以在上次觸發脈沖1.5ms后送達,也可以在上次觸發脈沖之后的10ms時到達,利用MAX6323/MAX6324系統可以脫離離散循環,如果清零看門狗指令在循環內執行,它將發出一串高速脈沖,這些脈沖可以將常規的看門狗清零,而且不產生復位。利用窗式看門狗電路可避免上述問題的原因是這種器件在兩次看門狗觸發脈沖之間要求有一定的時間間隔。這些器件的典型應用包括防抱死(ABS)系統或其它汽車電路、工業控制、醫療產品等要求安全性能較高的應用系統或對系統有效性要求苛刻的應用場合。 3 結論 各種軟件程序都會出現代碼錯誤,而且噪聲和EMI也會影響系統中的數據,并導致不可預測的系統動作,因此,設計人員要保證系統不出現死鎖?撮T狗電路是提高系統可靠性的一種簡單、廉價方案。利用外部看門狗電路可以防止系統死鎖,如果WDI信號在規定的看門狗延時周期內沒有被觸發,那么電路將對系統進行復位。在目前種類繁多的看門狗器件中,設計人員一定能夠找到一款與其需求相吻合的器件。 |