看门狗

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。
TMS320F2812中涉及到看门狗的寄存器有:系统控制与状态寄存器SCSR,此寄存器包括看门狗覆盖位和看门狗中断使能/无效位。一般系统复位时,看门狗模块使能。
F2812的看门狗模块有关寄存器:
看门狗计数器寄存器(WDCNTR)
15~8:Reserved       
7~0:WDCNTR 包含WD计数器的当前值,8位计数器以WDCLK速率连续增加。如果计数器溢出,看门狗会初始化复位状态。如果用一个有效的组合写WDKEY寄存器,那么计数器复位成0。
看门狗复位密钥寄存器(WDKEY)
15~8:Reserved
7~0:WDKEY  紧跟着OXAA写入OX55将清除WDCNTR位。写入任何其他值则会立即使看门狗复位。
看门狗控制寄存器(WDCR)
15~8:Reserved
7:WDFLAG 看门狗复位状态标志位;
6:WDDIS 向该位写1将使看门狗模块无效;写其他值立即复位。
5~3:无论何时执行写此寄存器的操作,用户必须总是将这些位写成1,0,1。写其他值立即复位。
2~0:这些位相对于OSCCLK/512来配置看门狗计数器的时钟频率(WDCLK)
多采用电压监控或者看门狗电路,以保证系统的稳定运行。采用硬件复位的方式,可以通过按键开关在任意时刻进行系统复位,系统复位后程序重新开始运行。但有些系统中有人机界面显示,主机在机箱内部,人工复位很不方便,所以采用界面方式的软件复位。
TMS320F2812(以下简称2812)是TI公司2000系列的新型DSP芯片,具有32位低功耗定点处理器,最高主频150 MHz,有强大的操作能力和快速的中断响应处理能力。片内有18 K字高速RAM,128 K字的可加密Flash ROM。片上还集成了丰富的片内外设.有SPI、SCI、eCAN和McB—SP等多个串口外围设备,16通道的12位模数转换器(ADC),2个事件管
理器(EVA、EVB),56个独立的可编程、多用途通用I/O口(GPIO)。该DSP芯片集成了大量工业控制领域应用的外设接口,能大大简化电路设计,同时它也具有足够的处理能力,是应用于控制领域的一款高性能DSP处理器。
开关柜测温装置下面介绍三种实现方法。
1 硬件看门狗带喂狗端口
看门狗芯片一般都带有电压监控和复位输出控制,同时还带有WDI的喂狗引脚,需要系统不停地给芯
片脉冲,以保证看门狗芯片不向系统输出复位信号。这里就出现了第一种软件方式系统复位方法:需要软件复位时就长时间不给狗脉冲,这样看门狗芯片的复位引脚就输出1个系统需要的复位电平使系统复位。图1是看门狗芯片图。图2是MAX706与2812的接口电路。MAX706芯片内部看门狗定时器的输入WDI可以接到2812的引脚上,2812不断向WDI输入脉冲(周期≤1.6 s),WDO输出的低电平接到2812的XRS端,使系统复位并重新启动系统。另外当系统电源降到检测点时也使系统复位。当系统接收到复位命令后,停止对WDI引脚的输出,使芯片的RESET控制系统复位。
端口初始化程序如下:
片不带喂狗端口
方式1中所采用的是带WDI端口的看门狗芯片,但有些芯片是不带WDI端口的,这时看门狗用于电源检测,当低于设定电压时,输出复位信号,使系统复位。第二种方法也采用2812的引脚配合方式,但不需要时时刻刻喂狗。图3为所采用的看门狗芯片MAX708。图4为MAX708与2812的接口电路。
2812的GPIOFl4-XF引脚在上电复位后输出高电平,之后该信号被锁存。当2812收到系统复位命令后,控制GPIOFl4一XF引脚输出低电平使系统复位。
女性快乐器端口初始化如下:
3 软件看门狗复位方式
这种方式是利用2812自带的软件看门狗方式,2812的看门狗功能框图如图5所示。
通过框图可以看出2812的软件看门狗有两种方式:WDINT的中断唤醒方式和WDRST方式。这里是要求系统复位,而WDINT是实时监控系统的,并不能按要求实现软件复位,所以需将WDRST信号接到XlRS上,这样通过程序配合就能实现控制系统复位。2812系统上电初始化需要一定的时间,所以在初始化时先关闭看门狗,等系统初始化完成后,再打开看门狗。
这里利用while(1)的死循环等待看门狗的计数器超过设定值,然后WDRST信号输出低电平;而WDRST接到XRS上,所以整个系统复位,重新开始执行程序。
看门狗程序如下:
结 语
第一种和第二种方式基于硬件的实现,更加可靠些,第三种方式则可以节约电路板的空间和成本。需要注意的是,采用软件看门狗时调用喂狗程序的间隔不能大于设定值。
void EnableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0028; //0010 1000
EDIS;
}//使能看门狗,只有在SCSR寄存器中的WDOVERRIDE位置1时,WDCR.WDDIS才可以更改
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0068;//0110 1000
EDIS;
节能减排设备}//使看门狗无效
js防水涂膜数据波
杨梅采摘机void KickDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x0055;
SysCtrlRegs.WDKEY = 0x00AA;
EDIS;
}//喂狗使看门狗的计数器清零

本文发布于:2024-09-21 23:35:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/163857.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:看门狗   复位   系统   方式   寄存器   计数器   芯片   输出
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议