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