485总线上的单片机老死机?
时间:10-02
整理:3721RD
点击:
4个单片机通过MAX485连接在总线上,1个主机3个从机。从机程序为收到给自己的数据然后转发,主机程序为依次发送给其他3个单片机数据。
加电后,第一次循环很正常。主机发送第一个数据后延时,从机1收到数据转发;主机发送第二个数据后延时,从机2收到数据转发;主机发送第三个数据后延时,从机3收到数据转发。一切都按照设计的时间及顺序进行(执行过程通过LED观察)。主机延时一段时间后又重复上述过程,但从机就出现问题了!有时第二轮循环中就有单片机死机(示波器观察晶振停振,没有时钟信号,看门狗也没用),有时经过两三轮后才会有死机。不管怎样,反正没几轮就肯定有2个从机死机,而没有死机的那个单片机则一直正常工作,接收自己的数据并转发。无数次试验,说不定是哪两个从机会死机。单片机也换过STC和芯唐,都一样。请大家指点,我该如何寻找原因?
暗自揣测,看门狗在起作用,晶振也没有停摆
是通信buffer没处理好,溢出了造成异常
建议LZ多做试验,观察电源是否合格
适当简化通信内容
用示波器检测485通信波形
也许会有惊喜的
除了AB,再加根GND试试
至于你信不信,我反正是信了..
信专家 原地复活
问题已解决,谢谢各位!
在2楼的提示下,我想原因可能是中断接收缓冲区溢出,改变SFR的内容,致使单片机进入PowerDown模式,振荡器停振。实验发现,重新复位可以唤醒,外中断也可以唤醒,但很快又会停振。修改了中断接收程序,使之不会溢出,一切就正常了。
路过,学习了
路过,学习了
来迟了
来晚了啊
支持分享