基于CD4060的硬件看门狗技术
发布时间:2008/5/28 0:00:00 访问次数:1634
多年来,围绕着单片机应用系统的抗干扰技术以及其受干扰后的自我恢复,在硬件和软件等方面积累了多种方法,这些方法相互结合,配合使用,有效地提高了系统的可靠性与抗干扰性。
看门狗(watch dog timer,简称为wdt)技术就是最常见的抗干扰技术。看门狗wdt有硬件看门狗和软件看门狗之分,无论是硬件看门狗还是软件看门狗实际上都是一个可清零的定时计数器。如果该定时计数器用mcu芯片外部电路实现,则为硬件看门狗,如果该定时计数器用mcu芯片内部定时器/计数器实现,则称为软件看门狗。
本文介绍硬件看门狗技术,并给出了实用的基于cd4060的硬件看门狗电路。
1 硬件看门狗电路及其工作原理
它是针对工程项目所设计的一个实用电路,并且该电路实际使用情况良好。下面介绍电路的组成及其工作原理。
看门狗电路由14位二进制计数器cd4060和三极管vt1、vt2等组成。
单片机at89c51的p1.7口设计成输出口,由at89c51的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。
多年来,围绕着单片机应用系统的抗干扰技术以及其受干扰后的自我恢复,在硬件和软件等方面积累了多种方法,这些方法相互结合,配合使用,有效地提高了系统的可靠性与抗干扰性。
看门狗(watch dog timer,简称为wdt)技术就是最常见的抗干扰技术。看门狗wdt有硬件看门狗和软件看门狗之分,无论是硬件看门狗还是软件看门狗实际上都是一个可清零的定时计数器。如果该定时计数器用mcu芯片外部电路实现,则为硬件看门狗,如果该定时计数器用mcu芯片内部定时器/计数器实现,则称为软件看门狗。
本文介绍硬件看门狗技术,并给出了实用的基于cd4060的硬件看门狗电路。
1 硬件看门狗电路及其工作原理
它是针对工程项目所设计的一个实用电路,并且该电路实际使用情况良好。下面介绍电路的组成及其工作原理。
看门狗电路由14位二进制计数器cd4060和三极管vt1、vt2等组成。
单片机at89c51的p1.7口设计成输出口,由at89c51的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。