单片机原理软件设计在工程实践中

单片机原理软件设计在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法

本文针对后者提出了几种有效的软件抗干扰方法

指令冗余CPU取指令过程是先取操作码,再取操作数

当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当做操作码,程序将出错

若“飞” 到了三字节指令,出错机率更大

在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余

通常是在双字节指令和三字节指令后插入两个字节以上的NOP

这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨

此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行

拦截技术所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理

通常用软件陷阱来拦截乱飞的程序

因此先要合理设计陷阱,其次要将陷阱安排在适当的位置

(1 )软件陷阱的设计当乱飞程序进入非程序区,冗余指令便无法起作用

通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理

软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令

通常在EPROM中非程序区填入以下指令作为软件陷阱:(2 ) 陷阱的安排最后一条应填入020000,当乱飞程序落到此区,即可自动入轨

在用户程序区各模块之间的空余单元也可填入陷阱指令

当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断

如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”

如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行

考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截

软件“看门狗”技术若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”

通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理

“看门狗”技术可由硬件实现,也可由软件实现

在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断

则系统无法定时“喂狗”,硬件看门狗电路失效

而软件看门狗可有效地解决这类问题

笔者在实际应用中,采用环形中断监视系统

用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0

采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性

对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)

这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1

在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作

若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理

当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑

限于篇幅不赘述

以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。

相关