单片机软件抗干扰,具体怎么做?
听老的工程师说,要防止程序跑飞,跑飞后,还要恢复跑飞前的现场?具体怎么操作? 我也很想知道,感觉很难做到.可能说的是外部的环境吧. 上看门狗咯,喂狗不要放定时器里。如果程序在没有外部强干扰的情况下跑飞,那肯定是程序没写好,通常是内存被越界篡改了 我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复位,然后再从头执行,因为watchdog溢出复位不会清空RAM,所以用三个位置保存数据,判断是掉电复位还是干扰复位,能在750KV,几百A的强电场里正常使用。 Doding 发表于 2015-3-30 21:59我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复 ...
大哥,stm32f103有没有必要上外部看门狗 semonpic 发表于 2015-3-30 22:10
大哥,stm32f103有没有必要上外部看门狗
是用内部的,C8051,不只看门狗,同时还有定时器,防止狗死了不复位,各种手段都用上了。 Doding 发表于 2015-3-30 21:59
我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复 ...
呵呵,你把你们的核心机密都泄漏了{:lol:} 又学到一招。不过为了保证可靠性,你的WDT应该不超过1ms吧。 wye11083 发表于 2015-3-30 22:21
呵呵,你把你们的核心机密都泄漏了 又学到一招。不过为了保证可靠性,你的WDT应该不超过1ms吧。 ...
这不是核心机密,很多人都会这么做,我只是给LZ提供一个Watchdog溢出后恢复现场比较常见的思路,如果只靠这点就能在强电场里工作,那就太简单了。
Watchdog的定时随时在变化,大循环完成了Watchdog基本也就快溢出了。 干扰不光会影响PC指针,有可能还会影响到RAM数据 放狗主要防止干扰造成程序流程异常。并不是万能的。
你要完全恢复之前的数据与流程几乎是不可能的。
仔细评估需要保存哪些重要的数据,对关键数据与流程进行重点控制即可。 好的整个系统设计,可以保证外面非常弱的干扰,对cpu基本上无影响,这才是解决干扰的真正方法。
当然软件上有处理也是好事情。 硬件不够强大,软件再怎么搞都是徒劳的。当然包括ic的抗干扰性能。 如果真是干扰引起程序错误,恢复错误前的场景也没意义啊,反正RAM里数据是错的。调试时程序跑飞保存之前的上下文有助于调试,不过作用也不大。 硬件强大,才是正道。
页:
[1]