laoshanlaodao 发表于 2014-2-22 21:22:34

单片机死机后怎样运行?

忽然想到一个问题,单片机死机后怎样运行?指令的执行还是规规矩矩的执行么?

进来发现一种死机现象:单片机一直在中断里打转,不能出中断后进入main(),调试中发现,程序运行到中断服务的最后一句时,不是回到主循环,而是过一段时间,等到定时中断置位时,
再次进入中断执行!


我猜测:死机时,部分外设还可以正常运行,中断机制也还是正常,出栈机制可能已经失灵!

laoshanlaodao 发表于 2014-2-22 21:26:15

经常听说单片机死机,一直没怎么见到,这次是真正见识了,于是就想:单片机死机后如何运行?那些单片机电路会失常?那些会仍然正常?
一般单片机死机后,指令处于一种怎样的运行状态, 可能认为单片机原地踏步最容易理解,但我决定似乎不是这样。

雨雪随行 发表于 2014-2-22 21:30:59

你的死机能重现吗

Vmao 发表于 2014-2-22 21:31:23

看情况         

lhxr 发表于 2014-2-22 21:32:30

看门狗呀
从起

laoshanlaodao 发表于 2014-2-22 21:42:13

用调试器真切的看到过一次,现象是这样的:
1、程序只在有中断时(如定时1ms中断),进入中断服务中,但不能进入主循环,所以看起来各个任务不能执行了,表面上看是死机。
2、不能从中断返回主循环,中断退出机制失灵。

看门狗是该用的,但在干扰很严重的场合,一般调试到不死机了,为更安全起见,再加上看门狗。

cc224 发表于 2014-2-22 21:46:53

死机一般是软件死机吧,除非干扰很大cpu已经无法正常运行,否则死机之后还是正常按照指令执行的

myxiaonia 发表于 2014-2-23 08:34:31

laoshanlaodao 发表于 2014-2-22 21:26
经常听说单片机死机,一直没怎么见到,这次是真正见识了,于是就想:单片机死机后如何运行?那些单片机电路 ...

我估计pc指针是个错误值,出入栈没有问题,才导致一出中断pc又是错的,建议如果调试器可以修改pc值,尝试下

kebaojun305 发表于 2014-2-23 09:36:41

单片机是死不了的如果真的死了   只能断电了 看门口都没有用处的你这明显是单片机受干扰 跑飞了。用狗就能拉回。

fengqiang 发表于 2014-2-23 09:42:12

你都能看到进出中断了,谈何死机,程序有问题,调试吧LZ

winterw 发表于 2014-2-23 09:45:49

也很感兴趣。楼主有答案了吗?

lnskngdc 发表于 2014-2-23 10:05:16

一般这种情况应该是楼主的逻辑判断没做好吧?
楼主这种情况我遇到过一次,是c8051F单片机,开了一个中断,后来不用了,初始化删掉,但是中断函数没删,而后因为某些条件进入正常中断后就出不来了。
楼主描述问题应该说明硬件和软件平台,这样大家有相似的经历就会提供给你参考和判断。

laoshanlaodao 发表于 2014-2-23 10:30:56

myxiaonia:
我估计pc指针是个错误值,出入栈没有问题,才导致一出中断pc又是错的,建议如果调试器可以修改pc值,尝试下
-----------------------------------------------------------------
您真是神人啊,被你说中了,我找到了原因,PIC单片机查找常量数组时,指数的范围弄成了255,实际数组只有10几个,指针低8位又不能向高8位进位,就一直运行那条指令ADDWF。

Lu.Shi 发表于 2014-2-24 12:08:29

本人不才,但是觉得楼主的程序估计哪个地方有问题,一步一步的调试吧,不然单片机怎么会还在运行。。

饭桶 发表于 2014-2-24 12:18:31

楼主先弄明白死机和跑飞的区别吧

Smartist 发表于 2014-3-13 16:45:38

死机还可以运行》?不知道爱
页: [1]
查看完整版本: 单片机死机后怎样运行?