用CD4060制作看门狗报警电路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用CD4060制作看门狗报警电路
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
原理图:
CD4060芯片特性
1) 电压范围宽,应该可以工作在3V~15V,输入阻抗高,驱动能力差外,跟74系列的功能基本没有区别;
2) 输入时,1/2工作电压以下为0,1/2工作电压以上为1;
3) 输出时,1=工作电压;0=0V;
4) 驱动能力奇差,在设计时最多只能带1个TTL负载;
5) 如果加上拉电阻的话,至少要100K电阻;
6) 唯一现在使用的可能就是计数器,CD4060的计数器可以到14级二进制串行计数。
以AT89C51为例:
看门狗电路由14位二进制计数器CD4060和三极管VT1、VT2等组成。
Vout接单片机AT89C51的引脚输出口P1.7,由单片机的CPU向看门狗电路发送喂狗信号——正脉冲,在两个正脉冲间隔内,P1.7保持为低电平(此功能要结合软件才能实现,相应的软件设计在下面介绍)。我们知道,单片机AT89C51的I/O口带灌电流负载的能力比较大,每个引脚低电平时的吸入电流为20 mA,带拉电流负载的能力却很小,实测情况是,每个引脚高电平时的输出电流仅25μA,现在P1.7口被设计成带拉电流负载的方式,为了提高P1.7口带拉电流负载的能力,所以,电路中设置了上拉电阻R3。
14位二进制计数器CD4060的计数脉冲由其内部振荡器和外接阻容元件R1、R2、C1组成的电路产生,振荡周期为
T0SC=2.2×R1×C1=0.22 ms
振荡器产生的计数脉冲(矩形波)可以直接引出,同时还可以从CD4060的10个输出端Q4~Q10和Q12~Q14得到不同分频系数的方波输出,各方波输出信号的周期如表1所示。这样,如果CD4060得不到CPU通过P1.7口发送来的喂狗信号——正脉冲,则CD4060的输出端Q14在1.8S内将产生一个完整周期的方波信号,而且低电平在前,高电平在后,其高电平经三极管VT1、VT2处理后形成单片机AT89C51的复位信号,使单片机AT89C51复位。由此可见,单片机AT89C51正常工作时,只要在0.9S内从P1.7口送出一个正脉冲,便可及时清零看门狗,输出端Q14就不会产生定时溢出信号,从而使看门狗电路对单片机系统不起作用。并且,从CD4060的10个输出端Q4~Q10和Q12~Q14可以得到不同周期的方波信号,经三极管VT1、VT2处理后形成单片机系统的复位信号,可以适应不同用户应用程序,从而该硬件看门狗电路可以适应不同的单片机应用系统。
对MCS-51系列的单片机而言,它所需要的复位信号是高电平宽度大于2个机器周期的正脉冲,例如,单片机的时钟脉冲频率为12 MHz时,则所需要的复位信号高电平宽度为2μs以上就可以了,而由上面的分析可知,CD4060的Q14输出的是高电平宽度为0.9 s的方波,如果让它直接作为单片机的复位信号,则单片机的复位时间势必在0.9 s以上,这样尽管可以使程序跑飞的单片机复位,但是显然没有做到尽快地引导跑飞的程序到正确的轨道来,如果这样做的话,对于某些单片机应用系统而言可能带来非常严重的后果。图1中的三极管VT1、VT2及其周围阻容元件构成波形转换电路,把较宽的正脉冲变换为较窄的正脉冲,从而较好地解决了上述的问题。三极管VT1、VT2构成的2级直接耦合放大器作为缓冲器使用,它是CD4060的输出端Q14的灌电流负载,C2、R8是微分电路。
经分析后不难看出,电路中的R7、R8、C2还具有单片机上电复位的功能。
2 上电复位与看门狗信号复位的不同处理过程
由于程序跑飞很可能会造成一些随机破坏事件,对某些系统而言,希望尽可能从断点处恢复运行,因此,有必要妥善解决跑飞的程序回复后的处理。
单片机应用系统上电时,上电复位电路会使得单片机处于复位状态,这一般称为冷启动,这种情况下,单片机处于复位状态表现为:
(1) 程序计数器PC的值为0000H。
(2) I/O口(P0、P1、P2、P3(1))为FFH状态,即准双向I/O口的输入状态。
(3) 堆栈指示器SP=07H,即堆栈底为片内RAM的07H单元。
(4) 除上述状态外,所有特殊功能寄存器SFR的有效位均为0。
(5) 上电复位时,由于是重新供电,RAM在断电时数据丢失,上电复位后为随机数。
单片机应用系统的程序跑飞时,看门狗产生复位信号,也会使得单片机处于复位状态,这一般称为热启动,这种情况下,单片机处于复位状态表现为:
(1) 程序计数器PC的值为0000H。
(2)I/O口(P0、P1、P2、P3)为FFH状态,即准双向I/O口的输入状态。
(3)堆栈指示器SP=07H,即堆栈底为片内RAM的07H单元。
(4)除上述状态外,所有特殊功能寄存器SFR的有效位均为0。
(5)复位信号使得单片机处于复位状态时,片内RAM中的数据不受影响。
比较上面两种单片机复位方式可知,上电复位与信号复位不同之处是第(5)点,这正是我们区分两种单片机复位方式的根据。具体方法是设置上电复位标志,例如,片内RAM的7EH 单元和7FH单元分别为(7EH)=18H且(7FH)=81H时表示已完成上电复位。上面两种单片机复位方式都使得程序从0000H入口。然而,上电复位后要进行系统的完全初始化,而程序跑飞回复后往往要求保留一些过程参数,不允许重新初始化,而且还要对一些关键参数进行检查与修复。
因此,要根据不同情况进行不同的初始化处理。图2是上电复位与程序跑飞回复初始化处理框图。0000H是MCU的复位人口,程序启动后,首先判断是上电复位(冷启动),还是程序跑飞回复(热启动)。上电复位是开机操作,要建立上电标志,并进行系统的完全初始化。程序跑飞回复应进行相关资源的检查与修复,以防止系统运行出错。另外,根据系统特点,需要保留一些过程数据,不得进行完全初始化。
3 喂狗指令插入原理与位置
单片机应用系统运行正常时,单片机的CPU应在0.9 s内从P1.7口送出一个正脉冲,使看门狗及时清零,也就是说,CPU要在0.9 s以内执行一次下面的喂狗程序段(喂狗指令):SETBP1.7
NOP
NOP
CLRP1.7
喂狗程序段插入到用户应用程序之中。单片机系统的用户应用程序一般由循环结构的主程序和中断服务子程序组成。首先,应尽可能准确地估算各应用功能模块的运行时间,估算运行时间的时候,应考虑程序可能被中断,应把中断程序的运行时间也计算在内。然后,在若干个应用功能模块的运行时间小于0.9 s的两个应用功能模块之间插入上面的喂狗程序段。