单片机看门狗(Watchdog)的工作原理及其应用
52单片机看门狗函数

52单片机看门狗函数52单片机是一种常用的微控制器,它具有强大的功能和广泛的应用领域。
在许多嵌入式系统中,看门狗函数是一项重要的功能,用于保证系统的稳定性和可靠性。
看门狗函数是一种用于监控系统运行状态的机制,它可以在系统出现故障或死锁时自动重启系统,从而避免系统长时间处于不正常的状态。
52单片机的看门狗函数是一种硬件看门狗,通过定时器和中断来实现。
在使用52单片机的看门狗函数时,首先需要初始化看门狗定时器,并设置定时器的计数值。
通过设置计数值,可以控制看门狗定时器的溢出时间,并决定系统在多长时间内需要喂狗一次。
在系统正常运行时,需要定期喂狗,以防止看门狗定时器溢出。
喂狗的方法是在规定的时间内定时发送喂狗信号,这样看门狗定时器会被重置,系统会继续正常运行。
如果系统出现故障或死锁,无法定时喂狗,看门狗定时器就会溢出。
一旦看门狗定时器溢出,会触发看门狗中断,系统将自动重启,从而恢复到正常的工作状态。
通过使用52单片机的看门狗函数,可以有效地提高系统的可靠性和稳定性。
在一些对系统可靠性要求较高的应用中,如工业控制、医疗设备等,看门狗函数是必不可少的一项功能。
看门狗函数的实现原理是通过定时器和中断来实现的。
定时器用于计时,当计时器溢出时,会触发中断。
通过设置定时器的计数值,可以控制看门狗定时器的溢出时间。
在52单片机中,看门狗函数的实现方法是通过设置看门狗定时器的计数值,并在计时器溢出时触发中断。
在中断服务程序中,可以进行相应的处理,如重启系统等。
为了保证看门狗函数的正常运行,需要注意以下几点:1.合理设置看门狗定时器的计数值,以满足系统的实际需求。
计数值过小会导致系统频繁重启,计数值过大会导致系统响应速度下降。
2.在系统正常运行时,需要定期喂狗,以防止看门狗定时器溢出。
喂狗的方法可以是定时发送喂狗信号,也可以是在关键的代码段中插入喂狗指令。
3.在中断服务程序中,需要进行相应的处理,如重启系统等。
同时,还需要注意中断服务程序的优先级和执行时间,以免影响系统的正常运行。
看门狗技术与单片机应用系统抗干扰措施单片机

看门狗技术与单片机应用系统抗干扰措施- 单片机1 引言随着工业自动化水平的不断提高,以MCS-51单片机为核心所构成的单片机应用系统得到了广泛应用,如水泥生料配料系统、电子皮带秤给料把握、各种现场智能测量仪表等。
但其工作现场条件恶劣,干扰多而且幅度大,严峻影响着应用系统的正常运行与牢靠性,甚至使应用系统计算机进入死循环而瘫痪,通常称为程序“跑飞”。
由此引出的计算机牢靠性问题,始终是人们争辩的重要课题。
接受屏蔽、滤波、退耦、隔离、接地等措施能有效地提高系统的抗干扰力量,但很难在强干扰发生时消退因程序“跑飞”而死机状况的发生。
“看门狗”技术能在程序“跑飞”时实现自我诊断并使系统恢复运行,是单片机应用系统抗干扰的有力武器。
当然,它是以系统的硬、软件设计开发的合理和成熟为条件的,否则将掩盖系统设计开发过程中的人为缺陷与不足。
2 “看门狗”技术及其对干扰的抑制2.1 程序“跑飞”对系统的攻击(1)程序计数器PC的值被攻击,成为一随机拼合的数据。
(2)系统设置的把握字与标志参数因“跑飞”后可能被访问而被攻击。
(3)数据存储器RAM内容被攻击等。
2.2 “看门狗”技术“看门狗”源于“Watch dog、Watch dog timer”,或称定时监视技术,其本质是一可复位的定时器,其原理如图1、2所示。
图1 原理框图图2 原理波形图在程序正常运行时,计算机通过程序以周期T1向定时器发送脉冲触发定时器(或通过软件以T1为周期初始化定时器),而由定时脉冲把握的定时器动作时间为T2(T3),在T1<T2(T3)时,定时器不会动作,处于休眠状态。
当计算机受到强干扰等作用破坏后,程序计数器PC中内容不再是程序的正确代码,而可能为一随机拼合的数据,这样会使取指不正确,必定导致程序运行混乱“跑飞”,进入死循环而死机。
反过来由于程序脱离正常循环,也使定时器触发脉冲丢失,在经过T2(T3)时间后,“看门狗”定时器被激活,向CPU发出Reset 信号使其复位,将“跑飞”的程序从PC=0000H开头,纳入正常轨道。
51单片机的看门狗

