微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 详解单片机应用系统的抗干扰技术

详解单片机应用系统的抗干扰技术

时间:10-13 来源:互联网 点击:

片上安装一个0.01 μF的陶瓷电容器。

2.4 供电系统抗干扰措施

(1)使用交流稳压器,可防止电网过电压、欠电压干扰,保证供电的稳定性。

(2)变压器初次级用屏蔽层隔离,减少其间分布电容,提高共模抗干扰能力。

(3)低通滤波器可滤去干扰带来的高次谐波。

(4)整个系统采用分立式供电方式,分别对各部分进行供电。

(5)采用开关电源并提供足够的功率余量。

3 应用系统的软件抗干扰技术

系统出现错误或死机,可以通过手工复位、定时复位等方法来解决,也可以通过下面的方法来实现抗干扰。

3.1 在程序中插入空操作指令(指令冗余)

在程序执行过程中, CPU受到干扰后可能会将一些操作数当作指令码来执行,引起程序混乱,我们应尽快使程序纳入正轨。MCS51系列单片机指令不超过3 B,当程序弹飞到某一单字节指上时,能自动纳入正轨。当弹飞到某一双字节或三字节指令上时,有可能落到操作数上,继续出错。在软件设计时,应多采用单字节指令,并在一些关键地方插入NOP指令。如在双字节,三字节指令后面插入2条NOP指令。另外,在一些对程序流向起决定作用的指令之前插入两条NOP指令(如RET,RETI,ACALL,LCALL,SJMP,AJMP,LJMP,JZ,JNZ,JC,JNC,JB,JNB,JBC,CJNE,DJNZ)以保证弹飞的程序迅速纳入程序轨道。

3.2 采用软件陷阱

当CPU受干扰,造成程序弹飞到非程序区,此时软件冗余无能为力,可在非程序区设置拦截措施,使程序进人陷阱,强迫程序进入一个指定的地址,执行一段专门对程序出错进行处理的程序,软件陷阱由3条指令构成,其中ERR为指定地址:
NOP
NOP
LJMP ERR

软件陷阱常安排在下列4种地方:
(1)未使用的中断区。当干扰使未使用的中断开放.并激活这些中断时,就会引起程序混乱。如果在这些地方设置软件陷阱,就能及时捕捉到错误中断。假如MCS51系统中使用3个中断:INT0,INT1,T1,他们的中断子程序分别在PINT0,PINT1,PT1,T0和串行口不使用中断,中断向量区可以设置如下:

(2)未使用的大片 ROM空间。对于未使用的ROM单元,正常状态下为OFFH,程序弹飞到这一区域后,如果不受新的干扰,将顺序执行,不再跳转。只要每隔一段区域设置一个软件陷阱,其他单元保持为0FFH不变,就一定能捕捉到弹飞到这里的程序。

(3)程序区。程序区由一串串执行指令构成,当程序执行到LJMP,SJMP,AJMP,RET等无条件转移类指令时,PC的值应发生正常的跳变,此时程序不可能继续往下顺序执行。若在这些指令后设置软件陷阱,就可拦截弹飞到这里的程序,而又不影响正常执行的流程。

(4)数据表格区。为了不破坏表格的连续性,可在数据表格区的尾部设置软件陷阱。软件陷阱安排在正常程序执行不到的地方,不影响程序执行的效率,在E2PROM容量允许的条件下,多设置软件陷阱有利而无害。

.3 睡眠抗干扰

有些单片机具有睡眠状态,在该状态下只有定时/计数系统和中断系统处于工作状态,这时CPU对系统三总线上出现的干扰不会作出任何反应,从而大大降低系统对干扰的敏感程度。在应用系统中,CPU很多情况下是在执行一些等待指令和循环检查程序。由于这时CPU虽没有重要工作,却是清醒的,很容易受干扰。可以让CPU在非正常工作时休眠,必要时再由中断系统来唤醒他,工作完再进入休眠状态。采用这种安排,CPU可以有60%以上的时间处于睡眠状态,从而使CPU受到随机干扰的威胁大大降低,同时也降低了CPU的功耗。

4"看门狗"技术

当程序飞到一个临时构成的死循环中或PC指针落到程序存储器芯片地址之外,冗余指令和软件陷阱对此无能为力,这时系统将完全瘫痪。这种情况下,只有复位。MCS96和8XC552等系列单片机内部有一个WDT监视定时器,是一个16位的计数器,输人为系统时钟,WDT被启动后,开始对时钟计数,计满溢出时,可使RESET端出现适当的复位信号,使系统复位,在正常情况下,为了防止WDT溢出并复位整个系统,可在程序中周期地用指令清WDT,当程序受到干扰而没有正常地定期清WDT时,WDT的溢出就会使系统复位,从而恢复运行。

图1中RST是外部复位引脚,是WDT启动引脚,为"0"时,"看门狗"启动而工作,对分频后的脉冲计数,当计满溢出时,使单片机及外围电路复位,编程时,为防止监视定时器T3溢出,需要不断对T3写入。MCS51单片机内部没有WDT,可以由外电路来实现,图2是用CD4060构成的看门狗电路。

4060计数频率由RT,CT决定,也可外接石英晶体,设实际运行的用户程序所需工作周期为T0;分频器计满时间为T,当T>T0且系统工作正常时,程序每隔T0对4060清除一次,CD4060无计满输出信号,如系统工作不正常,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top