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

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

3天内不再提示

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

科技观察员 来源:allaboutcircuits 作者: 斯蒂芬·科利 2022-04-25 17:26 次阅读

本文介绍看门狗定时器,通常缩写为 WDT,也称为计算机正常运行定时器或 COP。有外部看门狗设备和内部看门狗功能。本文仅介绍内部看门狗。

什么是看门狗定时器?(一个非常规的类比)

看门狗定时器是一种专门的定时器模块,可帮助微处理器从故障中恢复。如果看门狗定时器到达其计数周期的末尾,它将重置整个处理器系统。为了防止这种情况,处理器必须执行某种类型的特定操作来重置看门狗。因此,可以配置看门狗定时器,使其仅在发生处理器故障时到达其计数周期的末尾,并且通过强制系统复位,看门狗定时器帮助处理器从故障模式中逃脱并继续正常运行。

为了可视化 WDT 的功能,我有一个非常规的类比供您考虑。

《迷失》是一部广受欢迎的电视剧,讲述了飞机失事后一群幸存者被困在一个神秘的岛屿上。其中一个子情节涉及的角色认为他们必须在屏幕上的计数器变为 0 之前输入一串简短的数字,否则世界将结束。

当输入系列时,计数器重置并再次开始倒计时。输入这一系列数字只是心理实验的一部分,还是世界的命运岌岌可危,这永远不清楚。找出答案的唯一方法是不输入数字。角色们可以自由外出、寻找食物、游泳——但他们必须及时返回以重置计数器。从计算机的角度来看,接收到正确的输入意味着外面有一个人在正常操作并为柜台服务。没有收到正确的输入表明有问题。

看门狗定时器的运行方式与Lost中的计算机系统类似。微控制器的其余部分是压力过大的角色,他们可以自由地做任何事情,但必须定期为计数器提供服务,否则微控制器会复位(又名世界末日)。正确操作的软件和硬件将在固定的时间内为看门狗提供服务,而有故障的软件或硬件可能不会。

内部看门狗定时器的类型

有两种类型的看门狗,非窗口和窗口。如果服务计数器延迟,这两种类型都会导致复位。

如果服务发生得太快,窗口看门狗也会导致复位。此图显示了使用递增计数器的看门狗的时序。一些看门狗使用递减计数器,但原理是一样的。

poYBAGJmaViAEjP7AABfbaoTPlk166.jpg

看门狗定时器的时序

对于非窗口或窗口看门狗,在计数器达到上限值之前的任何服务都会重置计数器并且一切正常。窗口式看门狗会添加一个下限并创建一个计数窗口。下限和上限之间的任何服务都可以。这里是图表的详细描述。

A - 启动后不久,程序使用计数器的上限初始化看门狗并启用计数。对于窗口式看门狗,还设置了下限。

B和C - 软件在计数器达到上限之前成功地为计数器提供服务,对于窗口式看门狗,在下限之后。服务后,计数器复位为 0 并再次开始向上计数。一切都好。

D - 程序不服务计数器并且计数达到上限。看门狗复位微控制器。

D 到 E - 微控制器启动并初始化并启用看门狗。

E - 看门狗开始计数。

F - 程序在计数器达到上限之前为计数器提供服务,对于窗口看门狗,在下限之后提供服务。计数器重置为 0 并重新开始计数。一切都好。

G - 程序在计数达到窗口看门狗的下限之前为计数器提供服务。对于没有下限的非窗口看门狗,没有复位,计数器变为 0 并重新开始计数。对于窗口看门狗,微控制器被复位。

看门狗的细节差异很大。他们可以向上或向下计数。他们使用不同的时钟。他们有不同的上限和下限选择。以下部分介绍了许多特性,但只是一个概述。

看门狗初始化

初始化看门狗可能很棘手。例如,一些看门狗会在微控制器启动时自动启用。

如果您不使用看门狗,则必须在启动时包含代码以禁用它。我目前使用的看门狗就是这种情况。如果我的程序需要运行超过一秒,我必须禁用看门狗或更改窗口设置!

一些看门狗只允许对控制寄存器进行一次写入作为安全功能。此功能可防止失控软件在初始化后更改设置。如果您在具有此功能的看门狗中使用默认设置,请确保覆盖默认设置,即使位值相同。这“锁定”了价值观并保持了安全性。

如果您使用 C 编程,请注意在启动代码中可能会初始化看门狗,它在您的 main() 函数之前运行。开发环境有时会自动包含此代码,作为运行标准 C 程序的一部分。此代码设置内存和中断向量表。在您的启动代码中查看看门狗的操作并根据您的系统要求进行修改。

