基于单片机“看门狗”抗干扰技术的探讨
摘要:在实验中开发出来的各种控制小系统经常会出现运行不稳定、死机或停不了机即程序跑飞等现象,这是由于恶
劣的工业现场环境如大功率感性负载的干扰所至。基于单片机的“看门的”技术能解决这个问题。本文将通过应用
实例,分别介绍用软件和硬件来实现“看门狗”技术。为技术人员在单片机开发过程中出现的干扰现象提供一个有效
的解决思路。
关键词;AT89C2051;CD4060;单片机抗干扰;“看门的”技术
目前在工业生产中广泛使用工业控制单片机AT89 C2051
来进行生产设备的智能控制,由于在工业现场存在着大功率
感性负载的干扰,因此单片机在运行过程时,很容易出现死
机、停不了机即程序突然跑飞等非正常的不安全工作情况。
为了解决这个问题,一般分别采用软件或硬件(CD4060)的手
段来实施“看门狗”技术,从而实现单片机安全、可靠的工作。
本文将通过应用实例分别对软件“看门狗”和硬件“看门狗”
技术作一个探讨。
1软件“看门狗”技术的实现
当系统的CPU部件受到干扰信号的作用时,将使系统失
控。最典型的故障是破坏程序计数器PC的状态值,导致程序
在地址空间内“乱飞”,或者陷人死循环。本文重点讨论“看门
狗”技术对此类干扰现象的消除功能。
软件“看门狗”技术的原理是因为在一般情况下,程序跑
飞或者陷人“死循环”时,中断功能可能不受影响,CPU仍然像
正常运行时一样响应和执行中断子程序。这时如果仅在中断
子程序中插有“喂狗”指令,则“看门狗”定时器始终处于正常
无溢出状态,无法对已经混乱的单片机系统重新启动以回复
到正常运转状态。若将“喂狗”指令单独插在主程序中显然又
是不够的。我们可以将“喂狗”指令分解开来,将取反指令变
成置位和清零两种指令(即SETB P1.0和CLR Pl. 0 ),将置位
指令插在主程序中(利用T1监控),而将清零指令插在中断子
程序中(利用功监控),这样将两者结合起来,缺一不可。因
此无论是主程序运行失效,还是中断请求失效,都不能完成完
整的“喂狗”指令,从而造成“看门狗”动作,确保了系统安全
可靠地工作。
具体操作方法是:利用51系列单片机中TO和T1这两个
定时器来做“看门狗”定时器,对主程序的运行进行监控。给
TO设定固定的定时时间,当产生定时中断的时候对一个变量
进行赋值,而这个变量在主程序运行的开始已经有了一个初
值,要求设定的定时值要小于主程序的运行时间,这样在主程
序的末端对变量的值进行判断:,如果变量的值发生了预期的
变化,就说明功中断正常,如果没有发生变化则判定程序“跑
飞”,立即使程序复位。再将TI用来监控主程序的运行,给
T1设定一个固定的定时时间,在主程序中对其进行复位。如
果不能在一定的时间里对其进行复位,T1的定时中断就会使
单片机复位。在这里T1的定时时间要设的大于主程序的运
行时间,给主程序留有一定的裕量。而T1的中断正常与否再
由功定时中断子程序来监视。这样就构成了一个循环:1D监
视T1,T1监视主程序,主程序又来监视1D,从而保证系统的稳
定运行。参考程序如下:
ORG 000011
UMP START
ORG OOOBH
LIMP INTTO
ORG 003011
START, MOV SP, #3011
MAIN ; NOP
NOP
SETB Pl. 0
NOP
NOP
SETB EA
NOP
SETB ETD
LJMP MAIN
附件: 您所在的用户组无法下载或查看附件
搜索更多相关主题的帖子:
单片机论文 单片机论坛