吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用高速微型看門狗定時器

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-09 11:54 ? 次閱讀

在惡劣環境中使用的高速微控制器應用的設計人員將使用看門狗定時器來防止軟件失控。DS80C320高速微控制器集成了看門狗定時器,無需外部系統控制監控器。本應用筆記概述了DS80C320看門狗定時器的使用。軟件示例說明了看門狗定時器作為系統監控器的使用,利用適當的復位間隔和長間隔定時器。

介紹

如今,微控制器被用于電噪聲和電磁干擾(EMI)豐富的惡劣環境中。在這樣的環境中,如果系統包含有助于確保正常運行的資源,則非常有益。在許多系統中,驗證正確操作的常用技術是集成看門狗定時器。

看門狗定時器基本上是一種時間測量設備,它與微處理器結合使用或作為微處理器的一部分,能夠使微處理器復位。在設計合理的系統中,當微處理器未正常工作時,看門狗將導致復位,從而消除故障情況。在典型應用中,看門狗定時器配置為在預定時間間隔后復位處理器。如果處理器運行正常,它將在間隔結束前重新啟動監視器。重新啟動后,看門狗將開始計時另一個預定間隔。如果處理器在間隔結束之前未重新啟動監視器,則會發生監視器超時。這會導致處理器被重置。如果系統軟件設計正確,并且沒有硬件故障,則重置將導致系統再次正常運行。當然,復位條件必須是安全狀態。例如,讓磁盤驅動器控制器的重置狀態啟用寫入磁頭是不明智的。

許多系統都是使用外部看門狗定時器設計的。然而,DS80C320無需額外的外部元件。DS80C320內置非常強大的內部看門狗定時器。該看門狗定時器的特性和使用是本應用筆記的主題。

看門狗定時器的一般用途

看門狗定時器的主要應用是作為系統監視器(詳見下一節)。使用看門狗定時器,系統可以設計成非常擅長檢測和糾正失控的微處理器。使用看門狗定時器的系統特別適合檢測位錯誤。瞬時位錯誤可能是由軟內存故障和電磁放電到存儲設備及其接口等原因引起的。這些可能導致數據臨時位極性翻轉進出處理器。當在獲取程序信息時發生這種情況時,微處理器將開始執行錯誤的代碼。潛在地,處理器可以開始執行操作數而不是操作碼。當處理器開始執行此錯誤代碼時,它將無法正確執行重新啟動看門狗的代碼。超時間隔后,看門狗將導致處理器重置。在正確設計的系統中,復位將糾正錯誤。

無論看門狗定時器的功能如何,它都無法解決所有的可靠性問題。有些故障無法通過重置來糾正。例如,看門狗定時器無法防止數據損壞。在其基本形式中,看門狗重新啟動取決于正確的程序執行,并且通常不依賴于數據存儲器中的值。除非數據損壞影響程序流或采取一些額外措施,否則數據損壞不會導致監視器超時。當然,自診斷軟件可以編寫成這樣一種方式,即重新啟動看門狗取決于數據存儲器的驗證。雖然這種方法可能非常有效并且很常見,但詳細討論超出了本文檔的范圍。

另請注意,看門狗定時器無法立即檢測到故障。根據定義,看門狗定時器必須達到預定時間間隔的終點,然后才能重置處理器。這一事實解釋了為什么應該選擇可能的最小超時間隔。這樣,在糾正失控條件之前,將有最短時間到期。

作為系統主管的看門狗

高速微型看門狗定時器最常見的用途是作為系統監控器。雖然它可以以多種不同的方式使用(其中一些將在本文檔中討論),但系統管理程序是最常見的應用程序。在系統管理引擎模式下,如上所述,處理器會定期重新啟動計時器。如果處理器失控,看門狗將不會重新啟動;它將超時,隨后將導致處理器重置。

在高速微型中,看門狗定時器由提供給一系列分頻器的主系統時鐘驅動。分頻器輸出是可選的,并確定超時之間的間隔。當達到超時時,將設置中斷標志,如果啟用,將在 512 個時鐘后發生復位。如果設置了中斷的單個使能位并設置了全局中斷使能,則中斷標志將導致發生中斷。復位和中斷是完全離散的功能,可以確認或 忽略,一起或單獨用于各種應用程序。

