0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用安全微控制器看门狗定时器

星星科技指导员 来源:ADI 作者:ADI 2023-03-01 14:14 次阅读

安全微控制器系列(DS5000FP、DS5001FP、DS5002FP和相关模块)集成了内部看门狗定时器,以防止代码执行错误。看门狗定时器使用微控制器也使用的高精度晶体振荡器。这消除了对RC振荡器的需求,同时提供了更高的精度。

概述

微控制器通常用于电源瞬变、电磁干扰 (EMI) 和静电放电 (ESD) 丰富的恶劣环境中。总线损坏和电磁放电引起的程序损坏可能导致微处理器执行错误的指令。在这些环境中,看门狗定时器是一种有用的外设,可以帮助捕获和重置已“失控”的微控制器。

看门狗定时器是一个简单的倒数定时器,用于在特定时间间隔后重置微处理器。在正常运行的系统中,软件将定期“宠爱”或重新启动看门狗定时器。重新启动后,看门狗将开始计时另一个预定间隔。当软件或设备无法正常运行时,软件不会在超时之前重新启动看门狗计时器。当看门狗定时器超时时,将导致微控制器复位。如果系统软件设计正确且没有硬件故障,则重置将导致系统再次正常运行。重置条件必须是“安全”状态。例如,让磁条读卡器的复位状态启用写入磁头是不明智的。

许多系统都是使用外部看门狗定时器设计的。安全微控制器系列通过集成内部看门狗定时器,无需外部元件。通过在微控制器内移动看门狗定时器,可以减少系统中的器件数量,从而提高整体系统可靠性。看门狗定时器可以利用微控制器使用的高精度晶体振荡器,而不是大多数独立看门狗定时器使用的不精确的RC振荡器。看门狗定时器的操作与微控制器无关,除非通过定时访问程序专门解决。失控的微控制器意外禁用看门狗定时器的可能性小于 1/7.2 ×1016.本应用笔记介绍了安全微控制器看门狗定时器的特性和用途。

看门狗定时器的一般用途

看门狗定时器的主要应用是作为系统监视器来检测和复位“失控”微处理器。当程序执行出错时,它将无法正确执行重新启动看门狗的代码。在这种情况下,看门狗定时器将超时并导致微控制器复位。在正确设计的系统中,复位将纠正错误。

无论看门狗定时器的功能如何,都存在无法通过复位来纠正的某些故障。例如,看门狗定时器无法防止或检测数据存储器的损坏。除非数据损坏影响程序流,或者采取了一些额外的措施,否则数据损坏不会导致监视器超时。当然,自诊断软件可以编写成这样一种方式,即重新启动看门狗取决于数据存储器的验证。虽然许多应用程序实现了此类数据验证方案,但它超出了本文档的范围。

应该记住,看门狗定时器无法立即检测到故障。根据定义,监视程序计时器必须达到其超时间隔的末尾,然后才能重置处理器。系统设计人员应注意执行错误指令和看门狗定时器复位之间可能发生的最大时间间隔。

放置重新启动说明

在安全微控制器系列中,看门狗定时器由主系统时钟驱动。超时间隔固定为 122,800 个计算机周期(1,473,600 个外部时钟周期)。当达到超时时,将进行重置。表1显示了与不同晶体频率相关的复位时间间隔。

时钟频率 超时间隔
16.0000兆赫 92 毫秒
14.7456兆赫 100 毫秒
11.0592兆赫 133 毫秒
7.73280兆赫 191 毫秒
5.52960兆赫 266 毫秒
1.84320兆赫 800 毫秒

主要问题是看门狗定时器复位命令(设置 RWT 位)在软件中的位置。最理想的方法是在系统软件的主回路中有一个位置,定期重新启动看门狗计时器。通过主程序循环所需的时间必须小于超时间隔,否则设备将在正常运行期间自行复位。然而,在某些系统中,程序流不够线性,无法放置单个看门狗定时器复位功能。代码中应放置多个复位功能,对应于最长的软件路径。

通常,系统需要知道是否发生了看门狗定时器复位。WTR 位 (PCON.4) 将在发生这种情况时进行设置,如果发生系统故障,软件可以在复位序列的早期对此进行测试。如果是这样,系统可能会决定进入“安全”模式并提醒用户注意错误情况。