“看门狗”概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watch dog)。
加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。
通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。
看门狗定时器寄存器(WDT_CONTR)STC单片机看门狗定时器寄存器在特殊功能寄存器中的字节地址为E1H,不能位寻址,该寄存器用来管理STC单片机的看门狗控制部分,包括启停看门狗、设置看门狗溢出时间等。
单片机复位时该寄存器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。
其各位的定义如表4.2.1所示。
表1看门狗定时器寄存器(WDT_CONTR)EN_WDT:看门狗允许位,当设置为“1”时,启动看门狗。
看门狗介绍

看门狗(watchdog)"看门狗"(watchdog) ,又叫 watchdog timer,是一个定时器电路,是在由单片机构成的微型计算机系统中,为了防止单片机的工作受到来自外界电磁场的干扰,造成程序的跑飞,陷入死循环,而设计的用于监测单片机程序运行状态的芯片。
若程序程序的跑飞,陷入死循环,正常运行将会被打断,由单片机控制的系统将无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
◆基本原理在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
看门狗可使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
◆分类和使用方法看门狗可分为硬件看门狗和软件看门狗两种。
硬件看门狗:硬件看门狗的主体是一个定时电路,并由被监控CPU提供周期性“喂狗”信号,对定时器清零(俗称“清狗”)。
CPU正常工作时,由于能定时“清狗”,看门狗内的定时器不会溢出。
当CPU出现故障,则不能继续提供“清狗”信号,使得看门狗内定时器不断累加而溢出,从而触发一个复位信号对CPU进行复位,使CPU重新工作。
常用的看门狗芯片有ADM706/MAX706,为了使硬件看门狗更可靠,使用起来更灵活,当今主流的设计方式都是看门狗芯片配合逻辑器件(CPLD)来使用。
此时,看门狗有三种清狗方式:1)正常工作时,CPU输出WDI信号清狗;2)CPU关闭看门狗(不输出WDI信号),由CPLD输出WDI清狗信号,此方法不推荐使用,容易出问题,有的设计规范中是严禁CPU关闭看门狗的;3)CPU挂死后,CPLD主动输出WDI清狗信号一段时间,如果CPU仍未恢复正常,则不再继续清狗,等待看门狗芯片内部定时器溢出后输出复位信号对CPU进行复位。
看门狗实验

看门狗实验1. 为什么要看门狗?看门狗的原理是什么?外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。
假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。
一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。
2. 看门狗的功能1)作为常规功能可以产生中断,通用的中断用16bit定时器2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时(PCLK)钟的的复位信号我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。
下图为看门狗的电路示意图PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。
看门狗定时器记数值的计算公式如下:t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。
单片机的看门狗

