搜索
bottom↓
回复: 23

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

[复制链接]

出0入0汤圆

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

出0入0汤圆

发表于 2014-12-1 11:17:07 | 显示全部楼层
低功耗的话,电池供电?

出0入0汤圆

发表于 2014-12-1 11:18:01 | 显示全部楼层
TI的MSP430的目前听说推出FRAM的单片机了,可以直接存在FRAM里,就不用担心EEPROM的功耗了

出0入0汤圆

 楼主| 发表于 2014-12-1 11:21:05 | 显示全部楼层
lihaimeng@163 发表于 2014-12-1 11:17
低功耗的话,电池供电?

是的,电池供电的。

出0入0汤圆

发表于 2014-12-1 11:24:58 | 显示全部楼层
kaka_1314 发表于 2014-12-1 11:21
是的,电池供电的。

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-12-1 11:58:41 | 显示全部楼层
kaka_1314 发表于 2014-12-1 11:28
你是使用说明唤醒休眠的呢?

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-12-1 13:01:55 | 显示全部楼层
role_2099 发表于 2014-12-1 12:57
功耗是降低了,抗干扰方面能够从存储器上来增强吗

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

出0入0汤圆

发表于 2014-12-1 13:26:34 | 显示全部楼层
来学习下

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2014-12-1 16:00:31 | 显示全部楼层
lihaimeng@163 发表于 2014-12-1 13:54
每份数据包含计数的一个参数,存一次加一次,这样两份数据始终是不一样的 ...

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

出0入0汤圆

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

出0入0汤圆

发表于 2014-12-1 16:56:42 | 显示全部楼层
请问, 你是用外部晶振, 还是内部RC 时钟 (Internal OSC)?

出0入0汤圆

 楼主| 发表于 2014-12-1 17:06:00 | 显示全部楼层
pic_flash 发表于 2014-12-1 16:56
请问, 你是用外部晶振, 还是内部RC 时钟 (Internal OSC)?

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

出0入0汤圆

 楼主| 发表于 2014-12-1 17:07:17 | 显示全部楼层
zhugean 发表于 2014-12-1 16:23
个人认为选用一个抗干扰好的MCU,加上良好的外围设计,优于看门狗。

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

出0入0汤圆

发表于 2014-12-1 17:14:28 | 显示全部楼层
现已将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来, 不知这种做法可行??

你使用看门狗做唤醒, 为何不用timer 中断做唤醒呢?

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

出0入0汤圆

 楼主| 发表于 2014-12-1 17:23:05 | 显示全部楼层
pic_flash 发表于 2014-12-1 17:14
你使用看门狗做唤醒, 为何不用timer 中断做唤醒呢?

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

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

出0入0汤圆

发表于 2014-12-1 17:41:47 来自手机 | 显示全部楼层
如果是特殊工作环境,在有看门狗的基础上还是加多一个cpu相互签证,如有异常还有一个是活的。

出0入0汤圆

发表于 2014-12-1 18:48:49 | 显示全部楼层
kaka_1314 发表于 2014-12-1 17:23
使用的PIC16F877芯片,看了datesheet,好像无timer唤醒功能,我再细读下,再来反馈。 ...

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

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

出0入0汤圆

发表于 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。






出0入0汤圆

发表于 2014-12-1 22:01:56 | 显示全部楼层
......将看门狗做休眠定时唤醒,看门狗定时器溢出唤醒复位将不产生芯片复位,而只是从sleep指令的下一个执行,理论上假如一段程序跑飞而没进行喂狗,看门狗将复位到该程序段而不是主程序地址0开始运行,理论上对程序跑飞还是能reset回来,......

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

出0入0汤圆

 楼主| 发表于 2014-12-2 15:53:17 | 显示全部楼层
pic_flash 发表于 2014-12-1 18:48
不论是16F887, 还是16F877A, 都不建议使用, 尤其是16F877A 这个老芯片。。

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

哎,以前还少用PIC的,最近才用,一直对PIC的选型有点感冒。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-1 20:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表