首页天道酬勤西门子TP1200屏做报表记录,看门狗定时器的作用及原理

西门子TP1200屏做报表记录,看门狗定时器的作用及原理

张世龙 05-13 12:18 11次浏览

作为电子工程师,你一定对看门狗计时器很熟悉。 今天和大家一起整理看门狗的知识,菜鸟们好好学习,每天一点一点进步,大神们看了这篇文有什么不够,请发表自己的意见!

看门狗是什么?

看门狗计时器(WDT,Watch Dog Timer )是单片机的一部分,在单片机程序的调试和运行中具有重要意义。 其主要功能是在发生软件故障时通过重置设备(如果软件未清零设备)来重置单片机。 也可以用于将设备从休眠模式或空闲模式唤醒。

有一个形象的比喻。 看了之后,你可能对看门狗有更深的了解。

看门狗其实就是这么回事

例如,假设你在小山周围裸奔。 ——程序将按计划执行。

每次经过山脚下的某个地方,你都会给大狼狗一块肉骨头。 ——喂狗。

跑,你跑在路上,跑到了不该走的山顶。 ——程序飞走了。

或者,在裸奔的途中睡着了。 ——程序死机。

这个时候,那只狼狗,一直没得到食物,饿疯了,解开链子追你来了。 ——看门狗计时器溢出了。

你对此很吃惊,脚底发软,咕噜咕噜地从山上滚下来。 起来一看,靠着,又回到了出发点。 所以又只能从头开始裸奔了。 ——程序复位。

看门狗这东西是加强可靠性用的

看门狗不会随着主芯片时钟的停止而停止。 是独立的计时器单元。 程序中使用看门狗寄存器进行设定时,系统接通电源后启动。 如果在指定周期内看门狗寄存器未复位,系统将重新启动。

该设计为系统提供了极高的可靠性,即使系统死锁也能及时自动恢复系统。

看门狗的原理

硬件手表利用计时器来监视主程序的运行。 也就是说,在主程序运行过程中,必须在计时器时间到来之前重置计时器。 发生死循环时,或者PC指针没有返回时。 那么到了定时时间就重置单片机。

软件手表技术的原理与此相同,只是用软件的方法实现的。 毕竟以51系列而言,我们知道51单片机有两个计时器,可以用这两个计时器来监测主程序的运行。 可以为T0设定一定的计时器时间,在发生计时器中断时给变量赋值。 该变量在主程序开始执行时已有初始值。 在此设定比主程序的执行时间小的计时器值。 这样,在主程序的末尾判断变量值,如果值如预期那样变化,则T0中断正常,如果没有变化,则复位程序。 T1为了监视主程序的动作,在T1中设定一定的定时器时间,通过主程序进行复位。 如果在一定时间内无法复位,T1的计时器中断将使单片机复位。

在此,T1的定时时间设定得比主程序的执行时间大,使主程序具有一定的富馀。 T0计时器中断子程序监视T1的中断是否正常。 现在,周期为T0监视T1,T1监视主程序,主程序又监视T0,保证了系统的稳定运行。

51系列有专用的看门狗计时器,对系统的频率进行分频计数,计时器溢出时会引起复位。看门狗可以设定溢出率,也可以单独作为计时器使用。

看门狗使用注意

大多数51系列单片机都有看门狗,如果看门狗没有计时器清除,就会引起复位。 这可以防止程序飞行。 设计人员应当清楚看门狗的溢出时间,并决定在适当的时候清除看门狗。 看门狗也不能太频繁。 否则会浪费资源。 程序正常运行时,软件每隔一定时间(小于计时器的溢出周期)对计时器赋予置位数,可以预防溢出中断导致的错误复位。

系统软件"看门狗"的设计思路

1 .看门狗计时器T0的设定。 在初始化块中设定T0的动作方法,打开中断和计数功能。 系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的10次方)-1=65 535,T0输入计数频率为. Fosc/12,溢出周期为(65 535 1)/1=65536 ()

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

3 .设计应对t0溢出的中断服务程序。 该子程序向对应于T0的中断向量地址(000BH )写入“无条件迁移”命令,将计算机拖回到整个程序的第一行,重新初始化单片机,得到正确的执行顺序后

现在的绝大多数mcu都有看门狗

看门狗的主要操作一般为3种:启动、触发和停止.启动

是指设置初始参数并调用中断以使看门狗开始工作;触发是指在看门狗的记数器的数值减为零以前对其恢复初始值;停用是指调用中断停止使用看门狗.在程序中应选择适当的地方对其进行触发选择时有许多讲究,程序比较大时会比较难确定,但使用它确实有很多优点不能说不容易用所以就不用

 

几乎所有的嵌入式操作系统都有看门狗任务,它的主要功能是防止系统死掉或者陷入死循环。也就是每个一定的时间就会执行看门狗任务,以reset系统.

 

喂狗的方式举个例子:在os任务调度的时候顺便触发一下看门狗,这样一旦任务长时间停止调度系统就会复位,这个功能实现起来很简单,并不需要应用程序多操什么心。

 

看门狗在启动的时候一般都会设置超时时间,超时时间按照一定的频率递减,减到零就复位,所以得定时将一个计时器更新到最大,防止减小到零。超时时间初始化时一般都是固定好的。

 

看到这里,你是否已经对看门狗定时器有个比较深入的了解了呢?欢迎大家留言发表高见,大家一起交流学习!

看门狗定时器的作用及原理,看门狗定时器程序 看门狗定时器程序,定时器定时时间怎么算