近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。
1 MAX813L芯片及其工作原理
1.1 芯片特点
·加电、掉电以及供电电压下降情况下的复位输出,复位脉冲宽度典型值为200 ms。
·独立的看门狗输出,如果看门狗输入在1.6 s内未被触发,其输出将变为高电平。
·1.25 V门限值检测器,用于电源故障报警、电池低电压检测或+5 V以外的电源监控。
·低电平有效的手动复位输入。
·8引脚DIP封装。
1.2MAX813L的引脚及功能
1.2.1MAX813L芯片引脚排列见图1—1
图1-1 MAX813L芯片
1.2.2各引脚功能及工作原理
(1)手动复位输入端
当该端输入低电平保持140 ms以上,MAX813L就输出复位信号.该输入端的最小输入脉宽要求可以有效地消除开关的抖动。与TTL/CMOS兼容。
(2)工作电源端(VCC):接+5V电源。
(3)电源接地端(GND):接0 V参考电平。
(4)电源故障输入端(PFI)
当该端输入电压低于1.25 V时,5号引脚输出端的信号由高电平变为低电平。
(5)电源故障输出端
电源正常时,保持高电平,电源电压变低或掉电时,输出由高电平变为低电平。
(6)看门狗信号输入端(WDI)
程序正常运行时,必须在小于1.6 s的时间间隔内向该输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。若超过1.6 s该输入端收不到脉冲信号,则内部定时器溢出,8号引脚由高电平变为低电平。
(7)复位信号输出端(RST)
上电时,自动产生200 ms的复位脉冲;手动复位端输入低电平时,该端也产生复位信号输出。
(8)看门狗信号输出端
正常工作时输出保持高电平,看门狗输出时,该端输出信号由高电平变为低电平。
2 电路设计
2.1 基本工作原理
工业环境中的干扰大多是以窄脉冲的形式出现,而最终造成微机系统故障的多数现象为“死机”。究其原因是CPU在执行某条指令时,受干扰的冲击,使它的操作码或地址码发生改变,致使该条指令出错。这时,CPU执行随机拼写的指令,甚至将操作数作为操作码执行,导致程序“跑飞”或进入“死循环”。为使这种“跑飞”或进入“死循环”的程序自动恢复,重新正常工作,一种有效的办法是采用硬件“看门狗”技术。用看门狗监视程序的运行。若程序发生“死机”,则看门狗产生复位信号,引导单片机程序重新进入正常运行。
此外,工业现场由于诸多大型用电设备的投入或撤出电网运行,往往造成系统的电源电压不稳,当电源电压降低或掉电时,会造成重要的数据丢失,系统不能正常运行。若设法在电源电压降至一定的限值之前,单片机快速地保存重要数据,将会最大限度地减少损失。
单片机的掉电工作方式电路原理图如图2—1所示:当PD设置为1时,激活掉电方式,与非门输出为低电平,时钟发生器停止工作,单片机内所有运行状态均被停止,只有片内RAM和SFR中的数据被保存起来。在单片机系统中可借助于一定的外部附加电路监测电源电压,并在电源发生故障时及时通知单片机(如通过引发中断来实现)快速保存重要数据,且断开外围设备用电电源,使整个应用系统的功耗降到最少。当电源恢复正常时,取消掉电工作方式,通过复位单片机,使系统重新正常工作。
图2 单片机掉电方式控制电路
2.2硬件实现电路图
图2—2给出了MAX813L在单片机系统中的典型应用线路图。此电路可以实现上电、瞬时掉电以及程序运行出现“死机”时的自动复位和随时的手动复位;并且可以实时地监视电源故障,以便及时地保存数据。
图2-2 MAX813L在80C51单片机系统中的应用连接电路图
本电路巧妙地利用了MAX813L的手动复位输入端。只要程序一旦跑飞引起程序“死机”,端电平由高到低,当变低超过140 ms,将引起MAX813L产生一个200 ms的复位脉冲。同时使看门狗定时器清0和使引脚变成高电平。也可以随时使用手动复位按钮使MAX813L产生复位脉冲,由于为产生复位脉冲端要求低电平至少保持140ms以上,故可以有效地消除开关抖动。
该电路可以实时地监视电源故障(掉电、电压降低等)。图2—2中R1的一端接未经稳压的直流电源。电源正常时,确保R2上的电压高于1.26 V,即保证MAX813L的PFI输入端电平高于1.26 V。当电源发生故障,PFI输入端的电平低于1.25 V时,电源故障输出端电平由高变低,引起单片机中断,CPU响应中断,执行相应的中断服务程序,保护数据,断开外部用电电路等。
3 抗干扰程序设计
3.1 程序运行“死机”及相应对策
程序正常运行时,由主程序在小于1.6 s的时间间隔内周期性地从P1.7端向MAX813L的WDI输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。实现指令为:
RST-PRG:SETBP1.7
NOP
CLRP1.7
若超过1.6 s该输入端收不到脉冲信号,则内部看门狗定时器溢出,8号引脚由高电平变为低电平。引起MAX813L产生一个200 ms的复位脉冲。同时使看门狗定时器清0和使引脚变成高电平。
需要引起注意的是,整个单片机系统完成复位后,在PC指针的指引下整个程序将从0000H地址处重新开始初始化运行,而这在很多情况下是不允许的(如连续的工艺流程),为此必须采取相应的措施。首先在对单片机系统完成复位后,程序应该先判断是开机运行(冷启动)还是运行过程中“死机”之后的重新加载运行(热启动)。因为一般情况下在这两种启动方式下,系统程序在进入主流程前所要做的工作往往不同。如冷启动后,系统程序在初始化程序中往往要进行系统资源的自检以及将各外围设备设置为相应的待机状态等。而热启动后往往不再对系统的资源自检,同时应尽量避免对各外围设备修改设置,只是对单片机系统本身的一些资源进行必要的设置工作。其次,在大多数情况下,我们总可以把一个连续的过程分解开来,把它变成一个个独立的子过程(状态)组成的连续过程。在主程序运行过程中,适时保存相应状态和该状态下的相关参数。这样当程序运行出现“死机”,在MAX813L作用下系统复位和初始化后,将首先查询事先保存的状态参数,然后根据此参数决定程序的流向。同时把该状态下事先保存的参数取出,对系统外围设备进行必要的恢复设置工作和引导程序继续运行。根据这一思想设计的系统程序流程图如图3—1所示。
图3 系统监控程序流程图
3.2 电源故障及相应对策
当电源发生故障时,引起单片机中断,CPU响应中断,执行相应的中断服务程序,保护数据,断开外部用电电路等。为了做到这一点,必须把中断优先级(PX0)设为最高,特别是系统中还有其它中断时,更应如此。中断优先级的设置可通过中断优先寄存器IP实现,此外还要设置中断允许寄存器IE的总允许位(EA)及外部中断0中断允许位(EX0)。实现指令为:
SETBIP.0;设置PX0=1
SETBIE.7;设置EA=1
SETBIE.0;设置EX0=1
至于中断源的触发方式。如果选择电平触发,则中断擦除时必须外加辅助电路,否则中断不能正常执行;如果选择跳变触发,当端出现负跳变时,CPU内部硬件自动置位中断标志IE0,CPU响应中断,通过向量地址转入中断服务程序时IE0被硬件清0。所以基于上述分析,必须选用跳变触发方式。触发方式由定时器控制寄存器TCON中的IT0位决定。实现指令为:
SETBTCON.0
设计好中断服务程序对于系统的连续可靠运行具有重要意义。在中断服务程序中,先保存重要数据到片内RAM(掉电时由备用电源供电,相应实现电路未画出)。发出控制信号断开外围设备,最后把电源控制寄存器PCON的PD位置1,激活掉电工作方式,中断返回。中断服务程序实现如下(其中R0代表保存的数据在内存中的缓冲区首址,DPTR代表要保存的数据在外部RAM中的缓冲区首址,R1代表要保存的数据字节量):
INT0:MOVXA,@DPTR ;保存数据
MOV@R0,A
INCR0;内存缓冲区指针加1
INCDPTR;外存缓冲区指针加1
DJNZR1,INT0;保存完?没完,继续保存
SETBPCON.1;激活掉电方式
RET1
4 结束语
本系统巧妙地利用MAX813L芯片,实现了单片机系统的看门狗电路、电源故障监视电路和手动、自动复位电路,电路结构紧凑,设计合理。结合本文给出的程序抗干扰设计方案,可有效地解决程序运行中出现的“死机”现象和电源故障带来的不利影响。在我们设计氮化镓半导体薄膜生长工艺流程实时监控系统中实际运行表明:该方案设计合理,运行可靠,抗干扰能力强,达到了满意的使用效果,并且可推广应用到其它的单片机控制系统中去。