历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2018年03月04日 | 单片机程序跑飞现象及解决--看门狗电路

2018-03-04 来源:eefocus

1、程序跑飞现象

随着单片机在能源领域中的广泛应用,单片机的抗干扰问题越来越突出,煤矿井下环境一般比较恶劣,这便会为单片机控制系统带来各种干扰,以致系统不能正常工作。单片机应用系统的抗干扰性能主要取决于硬件的抗干扰设计,但软件抗干扰设计作为硬件抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一个突出问题,便是单片机运行过程中经常出现的程序跑飞现象。

在单片机系统中,因为干扰的原因,在非预期的情况下,使得程序计数器PC 的值发生随机的变化,从而使得程序的流向指向不确定区域,这便是程序的跑飞。程序跑飞后或者会使指令的地址码和操作码发生改变,PC 把操作数当作指令来执行;或者PC值指向一条不合逻辑关系的指令甚或是非程序区,运行结果常常会使单片机进入死循环———便是大家常说的“死机”。为确保在无人当值的情况下,单片机“死机”后能自动恢复过来,通常采用软件陷阱,外部WDT 电路,以及软件控制的WATCHDOG 等方法,使系统恢复正常(后两种俗称“看门狗”),限于篇幅不做专门说明,这里主要向大家介绍用555 定时器软硬结合做看门狗的一种方法。

2、555定时器

一般情况下,看门狗主要是通过不断监视程序运行一个事件的时间是否超过预定的时间来判断程序是否进入了死循环,因此利用555 定时器可复位的触发功能外加延时电路可实现看门狗的功能。555定时器是一种多用途的单片集成电路,内部电路如图1 所示。

CO端是控制电压输入端,加控制电压可改变A1“-”端及A2“ +”端的参考电压,若不用,可通过一个小电容接地,以防旁路高频交流干扰;R 为定时器直接复位端,加低电平可将定时器直接置“0”,此时,OUT输出“0”,Q 为1”,V 导通,D 端对地通路;TH 为复位阀值输入端,当TH 电压超过2/3UDD(即A1 负端分压)时,A1 输出为“1”,OUT 输出“0”,同样,D 端对地通路;TR 为置位输入端,当TR电压低于1/3 UDD(即A2 正端分压)时,A2 输出“1”,定时器被置位,此时,OUT 输出“1”,Q 为“0”,V截止,D端对地断路。

3、看门狗电路及运行指令以INTEL公司的16 位单片机8096 为例,555定时器作为看门狗与单片机的接口电路可设计如图2 所示。

首先在单片机初始化时用指令“ORBPORT1,#01H”置P1.0 为“1”,则三极管T 导通,555 芯片的R 为“1”,TH、TR 端经R、C 充电,电位逐渐上升,当电位还低于1/3 UDD 时,OUT 输出“1”,D端对地断路,电容C 正常充电,(http://www.diangon.com/版权所有)一旦程序跑飞或进入死循环,在电位上升到高于2/3 UDD时仍没有“喂狗”,则OUT输出变为“0”,经三极管T拉低单片机的RESET 脚,并使复位电容放电,这时
D 端对地短路,电容C 也通过Rf 放电,当TH、TR端电位放电到低于1/3 UDD(注意)时,OUT输出重新变为“1”,单片机进入复位状态。
“喂狗”是指复位看门狗,在本电路中只须运行以下指令即可。
ANDB PORT1,#0FEH ;使P1.0 为“0”
SKIP ;空操作,用于延时
SKIP ;以使TR电压降到1/3 UDD为宜
ORB PORT1,#01H ;使P1.0 为“1”
当P1.0 被置为“0”时,555 定时器的R 端为“0”,三极管T 截止。R 端为“0”则555 芯片被复位,OUT 输出为“0”,同时D 端对地短路,电容C放电为重新延时做准备,但因为三极管的截止,此时OUT 输出虽然也为“0”却并不影响单片机的RESET脚,单片机正常工作,从而区分开了“喂狗”与系统故障时看门狗发生作用的不同之处。

4、需要注意的问题

这里仍然有一个问题需要注意,那就是555定时器的正常工作与否完全依赖于单片机P1.0的状态,但在某些干扰比较严重的情况下,单片机的误操作是有可能改变P1.0 的预置状态的,若单片机在进入死循环之前,P1.0 被误置为了“0”,看门狗始终处于“被喂”的状态,那这个电路便就无法再发挥作用了,对这种情况我们可用软件冗余的方法来应对,就是在程序的关键地方多次插写看门狗的激活指令:
NOP
ORB PORT1,#01H

值得提醒一下的是这里“NOP”指令的作用不容忽视,可使跑飞的程序纳入正轨,不致冲散后面的关键指令。不过尽管如此软件冗余的应用也还是有一个前提的,那就是跑飞的程序必须落在程序区,冗余的指令得到执行方可生效,若跑飞的程序落在了非程序区,仅凭指令冗余技术便不可靠了,这时我们便还须借助其他抗干扰技术的支持,如软件陷阱、标志技术,本质可靠性程序的设计等,在此不再赘述,但这些都必须包含在一个可靠的程序内———毕竟,单片机系统来自干扰的影响是立体的,那么,我们的应对策略便也须是全方位的。


推荐阅读

史海拾趣

