智能电表设计中的抗干扰措施
当然,这些布线与布局的抗干扰设计一般不能由自动布线软件来实现,必须有设计者亲自参与并设计有关电路。
三、软件抗干扰设计
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。因此,除了采取硬件抗干扰方法外,还要采取如下软件抗干扰措施。
(1)指令冗余技术
当指针受到干扰出现程序跑飞时,可能会出现将操作数数值改变及将操作数误当作操作码的情况。当"跑飞"到某双字节或三字节指令的操作数上时,会将操作数当作操作码,程序将出错,因此可在双字节和三字节指令之后插入两个或三个单字节NOP指令,这可保证其后的指令不被拆散。对程序流向起决定作用的指令(如浸水使柔软、RETI、ACALL、LCALL、LJMP、JZ、JNZ、JC、.INC等)和对系统工作状态起重要作用的指令(如SETB、EA等)之前插入两条NOP指令,可保证跑飞程序迅速纳入轨道;或者在其后面重复写上这些指令,以确保这些指令的正确运行。
(2)软件陷阱
当微处理器受到各种干扰时,若PC指针跳到非程序区,可能会陷入某种循环不能跳出。如果循环中无清WDT指令,在给定看门狗定时器条件下,经过一定时间 WDT起作用,将PC指针复位,工作恢复正常。如果循环中包含了清WDT的指令,则产生死机。对于后者可在非程序区放置软件陷阱加以解决。
软件陷阱有三条指令组成:
安排软件陷阱的位置有:
未使用的中断区。如果设计的智能电表未使用全部的中断向量区,则可在剩余的中断区安排软件陷阱,以便能捕捉到错误的中断。 未使用的大片EPROM空间。对于单片机未编程的空间,其初始值为OFFH。OFFH对51指令来说,相当于单字节指令MOV R7,A。当程序跑飞入该区后,不仅无法迅速入轨,而且破坏R7的内容。因此在该区每隔一段地址设一个陷阱,就一定能捕捉到跑飞的程序。 在表格的最后安排陷阱。注意表格中不应被放入。 在程序区。前面曾指出,跑飞的程序在用户程序内部跳转时可用指令冗余加以解决,也可以设置一些软件陷阱,能更有效地抑制程序跑飞。可以将陷阱指令放置在各模块之间的空余单元里。在正常运行中不执行这些陷阱指令,一旦程序跑飞落入这些陷阱区,马上将乱飞的程序拉入正确轨道。由于软件陷阱都安排在正常程序执行不到的地方,故不会影响程序的执行效率。所以在EPROM容量允许的条件下,这种陷阱多一点为好。(3)"看门狗"措施
如果跑飞的程序落入一个临时构成的死循环中时,冗余指令和软件陷阱都将无能为力,这时可以采用复位的方法使系统恢复正常。"看门狗"电路的功能就是对 CPU进行实时检测,当CPU落入死循环之后,能及时发现并使整个系统复位。在软件编程中,设置约1秒访问一次看门狗芯片,当程序跑飞或大于1.4秒(设置的超时时间)没有访问看门狗芯片,X5045将输出复位脉冲,直至程序正常运行。
(4)保证EEPROM数据写入的可靠性措施
需要注意的是,看门狗如果起作用说明程序计数器内容被破坏,因此其它寄存器或片内公羊的内容也有被破坏的可能,会导致把错误的数据写入EEPROM。在电表工作中,每产电量改变0.1度写入一次EEPROM,如果出现将错误的数据写入EEPROM,这是不允许的。采取以下措施可很好的解决此问题:
- 基于开路电压的电池监视器电路的编程及测试(05-11)
- Microchip扩展UNI/O EEPROM产品线(03-07)
- 一种新型智能电表的研制(04-25)
- 提高MSP430G 系列单片机的Flash 擦写寿命方法(08-28)
- 基于单片机的智能学习型红外空调遥控器(06-25)
- 为MAX16046 EEPROM可编程系统管理器增加自动重启功能(10-16)