找回密码
 立即注册
查看: 686|回复: 7

STC8H触摸唤醒

[复制链接]

2

主题

3

回帖

36

积分

新手上路

积分
36
发表于 2024-3-19 16:21:24 | 显示全部楼层 |阅读模式
问题:配置了触摸按键唤醒和其他中断唤醒的时候,当TSWUTC该寄存器的值配置较小的时候,发现触摸唤醒可以正常运行,但是其它唤醒方式出现了问题(如:外部中断唤醒),即有概率出现无法通过除触摸唤醒之外的其他唤醒源让单片机唤醒。


void Touchkey_Init()   //触摸配置函数
{
    TSCHEN2 = 0x0c;     //触摸按键使能  P52 TK10   P53 TK11
    TSCFG1  = (7<<4) + 6;   //B6~B4:开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1)), B2~B0:放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最好大于等于3(1000)
    TSCFG2  = 1;        //B1~B0:配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4)  1(1/2)  2(5/8)  3(3/4)
    TSRT = 0x00;        //没有LED分时扫描
    IE2 |= 0x80;        //允许触摸按键中断
}


void main()
{
    P_SW2 |= 0x80;
    PORT_INTI();
    Touchkey_Init();
    EA = 1;

    delay_ms(500);
    Touchkey_Zero();   //获取按键0点
    B_TK_Lowpass = 0;
    main_state = 0;

    while(1)
    {
        switch(main_state)
        {
            case 0:
                ET0 = 0;
                TSCTRL &= 0x73;     //暂停扫描
                TSWUTC = 0x01;   //在睡眠模式下1s唤醒一次进行触摸按键扫描判断是否需要唤醒
                TSTH10 = 0x0f00;    //控制触摸唤醒灵敏度
                TSTH11 = 0x0f00;
                IRC32KCR |= 0X80;         //开启内部低速IRC
                while(!(IRC32KCR & 1));   //等待时钟稳定
                TSCTRL |= 0x0c;   //开启触摸按键唤醒
                AUXINTIF &= ~0x20;   //清除外中断3标志位
                INTCLKO =EX3;
                PCON = 0x02;     
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                // main_state = 1;
                break;
            case 1:
                ET0 = 1;
                light();
        }
    }
   
}

void INT3_Isr() interrupt 11  //P37 时间设置按键唤醒??
{
    P50 = ~P50;
}

上述代码设置了外部中断3唤醒和触摸按键唤醒,通过外部中断3唤醒的时候会有概论出现无法唤醒。于是在外部中断函数中加入了电平翻转来验证是否触发过中断
image-20240319151621938.png

如上图所示,上面的信号为外部中断引脚信号,下面的为电平翻转验证信号
该图是在我未加入触摸唤醒时的逻辑分析图,可以看到每当有外部中断下降沿的时候,验证信号均发生了翻转,也就是可以正常唤醒
image-20240319151731516.png

上图是我加入触摸唤醒之后,发现当外部中断下降沿产生的时候,会有概论出现未进入到中断函数进行验证信号电平翻转,也就是无法正常唤醒


我验证出来,当在唤醒的时候,在如上配置触摸按键一次执行时间大约为2ms,触摸按键低电模式唤醒时间为7ms,也就是应该可以正常完成一个触摸扫描?
或者是当进行触摸按键唤醒扫描的时候,无法识别到其它外设电平变换(导致没有中断标志位)?







回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-05-08 09:37:55
已绑定手机

39

主题

2014

回帖

6871

积分

论坛元老

积分
6871
发表于 2024-3-19 16:34:36 | 显示全部楼层
参考这个帖子:
STC8H4K64TL主时钟停振省电模式唤醒:触摸按键唤醒 + 串口接收引脚唤醒 + 外部中断唤
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4628
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
回复 支持 反对

使用道具 举报 送花

2

主题

3

回帖

36

积分

新手上路

积分
36
发表于 2024-3-19 16:45:25 | 显示全部楼层
乘风*** 发表于 2024-3-19 16:34
参考这个帖子:
STC8H4K64TL主时钟停振省电模式唤醒:触摸按键唤醒 + 串口接收引脚唤醒 + 外部中断唤
https ...

这篇帖子我也参考过,感觉现在的区别就是我现在的低电量唤醒时间快,大概7ms,然后在你的例程中是1s,当我替换成1s之后无法唤醒的这种情况确实没有出现(但也可能是我还没有测到)。我现在的怀疑就是当在扫描触摸的时候,是否就无法判断其他外设引脚变换了。然后替换成1s低电唤醒只是降低了出现这种概论,但任然存在
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-05-08 09:37:55
已绑定手机

39

主题

2014

回帖

6871

积分

论坛元老

积分
6871
发表于 2024-3-19 17:24:25 | 显示全部楼层
hal*** 发表于 2024-3-19 16:45
这篇帖子我也参考过,感觉现在的区别就是我现在的低电量唤醒时间快,大概7ms,然后在你的例程中是1s,当 ...

这不是概率问题,你说的情况在2楼有介绍解决方法

截图202403191724128191.jpg

回复 支持 反对

使用道具 举报 送花

2

主题

3

回帖

36

积分

新手上路

积分
36
发表于 2024-3-19 17:31:35 来自手机 | 显示全部楼层
乘风飞扬 发表于 2024-3-19 17:24
这不是概率问题,你说的情况在2楼有介绍解决方法

这个在我的程序中时候体现的,在睡眠之前将该位置为零
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-05-08 15:34:00

73

主题

5898

回帖

1万

积分

超级版主

积分
12133
发表于 2024-4-2 16:21:31 | 显示全部楼层
我测试了1秒唤醒、200ms唤醒、100ms唤醒,手按按钮唤醒,或用2Hz信号唤醒(机器唤醒),均能正常唤醒。
回复 支持 反对

使用道具 举报 送花

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

5

主题

31

回帖

207

积分

中级会员

积分
207
发表于 2024-5-18 16:40:12 | 显示全部楼层
楼主问题解决了吗? 也遇到了类似的情况,如果TSWUTC设置的越小,对其他中断唤醒的失败概率就越大
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2025-03-28 11:36:20

8

主题

42

回帖

384

积分

中级会员

积分
384
发表于 2024-9-4 09:38:43 | 显示全部楼层
我也遇到了这个问题 TSWUTC设置的越小,对其他中断唤醒的失败概率就越大,尤其是带着触摸唤醒
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 07:50 , Processed in 0.124346 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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