找回密码
 立即注册
查看: 1306|回复: 19

掉电唤醒计时器的设置问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-20 10:46:47

5

主题

12

回帖

81

积分

注册会员

积分
81
发表于 2024-8-5 12:04:33 | 显示全部楼层 |阅读模式
无论给WKTCH和WKTCL设置为多少,读取的时候总是0xFF,且用掉电唤醒计时器总是5s唤醒一次,没法更改时间。
赋值语句:
WKTCH=0xAB;
WKTCL=0x11;
赋值之后立马读取WKTCH和WKTCL,发现读取到的值都是0xFF。
开启掉电唤醒定时器后,中途用外部中断多次唤醒,唤醒之后读取WKTCH和WKTCL的值,读取到的是随机的,一会儿大一会儿小,没有规律,且不修改WKTCH和WKTCL的值,发现从唤醒后再到下一次掉电唤醒定时器唤醒还是5s。
总结一下就是只要使用掉电唤醒定时器,无论怎样都都是从掉电的时候定时5s左右唤醒,不管初始的时候给WKTCH和WKTCL赋值多少;且中间唤醒后从唤醒的时刻重新计时5s,而不是从上次休眠后计时5s。
请问这个问题是什么原因呢?有啥好的解决办法没。芯片用的是STC8h1k08
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-5 12:34:19 | 显示全部楼层
截图202408051232237394.jpg

32767保留不能用
截图202408051233144970.jpg

进入掉电模式后要nop
DebugLab
回复 支持 反对

使用道具 举报 送花

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

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-8-5 12:37:13 | 显示全部楼层
建议你用RTC定时器唤醒吧,休眠前重置RTC,设置5s唤醒,中间产生的外部中断能够唤醒芯片,同时不影响RTC唤醒时间。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-8-5 13:23:49 | 显示全部楼层
掉电唤醒计时器当然是掉电后才开始计时啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-20 10:46:47

5

主题

12

回帖

81

积分

注册会员

积分
81
发表于 2024-8-5 13:56:00 | 显示全部楼层
Lkck*** 发表于 2024-8-5 13:23
掉电唤醒计时器当然是掉电后才开始计时啊

问题是无论给WKTCH和WKTCL设置的值是啥,总是5s唤醒一次,且外部中断后会重新计时5s(中间没更改定时器的值),而不是接续计时5s。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-8-5 14:01:38 | 显示全部楼层
cx*** 发表于 2024-8-5 13:56
问题是无论给WKTCH和WKTCL设置的值是啥,总是5s唤醒一次,且外部中断后会重新计时5s(中间没更改定时器的 ...

试试
WKTCL=0x11;
WKTCH=0xAB;
先赋值低位,再高位
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-20 10:46:47

5

主题

12

回帖

81

积分

注册会员

积分
81
发表于 2024-8-5 17:03:10 | 显示全部楼层
Lkck*** 发表于 2024-8-5 14:01
试试
WKTCL=0x11;
WKTCH=0xAB;

试过,这个没有解决,扩展寄存器打开也试过。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:456
  • 最近打卡:2025-05-02 08:26:53
已绑定手机

27

主题

341

回帖

1691

积分

金牌会员

机长

积分
1691
发表于 2024-8-5 18:38:03 | 显示全部楼层
发一下你的代码呀。如果硬件有这么明显的问题,官方不可能没发现。所以只可能是你代码的问题了
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-20 10:46:47

5

主题

12

回帖

81

积分

注册会员

积分
81
发表于 2024-8-5 21:50:38 | 显示全部楼层
hsr*** 发表于 2024-8-5 18:38
发一下你的代码呀。如果硬件有这么明显的问题,官方不可能没发现。所以只可能是你代码的问题了 ...
  1. void sleep() {
  2.   u8 i = 0;
  3.         if "condition" {
  4.           ...
  5.           ...
  6.           ...
  7.           if(i == NUM_OF_CMD) { // no task should be invoked
  8.                 if "condition1" {
  9.                         WKTCL = 0x11;
  10.                         WKTCH = 0xAB;
  11.                         sendDataByUartx(UART1, i-1);
  12.                         sendDataByUartx(UART1, WKTCH);  // 写完直接读发现是0xFF
  13.                         sendDataByUartx(UART1, WKTCL);  // 写完直接读发现是0xFF
  14.       } else if "condation2" {
  15.             sendDataByUartx(UART1, i-1);
  16.                         sendDataByUartx(UART1, WKTCH); // condition2是由中断进来的
  17.                         sendDataByUartx(UART1, WKTCL); // 此处读到的值是随机的,忽大忽小,正常在一个计数周期内向上计数应该越来越大,向下计数应该越来越小才对,且此处没有修改休眠值,从这里开始到下次休眠启动却还是5s,不是接续计时而像是重新计时
  18.       }
  19.           else {
  20.         WKTCH = 0x00;  // 情况3不需要启动定时唤醒
  21.       }
  22.           PCON |= 0x02;  // 休眠
  23.           _nop_();_nop_();
  24.           _nop_();_nop_();
  25.           _nop_();_nop_();
  26.           sendDataByUartx(UART1, i+2);        // 如果外部中断唤醒,此处的值随机,如果定时器唤醒
  27.           sendDataByUartx(UART1, WKTCH);  // 前几次计时满读出来是0xFF,最后一次是0x7F
  28.           sendDataByUartx(UART1, WKTCL);  //  除外部中断唤醒外每次读出来都是0xFF
  29.           if(WKTCL == 0xFF && WKTCH == 0xFF) {
  30.         "定时器唤醒后的代码"
  31.       }
  32.     }       
  33.   }
  34. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-20 10:46:47

5

主题

12

回帖

81

积分

注册会员

积分
81
发表于 2024-8-6 09:06:10 | 显示全部楼层

测试了不行
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 08:43 , Processed in 0.127110 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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