(1)模拟或开关量输入尽量采用光电隔离,而开关量输出可采用继电器隔离,以消除输入或输出通道串入的干扰;
(2)尽量减小布线长度,并对各种输入/输出线分类打捆,以减少寄生电容的干扰;
(3)单片机系统的关键部位应采用铁壳封闭,以防止外部电磁干扰。
6.2软件的抗干扰措施
软件抗干扰技术是当系统受干扰后使系统恢复正常运行或输入信号受干扰后去伪求真的一种辅助方法。它是一种被动抗干扰措施,而硬件抗干扰是主动措施。但由于软件设计灵活,又节省硬件资源,所以软件抗干扰技术越来越引起人们的重视。
1. 指令冗余技术
CPU复位后的指令执行顺序完全由程序计数器PC控制。当干扰破坏程序计数器PC的状态时,程序便脱离正常运行轨道,出现“乱飞”,“乱飞”会出现指令操作数数值改变或操作数当作操作码的错误。
为了使“乱飞”程序在程序区迅速纳入正轨,应该多用单字节指令,并在关键地方人为地加入一些单字节指令NOP,或将有效单字节指令重写,称为指令冗余。采用指令冗余技术使PC机纳入正轨的条件是:“乱飞”的PC必须指向程序运行区,并且必须执行到冗余指令。
2.采用软件陷阱法
单片机最容易受干扰的是内部程序计数器(PC)的值。在受到强干扰时,PC的值被改变,造成程序“跑飞”到非程序区,可在非程序区设置拦截措施,使程序进入陷阱,强迫程序进入一个指定的地址,执行一段专门对程序出错进行处理的程序。软件陷阱就是用引导指令强行扑获的“乱飞”程序引向复位入口地址2080H,使程序纳入正轨。
软件陷阱的主要形式有:
程序 形式 |
软件陷阱形式 |
对应入口形式 |
形式一 |
NOP NOP LJMP 2080H |
2080H:LJMP MAIN |
形式二 |
LJMP 5080H LJMP 2080H |
2080H:LJMP MAIN . . 5080H:LJMP MAIN |
软件陷阱一般安排在以下位置:
(1)未使用的中断向量区
当未使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,就能及时扑捉到错误的中断。
(2)未使用的EPROM
未使用的EPR伽属于非程序区,在这些非程序区可用软件陷阱形式填满,当“乱飞”程序进入此区后,便会迅速纳入正轨。
(3)运行程序区
“乱飞”程序在用户程序内部跳转时可用指令冗余技术加以解决,也可以设置一些软件陷阱。这时可将软件陷阱指令组分散放置在用户程序个模块之间的空余单元里。正常程序不执行这些陷阱指令,一旦“乱飞”程序落入这些陷阱区,程序马上便会纳入正轨。
3.“着门狗”(WATCHDOG)技术
如果“乱飞”程序落到一个临时构成的死循环中时,冗余指令和软件陷阱都将无能为力,这时可用人工复位的方法使系统恢复正常,实际上可以设计一种模仿人工监测的“程序运行监视器”,俗称“看门狗”(WATCHDOG)。“看门狗”(WATCHDOG)技术可由硬件、软件以及软硬结合来实现。下面结合80C196KC内置监视定时器(WDT)的特点来说明软件“看门狗”技术原理。
WDT是一个16位的计数器,计数脉冲来自80C196Kc内部时钟产生电路,工作启动后每一状态周期加一。WDT溢出时(需64K个状态周期,若晶振采用12MHz,约为10.9ms)会迫使芯片复位。
WDT开始工作后,经过64K个状态周期(约10.9ms)的时间便产生溢出使系统复位,若每隔不到64K个状态周期的时间就使其清零,则它永不会溢出,系统也就不会复位。因此,在程序中启动WDT后,采用定时使WDT清零的方法,WDT不会溢出,系统正常工作。一旦由于干扰导致程序“跑飞”时,可能会使某次对WDT的清零指令得不到执行而致使WDT溢出,系统复位,即程序纳入正轨。
上一页 [1] [2] [3] [4] [5] [6] [7]