你的位置:首頁 > 電路保護(hù) > 正文

【原創(chuàng)】網(wǎng)友熱議:一個外置看門狗的不斷復(fù)位問題

發(fā)布時間:2014-09-08 責(zé)任編輯:sherryyu

【導(dǎo)讀】本文分享一位研發(fā)工程師在研發(fā)產(chǎn)品運(yùn)行中的遇到一個異常:一個外置看門狗的不斷復(fù)位問題,上電后反復(fù)重啟(時間間隔大概7秒),不能正常啟動,斷開外置看門狗復(fù)位信號后就正常了。這是為什么,該如何解決呢?眾網(wǎng)友發(fā)表了各種看法。
 
最近,研發(fā)產(chǎn)品運(yùn)行中的遇到一個異常,表現(xiàn)為:上電后反復(fù)重啟(時間間隔大概7秒),不能正常啟動,斷開外置看門狗復(fù)位信號后就正常了。
 
看門狗部分圖紙如下:
看門狗部分圖紙
啟動過程如下:初始化cpu及部分硬件-》啟動ucos-》創(chuàng)建2個任務(wù),1個可以復(fù)位看門狗,1個完成系統(tǒng)的初始化。
 
因?yàn)槭?.3V系統(tǒng),使用的外置看門狗型號為SP706TE,特征如下:
經(jīng)過仔細(xì)測試,cpu是輸出的WDI信號是正常的,250ms間隔的脈沖,沒有問題。
 
測量SP706的供電等,也都是正常的。但是WDO上每隔6.18s會有一個20uS的低電平脈沖。
 
經(jīng)測試,在C32上并一個47uF的電容,效果會好一些。由此,懷疑是3.3V上的干擾在某個瞬時會低于3.08V的RESET閥值。將SP706T改為SP706RE后,問題解決;
 
總結(jié):
 
外置看門狗檢測電壓VCC,靈敏度很高。如果vcc上紋波大,建議使用低閥值的芯片,或者使用PFI功能來檢測電壓,當(dāng)然也可以采用更優(yōu)質(zhì)的電源方案;
產(chǎn)品上電后,盡早啟動看門狗,系統(tǒng)的可靠性會高一些,可以避免系統(tǒng)啟動過程中發(fā)生的異常;
 
喂狗避免放到中斷中,也盡量不要放到優(yōu)先級高的任務(wù)中。
[page]
眾網(wǎng)友熱議:
 
網(wǎng)友A:
 
1. 盡管選擇低閾值 S 系列解決問題, 是正確的方向. 但是仍然揭示了電源環(huán)境中可能存在的異常波動, 而且是被描述為大約7秒的波動. 可檢查系統(tǒng)事件, 此時是否 mcu 是否全面喚醒,開啟了各clock閘門. 或系統(tǒng)出現(xiàn)如射頻等瞬間大電流事件啟動. 可以增進(jìn)了解. C32 的 10uF 似乎選高, 10uF電容的價(jià)格是 100nF 的 10倍左右. 似無必要. 根據(jù)"單片機(jī)復(fù)位電路的可靠設(shè)計(jì)(版權(quán)周立功公司)"一文, 似應(yīng)將 10uF 電容移至 nRST 信號對地, 因?yàn)閮?yōu)化上電時延(當(dāng)然 706 本身亦有上電時延), 這根據(jù)您的測試效果而選擇.這里是典型的 RC 時延特性用法. 如果加入了這顆電容構(gòu)成 RC 電路, 那么文章中典型用法是使用 4148 構(gòu)成電容的反向放電, 和你的降低閾值的需求相反, 反向放電將在電壓瞬降時迅速使電容放電, 到達(dá)瞬時反應(yīng)的目的. 網(wǎng)絡(luò)上相信能查到這種電路圖, 這是繼續(xù)優(yōu)化的方向. 另外要注意的一點(diǎn)是信號限流. 特別是對于這種任何 IC pin腳形式的使用, 常見的用法是不管有木有效果, 在信號線上(此處是 nRST), 加上一顆阻值較小的限流電阻(舉例說 360R). 
 