將看門狗定時器用作系統監視器時,應使用看門狗的復位功能。如果使用中斷功能,則看門狗的目的將落空。為了解釋,假設系統在看門狗中斷之前執行錯誤的代碼。中斷將通過向量將 CPU 矢量化到中斷服務例程來暫時強制系統重新控制。重新啟動看門狗并通過 RETI 或 RET 退出會使處理器返回到中斷前丟失的位置。通過使用看門狗復位功能,處理器從程序的開頭重新啟動,從而進入已知狀態。

這并不是說DS80C320看門狗的中斷功能對系統監視應用沒有用處。由于復位發生在中斷后512個時鐘,因此可以使用短中斷服務例程在復位發生之前存儲關鍵變量。這可能允許系統在與故障前條件更相似的狀態下恢復正常運行。當然,如果數據是錯誤的根源,則存儲數據而不進行更正將沒有任何好處。對于任何特定系統,所采用的方法取決于系統和所需的可靠性水平。

如上所述,DS80C320中的看門狗定時器由通過一系列分頻器的主系統時鐘驅動。分頻器輸出可由用戶選擇,允許超時為 217, 220, 223或 226時鐘。如果啟用,處理器的重置將在 512 個時鐘之后發生。表1顯示了與不同晶體頻率相關的復位時間間隔。

時鐘 @1.832兆赫 @11.059兆赫 @12兆赫 @25兆赫
217+ 512 71.83 毫秒 11.90 毫秒 10.97 毫秒 5.26 毫秒
220+ 512 572.6 毫秒 94.86 毫秒 87.42 毫秒 41.96 毫秒
223+ 512 4.58 秒 758.6 毫秒 699.1 毫秒 335.6 毫秒
226+ 512 36.63 秒 6.07 秒 5.59 秒 2.68 秒

可以看出,有一系列可用的超時間隔。選擇的間隔應基于幾個問題。第一個目標是選擇一個間隔,該間隔表示允許處理器失控的最長時間。例如,理想情況下,每 500 毫秒向機械臂發出位置命令的系統不會使用大于此間隔的超時間隔。縮短超時間隔可確保最多向手臂發出一個錯誤命令。

設置監視器超時間隔的另一個主要問題是能夠在系統軟件中找到重新啟動命令。這可能是一個非常復雜的問題,具體取決于系統軟件的性質。最理想的方法是在重新啟動看門狗定時器的系統軟件的單個主循環中有一個位置。通過主程序循環所需的時間將決定所需的超時間隔。

上述方法假定系統軟件流是線性的,足以允許它。有些程序過于復雜,它們的流程過于非線性,無法允許這種方法。使用這樣的程序結構,很難找到看門狗重新啟動的正確點。這個問題的一個可能解決方案是使用DS80C320的看門狗定時器本身來幫助確定適當的重啟位置。此方法使用看門狗的中斷功能,將在下面的部分中詳細介紹。

在某些系統中,軟件太復雜或程序流程變化太大,無法進行完整徹底的分析。可能無法確定監視器重新啟動是否覆蓋了所有程序路徑。在這種情況下,可以使用不同的方法。在這種情況下,可以開發診斷軟件來測試系統。該診斷軟件將定期調用,可能使用看門狗定時器的中斷功能。如果診斷通過,則重新啟動監視器。否則,監視器超時并重置處理器。當然,在這種情況下,測試必須足夠徹底才能有效。給定系統中使用的確切方法可以是上述任何一種,也可以是每種方法的某種組合,視應用而定。

看門狗復位示例

下面顯示了一個簡短的程序,說明了大多數基本的看門狗定時器功能。該程序說明了如何初始化看門狗定時器,以便在超時時導致重置。

