目前,在許多情況下,設(shè)計人員會用軟件實現(xiàn)以往由硬件才能完成的電路功能,其中部分原因是低成本的微處理器(μP)為大家提供了廣泛的選擇。軟件常常是解決問題成本最低、靈活性最高的方案,但它也迫使設(shè)計人員進(jìn)行一些額外的測試以確保系統(tǒng)的可靠性。當(dāng)然,如果程序沒有代碼錯誤也就不存在上述問題,細(xì)心的測試能夠在1000條指令中減少1至10條錯誤。而設(shè)計人員則希望在10,000條指令中出錯率不要超過十處。
在臺式機(jī)系統(tǒng)中出現(xiàn)導(dǎo)致系統(tǒng)癱瘓的軟件錯誤并不可怕,因為用戶只需重新啟動系統(tǒng)即可,它只會造成少量數(shù)據(jù)的丟失。然而,對于運(yùn)行在工控系統(tǒng)的軟件,系統(tǒng)則必須能夠在沒有人為干預(yù)的條件下恢復(fù)故障。這一特性在兩種情況下非常關(guān)鍵:一種是高有效性系統(tǒng),如服務(wù)器、電話系統(tǒng)以及生產(chǎn)線等;另一種是高可靠性系統(tǒng),因為這種系統(tǒng)一旦出現(xiàn)錯誤將造成傷害,如汽車、醫(yī)療設(shè)備、工業(yè)控制、機(jī)器人、自動門等。即使不考慮這些要求嚴(yán)格的應(yīng)用,系統(tǒng)在無需用戶干預(yù)的條件下自動(按下復(fù)位鍵或重新上電)從故障狀態(tài)下恢復(fù)也是很有益處的,這種設(shè)備的好處是顯而易見的,因為用戶不希望設(shè)備內(nèi)部出現(xiàn)問題。改善這類系統(tǒng)可靠性的一種簡單、有效的措施是采用看門狗電路。
1看門狗
看門狗實際上是一個計數(shù)器,它需要在一定的看門狗延時周期內(nèi)被清零,如果沒有清零動作,看門狗電路將產(chǎn)生一個復(fù)位信號以使系統(tǒng)重新啟動或建立一個非屏蔽中斷(NMI)并執(zhí)行故障恢復(fù)子程序。大多數(shù)看門狗電路是沿觸發(fā),這樣,無論是上升沿還是下降沿觸發(fā)看門狗的輸入端(WDI)通常都能夠清計數(shù)器。WDI引腳一般連接在處理器的一個I/0口,這條口線可由軟件觸發(fā)。圖1所示是微處理器通過在WDl腳發(fā)送脈沖清除看門狗定時器以防止復(fù)位的連接方式,實際上,清看門狗計數(shù)器的命令必須在主程序內(nèi)。如果看門狗沒有被清零,復(fù)位后軟件將從地址為0000(啟動程序)的子程序處開始運(yùn)行。計算主程序的運(yùn)行時間往往很困難,因為在此期間可能需要多次調(diào)用子程序,這與系統(tǒng)輸入有關(guān)。因此,設(shè)計人員常常選擇看門狗延時周期遠(yuǎn)遠(yuǎn)高于測試到的或計算出的循環(huán)時間。圖2所示是正常工作情況下(看門狗在延時周期內(nèi)被請零)的看門狗信號和復(fù)位信號。圖3所示為看門狗計數(shù)器溢出時引發(fā)一次復(fù)位的時序示意圖。工業(yè)標(biāo)準(zhǔn)的看門狗電路延時周期一般在l00ms~2s范圍內(nèi),當(dāng)然,也有些可調(diào)節(jié)或定制的看門狗電路能夠覆蓋更寬的延時范圍(30ms至幾分鐘)。如果主程序的執(zhí)行時間對于看門狗電路而言過長,設(shè)計人員可以在主程序的不同部位多次執(zhí)行看門狗觸發(fā)命令,也可以選用看門狗延時周期更長的器件。