2. 盡早啟動看門狗, 可靠性會高, 原則上沒有錯誤, 但其實(shí)使用時常常遇到系統(tǒng)延時啟動保證輸入電壓穩(wěn)定的設(shè)計(jì). 這個延時是否能滿足馬上啟動復(fù)位IC 后的第一個 feed watchdog 信號.此外,理論上, 你提出的第二點(diǎn), 應(yīng)該不是提高"系統(tǒng)可靠性"的必要充分條件, 應(yīng)該說甚至是無關(guān)的. 理論上, 只要復(fù)位 IC 能夠正常準(zhǔn)確的捕捉每個 mcu 的 dead loop 或 freezing. "盡量提前啟動"復(fù)位 IC 就顯得無意義, 除非是一個特別強(qiáng)調(diào) realtime 系統(tǒng)安排. 因此理論上, 我們應(yīng)重視的是啟動時序, 而異常時序能夠被復(fù)位IC喚醒(最好異常能被記錄).
 
 3.喂狗不能放在中斷或者高優(yōu)先級任務(wù), 必須放在 superloop 的說法, 我聽說了很多. 我個人非常懷疑這種說法. 比方說, 你可以假設(shè) interrupt 在沒有充分啟動的 mcu 中異常運(yùn)行而導(dǎo)致 interrupt 失效或至少不能響應(yīng) interrupt vector 的跳轉(zhuǎn). 但這種異常的執(zhí)行環(huán)境下, 繼續(xù)讓系統(tǒng)執(zhí)行而不進(jìn)行復(fù)位的意義在哪里呢? 特別是假如這個中斷特別重要的話? 同樣, 所謂高優(yōu)先級的 task 如果崩潰, 但是我們卻費(fèi)力保證不讓復(fù)位 IC 對此反應(yīng)... 我個人就覺得實(shí)在是太不應(yīng)該了. 所以, 我個人對"喂狗應(yīng)該放在哪里放在哪里"的說教看法持極強(qiáng)烈的否定看法. 在您自己的系統(tǒng)中, 您應(yīng)該根據(jù)您的情況進(jìn)行分析吧. 假設(shè)某個重要的優(yōu)先級task 與中斷在您的系統(tǒng)中是如此重要, 以至于無法缺失, 為何不可將您的硬件喂狗放置于此? 如果不放心的話, 您可以選擇將軟件喂狗放在 superloop. -- 這不應(yīng)該是某個定論, 而應(yīng)該是出自于貴研發(fā)團(tuán)隊(duì)的系統(tǒng)設(shè)計(jì)需求, 與實(shí)測效果及客戶現(xiàn)場反饋.
 
4.您在 nRST 信號上沒有上拉, 我們說的 RC 優(yōu)化 nRST 信號線, 都是基于 R 上拉的基礎(chǔ)上的, 不上拉的話, 意味者對信號微擾的敏感, 這可能也是您的"易復(fù)位"現(xiàn)象的重要成因. 盡管 706 的 datasheet 上沒有標(biāo)識這個上拉的用法, 但作為一個嘗試和現(xiàn)實(shí)的"不妨礙性"的使用, 似乎是值得一試的.
 
網(wǎng)友B:
 
還是建議測查電路的本質(zhì)問題,而非那種治標(biāo)不治本的解決問題方式。既然懷疑電源上有干擾,至少用示波器捕捉一下,搞不好問題正如6樓所說的看門狗芯片輸出驅(qū)動浮空等問題引起,那不是冤枉電源的質(zhì)量了。
 
網(wǎng)友C:
 
我的做法是找到你所說的脈沖哪里來的。我還需要模擬脈沖怎么影響看門狗狗。不然,永遠(yuǎn)都不算解決問題,永遠(yuǎn)都處于初級工程師階段。
 
要采購射頻么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