窗口设置

看门狗可以是非窗口的和窗口的。单个计时器通过将窗口的下限作为选项来提供两种类型是很常见的。窗口的大小随看门狗的不同而不同。

我目前使用的看门狗的下限固定在上限的75%。另一个看门狗可以选择上限的 75%、50%、37.5% 或 25%。还有一个看门狗独立设置上限和下限。关于如何选择上限也存在很大差异。

服务 AKA 看门狗定时器复位

定期重置看门狗计数器称为“服务”定时器。不同的看门狗定时器将有不同的服务要求。所有服务要求都使用在失控软件执行期间不太可能发生的操作。

我目前使用的看门狗需要两次写入“服务寄存器”,其值为 0x55,后跟 0xAA。如果将 0x55 或 0xAA 以外的任何值写入服务寄存器,则任何时候微控制器都会立即复位。

另一个看门狗需要对值为 0xAAAA 的服务寄存器进行单次写入。似乎对数字 0xA 和 0x5 以及它们交替的 1010 和 0101 位模式很着迷。一个计时器通过使用具有幻数 0x5743 的单次写入来对抗这种趋势。

睡眠模式

睡眠和其他低功耗模式使事情复杂化。如果处理器进入睡眠状态并停止执行,看门狗应该怎么做?看门狗时间应该静止吗?

当处理器进入和退出深度睡眠时,我当前使用的看门狗会在初始计数处停止并重新启动。这个话题很复杂,当微控制器使用低功耗模式时,您需要研究看门狗的操作。

渐进式反应

微控制器的完全复位可能过于苛刻。一些看门狗具有允许渐进式响应的功能。

例如,看门狗可能在复位之前的某个时间有一个中断请求选项。此功能允许中断服务程序在看门狗继续计数时修复或记录问题。如果中断程序不能让事情回到正轨,就会发生复位。

看门狗战略

我使用术语“策略”来确定在哪里设置看门狗的时间限制。最简单的策略是使用非窗口看门狗,其超时时间远长于服务看门狗之间程序的任何可能执行时间。我将其称为“重置按钮”策略,因为它取代了按下重置按钮的人。医疗设备或制造机器人等关键系统的策略需要更快的响应。

看门狗策略可以考虑许多因素:

系统是否使用可预测的主循环或基于实时操作系统的复杂多任务结构?

看门狗重置是否应该启动一系列自动系统检查?

看门狗是诊断和解决问题的一系列尝试的最后阶段吗?

您想在系统启动时测试看门狗以及其他检查吗?

看门狗策略是一个复杂的话题,并且非常依赖于应用程序。

在复位微控制器之前,看门狗在复位后的状态寄存器中设置一个位。通常该位与其他复位状态(例如掉电复位位)一起存储。测试看门狗复位位应该是策略的一部分。

至少,在启动期间测试该位并做一些事情来指示问题。否则,故障可能会被忽视,尤其是不常见的故障。例如,在显示屏上输出消息或点亮 LED

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

    关注

    10

    文章

    560

    浏览量

    70789
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114712
  • WDT
    WDT
    +关注

    关注

    0

    文章

    19

    浏览量

    17683
收藏 人收藏

    评论

    相关推荐

    详解看门狗定时器

    看门狗定时器由独立的1 Mhz 片内振荡驱动。这是VCC = 5V 时的典型值。请参见特性数据以了解其他VCC 电平下的典型值。通过设置看门狗定时
    发表于 09-02 16:40 3993次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>详解</b><b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    详解看门狗定时器

    详解看门狗定时器
    发表于 01-24 17:27

    详解看门狗定时器

    详解看门狗定时器
    发表于 02-06 10:06

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

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

    看门狗定时器WDT是什么

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

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

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

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

    看门狗定时器(WDT,Watch Dog Timer)是单片机的个组成部分,它实际上是个计数
    发表于 05-23 09:14 7705次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的设计、工作原理及<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>

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

    ---使用具有整合看门狗功能的处理。许多微控制器如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次阅读

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

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

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

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

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

    微控制器通常用于电源瞬变、电磁干扰 (EMI) 和静电放电 (ESD) 丰富的恶劣环境。总线损坏和电磁放电引起的程序损坏可能导致微处理执行错误的指令。在这些环境
    的头像 发表于 03-01 14:14 926次阅读

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

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

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

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