一種防止系統(tǒng)滯留在死循環(huán)的技術(shù)是在主程序的初始化部分將相應(yīng)的I/O引腳置為高電平,而在主程序的另一部分將其置為低電子。如果軟件在主程序的起始部分進(jìn)入了死循環(huán),由于WDI始終保持高電平,看門狗將產(chǎn)生延時輸出而使系統(tǒng)復(fù)位。如果采用一個低-高-低的脈沖,看門狗將被清零,但系統(tǒng)仍處于阻塞狀態(tài)。為解決這個問題,一種比較成熟的方法是對程序中的多項任務(wù)進(jìn)行監(jiān)視,并對每項任務(wù)設(shè)置一個標(biāo)志,只有當(dāng)全部標(biāo)志置位后,看門狗電路才被觸發(fā)。執(zhí)行全部任務(wù)的時間要比看門狗超出周期短。在更復(fù)雜的系統(tǒng)中,還存在一些潛在問題,如存儲器泄漏、堆棧溢出等,此時系統(tǒng)同樣需要對這些情況進(jìn)行監(jiān)視,盡管對這些問題的討論超出了本文的范圍,但通過合理的程序設(shè)計、認(rèn)真審核代碼或采用特殊的軟件工具也可以解決上述問題。

2 內(nèi)部看門狗與外部看門狗
許多μP都集成了可編程看門狗功能,軟件控制可禁止其工作。通常內(nèi)置看門狗易受代碼錯誤的影響,它無法提供外部獨(dú)立看門狗電路所具有的保護(hù)能力,因此在對安全性能要求較高的應(yīng)用中(如自動門、醫(yī)療設(shè)備、機(jī)器人等),內(nèi)置看門狗是無法接受的,從而使管理層采用獨(dú)立的外部看門狗電路?,F(xiàn)利用外部看門狗電路降低高可靠性系統(tǒng)的風(fēng)險是一個極好的嘗試。

2.1簡單的看門狗+復(fù)位
通??撮T狗延時將重新復(fù)位系統(tǒng),大多數(shù)看門狗電路與 μP復(fù)位集成在一起,它同時可以監(jiān)視處理器的供電電壓。在出現(xiàn)看門狗延時或電源電壓跌落的情況下均可產(chǎn)生復(fù)位動作,MAX823~MAX825系列產(chǎn)品就包含了這兩種功能,它們可提供標(biāo)準(zhǔn)的復(fù)位電壓門限、標(biāo)準(zhǔn)的看門狗延時周期和復(fù)位延遲,僅消耗6μA電流。而且這些器件具有超小型SC70封裝。
2.2工廠預(yù)置看門狗系列
MAX6316~MAX6322系列可提供26種工廠預(yù)置的復(fù)位電壓門限、4種看門狗延時周期、4種復(fù)位延遲以及4種輸出配置。
2.3用電容調(diào)節(jié)的看門狗
如果應(yīng)用中需要靈活的看門狗延時周期,設(shè)計人員可以選用可調(diào)節(jié)電路,MAX6746~MAX6753系列產(chǎn)品不但提供了工廠預(yù)置的復(fù)位電壓門限,也提供了分壓編程的復(fù)位電壓門限,另外,還可以利用外部電容來調(diào)節(jié)看門狗的延時周期和復(fù)位延遲。圖4

所示是其典型工作電路,其中:
復(fù)位電壓由分壓器R1/R2決定;
復(fù)位延遲時間由電容CSRT設(shè)置;
看門狗延時周期由電容Csw放置。
圖5是CSWT在100pF~100nF時所對應(yīng)的看門狗延時周期范圍,設(shè)計人員利用如此寬范圍的看門狗延時周期可以為任何應(yīng)用提供解決方案。需要說明的是:MAX6301-MAX6304系列基本與MAX6746-MAX6753系列相同,它們均可提供SO或DIP封裝。
2.4較長啟動/延時周期和引腳可選的看門狗
對于啟動過程較長的應(yīng)用,可提供兩個不同的延時周期設(shè)計:即一個較長的初始化延時周期和一個較短的正常工作延時周期。MAX6369-MAX6374系列便具有引腳可編程的啟動延遲,其可選范圍為200ms~60s。一些版本還提供有看門狗的首次邊沿激活功能,以滿足啟動過程更長的應(yīng)用。在這些芯片中,看門狗電路在啟動過程中被禁止,而只允許來自μP相關(guān)I/O引腳的第一個邊沿才可以激活看門狗電路。

