微处理器是电磁流量计的核心单元, 控制整个系统的运行。当单片机应用系统的 CPU 受到干扰时, 可能造成的影响有: 非正常修改程序计数器指针; 改写可编程输出端口状态; 非正常修改数据区的数据等。以上不良影响会使单片机程序失控, 其后果是非常严重的。结合智能电磁流量计的工作特点和 MSP430系列单片机的特性, 采用软件与硬件抗干扰技术相结合, 提高系统运行的稳定性。
1 硬件抗干扰
由于软件抗干扰措施是以牺牲 CPU 效率为代价的, 如果没有硬件消除绝大多数干扰, CPU 将疲于奔命, 无暇顾及正常工作, 严重影响系统的工作效率和实时性。电磁流量计输出单元一般包括 4~ 20 mA 电流输出, 集电极开路的频率输出以及工业现场总线接口等, 在输入和输出通道上采用光电隔离器来进行信息传输是很有好处的, 它将微机系统与各种传感器、 开关、 执行机构从电气上隔离开来, 很大一部分干扰将被阻挡。M SP430单片机与外围设备, 如模数转换器、 EEP -ROM 等采用总线通信方式。当信号同时切换时会引起 /地弹 0和串扰。在电路板布线时, 总线尽量使用地线包围, 电路采用多点接地方式。同时总线采用上拉电阻方式, 可以提高逻辑电路噪声容限, 使总线通信更加可靠。M SP430的通用端口可以设置为输入和输出两种状态, 对于没有使用的端口, 全部设置为输出状态, 防止 CPU受到意外干扰。此外 XT 2OUT 、 X OUT 、 VREF+ 空置; X I N 、 AV CC 接数字电源端; XT 2IN 、 VREF-、 VREF+ 接数字地。
2 睡眠状态抗干扰
电磁流量计中微处理器很多情况下是在执行等待指令和循环检查程序, 这时 CPU 没有工作, 但却是清醒的, 很容易受干扰。MSP430系列单片机提供了多种睡眠状态, 让 CPU在没有正常工作时休眠, 必要时再由中断系统来唤醒它, 之后恢复休眠状态,从而使 CPU受到随机干扰的威胁大大降低, 同时降低了 CPU的功耗。
3 指令冗余与软件陷阱技术
程序正常运行时, 指令计数器始终指向下一条指令的第一个字节, 当单片机受到干扰时, 可能引起程序计数器的非正常修改, 将操作数当作指令码执行, 造成程序误操作。M SP430单片机采用 RISC指令内核, 指令字有单字节、 双字节和三字节指令三种, 在双字节和三字节指令后插入两条单字节指令, 程序失控时也可以迅速进入预期控制轨道。
综合考虑 CPU 效率和抗干扰能力, 在对程序流向起关键作用的指令处, 如跳转指令、 中断恢复指令等, 插入两条 / NOP0单字节空操作指令, 以保证 /跑飞 0的程序迅速纳入正确的控制轨道。为了防止单片机输出口状态被意外修改, 定期重新定义输出口状态。M SP430单片机内部集成很多外围设备, 如 UART、 SPI串口、 定时计数器等, 为了防止这些设备的相应控制寄存器被意外修改, 每次使用时都需重新设置。指令冗余使 /跑飞 0的程序安定下来是有前提条件的: 程序计算器必须指向程序区。当程序计数器落到非程序区, 如 ROM 中未使用的空间、 中断向量表、 数据区, 则冗余指令失效。
采取额外措施就是设立软件陷阱。所谓软件陷阱, 就是一条引导指令, 强行将捕获的程序引向对程序出错进行处理的程序, 一般安排在未使用的中断向量、 未使用的 ROM 等。M SP430单片机具有多个中断发生源。正常工作时, 执行完中断服务程序后, 相应的中断标志位会被硬件自动复位; 当单片机受到干扰, 运行异常时, 可能会触发没有使用的中断, 导致系统不能正常工作, 因此在未被使用的中断向量处插入冗余指令, 使中断自动返回, 如: / NOP NOP RETI0。
对于没有使用的 ROM, 程序烧录器默认写入字0xfff,f该字对于指令系统是一条指令, 这条指令会修改单片机内部寄存器值; 如果程序 /跑飞 0进入这段 ROM中, 可能造成数据运算错误, 因此在未使用的 ROM 中写入代码, 使程序跳转到出错处理程序。