該程序說明了DS80C320看門狗定時器的獨特功能之一。更改看門狗操作的軟件必須執行定時訪問操作。定時訪問操作是必須按順序一起執行的一系列步驟;否則,訪問將失敗。示例程序顯示了用于重新啟動監視器并啟用其重置的定時訪問。可以看出,值 0AAh 首先寫入定時訪問寄存器 (TA)。接下來,將值 055h 寫入 TA 寄存器。最后,修改受保護位。這些指令必須按照所示的順序執行,不得中斷才能訪問受保護位。有關定時訪問操作的更多詳細信息,請參閱高速微型用戶指南。受定時訪問過程保護的監視器計時器位是啟用監視器計時器重置 (EWT = WDCON.1) 位、監視器中斷標志 (WDIF = WDCON.3) 位和重新啟動監視器計時器 (RWT = WDCON.0) 位。

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; WD_RST.ASM Program ; ; This program demonstrates the use of the watchdog timer in ; the DS80C320. It uses the timer's reset capability. When ; running, the program sets port 1's pins low to indicate ; the processor is idle waiting for the watchdog to timeout. When ; the watchdog times out, the processor is reset causing the port ; pins to return high. A delay is written into the program so that ; the port pins will be high long enough to be seen if attached to ; LEDs. ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; Reset Vector ; ORG 00h SJMP START ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; Main program body ; ORG 080h ; START: ORL CKCON, #080h ; Set Watchdog timeout period 2**23 ; (approximately 758 mS @ 11.059 MHz) ; ; In a real application, the next three lines would be placed ; at various locations in the program to restart the watchdog ; before it times out. ; MOV TA, #0AAh ; Restart Watchdog timer MOV TA, #055h ; using timed SETB RWT ; access. ; ; MOV TA, #0AAh ; Enable Watchdog timer reset MOV TA, #055h ; using timed SETB EWT ; access. ; ; MOV R1, #0FFh ; Create a delay loop so the port LOOP: MOV R2, #0FFh ; pins are high long enough after DJNZ R2, $ ; a reset to be seen. DJNZ R1, LOOP ; MOV P1, #00 ; P1 = 0, Reset causes P1 = 1 ; MOV PCON, #01h ; Go to idle mode waiting for reset SJMP $ ; ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; END

看門狗定時器作為長間隔定時器

高速微型看門狗定時器的一個略有不同的應用是作為長間隔定時器。在此應用中,使用啟用看門狗定時器中斷 (EWDI=EIE.4) 位使能中斷,復位保持禁用狀態。發生超時時,監視器計時器將設置 WDIF 位 (WDCON.3),如果設置了全局中斷啟用位 (EA=IE.7),則會發生中斷。看門狗中斷標志將指示中斷的來源,必須由軟件清除。如上表所示,5 MHz晶體的間隔從26.2 ms到68.25秒不等。此間隔明顯長于使用標準 16 位定時器的任何間隔。

另一個說明看門狗定時器功能的簡短程序如下所示。該程序演示了必須如何初始化看門狗計時器和中斷,以便超時導致 中斷。包括一個簡短的中斷服務例程。

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; ;WD_INT.ASM Program ; ; This program demonstrates the use of the watchdog timer of ; the 80C320. It uses the timer's interrupt generating capability. ; For purposes of demonstration, the program toggles Port 1's pins ; each time the watchdog's Interrupt Service Routine is entered. ; ; $MODS320 ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; Reset Vector ; ORG 00h SJMP START ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; Watchdog Interrupt Vector ; ORG 063h ; MOV TA, #0AAh ; Restart watchdog timer MOV TA, #055h ; using timed SETB RWT ; access. ; MOV TA, #0AAh ; Clear watchdog interrupt flag MOV TA, #055h ; using timed CLR WDIF ; access. ; CPL A ; Complement port 1 to show the MOV P1, A ; interrupt routine was entered. ; RETI ; Return from interrupt. ; ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ; Main program body ; ORG 080h ; START: ORL CKCON, #040h ; Set Watchdog timeout period 2**20 ; (approximately 94.8 mS @ 11.059 MHz) ; MOV TA, #0AAh ; Restart Watchdog timer MOV TA, #055h ; using timed SETB RWT ; access. ; SETB EWDI ; Enable Watchdog Interrupt and SETB EA ; set global interrupt enable ; Here: MOV PCON, #01 ; Go to Idle mode and wait SJMP Here ; After interrupt, go back to idle ; ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; END

看門狗定時器作為定位重啟指令的輔助手段

如上所述,在系統軟件中找到看門狗重新啟動指令有時可能很困難。系統軟件的結構及其流程的復雜性決定了任務的難度級別。在DS80C320中,看門狗定時器本身可用于輔助此活動。對此的一般方法是允許監視器引起中斷,并從服務例程中確定中斷在代碼中發生的位置。通過將監視器重新啟動說明放在此點之前,可以確保監視器將在超時之前重新啟動(當軟件流遵循此特定分支時)。重復此過程,直到不再發生監視器中斷。如果程序流是線性的并且不依賴于數據,則系統將按預期運行。

