找回密码
 立即注册
查看: 1431|回复: 13

关于STC8H休眠后,RTC闹钟唤醒因外部中断而失败的问题 | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-27 10:34:46

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-4-22 16:09:12 | 显示全部楼层 |阅读模式
  单片机型号: STC8H4K64TL

  固件版本号: 7.4.3U

  硬件电路:触摸按键 + 外部32.768晶振驱动RTC + 低功耗深度休眠  + IO口P51中断;


  休眠进入条件:按键连续30秒空闲;

  休眠唤醒条件:触摸按键唤醒、RTC闹钟唤醒、P51中断唤醒;

  




休眠前的动作:
1、设置IO状态使其保持最小电流;
2、设置闹钟唤醒时间;
3、检查P51中断标志是否为0;
4、打开P51中断:P5INTE|=(1<<1);

5、_nop_();_nop_();_nop_();_nop_();_nop_();PCON=0x02;
6、退出低功耗;

奇怪的是在4、5中间,如果PCON=0x02前P51发生了中断,此时RTC的中断唤醒就是失效了,只有P51中断和触摸按键可以唤醒,是配置流程那里不对,还是说芯片本上就是这么设计的?即休眠前发生IO中断和RTC闹钟中断时,RTC唤醒会失效?



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-4-22 16:40:37 | 显示全部楼层
如果有用到IO中断将单片机从掉电模式唤醒的应用,考虑使用专用的IO中断唤醒使能寄存器P51WKUE。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-27 10:34:46

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-4-22 17:10:07 | 显示全部楼层
晓*** 发表于 2024-4-22 16:40
如果有用到IO中断将单片机从掉电模式唤醒的应用,考虑使用专用的IO中断唤醒使能寄存器P51WKUE。 ...

P5INTE|=(1<<1);
P5WKUE|=(1<<1);
_nop_();
_nop_();
_nop_();
_nop_();
PCON = 0x02;

把代码修改成上面的内容,预想的流程是:

1、只要打开了P51WKUE中断唤醒,哪怕是真的休眠前触发了IO中断,

2、那么也会被立刻唤醒,然后再次进入休眠流程,

3、而实际是只要休眠前有IO中断那么RTC闹钟唤醒就会失效。

4、(在P5INT_VECTOR中断函数中添加一个自增变量,进入休眠前清零,退出休眠打印,实测当RTC唤醒失败后变量有增加)

点评

如果遇到IO中断没有达成预想的功能,除了检查代码逻辑正确性以外,可以尝试使用INT0~INT4这些专用的外部中断代替普通IO中断。  详情 回复 发表于 2024-4-22 20:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-4-22 20:06:52 | 显示全部楼层

如果遇到IO中断没有达成预想的功能,除了检查代码逻辑正确性以外,可以尝试使用INT0~INT4这些专用的外部中断代替普通IO中断。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-4-24 10:37:39 | 显示全部楼层
各个唤醒源都独立的。睡眠前,要允许闹钟中断。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-27 10:34:46

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-4-24 20:02:28 | 显示全部楼层
梁*** 发表于 2024-4-24 10:37
各个唤醒源都独立的。睡眠前,要允许闹钟中断。

梁工,您好,附件中的截图是进入休眠前的闹钟设置情况:

1、在19:47:08时,设置了闹钟时间为19:48:00;

2、在进入休眠前,再次打印了RTCIE、ALAHOUR、ALAMIN、ALASEC寄存器,内容分别是
      RTCIE = 0xc0(闹钟中断 + 天中断)
      ALAHOUR = 0x13(19时)
      ALAMIN = 0x30(48分)
      ALASEC = 0x00(00秒)
      (PS:通过打印信息,确认闹钟设置正确)

3、在19:48:00时,闹钟没有唤醒,持续等待到19:48:50依然没有唤醒;
bff2937a510d3f8f03229291d265c09.png

点评

PCON=0x02; _nop_(); //至少3个NOP _nop_(); _nop_();  详情 回复 发表于 2024-4-24 23:22
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-4-24 23:22:00 | 显示全部楼层
miaoy*** 发表于 2024-4-24 20:02
梁工,您好,附件中的截图是进入休眠前的闹钟设置情况:

1、在19:47:08时,设置了闹钟时间为19:48:00;

PCON=0x02;
_nop_();  //至少3个NOP
_nop_();
_nop_();
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-27 10:34:46

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-4-24 23:55:02 | 显示全部楼层
梁*** 发表于 2024-4-24 23:22
PCON=0x02;
_nop_();  //至少3个NOP
_nop_();

PCON = 0x02;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

刚试了下,在下面添加了6个nop,还是只要P51的中断打开,就会出现RTC闹钟偶尔唤不醒的情况。

难道卡死在了P51的中断函数里面了?可是已经做了只要进入中断函数就立刻清中断标志,按说也不应该卡死的

点评

专门写了个程序测试你的应用,没有问题的。各个中断都是相互独立的。请直接下载HEX文件测试,主频11.0592MHz,串口115200,8,n,1。 程序上电默认时间11:59:55",闹铃12:00:30"。 上电后串口提示“STC8H RTC Test  详情 回复 发表于 2024-4-25 11:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-4-25 11:02:45 | 显示全部楼层
miaoy*** 发表于 2024-4-24 23:55
PCON = 0x02;
_nop_();
_nop_();

专门改了个程序测试你的应用,没有问题的。各个中断都是相互独立的。请直接下载HEX文件测试,主频11.0592MHz,串口115200,8,n,1。

程序上电默认时间11:59:55",闹铃12:00:30"。
上电后串口提示“STC8H RTC Test Prgramme!”,然后睡眠。
5秒后分唤醒,串口返回“24-04-25 12:00:00”。
再30秒后闹铃唤醒,串口返回:“滴滴滴! 闹铃!  24-04-25 12:00:30”。
MCU睡眠时,随时可以按下P5.1唤醒,串口返回:“P5.1下降沿中断”。

测试界面截图2.JPG

测试界面截图1.JPG

04-RTC分唤醒-闹钟唤醒-串口1设置返回时间-普通IO中断唤醒.rar (220.2 KB, 下载次数: 126)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-27 10:34:46

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-4-25 12:24:03 | 显示全部楼层
梁*** 发表于 2024-4-25 11:02
专门改了个程序测试你的应用,没有问题的。各个中断都是相互独立的。请直接下载HEX文件测试,主频11.0592M ...

收到,谢谢梁工,这就试下
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:51 , Processed in 0.163983 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表