看门狗复位示例

下面显示了一个简短的程序,说明了看门狗定时器的初始化和基本功能。它说明了定时访问功能,该功能可防止意外修改看门狗控制位。定时访问操作是必须按顺序一起执行的一系列步骤;否则,访问将失败。示例程序显示了用于重新启动监视器并启用其重置的定时访问。有关定时访问操作的更多详细信息,请参阅安全微控制器用户指南。受定时访问过程保护的看门狗定时器位是使能看门狗定时器复位 (EWT;PCON.2) 并重新启动看门狗定时器 (RWT;IP.7) 位。

; WD_RST.ASM Program
;
; This program demonstrates the use of the watchdog timer.
; When running, the program counts on port 1 to indicate the device is
; running and periodically resetting the watchdog timer. After counting
; to 16, it stops resetting the watchdog timer, simulating a system fault.
;
; The program begins by checking to see if the WTR bit is set. If so, the
; reset was caused by the watchdog timer, and the program will execute
; the FAULT subroutine. Port 1 is set to F0h to indicate this condition.
; If the WTR bit is not set, the reset was caused by another source and
; execution should continue normally.
;************************************
RWT    EQU    0BFh            ;Reset Watchdog Timer bit
TA     EQU    0C7h            ;Timed Access Register
PCON   EQU    87h             ;Power Control Register
ACC    EQU    0E0h            ;Accumulator
P1     EQU    090h            ;Port 1

       ORG    00h             ;Reset Vector
       SJMP   START

;************************************
       ORG    080h            ;Program starts at 80h in this example.
START: MOV    A, PCON         ;If reset was caused by watchdog timeout,
       JB     ACC.4, FAULT    ; (WTR bit =1) execute fault subroutine.

;**********************************
;A normal power-on reset has occurred. Start initialization sequence.
       MOV    P1, #00h        ;Clear P1 to signal start of program.

;Watchdog timer initialization sequence
       MOV    TA, #0AAh       ;First restart the Watchdog timer
       MOV    TA, #055h       ; using timed
       SETB   RWT             ; access.

       MOV    TA, #0AAh       ;Next enable the Watchdog timer reset
       MOV    TA, #055h       ; function using timed
       ORL    PCON, #04h      ; access.

;**********************************
;Main program loop. This simulates a program that is operating
; correctly and then goes awry. After the program has counted to 16
; on Port 1 it will skip over the watchdog timer reset function. This
; will simulate a fault and allow the watchdog timer reset to be asserted.
;**********************************
MAIN:  MOV    R1, #0FFh       ;Create a delay loop. This simulates
LOOP1: MOV    R2, #0FFh       ; a device actually "doing something."

LOOP2: JB     P1.4, SKIP_WD_RST   ;Have we been through loop 16 times?

       MOV    TA, #0AAh       ;Watchdog timer reset. In a user application it
       MOV    TA, #055h       ; should be placed at strategic locations
       SETB   RWT             ; where it will be executed periodically.

SKIP_WD_RST:
       DJNZ   R2, LOOP2
       JNZ    R1, LOOP1

       INC    P1              ;Increment counter.
       SJMP   MAIN            ;Go back to main program loop.
;************************************
;Watchdog timeout fault. This subroutine would normally have special
; routines to be executed in the event of a system fault. In this example,
; it disables the watchdog reset and sets Port 1 to F0h to indicate a fault.
; In a real application, this routine could either clear the fault and
; restart the software, or signal a fault and halt further operation.
;************************************
FAULT: MOV    P1, #0F0h       ;Signal a fault
       MOV    TA, #0AAh       ;Disable watchdog timer reset
       MOV    TA, #55h        ; using timed
       ANL    PCON, #0FBh     ; access.
       SJMP   $               ;Halt further operation.

总结