前面的軟件示例提供了執行此功能所需的大多數軟件。但是,作為第一步,應確定所需的最大超時間隔,并為此值修改代碼。與往常一樣,選擇的超時是系統以及允許微失控多長時間的函數。修改軟件以初始化所需的看門狗超時間隔后,應將以下指令添加到中斷服務例程中。它們將使處理器顯示如果未發生中斷將執行的指令的地址。如果這種顯示機制不方便系統實現,可以將地址轉換為ASCII并在其中一個串行端口上輸出。

MOV R0, SP ; Get SP contents MOV P3, @R0 ; Display high address byte DEC R0 ; Point to low address byte MOV P1, @R0 ; Display low address byte SJMP $ ; Stop here

上述說明將堆棧指針的內容移動到 R0,然后用于指向確認中斷時推送到堆棧的數據。此地址反映在中斷未發生的情況下將執行的下一條指令。地址的高字節顯示在端口 3 引腳上,地址的低字節顯示在端口 1 引腳上。如果重新啟動看門狗計時器的指令放在此地址之前,則看門狗將永遠不會超時。

總結

在使用看門狗作為監視器設計系統時,有效的設計必須考慮許多因素。首先,處理器可能失控的最長時間將決定最大看門狗超時期限。確定超時期限后,必須分析系統軟件以確定看門狗重新啟動指令的位置。為了進行有效的設計,應將監視程序重新啟動的次數保持在最低限度,并應考慮錯誤執行重新啟動的可能性。如前所述,某些系統軟件過于復雜或依賴于數據,無法確保看門狗重新啟動涵蓋所有軟件流路徑。這可能要求可能需要自診斷軟件方法。如果存在預期的故障機制,例如周期性EMI突發或電源毛刺,則看門狗超時應考慮此時間段。

要使看門狗復位成為有效的糾錯機制,處理器的復位狀態必須是安全的。在某些應用中,看門狗的中斷功能可用于在復位之前操作數據或堆棧,以確保處理器在復位后正常運行。

