看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

看门狗问题及相关实验

现今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,MICroChip的PIC列,Atmel的AT89SXX系列和HoLTEk公司的Htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。MSP430系列单片机是美国德州仪器公司(TI)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。实验电路如图1所示。

试验程序清单:

#include
void main(void){
p1dir l=0x0f; //设置p1.2-.p1.0为输出
for(;;){
volaTIle unsigned int i;
wdtctl=wdtpw+wdtcncl;
//复位wdt
piout==0x0t;
i=5000;
do(i–)
while(i!=0);
}}

上述实验启动后,如果程序正常运行,LED会闪烁。缺省时,MSP430的看门狗是允许状态,所运行的程序会不断地访问看门狗。理论上,这个系统是不会发生启动失败的,因为即使启动失败,看门狗也应该在数百毫秒内启动,复位整个系统。基于这种思想,对单片机的复位进行测试。K2断开,用K1连续产生。Reset信号,测试看门狗使系统重启的成功率。K2闭合,则reset端高电平,理论上K1不能有效产生复位脉冲,观察看门狗是否起作用。

实验结果与分析

实验结果如下:K2断开,连续开关K1,上电重启系统,平均155次失败1次(LED不闪),即看门狗失效概率0.6%;K2闭合,连续开关K1,平均18次失败1次(LED不闪),且一旦失败,将连续失败下去,看门狗无效率占到了约5.5%。另外,当采用同样具有内置看门狗的其他系列单片机替代实验中的MSP430,启动程序段作相应修改时,实验结果仍大致相同,这说明具有内置看门狗的单片机面临的问题是相同的。经分析可能有如下原因:

①由于看门狗的时钟不独立,计数时钟与系统为同一分频链路,因此看门狗不能在系统出现问题时有效运作。

②由于时钟可用软件设置,启动失败时,开机时钟可能处于空档,没有时钟看门狗不能生效。

③有些看门狗需要用软件设置或启动,因此启动失败后,初始化程序没有激活,CPU可能跳转到随机代码,使看门狗被禁止。这样的看门狗是需要有可靠的上电复位作保证的,因此,从理论上讲,原设计存在着不合理性。基于上述分析,采用片外看门狗专用芯片TPS3823由独立的分频振荡电路提供计数脉冲。实验电路如图2所示。

上述电路中,TPS3823输出定时溢出信号给Reset端。程序段中,CPU要不断地通过I/O口输出喂狗信号,使看门狗计数器清零。在此电路中重复上述试验中K1、K2的相同动作,系统重启成功率达到100%。

未来的内置看门狗必须有独立可靠的时钟。系统上电后,看门狗即为允许状态,无需软件设置,它只能被外部硬件跳线或内部熔丝(fuse)所禁止。目前,如果要求设计可靠性较高的嵌入式系统,外置看门狗是必须考虑的。内置看门狗的另一问题是系统复位后,程序应判断是由Reset端正常上电复位,还是程序跑飞看门狗所致,由此确定现场数据是否应该保留。这也是在看门狗应用中所应考虑的。

http://www.elecfans.com/emb/danpianji/20180305643184.html

https://blog.csdn.net/zjy900507/article/details/78797866

http://m.elecfans.com/article/694427.html

电子器件系列七:看门狗相关推荐

  1. STC89系列单片机看门狗的使用及应用程序

    转载:STC89系列单片机看门狗的使用及应用程序 "看门狗"概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程 ...

  2. 关于ARM Cortex a 系列的看门狗定时器

    关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识. 刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧. 看门狗定时器 ...

  3. GD32F4xx系列的看门狗配置

    GD32F4xx系列的独立看门狗配置: 查看GD32F4的独立看门狗有一个32K的独立时钟源,适用于粗略计时 不同的预分频系数下最大和最小的超时时间: 看门狗超时时间计算公式: T=Count / ( ...

  4. Amlogic A311D 驱动分析系列(一)-看门狗驱动分析

    本系列文章基于Amlogic A311D SDK中的驱动,将我之前阅读代码的一些收获进行总结,算是学习笔记吧. 1.dts配置 先看dts调用的是看门狗的哪个驱动 wdt: watchdog@0xff ...

  5. C8051关闭看门狗汇编语言,STC系列单片机 看门狗一旦启动,就无法关闭

    [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode#include #include"STC12C5AXX.h" ...

  6. STM32 你不知道的看门狗细节

    看门狗简介 你知道什么是看门狗吗?看门狗,实际上可以说就是一个简单的定时器功能,而这个定时器有一个输出端,可以输出复位信号.一般的情况下,看门狗这个定时器是给让一个比较大的初始值,然后从这个值开始递减 ...

  7. STM32F103五分钟入门系列(十三)独立看门狗IWDG

    参考:STM32F103五分钟入门系列(十三)独立看门狗IWDG 作者:自信且爱笑' 发布时间:2021-07-31 19:50:28 网址:https://blog.csdn.net/Curnane ...

  8. STM32F1笔记(七)WWDG窗口看门狗

    窗口看门狗与独立看门狗最大的不同是中断,窗口看门狗拥有一个提前唤醒中断.也就是在快要产生复位的前一段时间(T[6:0]=0x40)来提醒需要进行喂狗,否则将复位.因此当窗口看门狗的计数器值减到0x40 ...

  9. STM32系列 STM32F4xx 独立看门狗(IWDG)

    2019独角兽企业重金招聘Python工程师标准>>> 0 前言     由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存数据混乱,会导致程序指针错误,不在程序区 ...

最新文章

  1. Unity从头到尾无代码游戏制作学习教程
  2. ListT 循环修改其中的数据
  3. linux机器启动pg数据库命令,Linux下创建Postgresql数据库的方法步骤
  4. 【 c#】实现form窗口中,通过按钮实现tabPage的切换
  5. 【转】ubuntu,你改变了我的人生
  6. RedHat虚拟机安装VMware Tools
  7. Core Audio音频基础概述
  8. html5 漂亮的左右布局_2020年庚子年风水布局,2020年家居风水布局汇总 | 影楼
  9. 少了unicon-tools是不行滴
  10. onmounted vue3_Vue2和Vue3使用层面上的区别总结
  11. 步进电机速度不够怎么办?
  12. html title 不显示_SEO入门教程二:学习最基础的html代码知识
  13. Create a virtualbox Based CentOS 6 OpenStack Cloud Image
  14. Windows API数据类型表
  15. DODAF2.0之能力视角如何落地
  16. 下载IEEE 论文模板的方法
  17. java restsharp_RestSharp使用总结
  18. 【bat命令-在for循环中赋值给局部变量后再输出变量时提示“ECHO 处于关闭状态。”或者“ECHO 处于打开状态。”】
  19. YYLabel 自动布局 不换行 numberOfLines无效
  20. 阶段二第一部分:第2章 Nginx进阶与实战

热门文章

  1. Linux部署甜糖星愿服务教程
  2. Discuz!教程之修改帖子下方“来自: XX手机客户端”的链接地址
  3. Promiscuous Mode
  4. 魔兽世界转服务器显示待定,魔兽世界角色转移条件 魔兽世界角色转移待定怎么取消...
  5. 基于DirectShow视频及图片捕获软件的开发(写的非常详细)在后几篇博客 我会更新
  6. 计算机中程序指的是什么意思,gpedit.msc是什么意思?电脑中的一个程序。。
  7. windows--port常用和不常用端口
  8. 在线教育软件未来之路
  9. Android 10 vivo,适配速度首次超过华为!vivo X27尝鲜Android 10,这一次真不一样
  10. java中Map集合使用