应对干扰,程序要做哪些保护

2020-02-06 10:22发布

现在接收一个项目,项目要求低功耗,且一旦出产品运行,由于特殊环境不能再人工干预(也即不能人工复位,一单死机问题就很麻烦)。我使用的是PIC16f887的muc,现已将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来, 不知这种做法可行??另外我有个问题,就是该产品的参数数据都是用RAM保存,会不会有强电磁干扰或其他干扰影响RAM里的数据,我现在正在考虑要不要使用eeprom保存参数??望坛里的大侠们多多指点1、2.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
huanger
1楼-- · 2020-02-09 07:43
如果是特殊工作环境,在有看门狗的基础上还是加多一个cpu相互签证,如有异常还有一个是活的。
pic_flash
2楼-- · 2020-02-09 11:31
 精彩回答 2  元偷偷看……
pic_flash
3楼-- · 2020-02-09 17:27
另外我有个问题,就是该产品的参数数据都是用RAM保存,会不会有强电磁干扰或其他干扰影响RAM里的数据,我现在正在考虑要不要使用eeprom保存参数??望坛里的大侠们多多指点1、2.

我从来不用RAM 来保存资料。。
原因是如果断电了, 资料就不见, 伤不起啊。。
资料一般是存在EEprom。
那么, 就看存写的次数, 如果, 1百万次内的, 可以用PIC 内建的EEprom
如果, 超过1千万次, 就考虑外接EEprom 如 24LCxxx


下面是我做过的一个项目, 给你做思路参考:
我做的是几个计数器, 电路是12V 供电的。
我需要保存这个计数结果。。

但是, 我不能老是在数目累加时就写入去EEprom, 因为一天的写入的次数还蛮多的。。
所以, 我是暂时写在RAM 里。

另外,我有监视电源电压。。当电源掉电时,电压一降到9~10V, 我就知道了。。
这时就快速的把RAM的数目,写入EEprom 去。。时间是够的,余下的电足够我写入EEprom。






JQ_Lin
4楼-- · 2020-02-09 17:28
......将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来,......

这个思路可以有。丢弃几年了,有空试试。
担心干扰影响RAM里的数据,使用eeprom保存参数是必须的吧。

kaka_1314
5楼-- · 2020-02-09 21:33
pic_flash 发表于 2014-12-1 18:48
不论是16F887, 还是16F877A, 都不建议使用, 尤其是16F877A 这个老芯片。。

建议替代的是16F1936, 或 ...

哎,以前还少用PIC的,最近才用,一直对PIC的选型有点感冒。

一周热门 更多>