通過仔細考慮上述方面,可以使用在非常惡劣的環境中運行的看門狗定時器設計系統。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19407

    瀏覽量

    231181
  • 微處理器
    +關注

    關注

    11

    文章

    2274

    瀏覽量

    82773
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115368
收藏 人收藏

    評論

    相關推薦

    一文詳解看門狗定時器

    看門狗定時器由獨立的1 Mhz 片內振蕩驅動。這是VCC = 5V 時的典型值。請參見特性數據以了解其他VCC 電平下的典型值。通過設置看門狗定時
    發表于 09-02 16:40 ?4096次閱讀
    一文詳解<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    STM32看門狗定時器的工作原理和作用 看門狗定時器的特性

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般來說都是向下計數的,給看門狗一個數字,程序開始運行后
    的頭像 發表于 07-27 16:30 ?6334次閱讀
    STM32<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的工作原理和作用 <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的特性

    看門狗電路的作用

    看門狗電路的作用      看門狗電路其實是一個獨立的定時器,有一個定時器控制寄存,可以設
    發表于 01-12 12:00 ?8665次閱讀
    <b class='flag-5'>看門狗</b>電路的作用

    內部與外部看門狗定時器的比較

    摘要:本文對內部(集成在處理內部)看門狗定時器(WTD)與外部(基于硬件) WDT的優勢和劣勢進行了對比。內部看門狗便于設計,但容易失效。MAXQ2000微控制
    發表于 05-02 10:34 ?4683次閱讀

    看門狗定時器的設計、工作原理及看門狗定時器的操作

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般給看門狗一個數字,程序開始運行后看門狗
    發表于 05-23 09:14 ?7821次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的設計、工作原理及<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的操作

    看門狗定時器的作用

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般給看門狗一個數字,程序開始運行后看門狗
    發表于 10-20 14:41 ?6739次閱讀

    dsp看門狗定時器的作用解析

    看門狗在外圍監控DSP中軟件的運行以及硬件的操作,當CPU出現故障時,看門狗將執行系統復位。如果軟件進入了一個不正確的循環或者CPU出現暫時的混亂,看門狗定時器將出現溢出來使系統復位。
    發表于 11-21 16:52 ?1.4w次閱讀
    dsp<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的作用解析

    基于VxWorks的看門狗定高效定時機制設計實現

    VxWorks提供了一個看門狗定時器(watchDog timer),它由以下四個函數維護: wdCreate( ) 創建并初始化一個看門狗定時器;wdDelete( ) 終止并
    發表于 03-06 09:22 ?4870次閱讀
    基于VxWorks的<b class='flag-5'>看門狗</b>定高效<b class='flag-5'>定時</b>機制設計實現

    TB3123 - PIC?單片機的窗口看門狗定時器

    窗口看門狗定時器(Windowed Watchdog Timer,WWDT)是PIC單片機的增強型看門狗定時器。該定時器是PIC單片機現有
    發表于 03-26 14:35 ?0次下載
    TB3123 - PIC?單片機的窗口<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    什么是看門狗定時器?為何看門狗定時器如此重要?

    的MCU故障可能無意中使看門狗定時器喪失功用,因此整合看門狗可能不會總是按預期的方式運作。同樣地,雖然軟件以內部看門狗能夠偵測所有凍結或停機的方式編寫,但是,采取額外的步驟以冗余方式監
    的頭像 發表于 08-29 08:13 ?2.4w次閱讀
    什么是<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>?為何<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>如此重要?

    看門狗定時器的相關問題和實驗說明

    看門狗的作用: 看門狗定時器是一個計數,基本功能是在發生軟件問題和程序跑飛后使系統重新啟動。看門狗計數
    的頭像 發表于 10-06 12:59 ?4657次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的相關問題和實驗說明

    LPC2294看門狗定時器

    看門狗定時器(WDT)特點1.如果不定期重新裝載,會內部重置芯片2.調試模式3.由軟件啟動,但是需要硬件復位或者看門狗復位/中斷才能禁用。4.如果看門狗啟用了之后,采用不正確或者不完全
    發表于 12-04 10:36 ?8次下載
    LPC2294<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    一文詳解微控制中的看門狗定時器

    本文介紹看門狗定時器,通常縮寫為 WDT,也稱為計算機正常運行定時器或 COP。有外部看門狗設備和內部看門狗功能。本文僅介紹內部
    的頭像 發表于 04-25 17:26 ?5278次閱讀
    一文詳解微控制<b class='flag-5'>器</b>中的<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    內部和外部看門狗定時器的比較

    本文比較了內部(與微處理集成)和外部(基于硬件)看門狗定時器(WDT)的優缺點。它解釋了內部看門狗定時器易于實現,但容易發生故障。MAXQ
    的頭像 發表于 04-03 11:15 ?3169次閱讀

    抄作業!看門狗定時器必備知識

    Air201在模組內部集成了硬件看門狗,今天就一起來聊聊~ 本文將帶你了解看門狗的工作原理、應用架構、定時時間設置、軟硬件看門狗的區別,以及看門狗
    的頭像 發表于 12-30 14:44 ?270次閱讀
    抄作業!<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>必備知識
    最好百家乐的玩法技巧和规则| 竞彩比分| 百家乐官网的看路技巧| 太阳城亚州| 百家乐官网单机版的| 德州扑克大盲注| 百家乐官网计划软件| 瑞丰娱乐城| 百家乐技术论坛| 百家乐官网平台信誉排名| 怎样玩百家乐的玩法技巧和规则| 百家乐官网投注窍门| 大发888娱乐城游戏lm0| 丽都百家乐官网的玩法技巧和规则 | 百家乐官网必赢法冯耘| 大发888特惠代码| 免费百家乐官网计划| 宜黄县| 百家乐最佳打| 澳门百家乐官网骗人| 大发888支付宝代充| 百家乐官网真人百家乐官网皇冠| 竞彩比分| 香港百家乐马书| 真钱百家乐官网大转轮| 大发888bet下载| 百家乐官网官网网址| 灵寿县| 太阳城菲律宾官网| 百家乐体育nba| 百利宫百家乐官网现金网| 大发888娱乐城手机| 百家乐看不到视频| 澳门百家乐官网下三路| 虹乐棋牌是真的吗| 百家乐singapore| 百家乐官网7scs娱乐网| 丰合国际网上娱乐| 百家乐百博| 乐中百家乐官网的玩法技巧和规则 | 大发888怎么玩才赢|