蒋文涛 发表于 2024-9-21 10:43:08

在用8H4K64TL,按键唤醒掉电模式会偶尔碰到自行复位两次的问题,请求社友帮分析

本帖最后由 DebugLab 于 2024-9-21 12:41 编辑

问题描述:
系统时钟24MHZ
数码管显示
开看门狗,看门狗计数器在掉电模式下是停止的,看门狗溢出时间5秒左右(256分频)
MCU 休眠是掉电模式,按键唤醒后通过指令执行软件复位,此时偶尔 (20%)的几率,会出现重复复位2次 才进入正常运行(现象就是,开机显示开机画面后,又复位从头再来一次)。只会重复2次,没有超过2次的情况。

上电没有这个问题,都是出现在休眠掉电模式按键唤醒后。
截几段代码,请社友帮分分析下哪里有问题:
1.程序开始




2,重复复位发生的位置:





3. 有个延时程序,在出问题的地方只是1秒。




4,看门狗初始化如下:




5.休眠前有喂狗





请社友帮看看,哪里疏忽了{:5_300:}
我现在怀疑是看门狗作怪,但是休眠前有喂狗,指令软件复位后,开头那小段运行不可能超过5秒的,为什么会复位呢?










DebugLab 发表于 2024-9-21 12:43:03

复位之前再喂狗一下,看看是不是看门狗的问题

蒋文涛 发表于 2024-9-22 10:43:38

DebugLab 发表于 2024-9-21 12:43
复位之前再喂狗一下,看看是不是看门狗的问题

多谢建议!只是再次喂狗还不行的,我再次读芯片手册,找到原因了:


软件复位后,看门狗的寄存器溢出时间复位到了初始值,大概39毫秒左右,所以我的程序出现了二次复位。
看来,芯片手册需要不断重复读/

DebugLab 发表于 2024-9-22 21:34:42

蒋文涛 发表于 2024-9-22 10:43
多谢建议!只是再次喂狗还不行的,我再次读芯片手册,找到原因了:



停止看门狗必须断电,软件复位无法停止看门狗,
看门狗一旦开启,只要有电就会一直运行

Emmetttttt 发表于 2024-12-2 14:19:20

DebugLab 发表于 2024-9-22 21:34
停止看门狗必须断电,软件复位无法停止看门狗,
看门狗一旦开启,只要有电就会一直运行
...

借楼
请问大佬能否设置软件复位(IAP_CONTR)寄存器的SWBS位为1,然后启动看门狗,以达到看门狗复位后,用户数据区的数据保持不变的目的

DebugLab 发表于 2024-12-2 14:30:01

Emmetttttt 发表于 2024-12-2 14:19
借楼
请问大佬能否设置软件复位(IAP_CONTR)寄存器的SWBS位为1,然后启动看门狗,以达到看门狗复位后, ...

可以,但要注意STARTUP.A51默认会软件初始化data
注意看门狗一旦打开软件无法关闭只能断电关闭

Emmetttttt 发表于 2024-12-2 14:33:04

DebugLab 发表于 2024-12-2 14:30
可以,但要注意STARTUP.A51默认会软件初始化data
注意看门狗一旦打开软件无法关闭只能断电关闭 ...

好的感谢
页: [1]
查看完整版本: 在用8H4K64TL,按键唤醒掉电模式会偶尔碰到自行复位两次的问题,请求社友帮分析