chengdakang 发表于 2015-3-30 21:34:23

单片机软件抗干扰,具体怎么做?

听老的工程师说,要防止程序跑飞,跑飞后,还要恢复跑飞前的现场?具体怎么操作?

wangyu_2011 发表于 2015-3-30 21:52:22

我也很想知道,感觉很难做到.可能说的是外部的环境吧.

gshuang1 发表于 2015-3-30 21:58:56

上看门狗咯,喂狗不要放定时器里。如果程序在没有外部强干扰的情况下跑飞,那肯定是程序没写好,通常是内存被越界篡改了

Doding 发表于 2015-3-30 21:59:59

我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复位,然后再从头执行,因为watchdog溢出复位不会清空RAM,所以用三个位置保存数据,判断是掉电复位还是干扰复位,能在750KV,几百A的强电场里正常使用。

semonpic 发表于 2015-3-30 22:10:12

Doding 发表于 2015-3-30 21:59
我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复 ...

大哥,stm32f103有没有必要上外部看门狗

Doding 发表于 2015-3-30 22:18:20

semonpic 发表于 2015-3-30 22:10
大哥,stm32f103有没有必要上外部看门狗

是用内部的,C8051,不只看门狗,同时还有定时器,防止狗死了不复位,各种手段都用上了。

wye11083 发表于 2015-3-30 22:21:14

Doding 发表于 2015-3-30 21:59
我们有一款产品,用watchdog定时,每个程序大循环都在watchdog溢出时间以内,大循环完成了等watchdog溢出复 ...

呵呵,你把你们的核心机密都泄漏了{:lol:} 又学到一招。不过为了保证可靠性,你的WDT应该不超过1ms吧。

Doding 发表于 2015-3-30 22:37:30

wye11083 发表于 2015-3-30 22:21
呵呵,你把你们的核心机密都泄漏了 又学到一招。不过为了保证可靠性,你的WDT应该不超过1ms吧。 ...

这不是核心机密,很多人都会这么做,我只是给LZ提供一个Watchdog溢出后恢复现场比较常见的思路,如果只靠这点就能在强电场里工作,那就太简单了。
Watchdog的定时随时在变化,大循环完成了Watchdog基本也就快溢出了。

szxszx 发表于 2015-3-31 07:55:51

干扰不光会影响PC指针,有可能还会影响到RAM数据

gonboy 发表于 2015-3-31 09:29:49

放狗主要防止干扰造成程序流程异常。并不是万能的。

你要完全恢复之前的数据与流程几乎是不可能的。
仔细评估需要保存哪些重要的数据,对关键数据与流程进行重点控制即可。

Auir 发表于 2015-4-1 10:48:46

好的整个系统设计,可以保证外面非常弱的干扰,对cpu基本上无影响,这才是解决干扰的真正方法。

当然软件上有处理也是好事情。

tatiyixi2015 发表于 2015-4-1 11:15:54

硬件不够强大,软件再怎么搞都是徒劳的。当然包括ic的抗干扰性能。

zhenghe 发表于 2015-4-1 11:39:32

如果真是干扰引起程序错误,恢复错误前的场景也没意义啊,反正RAM里数据是错的。调试时程序跑飞保存之前的上下文有助于调试,不过作用也不大。

fei-lai-fei-qu 发表于 2015-4-3 14:11:05

硬件强大,才是正道。
页: [1]
查看完整版本: 单片机软件抗干扰,具体怎么做?