kaka_1314 发表于 2014-12-1 11:05:33

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

现在接收一个项目,项目要求低功耗,且一旦出产品运行,由于特殊环境不能再人工干预(也即不能人工复位,一单死机问题就很麻烦)。我使用的是PIC16f887的muc,现已将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来, 不知这种做法可行??另外我有个问题,就是该产品的参数数据都是用RAM保存,会不会有强电磁干扰或其他干扰影响RAM里的数据,我现在正在考虑要不要使用eeprom保存参数??望坛里的大侠们多多指点1、2.

lihaimeng@163 发表于 2014-12-1 11:17:07

低功耗的话,电池供电?

lihaimeng@163 发表于 2014-12-1 11:18:01

TI的MSP430的目前听说推出FRAM的单片机了,可以直接存在FRAM里,就不用担心EEPROM的功耗了

kaka_1314 发表于 2014-12-1 11:21:05

lihaimeng@163 发表于 2014-12-1 11:17
低功耗的话,电池供电?

是的,电池供电的。

lihaimeng@163 发表于 2014-12-1 11:24:58

kaka_1314 发表于 2014-12-1 11:21
是的,电池供电的。

楼主提醒了我死机的问题,以前用430做低功耗的时候,休眠的时候的是关开门狗和低压检测多关了,醒的时候就全开了,有个问题是开门狗时间可能就不对了

kaka_1314 发表于 2014-12-1 11:28:32

lihaimeng@163 发表于 2014-12-1 11:24
楼主提醒了我死机的问题,以前用430做低功耗的时候,休眠的时候的是关开门狗和低压检测多关了,醒的时候 ...

你是使用说明唤醒休眠的呢?

lihaimeng@163 发表于 2014-12-1 11:58:41

kaka_1314 发表于 2014-12-1 11:28
你是使用说明唤醒休眠的呢?

是啊,休眠使用基本定时器定时唤醒,唤醒后,开要使用的硬件,然后处理逻辑,接着就直接又休眠了,看门狗和低压检测多在醒来的时候,开启,然后检测

role_2099 发表于 2014-12-1 12:57:08

lihaimeng@163 发表于 2014-12-1 11:18
TI的MSP430的目前听说推出FRAM的单片机了,可以直接存在FRAM里,就不用担心EEPROM的功耗了 ...

功耗是降低了,抗干扰方面能够从存储器上来增强吗

lihaimeng@163 发表于 2014-12-1 13:01:55

role_2099 发表于 2014-12-1 12:57
功耗是降低了,抗干扰方面能够从存储器上来增强吗

具体还没去了解,你可以去了解下,说是写的速度很快,掉电的时候,数据还是存在FRAM里,另外如果你要考虑抗干扰是不是应该做双方数据,循环保存,另加校验什么的,这样丢一份还有一份,至少看着安全点

丙寅电子 发表于 2014-12-1 13:26:34

来学习下

kaka_1314 发表于 2014-12-1 13:49:05

lihaimeng@163 发表于 2014-12-1 13:01
具体还没去了解,你可以去了解下,说是写的速度很快,掉电的时候,数据还是存在FRAM里,另外如果你要考虑 ...

搜索了些资料,面对RAM数据保护,可以使用双份数据,但是当两个数据不一样的时候,我该怎么分辨哪个数据是正确的呢?

lihaimeng@163 发表于 2014-12-1 13:54:04

kaka_1314 发表于 2014-12-1 13:49
搜索了些资料,面对RAM数据保护,可以使用双份数据,但是当两个数据不一样的时候,我该怎么分辨哪个数据 ...

每份数据包含计数的一个参数,存一次加一次,这样两份数据始终是不一样的

kaka_1314 发表于 2014-12-1 16:00:31

lihaimeng@163 发表于 2014-12-1 13:54
每份数据包含计数的一个参数,存一次加一次,这样两份数据始终是不一样的 ...

多谢你的指点,我最主要的问题是,什么时候数据是异常没法判断。

zhugean 发表于 2014-12-1 16:23:41

个人认为选用一个抗干扰好的MCU,加上良好的外围设计,优于看门狗。

pic_flash 发表于 2014-12-1 16:56:42

请问, 你是用外部晶振, 还是内部RC 时钟 (Internal OSC)?

kaka_1314 发表于 2014-12-1 17:06:00

pic_flash 发表于 2014-12-1 16:56
请问, 你是用外部晶振, 还是内部RC 时钟 (Internal OSC)?

低功耗的使用内部晶振不是更好?

kaka_1314 发表于 2014-12-1 17:07:17

zhugean 发表于 2014-12-1 16:23
个人认为选用一个抗干扰好的MCU,加上良好的外围设计,优于看门狗。

MUC目前就是选用功能稳定性好的PIC ,外围电路相对较简单,只是想在硬件的基础上,软件再加些保护措施。

pic_flash 发表于 2014-12-1 17:14:28

现已将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来, 不知这种做法可行??
你使用看门狗做唤醒, 为何不用timer 中断做唤醒呢?

看门狗的主要功能, 就是让程序跑飞了, 然后做芯片复位啊。。

kaka_1314 发表于 2014-12-1 17:23:05

pic_flash 发表于 2014-12-1 17:14
你使用看门狗做唤醒, 为何不用timer 中断做唤醒呢?

看门狗的主要功能, 就是让程序跑飞了, 然后做芯片 ...

使用的PIC16F877芯片,看了datesheet,好像无timer唤醒功能,我再细读下,再来反馈。

huanger 发表于 2014-12-1 17:41:47

如果是特殊工作环境,在有看门狗的基础上还是加多一个cpu相互签证,如有异常还有一个是活的。

pic_flash 发表于 2014-12-1 18:48:49

kaka_1314 发表于 2014-12-1 17:23
使用的PIC16F877芯片,看了datesheet,好像无timer唤醒功能,我再细读下,再来反馈。 ...

不论是16F887, 还是16F877A, 都不建议使用, 尤其是16F877A 这个老芯片。。

建议替代的是16F1936, 或16F1937, 功能是更强, 价格是更低的。。

pic_flash 发表于 2014-12-1 19:04:05

另外我有个问题,就是该产品的参数数据都是用RAM保存,会不会有强电磁干扰或其他干扰影响RAM里的数据,我现在正在考虑要不要使用eeprom保存参数??望坛里的大侠们多多指点1、2.
我从来不用RAM 来保存资料。。
原因是如果断电了, 资料就不见, 伤不起啊。。
资料一般是存在EEprom。
那么, 就看存写的次数, 如果, 1百万次内的, 可以用PIC 内建的EEprom
如果, 超过1千万次, 就考虑外接EEprom 如 24LCxxx


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

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

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






JQ_Lin 发表于 2014-12-1 22:01:56

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

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

kaka_1314 发表于 2014-12-2 15:53:17

pic_flash 发表于 2014-12-1 18:48
不论是16F887, 还是16F877A, 都不建议使用, 尤其是16F877A 这个老芯片。。

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

哎,以前还少用PIC的,最近才用,一直对PIC的选型有点感冒。
页: [1]
查看完整版本: 应对干扰,程序要做哪些保护