引言概述:
单片机的看门狗(二)是在第一篇文章中讨论的单片机看门狗的延伸,本文将深入探讨单片机看门狗的使用场景、工作原理、设置参数、使用注意事项以及常见问题等方面的内容。
单片机看门狗是一种重要的硬件设备,在系统稳定性和可靠性方面起到关键作用,因此了解和掌握单片机看门狗的相关知识是非常有必要的。
正文内容:
一、单片机看门狗的使用场景
1.1实时系统
1.2长时间运行的设备
1.3类似于操作系统的应用
二、单片机看门狗的工作原理
2.1看门狗定时器
2.2看门狗计数器
2.3看门狗复位信号
三、单片机看门狗的设置参数
3.1看门狗定时器的预分频和计数器
3.2看门狗复位信号的触发条件
3.3看门狗溢出时间的设置
四、单片机看门狗的使用注意事项
4.1错误的看门狗设置
4.2看门狗溢出时间过短
4.3看门狗溢出时间过长
五、单片机看门狗的常见问题及解决方法
5.1看门狗复位问题
5.2看门狗延时问题
5.3看门狗定时器设置问题
总结:
单片机看门狗是一项重要的硬件设备,它在保证系统稳定性和可靠性方面起到关键作用。
本文从使用场景、工作原理、设置参数、使用注意事项以及常见问题等方面深入探讨了单片机看门狗的相关知识。
在实际应用中,我们应该根据具体情况,合理设置单片机看门狗的参数,避免错误的配置导致系统异常。
同时,我们也要注意单片机看门狗的溢出时间,不要设置过短或过长,以免影响系统的正常运行。
通过深入了解和掌握单片机看门狗的相关知识,我们可以更好地应用它,提高系统的稳定性和可靠性。
看门狗的作用和原理

看门狗的作用和原理看门狗(Watchdog)是一种用于监控计算机系统正常运行的硬件或软件装置,其作用是在系统出现故障或崩溃时,能够自动重启系统,以保证系统的稳定性和可靠性。
看门狗的原理是通过定时检测系统的运行状态,一旦系统出现异常情况,如死机、卡死等,看门狗会及时检测到并进行相应的处理,以恢复系统的正常运行。
看门狗通常被应用在一些对系统稳定性要求较高的场合,比如工业控制系统、嵌入式系统、服务器等。
它可以监控系统的运行状态,一旦系统出现异常,就能够自动进行重启,从而减少系统因故障而停机造成的损失。
下面将详细介绍看门狗的作用和原理。
首先,看门狗的作用主要体现在系统的监控和保护方面。
它可以定时对系统进行检测,确保系统一直处于正常运行的状态。
一旦系统出现异常,比如程序死锁、死循环、硬件故障等,看门狗就能够及时检测到,并进行相应的处理,比如重启系统,以恢复系统的正常运行。
这样可以有效地保护系统不因故障而停机,提高系统的可靠性和稳定性。
其次,看门狗的原理是基于定时检测系统的运行状态。
它通常会设置一个定时器,定时对系统进行检测。
如果系统在规定的时间内没有收到看门狗的喂狗信号,就会认为系统出现了故障,从而触发相应的处理措施,比如重启系统。
这种原理可以有效地监控系统的运行状态,及时发现并处理系统的异常情况。
总的来说,看门狗在计算机系统中起着非常重要的作用,它可以保护系统的稳定性和可靠性,减少系统因故障而停机造成的损失。
通过定时检测系统的运行状态,一旦系统出现异常,看门狗就能够及时进行处理,确保系统能够持续稳定地运行。
因此,在对系统稳定性要求较高的场合,如工业控制系统、嵌入式系统、服务器等,都会广泛地应用看门狗技术,以保证系统的正常运行。
综上所述,看门狗的作用和原理是非常重要的,它可以有效地监控系统的运行状态,保护系统的稳定性和可靠性。
在实际应用中,我们可以根据具体的系统需求,选择合适的看门狗装置或软件,并合理设置参数,以达到最佳的系统保护效果。
看门狗

