单片机系统软件抗干扰的主要方法
21IC 2021-09-26

可靠性设计是一项系统工程,单片机系统的可靠性必须从软件、硬件以及结构设计等方面全面考虑。硬件系统的可靠性设计是单片机系统可靠性的根本,而软件系统的可靠性设计起到抑制外来干扰的作用。软件系统的可靠性设计的主要方法有:开机自检、软件陷阱(进行程序“跑飞”检测)、设置程序运行状态标记、输出端口刷新、输入多次采样、软件“看门狗”等。通过软件系统的可靠性设计,达到最大限度地降低干扰对系统工作的影响,确保单片机及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或及时报警的目的。

一、开机自检

开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常包括对RAM、ROM、I/O口状态等的检测。

1?检测RAM 检查RAM读写是否正常,实际操作是向RAM单元写“00H”,读出也应为“00H”,再向其写“FFH”,读出也应为“FFH”。如果RAM单元读写出错,应给出RAM出错提示(声光或其它形式),等待处理。

2?检查ROM单元的内容 对ROM单元的检测主要是检查ROM单元的内容的校验和。所谓ROM的校验和是将ROM的内容逐一相加后得到一个数值,该值便称校验和。ROM单元存储的是程序、常数和表格。一旦程序编写完成,ROM中的内容就确定了,其校验和也就是唯一的。若ROM校验和出错,应给出ROM出错提示(声光或其它形式),等待处理。

3?检查I/O口状态 首先确定系统的I/O口在待机状态应处的状态,然后检测单片机的I/O口在待机状态下的状态是否正常(如是否有短路或开路现象等)。若不正常,应给出出错提示(声光或其它形式),等待处理。

4?其它接口电路检测 除了对上述单片机内部资源进行检测外,对系统中的其它接口电路,比如扩展的E2PROM、A/D转换电路等,又如数字测温仪中的555单稳测温电路,均应通过软件进行检测,确定是否有故障。

只有各项检查均正常,程序方能继续执行,否则应提示出错。

二、软件陷阱

在程序存储器中总会有一些区域未使用,如果因干扰导致单片机的指令计数器PC值被错置,程序跳到这些未用的程序存储空间,系统就会出错。软件陷阱是在程序存储器的未使用的区域中,加上若干条空操作和无条件跳转指令,无条件跳转指令指向程序“跑飞”处理子程序的入口地址。如果程序跳到这些未用区域,就会执行无条件跳转指令,转到相应的程序出错“跑飞”处理程序。除程序未用区域外,还可以在程序段之间(如子程序之间及一段处理程序完成后)及一页的末尾处插入软件陷阱,效果会更好。下面是一段带软件陷阱的程序;

DSP:……;显示子程序

RET

NOP;软件陷阱

NOP

NOP

LIMP FLY

D10MS:MOV R0,#010H;延时子程序

……

RET

NOP     ;软件陷阱

NOP

NOP

LJMP FLY

……

FLY:……  ;“跑飞”处理子程序

RET

三、程序

“跑飞”处理 要进行程序“跑飞”处理,就要分清程序“跑飞”所造成的影响,以及程序“跑飞”前运行的进程,这就需要的设置相应的标志。

RAM数据正常标志 RAM数据正常标志是检测RAM区的数据是否已经因程序“跑飞”或其它干扰而改变。如果RAM区的数据确因程序“跑飞”或其它干扰而改变,则系统无法自行恢复到原来的出错地点,只能由人工或由软件复位从头开始执行。要进行RAM区数据正常检测,首先应在初始化程序中,对RAM的若干单元设置RAM数据正常标志。通常是在RAM区中选数个单元,在初始化程序中将其置成固定的数,如“55H”或“0AAH”,只要程序正常运行,这些单元的内容是不会被修改的,若因程序“跑飞”或其它干扰导致这些RAM单元中的任何单元的数据发生变化,说明其它RAM单元的内容也可能发生变化,无法反映程序运行的结果和状态,不能根据RAM区中的标志去恢复程序运行现场。

程序运行标记 程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标记程序运行的阶段和运行后的状态。这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,而RAM区数据正常时起到恢复程序运行现场的作用。

程序“跑飞”处理 程序“跑飞”处理就是在程序由软件陷阱检测到“跑飞”后,转入“跑飞”处理程序。“跑飞”处理程序判断“跑飞”影响的程度,根据影响程度的不同,决定是报警复位还是自动恢复现场。如自动恢复现场,则需根据程序运行状态标记进行。具体如何进行程序“跑飞”处理,要根据控制系统的设计要求进行。

四、输出端口刷新 

由于单片机的I/O口很容易受到外部信号的干扰,输出口的状态也可能因此而改变。在程序中周期性地添加输出端刷新指令,可以降低干扰对输出口状态的影响。在程序中指定RAM单元存储输出口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新I/O口。

五、输入多次采样 

干扰对单片机的输入,会造成输入信号瞬间采样的误差或误读。要排除干扰的影响,通常采取重复采样、加权平均的方法。