任何使用看门狗作为监视器的设计都必须考虑许多因素。确定超时期限后,必须分析系统软件以确定看门狗重新启动指令的位置。为了进行有效的设计,应将监视程序重新启动的次数保持在最低限度,并应考虑错误执行重新启动的可能性。如前所述,某些系统软件过于复杂或依赖于数据,无法确保看门狗重新启动涵盖所有软件流路径。这可能要求可能需要自诊断软件方法。如果存在预期的故障机制,例如周期性EMI突发或电源毛刺,则看门狗超时应考虑此时间段。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7548

    浏览量

    151365
  • ESD
    ESD
    +关注

    关注

    49

    文章

    2030

    浏览量

    172947
  • 电磁干扰
    +关注

    关注

    36

    文章

    2312

    浏览量

    105407
收藏 人收藏

    评论

    相关推荐

    基于安全微控制器看门狗定时器

    本应用指南描述了采用Dallas半导体公司安全微控制器系列产品的看门狗定时器的特性和用途
    发表于 09-23 10:47

    看门狗定时器硬件外设参考设计

    内部看门狗定时器属于硬件外设,几乎是所有单片微控制器的一个组成部分,可与板载外设和系统时钟进行交互(图 1)。 默认情况下,内部看门狗定时器
    发表于 07-23 09:32

    看门狗定时器WDT是什么

    看门狗定时器WDT,是微控制器运行状态的监控系统,在微控制器内部程序跑飞后,微控制器控制功能将
    发表于 02-15 07:07

    内部与外部看门狗定时器的比较

    摘要:本文对内部(集成在处理内部)看门狗定时器(WTD)与外部(基于硬件) WDT的优势和劣势进行了对比。内部看门狗便于设计,但容易失效。MAXQ2000
    发表于 05-02 10:34 4656次阅读

    看门狗定时器的设计、工作原理及看门狗定时器的操作

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数,一般给看门狗一个数字,程序开始运行后看门狗
    发表于 05-23 09:14 7736次阅读
    <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 6703次阅读

    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>

    什么是看门狗定时器?为何看门狗定时器如此重要?

    ---使用具有整合看门狗功能的处理。许多微控制器如MSP430F5529系列具有整合看门狗的功能。它的价值在于非常容易实作,且不需要使用其他IC。然而,有一个重要的告诫:由于程序代码
    的头像 发表于 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>如此重要?

    PCB设计技巧:您是否应在电路板设计中包含外部看门狗定时器

    看门狗定时器(WDT)是一种电子功能,用于检测嵌入式系统中的异常并重置微控制器。它通常由预先加载的计时组成,计时倒计时到零。当预加载的
    的头像 发表于 07-25 11:41 3209次阅读

    LPC2294看门狗定时器

    导致复位/中断5.指示看门狗复位的标志6.可编程的32位定时器与内部预分频。7.可选择时间段,从(T PCLK x 256 x 4)到(TPCLK x 232 x4)应用看门狗的目的是在微控制
    发表于 12-04 10:36 8次下载
    LPC2294<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    一文详解微控制器中的看门狗定时器

    本文介绍看门狗定时器,通常缩写为 WDT,也称为计算机正常运行定时器或 COP。有外部看门狗设备和内部看门狗功能。本文仅介绍内部
    的头像 发表于 04-25 17:26 5143次阅读
    一文详解<b class='flag-5'>微控制器</b>中的<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    看门狗定时器电路的功能和操作及局限性解决方案

    看门狗定时器提高了基于微控制器的系统的可靠性。但是,它们并非万无一失。在本设计解决方案中,我们回顾了看门狗定时器电路的功能和操作,探讨了它们
    的头像 发表于 12-19 15:03 4402次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>电路的功能和操作及局限性解决方案

    使用高速微型看门狗定时器

    在恶劣环境中使用的高速微控制器应用的设计人员将使用看门狗定时器来防止软件失控。DS80C320高速微控制器集成了看门狗
    的头像 发表于 02-09 11:54 939次阅读

    内部和外部看门狗定时器的比较

    本文比较了内部(与微处理集成)和外部(基于硬件)看门狗定时器(WDT)的优缺点。它解释了内部看门狗定时器易于实现,但容易发生故障。MAXQ
    的头像 发表于 04-03 11:15 3044次阅读

    AXI时基看门狗定时器(WDT)概述

    XilinxLogiCORE IP AXI4-Lite时基看门狗定时器(WDT)是一个32位外设,提供32位自由运行时基和看门狗定时器
    的头像 发表于 10-16 11:10 1190次阅读
    AXI时基<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>(WDT)概述