|

【實作實驗室】除錯很難怎麼辦?用 Watch Dog Timer 自動 Reset

   
作者:實作派

大家對自己寫的程式通常都很有自信,但人算不如天算,總是在幾萬次的執行當中會遇到當機,而且你還不知道原因,因為 Bug 出現的機率低,造成除錯很困難。如果無法與 Bug 直球對決,那麼閃過它也是一種方法。watch dog 提供代客 Reset 的服務,會緊盯處理器 Processor,萬一 Processor 當機了,它會自動 Reset Processor,這樣系統就會穩定許多。

watch dog 概念

watch dog 的想法很簡單,就是 Processor 利用外部的電路來 Reset 自己。

Processor 為了證明自己還活著,每隔一段時間會傳送 Clear 訊號給 watch dog timer,一旦 Clear 訊號久久沒送出來, watch dog 就會視為當機,隨後便送出 Reset 給 Processor,我用下面這張圖來表示,我想各位會更清楚。

(圖片來源:實作派提供)

事實上 watch dog 本身是個計時器 Timer,它可以從 0 數到 N,所以也稱為 watch dog timer(WDT),WDT 一旦數到 N 就會發送 Reset 的訊號給 Processor,而 WDT 也設計成可以接受 Clear 訊號,用來讓 Timer 重新計數,只要 WDT 不要數到 N 就永遠不會送出 Reset。

Timer 算時間的方式不外乎 0 上數到 N,N 下數到 0,有些是用除頻的方式,只要能計算時間,實作方式可以說五花八門。

在大型的 DSP 系統中,可能會有好幾個 Watch Dog 看守不同的 Function Unit,每個 Unit 在 reset 的時候由於無法對外部的請求做回應,因此需要搭配一些機制,避免因為一個 Unit 當機而牽連了其他 Unit 跟著當機。

應用實例

我直接做個電路板來當例子,我使用 PIC 系列的 PIC12F1840,它是一顆 8 腳的 8 bit MCU,內含振盪器,也就是說接上電源就能馬上使用,下圖就是我的實驗平台。至於 3.3 V 的整流器是我做其他實驗要用的,在這篇文章裡並不會用到。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

StrongPiLab

Author: StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *