(2)器件布置上:把相关的器件就近放置,易产生噪声的电路应尽量远离主机电路,发热量大的器件应考虑散热问题,I/O驱动器件尽量靠近印制板边上放置。闭置的lC管脚不要悬空,元器件脚避免相互平行,以减少寄生耦合。如有可能,尽量使用贴片元件。
(3)布线:电路之间的连接应尽量短,容易受干扰的信号线要重点保护,不能与能够产生干扰或传递干扰的线路长距离平行;交直流电路要分开;对双面布线的印制电路板,应使两面线条垂直交叉,以减少磁场耦合效应。
(4)接地:交流地与信号地不能共用,以减少电源对信号的干扰;数字地、模拟地分开设计,在电源端两种地线相连;对于多级电路,设计时要考虑各级动态电流,注意接地阻抗相互耦合的影响,工作频率低于1 MHz时采用一点接地,工作频率较高时采取多点接地,接地线应尽量粗。
(5)去耦电容:加去耦电容是印制电路板设计的一项常规做法。在电源输入端跨接10~100 μF的电解电容或钽电容,在每个集成电路芯片上安装一个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和串行口不使用中断,中断向量区可以设置如下: