新闻中心

EEPW首页>嵌入式系统>设计应用> 单片计算机系统抗干扰的软件途径

单片计算机系统抗干扰的软件途径

作者: 时间:2012-02-27 来源:网络 收藏

2.3 重复执行

程序指令在执行的过程中或者保持(锁存)之后,都有可能被噪声修改而导致控制失效乃至引发事故,为此应当尽量增加重要指信纸的执行次数以纠正干扰造成的错误。对于频率较低的传感器数据,建议在有效时间内多次采集并比较;对于控制外部设备的指令,则需要多次重复执行以确保有关信号的可靠性。为达此目的,可把重要的指令设计成定时扫描模块,使其在整个程序的循环运行过程中反复执行。如此即使干扰信号改写了指令内容,也能在受控设备的反应时间内自动恢复正常。

2.4 重要数据的保护和恢复

编写专门的数据保护子程序,是提高工控微机系统可靠性的有效途径。在编写程序的过程中,对于由指令改变结果性质的数据,可以考虑在每次改变后都尽可能地保护起来,以便在需要时能够恢复正确值。对于大多数工控微处理机而言,在运行错误而强制“复位”之后,I/O端口和特殊寄存器SFR中的内容都将变成芯片出厂时的设定值[4],这很可能会引起整个系统的运行混乱。因此计算机在重新启动后,应当首先执行数据恢复程序,把控制端口等重要寄存器被保护的内容恢复还原。基于前述的试验结果,保护数据最可靠的地址位于微处理机的片内 RAM;若数据的保护量较大,则建议扩展非易失性的SRAM作为片外数据存储器。这种新型芯片具有很高的抗干扰性能,其缺点是目前的价位较高。

3 片内软WDT监控

“看门狗”(WDT)已经成为工控微机必不可少的成员之一,其通常采用软件与片外专门电路相结合的技术,来防止CPU程序的“跑飞”。我们在课题的研究过程中注意到,利用微处理机内部闲置的定时/计数器,配合以适当的程序就可以方便地构成WDT,在PC异常时能够及时有效地强制“软复位”而恢复系统的正常运行。

3.1 基本原理

与前面提及的软件补偿措施相配合,此WDT可以有效地防止由于CPU的PC“飞出”正常运行的程序区域而导致的系统瘫痪。用微处理机片内的一个定时器单元接收内部时钟提供的稳定脉冲,当此定时器溢出(加法型)或者为零(减法型)时提出中断请求;对应的中断服务程序使PC回到初始化程序的第一行,从而实现强制性“软复位”。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器清零或置数,即可预防溢出中断而引起的误复位。

3.2 设计示例

下面以常用的MCS-51系列单片机的T0为例,介绍软WDT的设计思路。

首先,在初始化程序块中设置T0的工作方式,并开启其中断和计数功能。设主频为12MHz,T0为8位计数器,则:

最大计数值为(2的8次方)=255

计数速率是主频的1/12(1次/μs),故:

溢出周期为(255+1)÷1=256μs

其次,计算各条指令的执行耗时,以适当的间隔设置T0=0。由于MCS-51系列单片机的指令集中只有“乘”、“除”两条指令耗用4个机器周期,其它均只耗用1~2个机器周期,为保险起见简化为“每条指令均耗用2个机器周期”,即每执行一条指令耗用2μs。据此可以推算出“清零定时器T0”的指令执行间隔应当少于:

256÷2=128(条)

即每执行不多于128条程序指令(计入多次循环执行的指令),就应当执行一条清零T0的指令,以防止软复位被误执行。

第三,设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入“无条件转移”命令,把PC拖回整个程序的第1行,对单片机重新进行初始化并获得正确的执行顺序。由于这条中断指令并没有结束中断子程序就转出去了,为了能够继续响应其它的中断请求,可以在程序的初始化功能块中把SP定高2字节,在此2字节中写入“中断返回”(RETI)之后应执行指令的地址,以便RETI执行后自动弹栈装入PC,并在初始化程序结束前写上RETI指令。

系统的研制过程中,微机的抗干扰性能是系统成败的关键之一。数十年来,人们已经研究出了许多抗干扰的硬件措施,包括采用净化电源、接地、屏蔽、光电耦合、数据滤波及延时除颤等等。本文针对微处理机易受干扰的部件提出了的一些方案,实用表明具有较高的经济性和可靠性,很容易将结合进行程序之中,不失为一类简便而有效的抗扰手段。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