打印

看门狗复位是否改变内存

[复制链接]
3775|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Batistuta_|  楼主 | 2008-8-25 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT89C51单片机在现场应用时,偶尔被干扰复位.单片机带看门狗。想问大家:

1)干扰导致的复位是不是一定是看门狗复位。

2)看门狗复位,内存中的值应该不会改变?

3)如果跑飞的程序改变了内存,这种几率有多大?如何提高可靠性呢?

相关帖子

沙发
Batistuta_|  楼主 | 2008-8-26 09:28 | 只看该作者

这个问题怎么没人注意

使用特权

评论回复
板凳
cnchip| | 2008-8-26 10:05 | 只看该作者

程序开始时内存清零

事实上Keil自带的汇编启动文件的一个主要工作就是内存清零,会提示你添加,你确定了吗?

使用特权

评论回复
地板
Batistuta_|  楼主 | 2008-8-26 10:38 | 只看该作者

程序是汇编写的。初始化内存也是自己写的程序。

现场有个别机器偶尔复位,一天有3-4次。复位之后,机器运行状态就会改变。

现在想在软件上解决,不知道可行不可行。
具体方法:
控制板有掉电检测模块,检测到掉电后,触发单片机外部中断,在中断处理程序中写一个字到EEPROM单元,作为掉电标记。
单片机初始化程序中先检查EEPROM中是否有掉电标记。若有,表示为上电复位,初始化运行状态参数。若没有,表示为看门狗复位,不初始化运行状态参数。
在初始化程序最后,清EEPROM中的标记。


不知道这样做是否可靠,请大家指点。

使用特权

评论回复
5
Batistuta_|  楼主 | 2008-8-26 11:57 | 只看该作者

吃饭去 。

使用特权

评论回复
6
dragon_hn| | 2008-8-26 13:17 | 只看该作者

先找出复位原因吧!

先找出复位原因吧!

使用特权

评论回复
7
赤铸| | 2008-8-26 13:20 | 只看该作者

复位本身一般不改变内存内容

除非是强干扰导致的复位,内存也可能同时被干扰改变
但复位仍然不是内存改变的原因

内存非法修改导致复位,倒很有可能

使用特权

评论回复
8
Batistuta_|  楼主 | 2008-8-26 13:40 | 只看该作者

请教;


dragon_hn,不知道怎么找复位原因,一般来说会有哪些情况呢?

赤铸,“内存非法修改导致复位"是在什么情况下发生的?
      干扰引起的复位的过程是不是就是程序跑飞,然后被看门狗复位?

使用特权

评论回复
9
赤铸| | 2008-8-26 15:20 | 只看该作者

复位主要就是指PC寄存器复位

干扰复位的途径至少有3种:
1. 电源波动造成复位电路动作
2. 程序跑飞,看门狗超时复位
3. 程序跑飞,保护跳转指令复位(程序存储器空白区填满跳转到起点的指令)
4. 程序跑飞,凑巧跑到起点(理论上是可能的)

前两种都属于“正常”复位,会同时进行系统外设、寄存器的复位

程序的执行流程是受RAM中的变量控制的,如果关键的变量被非法修改了,当然会死机或复位

使用特权

评论回复
10
liudewei| | 2008-8-26 16:44 | 只看该作者

建议楼主先关掉或去掉看门狗,看看还有没有自复位现象

如果还有可能是电源的问题。软件出问题导致复位也不排除,看你的处理器是什么类型的。

使用特权

评论回复
11
Batistuta_|  楼主 | 2008-8-26 16:46 | 只看该作者

谢谢版主


干扰复位的途径至少有3种:
1. 电源波动造成复位电路动作
2. 程序跑飞,看门狗超时复位
3. 程序跑飞,保护跳转指令复位(程序存储器空白区填满跳转到起点的指令)
4. 程序跑飞,凑巧跑到起点(理论上是可能的)

前两种都属于“正常”复位,会同时进行系统外设、寄存器的复位

程序的执行流程是受RAM中的变量控制的,如果关键的变量被非法修改了,当然会死机或复位

可不可以这样说:
情况1,功能寄存器(外设寄存器)和通用寄存器数值不变。
情况2,如果看门狗溢出前程序没有执行改变哪些重要参数的内存,那么与情况1相同。

但问题是,情况2不改变重要内存的可能性多大?不知道有没有人这么做过。

使用特权

评论回复
12
Batistuta_|  楼主 | 2008-8-26 16:50 | 只看该作者

还没有去现场,应该是干扰。

有几台很稳定,另外几台一天复位3-4次。

碰到了传说中的干扰,不知道从哪里入手,去了现场应该从哪里排除问题。。。。

使用特权

评论回复
13
liudewei| | 2008-8-26 17:31 | 只看该作者

有正常的,则基本判定是电源、电磁兼容的问题

使用特权

评论回复
14
赤铸| | 2008-8-26 19:55 | 只看该作者

看门狗复位其实有两条路

改变 PC -> 跑飞 -> 复位
改变 RAM -> 死机/跑飞 -> 复位

我不知道 51 的内部物理结构,只能猜测每字节的 PC 和 RAM 被干扰的概率差不多(如果用了片外扩展 RAM,那 RAM 被干扰几率就大多了)

但 PC 只有 2 字节,关键的 RAM 数量就看具体软件了,也许是 0,也许很多,但通常应该不止 2 字节吧?

即使 PC 被干扰了,也不能排除 PC 和 RAM 同时被干扰。

---- 简言之,没有理由说干扰偏偏眷顾 PC,所以不要指望干扰复位后 RAM 还能用


使用特权

评论回复
15
Batistuta_|  楼主 | 2008-8-26 20:26 | 只看该作者

哦,看来,还得从源头解决干扰。


怎么查干扰从哪来呢?

使用特权

评论回复
16
dragon_hn| | 2008-8-28 03:47 | 只看该作者

查源头的方法

1.换个电源.先用示波器测一下电源纹波.如果你的电源是7805等类似芯片提供的话,改由台式稳压电源直接供电,再测试.
2.关WATCH DOG,再测试.
3.关所有中断,再测试.
4.把程序一部分一部分屏蔽,再测试.
5.把可以断开的IO口一部分一部分断开,再测试.

写程序很多人都会,调试的时候,如何尽快找到故障点才是最重要的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

777

帖子

0

粉丝