比如对于外部电平采样(如按键),采取软件每隔10ms读一次键盘或连续读若干次,每次读出的数据都相同或者采取表决的方法确认输入的键值。又如在用单稳电路检测温度的系统中(参《电子报》1999年第51期第九版)采取对单稳电路的脉冲宽度计数,然后查表求温度值的方法。为排除干扰的影响,可以采取三次采样求平均值,也可以采取两次采样、差值小于设定值为有效,然后求平均值的方法(又称软件滤波)。总之,对输入信号进行多次采样,其后如何进行处理是要根据具体对象实际处理的效果来优选的,读者可通过实验室调试时施加干扰及现场环境调试时的效果来确定。

六、软件“看门狗” 

软件陷阱是在程序运行到ROM的非法区域时检测程序出错的方法。而“看门狗”是根据程序在运行指定时间间隔内未进行相应的操作,即未按时复位看门狗定时器,来判断程序运行出错的。

在系统成本允许的情况下,应选择专门的看门狗电路芯片或片内带看门狗定时器的单片机。如果条件不允许,应加软件“看门狗”。 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • ARM Cortex系列处理器知识点汇总

    最近因为要为芯片选定核,所以就在了解哪些核合适且性价比好,这是一个需要结合产品各类技术、市场分析的活,看似简单却还是需要一些储备的,今天选了一篇ARM Cortex系列的科普文章与大家分享。 众所周知,英国的ARM公司是嵌入式微处理器世界当中的佼佼者。AR

    05-11
  • 你的CPU属于哈佛结构还是冯诺依曼结构?

    现代的CPU基本上归为冯诺伊曼结构(也称普林斯顿结构)和哈佛结构。 冯洛伊曼结构就是我们所说的X86架构,而哈佛结构就是ARM架构。一个广泛用于桌面端(台式/笔记本/服务器/工作站等),一个雄踞移动领域,我们的手持设备(平板\手机用的大多就是他了)。 01

    05-10
  • 如何批量修改MCU封装管脚定义

    在做产品开发时,为了缩短研发周期,我们一般都是直接找来参考设计做参考。这些参考资料要么是来自原厂的,要么是来自方案商的。  接触过这么多的参考设计资料,发现大部分的资料都有一个通病,就是不少MCU的PIN脚定义都只是标出IO口的定义,其它复用​​​​功能

    05-08
  • MCU为什么要消抖动

    简单的说,进入了电子,不管是学纯模拟,还是学单片机,DSP、ARM等处理器,或者是我们的FPGA,一般没有不用到按键的地方。按键:人机交互控制,主要用于对系统的控制,信号的释放等。因此在这里,FPGA上应用的按键消抖动,也不得不讲! 一、为什么要消抖动 在

    05-07
  • 51单片机的ISP下载知识

    本文详细介绍了串口、51单片机的ISP下载等基础知识,已经学过单片机的也可以看看,加强一下对这方面的了解。 串口 串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口。 我们比较熟悉的USB接口,全名通用串行总线(Universal Serial BUS),就

    05-06
  • 硬件开发如何选择合适的MCU

    点击上方关注我们! 我在做硬件开发时,如果遇到的是一个新产品,新项目,之前没有做过的,没有任何的经验,在选MCU时,我一般是这样操作的。 首先,根据产品的需求,整理出一份硬件规格。比如,电源管理,传感器接口,人机交互接口等。 然后,整理出整个原理

    05-06
  • 单片机的功耗怎么算的?

    单片机的功耗是非常难算的,而且在高温下,单片机的功耗还是一个特别重要的参数。暂且把单片机的功耗按照下面的划分。 暂且把单片机的功耗按照下面的划分。 1.内部功耗(与频率有关) 2.数字输入输出口功耗 2.1输入口 2.2输出高 2.3输出低 3.模拟输入口功耗从

    05-07
  • 嵌入式工程师必备工具:I2C和SPI总线协议

    IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求

    04-30
  • 嵌入式面试注意事项

    找工作也是一门技能,有的人很快就找到自己喜欢的工作,有的人找了很久也没找到合适的工作。 下面给大家分享几点找工作过程中存在的“潜规则”内容。 1、面试的本质不是考试,而是告诉面试官你会做什么 经验不够的小伙伴特别容易犯的一个错误,不清楚面试官到

    04-29
  • 为什么需要RTOS?

    很多单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品,但作为一个嵌入式软件工程师,如果只能用裸机开发产品,那肯定是不够的。 要从裸机的思维转变到RTOS的思维,其实需要一个过程,而且开始的一段时间会很痛苦。但过一段时间理解了一些内容,能

    04-28
  • 使用RTOS的8个理由

    嵌入式系统中,有很多方式实现任务调度。功能有限的小系统中,无限循环足够实现系统功能。当软件设计变得庞大且复杂时,设计师应该考虑使用实时操作系统。 下面给大家分享使用RTOS的8个理由: 1.硬实时响应 基于优先级抢占的RTOS,根据任务的实时需求,执行优

    04-26
  • 单片机延时程序,Keil C编译器实现

    应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而

    04-26
下载排行榜
更多
EE直播间
更多
广告
X
广告