当前位置:首页 > 嵌入式 > 嵌入式硬件

近年来单片机系统在工业测控领域的应用越来越广泛,而对于环境恶劣的工业现场,这种新型的微控制器的可靠性,安全性就成为了一个大的问题。在实验室运行正常的程序到了工业现场却不能运行,或者出现运行不稳定经常死机等。在这里我们主要讨论一下如何通过软件技术来增强系统的稳定运行。

  当系统的CPU部位受到干扰信号的作用时,将使系统失控。最典型的故障是破坏程序计数器PC的状态值。导致程序在地址空间内“乱飞”,或者陷入死循环。而我们对这种情况的处理主要有这么几种方法:

  1、指令冗余技术;

  2、软件陷阱技术;

  3、看门狗技术。

  我们以MCS-51单片机来做以说明。

  一、指令冗余技术

  我们知道,指令由操作码和操作数组成,操作码指明CPU要完成什么样的操作,而操作数是操作码的对象。单字节指令只有操作码,隐含操作数;双字节指令,第一个字节是操作码,第二个字节是操作数;三字节指令第一个字节是操作码,后二个字节是操作数。CPU在取指令的时候是先取操作码再取操作数,如何判断是操作码还是操作数就是通过取指令的顺序。而取指令的顺序完全由指令计数器PC来控制,因此,一旦PC受干 扰出现错误程序便会脱离正常轨道,出现“乱飞”,这样就会使得把操作数当作操作码,或者把操作码当作操作数的情况。但只要PC指针落在单字节指令上程序就可纳入正轨,所以为了快速的将程序纳入正轨,我们应该多用单字节指令,并在关键的地方人为的插入一些单字节指令NOP,或将有效的单字节指令重写,这就称之为指令冗余。

  常用的方法就是在一些双字节,三字节指令后面插入两个单字节指令NOP,或在一些对程序的流向起决定作用的指令前面插入两条NOP指令。还可对一些重要的指令进行重复放置。

  但采用指令冗余技术将程序纳入正轨的条件是:乱飞的PC必须指向程序运行区。

  二、软件陷阱技术

  当乱飞的程序进入非程序区的时候, 我们就可设定软件陷阱对乱飞的程序进行拦截从而将程序引向一个固定的位置。这样我们就可将捕获的程序重新纳入正轨。

  软件陷阱主要就是把程序从新引入它的复位入口处,也就是说我们在适当的地方设置这样的指令:

  NOP

  NOP

  LJMP 0000H

  对于软件陷阱的安排,我们主要安排在这样一些区域,未使用的中断区,未使用的EPROM空间及非EPROM空间。程序运行区,及中断服务程序区。在这里我们主要来看前三种:

  1、未使用的中断区

  如果对于未使用的中断因干扰而开放的话,我们可以把中断服务程序这样来写:

  NOP

  NOP

  POP D1 ;将原来的错误断点弹出

  POP D2 ;将原来的错误断点弹出

  PUSH 00H

  PUSH 00H ;将断点地址重写为0000H

  RETI

  2、 未使用的EPROM区

  假设我们用了一片2764,但并没有用完整个存储区。这时候就可在未用的区域里填充上020000数据,这样当程序飞入其中时就会很快的走入正轨。这条指令其实是“LJMP 0000H”的机器码。

  3、 非EPROM空间

  单片机系统的程序空间是64K,正常情况下我们所使用的EPROM不会占用所有的空间,假设我们现在的EPROM占用16K的空间那么剩下的48K空间就被闲置不用了。当乱飞的PC落入这些空间时,读入的数据将为FFH,这是 :MOV R7,A 指令的机器码,将修改R7的内容。因此,当程序乱飞入非EPROM芯片区后,不仅无法导入正规,面且破坏了R7的内容。

  我们知道,当CPU读程序存储器的时候,伴随着会产生一个PSEN信号,我们就可利用这个信号,再加上一个非EPROM区的地址译码信号,构成一个选通信号来起动一个空闲的中断,再用软件陷井的方法从中断程序中把程序导入正规。我们可看下面的一个图:

  INT0

  PSEN

  非EPROM地址选通信号

  我们也可通过硬件的方法用一个缓冲器直接给数据线写一个值,其原理与上述方法相同。

  三、 软件看门狗技术

  我们知道看门狗的作用就是防止程序发生死循环,或者说程序跑飞。硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。

  软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中 断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。

  对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

hmi是Human Machine Interface 的缩写,"人机接口",也叫人机界面。人机界面(又称用户界面或使用者界面)是系统和用户之间进行交互和信息交换的媒介, 它实现信息的内部形式与人类可以接受形式之间的转换...

关键字: HMI 人机界面 系统

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

目前,随着现代大型燃煤火力发电机组的装机容量越来越大,现代大型燃煤火力发电机组每天消耗的燃煤量也逐步增加,而称重式给煤机作为燃煤输送、称重及调节自动化的重要辅助设备,其稳定可靠性、称重计量准确性对机组的安全经济运行及燃煤...

关键字: 给煤机 称重 稳定性

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机
关闭
关闭