2.5多電壓監(jiān)控看門狗
對于雙電源供電系統(tǒng),MAX6358-MAX6360系列可以監(jiān)視兩路標(biāo)準(zhǔn)電壓,并提供長啟動周期和標(biāo)準(zhǔn)延時周期的看門狗;對于三組電源供電或需要高有效和低有效復(fù)位輸出的系統(tǒng),設(shè)計人員可以選用MAX6721-MAX6729系列產(chǎn)品,這些器件能提供長啟動周期和標(biāo)準(zhǔn)延時周期的雙模式看門狗功能。并可監(jiān)視兩路標(biāo)準(zhǔn)的電源電壓(MAX6721-MAX6722)或兩路標(biāo)準(zhǔn)電壓加上一路可調(diào)電壓(MAX6723-MAX6724)。同時,這些器件還帶有手動復(fù)位輸入,電源失效比較器、雙復(fù)位輸出和RESET、RESET輸出等。
2.6超高可靠窗式看門狗
為獲得超高的可靠性,設(shè)計人員可以利用MAX6323/MAX6324窗式看門狗電路,使用這些器件時必須在規(guī)定的窗口定時周期內(nèi)為看門狗提供清零脈沖,有效脈沖可以在上次觸發(fā)脈沖1.5ms后送達(dá),也可以在上次觸發(fā)脈沖之后的10ms時到達(dá),利用MAX6323/MAX6324系統(tǒng)可以脫離離散循環(huán),如果清零看門狗指令在循環(huán)內(nèi)執(zhí)行,它將發(fā)出一串高速脈沖,這些脈沖可以將常規(guī)的看門狗清零,而且不產(chǎn)生復(fù)位。利用窗式看門狗電路可避免上述問題的原因是這種器件在兩次看門狗觸發(fā)脈沖之間要求有一定的時間間隔。這些器件的典型應(yīng)用包括防抱死(ABS)系統(tǒng)或其它汽車電路、工業(yè)控制、醫(yī)療產(chǎn)品等要求安全性能較高的應(yīng)用系統(tǒng)或?qū)ο到y(tǒng)有效性要求苛刻的應(yīng)用場合。
3 結(jié)論
各種軟件程序都會出現(xiàn)代碼錯誤,而且噪聲和EMI也會影響系統(tǒng)中的數(shù)據(jù),并導(dǎo)致不可預(yù)測的系統(tǒng)動作,因此,設(shè)計人員要保證系統(tǒng)不出現(xiàn)死鎖。看門狗電路是提高系統(tǒng)可靠性的一種簡單、廉價方案。利用外部看門狗電路可以防止系統(tǒng)死鎖,如果WDI信號在規(guī)定的看門狗延時周期內(nèi)沒有被觸發(fā),那么電路將對系統(tǒng)進(jìn)行復(fù)位。在目前種類繁多的看門狗器件中,設(shè)計人員一定能夠找到一款與其需求相吻合的器件。
責(zé)任編輯:gt
-
可編程
+關(guān)注
關(guān)注
2文章
1334瀏覽量
41557 -
微處理器
+關(guān)注
關(guān)注
11文章
2440瀏覽量
86168 -
定時器
+關(guān)注
關(guān)注
23文章
3375瀏覽量
124630
發(fā)布評論請先 登錄
如何利用看門狗電路改善系統(tǒng)可靠性
單片機(jī)應(yīng)用中看門狗技術(shù)
利用看門狗提高系統(tǒng)可靠性
窗口看門狗提高μP監(jiān)事
利用MAX6323/MAX6324窗式看門狗電路提高應(yīng)用系統(tǒng)的可靠性
評論