看门狗(WatchDog)1.看门狗的作用•监测单片机程序的运行状态的芯片•看门狗(WatchDog)是计算机引入的一种专门的复位监控电路。
•一旦MCU运行出现故障,就强制对MCU进行硬件复位,确保MCU安全可靠运行。
复位嵌入式系统在无人值守的时候出现异常导致‘死机’现象看门狗的工作原理•MCU完成一次喂狗操作•在看门狗“饥饿”前等待下次操作•程序异常,喂狗超时,复位单片机•程序正常,狗被喂饱,等待再次喂狗•看门狗芯片和单片机的一个I/O口连接,该I/O口通过程序的控制定时的向看门狗送入高电平(低电平),这一程序分散的放在其他单片机控制程序之间,一旦单片机因为干扰跑飞进入死循环,写看门狗的程序就不能被执行,看门狗就会发出一个复位信号,复位单片机。
喂狗•看门狗就是一个计数器,由于位数有限计数器能够装的数值是有限的(比如8位的最多装256个数,16位的最多装65536个数),从开启看门狗那刻起,他就不停的数机器周期(12个时钟周期),输一个机器周期加1,加到计数器盛不下了(溢出)就产生一个复位信号,重启系统。
•我们在设计程序时,先根据看门狗计数器的位数和系统的时钟周期算一下计满数需要的时间,就是说在这个时间内看门狗计数器是不会装满的,然后在这个时间内告诉他重新开始计数,就是把计数器清零,这就是喂狗。
例子:•8051单片机选用12MHz晶振,一个机器周期为1us,如果看门狗是十六位的,最大计数65536个,那么从0开始计到65535需要65ms,所以我们可以在程序的50ms左右清零一次计数器(喂狗),让他从新从零开始计,再过50ms,再清,---,这样下去只要程序正常运行,计数器永远不会计满,也就永远不会被看门狗复位。
•看门狗都是启动之后就不能被关闭,只能系统复位(重新断电再上电)才能关闭。
看门狗的两个种类一般,看门狗主要是针对在实际应用环境中出现强烈干扰而导致程序意外跑飞的现象将看门狗的使用看为解决程序本身存在BUG导致跑飞的问题是一种误区AT89S52的看门狗定时器(WDT)•WDT由14位计数器和特殊功能寄存器中的看门狗复位存储器(WDTRST)构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机看门狗(Watchdog)的工作原理及其应用
2010年05月16日星期日 23:00
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。
程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。
这个时候,看门狗电路就会由于得不到单片机送来的信号。
便在它和单片机复位引脚相连的引脚上送出一个复位信号。
使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗,又叫 watchdog timer,是一个定时器电路。
一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。
如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。
看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以,在使用有看门狗的芯片时要注意清看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在看门狗定时器定时时间到之前对其进行复位。
如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等。
软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。
我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。
在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。
而T1的中断正常与否我们再由T0定时中断子程序来监视。
这样就够成了一个循环,T0监视T1,T1监
视主程序,主程序又来监视T0,从而保证系统的稳定运行。
51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位。
看门狗可设定溢出率,也可单独用来作为定时器使用。
凌阳61的看门狗比较单一:一个是时间单一;第二是功能在实际的使用中只需在循环当中加入清狗的指令就OK了。
AVR系列中,avr-libc 提供三个API 支持对器件内部Watchdog 的操作,它们分别是:
wdt_reset() // Watchdog 复位
wdt_enable(timeout) // Watchdog 使能
wdt_disable() // Watchdog 禁止
C8051Fxxx单片机内部也有一个21位的使用系统时钟的定时器,该定时器检测对其控制寄存器的两次特定写操作的时间间隔。
如果这个时间间隔超过了编程的极限值,将产生一个WDT复位。
-----------------------------------------------------------------------------------------------------
看门狗使用注意:大多数51 系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。
这可防止程序跑飞。
设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。
清看门狗也不能太过频繁,否则会造成资源浪费。
程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
看门狗运用:看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值。
系统软件"看门狗"的设计思路:
1. 看门狗定时器T0的设置。
在初始化程序块中设置T0的工作方式,并开启中断和计数功能。
系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0输入计数频率为Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2. 计算主控程序循环一次的耗时。
考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。
系统设置"看门狗"定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。
主控程序的每次循环都将刷新T0的初值。
如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。
3.设计T0溢出所对应的中断服务程序。
此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。
看门狗也有对计算机危害之处。
如果用看门狗软件加密并发送到环形网络内(如学校机房),将会造成每发送一次,两台电脑同时中毒一天,还会持续一周蔓延。
如:运行速度超慢,桌面背景变换,画图软件要黑色出绿色等等。
还会造成每台电脑少几个文件。