单片机死机后怎样运行?
忽然想到一个问题,单片机死机后怎样运行?指令的执行还是规规矩矩的执行么?进来发现一种死机现象:单片机一直在中断里打转,不能出中断后进入main(),调试中发现,程序运行到中断服务的最后一句时,不是回到主循环,而是过一段时间,等到定时中断置位时,
再次进入中断执行!
我猜测:死机时,部分外设还可以正常运行,中断机制也还是正常,出栈机制可能已经失灵! 经常听说单片机死机,一直没怎么见到,这次是真正见识了,于是就想:单片机死机后如何运行?那些单片机电路会失常?那些会仍然正常?
一般单片机死机后,指令处于一种怎样的运行状态, 可能认为单片机原地踏步最容易理解,但我决定似乎不是这样。 你的死机能重现吗 看情况 看门狗呀
从起 用调试器真切的看到过一次,现象是这样的:
1、程序只在有中断时(如定时1ms中断),进入中断服务中,但不能进入主循环,所以看起来各个任务不能执行了,表面上看是死机。
2、不能从中断返回主循环,中断退出机制失灵。
看门狗是该用的,但在干扰很严重的场合,一般调试到不死机了,为更安全起见,再加上看门狗。 死机一般是软件死机吧,除非干扰很大cpu已经无法正常运行,否则死机之后还是正常按照指令执行的
laoshanlaodao 发表于 2014-2-22 21:26
经常听说单片机死机,一直没怎么见到,这次是真正见识了,于是就想:单片机死机后如何运行?那些单片机电路 ...
我估计pc指针是个错误值,出入栈没有问题,才导致一出中断pc又是错的,建议如果调试器可以修改pc值,尝试下 单片机是死不了的如果真的死了 只能断电了 看门口都没有用处的你这明显是单片机受干扰 跑飞了。用狗就能拉回。 你都能看到进出中断了,谈何死机,程序有问题,调试吧LZ 也很感兴趣。楼主有答案了吗? 一般这种情况应该是楼主的逻辑判断没做好吧?
楼主这种情况我遇到过一次,是c8051F单片机,开了一个中断,后来不用了,初始化删掉,但是中断函数没删,而后因为某些条件进入正常中断后就出不来了。
楼主描述问题应该说明硬件和软件平台,这样大家有相似的经历就会提供给你参考和判断。 myxiaonia:
我估计pc指针是个错误值,出入栈没有问题,才导致一出中断pc又是错的,建议如果调试器可以修改pc值,尝试下
-----------------------------------------------------------------
您真是神人啊,被你说中了,我找到了原因,PIC单片机查找常量数组时,指数的范围弄成了255,实际数组只有10几个,指针低8位又不能向高8位进位,就一直运行那条指令ADDWF。 本人不才,但是觉得楼主的程序估计哪个地方有问题,一步一步的调试吧,不然单片机怎么会还在运行。。 楼主先弄明白死机和跑飞的区别吧 死机还可以运行》?不知道爱
页:
[1]