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

    文章

    6812

    浏览量

    147668
  • ESD
    ESD
    +关注

    关注

    46

    文章

    1818

    浏览量

    171181
  • 电磁干扰
    +关注

    关注

    36

    文章

    2049

    浏览量

    104749
收藏 人收藏

    评论

    相关推荐

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

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

    看门狗定时器改进 IoT 系统的稳健性

    通常可分为简易定时器、窗口式定时器和智能电子三种类型。 看门狗可作为硬件和软件用于微控制器内部,也可作为硬件用于
    发表于 04-07 15:08

    如何在嵌入式系统运用看门狗定时器

    一种应用这种装置的方法,是透过来自处理的数字讯号输出(GPIO)回馈给外部看门狗定时器看门狗输入(WDI),如图1所示。TPS3851便是具有整合
    发表于 08-11 09:29

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

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

    请问看门狗定时器控制器的主要功能是什么?

    看门狗定时器(WDT)控制器的主要功能是什么?
    发表于 12-14 06:39

    看门狗定时器是什么

    简介  看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。看门狗定时器(WDT,Watch Dog Timer)实际上是一个计数
    发表于 07-13 06:34

    看门狗定时器

    看门狗定时器(WDT:Watch Dog Timer)实际上是一个计数。 一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。 如果程序
    发表于 07-21 07:35

    看门狗定时器概念

    目录1、看门狗定时器(WDT,Watch Dog Timer)2、嘀嗒定时器3、普通定时器和高级定时器开发板为洋桃一号开发板,MCU为STM
    发表于 07-30 07:52

    阐述STM32L011微控制器定时器的参数配置

    微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器、基本
    发表于 07-30 07:11

    看门狗定时器(WDT)特点

    导致复位/中断5.指示看门狗复位的标志6.可编程的32位定时器与内部预分频。7.可选择时间段,从(T PCLK x 256 x 4)到(TPCLK x 232 x4)应用看门狗的目的是在微控制
    发表于 08-02 07:36

    怎样去使用看门狗定时器

    看门狗定时器是什么?看门狗定时器有何应用?怎样去使用看门狗定时器呢?
    发表于 11-09 06:44

    看门狗定时器的相关资料分享

    看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。在很多单片机中都内置了看门狗看门狗本身是一个定时器
    发表于 01-24 07:24

    看门狗定时器WDT是什么

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

    看门狗定时器模块的特点包括哪些呢

    模块可配置为间隔定时器,并可在选定的时间间隔内生成中断。看门狗定时器模块的特点包括:八个软件可选时间间隔看门狗模式间隔定时器模式密码保护访问
    发表于 02-15 07:35

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

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