【MCU】单片机看门狗工作原理
背景
在单片机运行中,可能会遇到电磁场等恶劣环境干扰失控,造成程序进入死循环,程序跑飞(死机)等意外故障,程序的正常运行被打断,系统无法继续运行,陷入停滞状态,发生不可预料的后果。此时可通过按下复位按钮,强制系统复位。但更理想的实现是通过一套监控系统,实时监视MCU运行状态,在运行异常时,使系统摆脱故障状态。看门狗(Watchdog)技术能够解决这一问题。
工作原理
看门狗定时器(Watch Dog Timer, WDT)是MCU的一个组成部分,是一个计数器,其基本原理是先给计数器设定一个数值(溢出值),程序开始运行后,看门狗定时器开始计数,程序正常运行时,会周期发出指令将计数器置零(喂狗),重新开始计数,而如果长时间没有清零,计数器增加到设定值(定时器溢出),计数器会认为程序出现了异常,强制系统复位。
分类
看门狗又分硬件看门狗和软件看门狗。
- 硬件看门狗又叫外部看门狗,外部定时器电路的输出连接到电路的复位端,程序周期性的对定时器清零(俗称‘喂狗’)。
- 软件看门狗(又叫内狗)原理上一样,只是将外部定时器用内部定时器代替,可以简化硬件电路设计,但可靠性差,如内部定时器自身故障就无法检测到系统异常。
注意事项
大多数51系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
设计思路
51单片机系统看门狗的设计思路:
- 看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统晶振频率Fosc = 12MHz,T0为16位计数器,最大计数值为65535,机器周期Tcy = 12 / Fosc = 1μs,即T0输入计数频率1μs,溢出周期为65535μs。
- 计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置"看门狗"定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将刷新T0的初值。如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。
- 设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。
【MCU】单片机看门狗工作原理相关推荐
- 单片机看门狗工作原理
刚学习单片机的萌新都听说过单片机看门狗,但是对于其工作原理并不是很清楚,今天这篇文章将为大家介绍单片机看门狗工作原理,一起来了解一下吧! 一.单片机看门狗是什么 在由单片机组成的微型计算机系统中,单片 ...
- stm32看门狗工作原理
一.为什么需要看门狗? 在MCU微型计算机系统中,MCU运行程序很容易受到外界电磁场的干扰,从而造成程序运行错误甚至造成跑飞现象,从而陷入死循环,程序的正常运行被打乱,从而造成不可预料的严重后果,于是 ...
- MCU独立看门狗 vs 窗口看门狗
关注+星标公众号,不错过精彩内容 素材来源 | STM32 微信公众号 | 嵌入式专栏 早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作.为了避免这个问题,后期的MCU在内部集成了看门狗的 ...
- STC15单片机-看门狗介绍
什么是看门狗 在工业控制/ 汽车电子/航空航天等需要高可靠性的系统中,为了防止"系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作",通常是引进看门狗,如果 ...
- 大佬给总结的单片机看门狗详解很有用
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- STC89系列单片机看门狗的使用及应用程序
转载:STC89系列单片机看门狗的使用及应用程序 "看门狗"概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程 ...
- 单片机搭建环境烧录方法_单片机仿真器的工作原理解析
仿真器出现的原因 1.早期的单片机内部没有ROM,比如8031.8032,这种单片机只能外部扩展紫外擦除的EPROM存储器,就是芯片上带窗口的ROM.紫外擦除的ROM需要用紫外灯照射较长时间(10分钟 ...
- 单片机看门狗c语言,单片机看门狗程序
/*此程序实现单片机"看门狗"WDT的功能*/ #include"p18f458.h" unsignedlongi; /*系统初始化子程序*/ voidinit ...
- 单片机看门狗c语言,单片机看门狗程序 -解决方案-华强电子网
*此程序实现单片机"看门狗"WDT的功能*/ #include"p18f458.h" unsignedlongi; /*系统初始化子程序*/ voidiniti ...
最新文章
- AI公开课:19.04.04李航—字节跳动AILab总监《深度学习与自然语言处理:评析与展望》课堂笔记以及个人感悟
- 福昕PDF阅读器的图章妙用
- 数据结构课上笔记14
- Java笔记02-OOP
- editplus public class自动补齐大括号问题破解
- rtsp协议的视频服务器,RTSP拉流协议视频平台EasyNVR能够接入多少路视频直播流?...
- 〖Android〗屏幕触屏事件录制与回放
- Software Project Management之EVM问题的求解
- Mysql-5.6.x多实例配置
- 黄色量能通达信指标公式!没有未来函数,不加密的副图指标!
- 借助易宝实现Java版网上在线支付
- php源码安装教程宝塔,宝塔版-源码安装教程
- AlphaGo算法最清晰的解读
- SEGGER Embedded Studio 搭建开发环境
- 仿QQ音乐下载歌曲头部导航
- Web漏洞扫描工具(批量脱壳、反序列化、CMS)
- linux安装java(zz)
- 聚类方法的区别解读:各种聚类分析
- 获取京东 Cookie/浏览器获取 Cookie
- python系列——多进程之进程池(pool)