xjtubhy 发表于 2023-8-22 19:04:34

看门狗复位与断电重开机有何区别


最近在调试一个数采系统,有5个STM8S207为核心的采集板,每个板子有自己的地址编码。各板通过485总线互联,并连接到PC机上。在调试中发现偶尔有某个板子通信中断,就是PC机要不到它的数据了。而且不能自动恢复,直到硬件断电重开机才能恢复。设置一个看门狗复位,复位时间在串口通信中断后3秒钟复位,仿真也看到了这个复位,但是通信还是恢复不了。为什么断电重上电能恢复通信,而看门狗复位不能恢复通信。请大神指教啊。

t3486784401 发表于 2023-8-22 19:39:34

看门狗算是异步复位,前提是系统时钟还没挂。如果连系统时钟也挂了(例如晶振停振),看门狗的确会无能为力。

Landmark 发表于 2023-8-23 01:13:12

t3486784401 发表于 2023-8-22 19:39
看门狗算是异步复位,前提是系统时钟还没挂。如果连系统时钟也挂了(例如晶振停振),看门狗的确会无能为力 ...
(引用自2楼)

st的看门狗没有独立的时钟?!!

t3486784401 发表于 2023-8-23 02:28:54

Landmark 发表于 2023-8-23 01:13
st的看门狗没有独立的时钟?!!
(引用自3楼)

这个没去细了解,但一般认为看门狗自己的时钟不会挂;

我是指 MCU 的主时钟如果挂了(断电重启前不会恢复那种),直接点就是 MCU 不跑程序,间接点就是 MCU 在切换时钟那里死等。
这两种情况下,似乎都会造成看门狗复位无效。

ibmx311 发表于 2023-8-23 03:43:44

看门狗本身就是个需要高可靠的器件,才各种意义来看都应该是外挂的

Elex 发表于 2023-8-23 07:49:11

区别还是挺大的:
1,IO死锁之类的硬件问题看门狗复位是复位不了的。
2,有的设置进入BootLoader只能在上电复位时进入,软复位进入不了。
3,部分外设的寄存器可能不能软复位,必须断电后上电复位。
4,看门狗软复位后一些没有初始化处理的内存数据可能还继续保留,而上电复位将是默认值或随机值。

估计楼主问题是错误的数据在软复位后继续保持下来了,看看那些关键数据加上初始化操作看看。

Arm2048 发表于 2023-8-24 16:41:55

确保看门狗复位与重新上电后, 都做了:串口初始化,通信相关变量与buffer初始化。

DoDoTech 发表于 2023-8-24 16:51:42

之前设计的CAN接口有个自杀机制,就是异常未喂狗后,会自动触发电源复位,这个比内部看门狗可靠很多。另外通讯协议周期性发送50ms,及时复位,设备也能正常工作。

陆小凤之北京 发表于 2023-8-25 14:09:47

把通讯错误计数器打出来看看,是否485通讯实际在发生错误积累。溢出的话要清一下。

陆小凤之北京 发表于 2023-8-25 14:11:20

485是主从通讯的,得确保从站不会因为某种错误,卡在发送状态。

wxws 发表于 2023-8-25 16:59:42

首先要确认 从mcu,有没死掉,哪怕亮个灯 闪闪
出现通讯故障后,灯是不是不闪了,确认是485问题,还是 mcu问题
大概率还是软件问题将搞mcu死了
页: [1]
查看完整版本: 看门狗复位与断电重开机有何区别