程序会使单片机停振吗?

[复制链接]
3188|7
 楼主| chencheng 发表于 2011-9-22 20:08 | 显示全部楼层 |阅读模式
4个单片机通过MAX485连接在总线上,1个主机3个从机。从机程序为收到给自己的数据然后转发,主机程序为依次发送给其他3个单片机数据。
加电后,第一次循环很正常。主机发送第一个数据后延时,从机1收到数据转发;主机发送第二个数据后延时,从机2收到数据转发;主机发送第三个数据后延时,从机3收到数据转发。一切都按照设计的时间及顺序进行(执行过程通过LED观察)。主机延时一段时间后又重复上述过程,但从机就出现问题了!有时第二轮循环中就有单片机死机(示波器观察晶振停振,没有时钟信号,看门狗也没用),有时经过两三轮后才会有死机。不管怎样,反正没几轮就肯定有2个从机死机,而没有死机的那个单片机则一直正常工作,接收自己的数据并转发。无数次试验,说不定是哪两个从机会死机。单片机也换过STC和芯唐,都一样。请大家指点,单片机为什么会停振?
老鱼探戈 发表于 2011-9-22 21:35 | 显示全部楼层
只要没有动到相关的控制寄存器一般都不会的
chunyang 发表于 2011-9-22 21:46 | 显示全部楼层
本振“停振”多半是楼主的测量方法有问题,而故障现象则是因为楼主的程序编制有误所致。
 楼主| chencheng 发表于 2011-9-22 22:46 | 显示全部楼层
同样的方法能看到正常单片机的晶振波形,而看不到死机单片机波形。如果单片机没死,那么看门狗为什么不起作用?想不明白。
老鱼探戈 发表于 2011-9-22 22:53 | 显示全部楼层
看门狗为什么不起作用要问你自己了,开了吗?
 楼主| chencheng 发表于 2011-9-26 12:59 | 显示全部楼层
问题解决了。我分析原因是接收缓冲区溢出致使单片机进入掉电模式,故而停振。谢谢各位。
占领将军 发表于 2011-9-26 13:01 | 显示全部楼层
 楼主| chencheng 发表于 2011-9-26 13:13 | 显示全部楼层
谢谢2楼,我在2楼提示下,分析如何才会改变相关寄存器时,又得到别人关于缓冲区溢出提示,才想到了问题所在。并反复试验验证了原因所在。再次谢谢2楼。我不知道怎么给分,所以请原谅。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

116

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部