高可靠性的通讯保护电路设计

2009-09-19 05:36张梦洁
科技经济市场 2009年7期
关键词:看门狗中断时钟

宋 芳 张梦洁

摘要:工作在恶劣环境中的通讯设备,容易受到电磁干扰等因素的影响,出现程序跑飞、死机等现象,造成通讯中断,且不能自行恢复正常工作,本文针对这一现象进行电路的硬件和软件设计,通过监听串口数据,对设备CPU进行断电复位,从而使设备恢复正常工作,提高通讯可靠性。

关键词:高可靠性通讯保护;串口监听;定时器;P89LPC915单片机

1概述:

在设计应用于工业现场的通讯设备时,例如无人值守的变电站抄表设备,应充分考虑设备的抗干扰性能,结合硬件和软件两方面进行优化组合,在不可避免出现死机等严重故障时,设备应能够可靠复位,重新开始工作。本设计中通过使用PHILIPS公司CPU芯片P89LPC915来监控主CPU的对外通讯串行口,定期采集主CPU的发送脚TXD的状态,若在设定的时间内,TXD脚上的电平没有变化,即可判定主CPU工作异常,此时控制主CPU完成掉电,然后上电

2系统硬件电路设计:

2.1电路原理图

2.2电路分析

系统电源--在图1中,U1和U2为电源管理芯片SPX3819M5-3.3,这是SIPEX公司的微功耗LDO,静态电流为90uA,输出电流为500mA,具有输出使能和输出短路保护功能,输入电压最大为20V,输出电压为3.3V,精度为1%. 在本应用中, SPX3819M5-3.3的3脚为输出使能端,当该引脚上的电压高于+2V,芯片输出+3.3V; 当该引脚上的电压低于+0.4V,芯片无输出电压。在图中使用U1为U3供电,将U1的输出使能端(U1的第3脚)连至+5V,使U1一直输出+3.3V;使用U2为主CPU供电,U2的使能端受控于U3,在U3的控制下完成对主CPU的断送电,实现主CPU的上电复位。

系统CPU——在图1中,U3为PHLIPS公司的增强型51单片机P89LPC915,该芯片采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期,速度是标准80C51芯片的6倍,具有2K可字节擦除的Flash存储器和256字节的RAM数据存储器,有可编程 I/O 口输出模式-可配置为准双向口,开漏输出,推挽和仅为输入功能。芯片内部还集成了许多系统级的功能,如片内的RC震荡器、内部上电复位功能、内部看门狗、实时时钟、波特率发生器、I2C接口、ICP接口等。芯片有DIP和TSSOP封装,使用灵活方便,可靠性好,成本低。在本应用中CPU的P0.0、P0.1、P0.2、P0.3分别接主CPU的TXD0、TXD1、TXD2、TXD3四个发送端;P1.4用于控制电源管理芯片U2的输出使能。CPU程序时刻采样P0.0、P0.1、P0.2、P0.3的状态,如果在设定的时间内,P0.0、P0.1、P0.2、P0.3四个引脚的状态一直为高电平,程序即认为主CPU通讯出现了异常,此时就在P1.4输出低电平,将主CPU断电,延时后重新上电,这就完成了主CPU的上电复位,主CPU恢复正常工作。

ICP接口——在图1中,JP1为单片机P89LPC915的ICP接口,在电路板上设计有插座,将ICP编程器插在该插座上即可实现对单片机的在电路编程,可随时升级程序。

工作指示-D1为红色的发光二极管,它与CPU的P1.2口连接,可指示CPU的工作状态,方便调试。

开关机按键-S1为主CPU的复位上电按键,与CPU的P1.3口连接,程序判断此引脚状态,完成主CPU的断电和上电。

3系统软件设计

系统的软件设计分为CPU初始化、定时器设计、端口采样函数、延时函数、看门狗定时器等几部分,流程图如下:

程序清单

#include "REG915.H"

sbit P1_2=P1^2;

sbit P1_3=P1^3;

sbit P1_4=P1^4;

sbit P0_0=P0^0;

sbit P0_1=P0^1;

sbit P0_2=P0^2;

sbit P0_3=P0^3;

sbit P0_4=P0^4;

staticint Count=0;

staticint Count1=0;

void init(void);

/**************初始**************/

void init(void)

{

DIVM=4;//相当于标准8051的晶振为12MHz的速度

P0M1=0x0F;//

P0M2=0x00;// p0.0--p0.3配置为仅为输入口

P1M1=0x0C;//p1.2 p1.3 配置为开漏

P1M2=0x1C;// p1.4为推挽输出

RTCH=0xFF;

RTCL=0xFF;//实时时钟初值

RTCCON=0x00;//选择CCLK为时钟源

RTCCON=0x62;//0110 0011,时钟中断使能

TMOD=0x11;//定时器0和定时器1工作于16位模式

TAMOD=0x00;

TH0=0x00;//定时器初值

TL0=0x00;

TH1=0xfc;

TL1=0x18;

IP0H=0x48;

IP0=0x0A;//中断优先级

WDL=0xFF;//2.62s看门狗初值

WDCON=0xE5;//看门狗时钟源为看门狗震荡器,

WFEED1=0xA5;

WFEED2=0x5A;//清零序列

}

/*********看门狗清零序列*********/

void WatDog()

{

EA=0;

WFEED1=0xA5;

WFEED2=0x5A;

EA=1;

}

/*****************************/

/**********ms延时函数*********/

void Delay(unsigned int Time)

{

unsigned int j=0;

for(;Time>0;Time--)

{

for(j=0;j<256;j++)

{;}

}

}

/**************************/

/***实时时钟中断程序(定时复位)*****/

void RTC_int() interrupt 10

{

if(RTCCON==0xE3)//是实时时钟中断

{

Count++;

RTCCON = 0x63;

}

else

{

EA=0;

WFEED1=0xA5;

WFEED2=0x5A;

EA=1;

}

}

/***************************/

/***指示灯闪烁定时器*******/

void timer0() interrupt 1

{

TH0=0x00;

TL0=0x00;

Count1++;

if(Count1>=8)

{

P1_2=~P1_2;

Count1=0;

}

}

/***************************/

/****定时采集端口状态*******/

猜你喜欢
看门狗中断时钟
别样的“时钟”
古代的时钟
把他叫醒
跟踪导练(二)(5)
千里移防,卫勤保障不中断
时钟会开“花”
一种采用FPGA实现的通用看门狗电路
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析