首页>>科技 >>内容

看门狗定时器的工作原理和作用,看门狗定时器的原理及操作解读

发布时间:2024-01-02 11:20:13编辑:温柔的背包来源:

很多朋友对看门狗定时器的工作原理和作用,看门狗定时器的原理及操作解读不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

看门狗定时器的工作原理和作用,看门狗定时器的原理及操作解读

作为电子领域的电子工程师,你必须熟悉看门狗定时器。今天和大家一起整理看门狗的知识,新手们好好学习,每天进步一点点。大神们如果看到本文有什么不足之处,欢迎发表意见!什么是看门狗?

看门狗定时器(WDT)是单片机的组成部分,在单片机程序的调试和运行中具有重要意义。其主要功能是当软件出现故障时,通过复位设备(如果软件没有复位设备)来复位微控制器。它还可以用来将器件从睡眠或空闲模式中唤醒。

有一个很形象的比喻。看完之后,你可能会对watchdog有更深入的了解。这就是看门狗的意义所在。例如,你正在一座小山周围裸奔。——程序按照预定的过程执行。每经过山脚某个地方,就给一只大狼狗一根肉骨头。——喂狗。跑着跑着,你过了马路,跑到了你不该去的山顶。——程序跑了。或者,你在裸奔的路上睡着了。——程序崩溃了。

这个时候,大狼狗,因为还没喂饱肚子饿了,挣脱了铁链来追你。——看门狗定时器溢出。你被它吓到了,脚软了,咯咯地从山上下来了。起来看一看。妈的,我们又回到起点了。于是只好从头再来一次裸奔。——程序重置。

看门狗用于增强可靠性。看门狗不会随着主芯片的时钟而停止。它是一个独立的计时单元。如果在程序中使用并设置看门狗寄存器,它将在系统通电后启动。如果看门狗寄存器没有在规定的时间内复位(也就是常说的喂狗),系统就会重启。

这种设计为系统提供了高可靠性,即使系统死锁,也能及时自动恢复系统。看门狗的原理硬件看门狗是用一个定时器来监控主程序的运行,也就是说在主程序运行过程中,我们要在预定的时间之前重置定时器。如果出现无限循环,或者PC指针无法返回。然后,当时间到时,微控制器将被复位。

软件看门狗技术的原理与此类似,但都是通过软件实现的。我们以51系列为例。我们知道51单片机中有两个定时器,所以可以用这两个定时器来监控主程序的运行。

我们可以为T0设置一定的定时时间,在定时中断发生时给一个变量赋值,这个变量在主程序运行开始时有一个初始值。这里我们要设置的计时值小于主程序的运行时间,这样在主程序结束时判断变量的值。如果值按预期变化,则表示T0中断正常,如果没有变化,则程序复位。

对于我们用来监控主程序运行的T1,我们为T1设置了一定的定时时间,并在主程序中将其复位。如果在一定时间内无法复位,T1的定时中断会使单片机复位。

这里,T1的定时时间应该设置得比主程序的运行时间长,给主程序留有一定的余量。T1的中断是否正常由T0的定时器中断子程序监控。这样就形成了一个循环,T0监控T1,T1监控主程序,主程序监控T0,保证了系统的稳定运行。

51系列有专门的看门狗定时器,通过分频来统计系统频率。当定时器溢出时,将导致复位。看门狗可以设置溢出率,也可以单独作为定时器使用。看门狗用途:大部分51系列微控制器都有看门狗,当看门狗不定期清零时会导致复位。这可以防止程序失控。设计人员必须知道看门狗的溢出时间,以决定何时清除看门狗。清理看门狗不能太频繁,否则会浪费资源。

程序正常运行时,软件每隔一段时间(小于定时器的溢出周期)设置一次定时器,可以防止溢出中断造成的误复位。系统软件“看门狗”1的设计思想。看门狗定时器T0的设置。在初始化块中设置T0的工作模式,开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的10次方)-1=65535,T0的输入计数频率为。fosc/12,溢出周期为(65535 1)/1=65536(s)。

2.计算主控程序一个周期的时间消耗。考虑到系统各功能模块及其循环次数,本系统主控程序的运行时间约为16.6 ms。系统将看门狗定时器T0设置为时间30 ms(T0的初始值为65 536-30 000=35 536)。主程序的每个周期都会刷新T0的初始值。如果程序进入“无限循环”,并且T0的初始值在30 ms内没有刷新,看门狗定时器T0将溢出并申请中断。

3.设计T0溢出对应的中断服务程序。这个子程序只需要一条指令,就是在T0对应的中断向量地址(000BH)写‘无条件转移’命令,把计算机拖回整个程序的第一行,重新初始化单片机,得到正确的执行顺序。目前,大多数MCU都有看门狗。看门狗主要有三种操作:启动、触发和禁用。

启动是指设置初始参数,调用中断使看门狗开始工作;触发是指在看门狗的计数器的值减少到零之前,恢复它的初始值;停用是指调用中断来停止使用看门狗。在程序中选择合适的地方触发有很多讲究,程序大的时候会很难确定,但是使用它确实有很多好处,因为不好用所以不使用。

几乎所有的嵌入式操作系统都有看门狗任务,其主要作用是防止系统死亡或陷入无限循环。也就是说,看门狗任务会每隔一定时间执行一次。以重置系统喂狗的方式为例:在os任务调度时触发看门狗,这样一旦任务长时间停止,调度系统就会重置。这个函数实现起来非常简单,不需要应用程序太多的关注。

看门狗启动时一般会设置一个超时,超时会以一定的频率递减,递减到零时会复位。因此,有必要定期将计时器更新到最大值,以防止其归零。超时初始化通常是固定的。

以上知识分享希望能够帮助到大家!