EPIGAP公司的发展小趣事

为了进一步扩大市场份额,EPIGAP公司开始实施国际化战略。公司先后在多个国家和地区设立了办事处和研发中心,以便更好地了解当地市场需求和技术发展趋势。通过与国际客户的深入合作,EPIGAP公司的产品逐渐打入国际市场,赢得了广泛的认可和赞誉。

Bestar Electric公司的发展小趣事

为了进一步提升竞争力,Bestar Electric开始整合产业链资源。公司通过与供应商建立长期合作关系,确保原材料的稳定供应;同时,公司还涉足电子产品的组装和制造领域,实现了产业链的垂直整合。此外,公司还积极探索多元化发展路径,涉足相关领域,如智能家居、物联网等,以拓展新的增长点。

E-Z-HOOK公司的发展小趣事

在1956年的一个晴朗午后,E-Z-HOOK的创始人阿尔伯特·史密斯(化名)在实验室里遇到了一个棘手的问题。他正在测试一个复杂的电子系统,但发现现有的测试工具无法满足他的需求。于是,他动手设计并制造出了第一个E-Z-HOOK测试钩,这个简单但实用的工具极大地方便了他的工作。史密斯看到了这个产品的巨大潜力,于是决定成立一家公司来专门生产这种测试钩。这就是E-Z-HOOK公司的起源。

Habia Cable公司的发展小趣事

在电子产品日益复杂化的背景下,E-Z-HOOK公司不断追求技术创新。他们投入大量资源研发新型测试工具,以提高测试效率和准确性。其中一项重要的创新是开发出了可重复使用的测试钩。这种测试钩具有极高的耐用性和可靠性,可以大大降低测试成本。此外,公司还推出了一系列智能化测试解决方案,通过集成先进的传感器和软件技术,实现了对测试过程的实时监控和数据分析。

Coherent Inc公司的发展小趣事

1966年,Coherent Inc.由一群斯坦福大学的研究人员共同创立,其中包括物理学家James Hobart。初创时期的公司致力于激光技术的研究和开发,逐渐积累起了丰富的技术底蕴。这种对技术的执着追求和不断探索,为公司的后续发展奠定了坚实的基础。

DDK公司的发展小趣事

DDK公司自创立之初,便以技术创新为核心竞争力。公司投入大量研发资源,不断探索新的电子技术和材料,力求在激烈的市场竞争中脱颖而出。在经历了数次技术突破后,DDK公司成功研发出了一款高性能、低能耗的芯片产品,这一产品迅速在市场上获得了广泛认可,为DDK公司赢得了良好的口碑和市场份额。

问答坊 | AI 解惑

基于ARM的条码精密测量系统

摘要: 本文介绍了一种基于32位高性能处理器的视觉精密测量系统的软硬件设计。图像传感器采集的条码图像通过精密定位算法得到绝对位移值,由以太网接口实现高速图像采集。该系统适用于高精度定位的各种位移测量。 关键词: ARM;嵌入式系统;视觉 ...…

查看全部问答>

LTCC的前景

本人初涉LTCC产品设计,不知基于该工艺的产品前景如何,谢谢讨论。…

查看全部问答>

模拟电子200问

附:pdf文档 1、半导体材料制作电子器件与传统的真空电子器件相比有什么特点? 答:频率特性好、体积小、功耗小,便于电路的集成化产品的袖珍化,此外在坚固抗震可靠等方面也特别突出;但是在失真度和稳定性等方面不及真空器件。 2、什么 ...…

查看全部问答>

NXL LPC系列ARM IIC总线下读写AT24Cxx的总结

       最近应用到NXP LPC系列的ARM IIC总线进行读写AT24Cxx EEPROM,总是出现一下错误,经过查阅资料才发现,原来本人范的全是最基本的错误,感觉很惭愧,现在把容易出错的地方进行总结,希望网友遇到这样的问题时 ...…

查看全部问答>

S3C6410 WINCE6 SD卡升级 求解

最近在思考一个问题,就是有关SD卡升级的。 我看到过三星发布2442下的SD卡升级,但有个缺陷是只支持FAT格式的小容量卡,而且,在EBOOT里面去读写卡的block、sector,简直有点复杂。 我在想,如果是FAT32格式的(现在基本上都是FAT32格式了)SD卡能 ...…

查看全部问答>

串口发送通了 但是始终接收不到数据

        int tmp,i,j;         int receiv,send=0x30;         *ULCON0=0x03;         *UCON0=0x09;         *UBRDIV0=0x280;   ...…

查看全部问答>

一方案打算用FSMC控制彩屏..想请教

从原理上来说..如果用FSMC驱动彩屏..就是把它当作一个外部的存储器件来操作. 1)只有16bit数据线是不是代表每像素就是16bit的?2)需要LCD内带控制器的屏才可以..这样选型范围应该会缩小很多.而且会贵这种屏一般上批量的话能做到多少钱一片. ...…

查看全部问答>

STM8S103配置TIM1为输出比较模式不翻转

用的是103F的片子,想把TIM1设置成翻转输出比较模式,但端口不会发生翻转 配置程序如下: GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); TIM1->CR1 &= 0xFE; // stop TIM1 TIM1->PSCRH = 0; TIM1->PSCRL = 0; ...…

查看全部问答>