kap 发表于 2020-3-28 11:48:01

STC8G1K08外部中断在低于3V时很难唤醒掉电模式,什么原因?

外部中断0接了一个轻触按键到地,程序进入空闲后打开外部中0下降沿唤醒功能并进入掉电模式。
电压高于3V时,没问题,低于3V时,有时需要按3-5次能唤醒一次,大部分无法正常唤醒。

su33691 发表于 2020-3-28 13:29:03

这个情况应该是无解吧。
不过还是要谢谢你的测试,3.3V以上可以用。

yy625 发表于 2020-3-28 20:42:29

猜测一下,是不是跟掉电检测的电压配置有关

kap 发表于 2020-3-30 10:13:33

yy625 发表于 2020-3-28 20:42
猜测一下,是不是跟掉电检测的电压配置有关

掉电检测配置为2V

国学芯用 发表于 2020-3-30 13:14:22

STC8G1K08-38I-TSSOP20 工作在内部晶振频率11.0592M,外部中断0-4,进入掉电模式(省电模式),没有问题。请楼主留下联系方式,我们来联系你。

小李非刀 发表于 2020-3-30 14:43:20

鉴于楼主说的问题,我拿手上的10片ST8G1K08 TSSOP20测试,下载程序时允许低压复位,则MCU在2.0~5.5V唤醒均正常,下载程序时禁止低压复位,则MCU在1.8~5.5V唤醒均正常,没有碰到楼主的情况。
楼主可以跟STC公司联系,寄样片或样板给STC帮忙测试确认。
我测试的代码:

#define MAIN_Fosc                11059200L        //定义主时钟
#include        "..\..\STC8Gxxx.h"

/*************        功能说明        **************
演示INT0下降沿唤醒MCU。
唤醒后P1.0电量LED指示.
******************************************/
void        delay_ms(u8 ms);

void main(void)
{
        P1n_standard(0xff);        //P1口设置为准双向口
        P3n_standard(0xff);        //P3口设置为准双向口
        P5n_standard(0x30);        //P5.4 P5.5口设置为准双向口
        EA= 1;                //Enable all interrupt
       
        while(1)
        {
             P10 = 0;                        //取反指示引脚
                delay_ms(50);        //delay 20ms, 相当于去抖动        (按用户程序需要)
             P10 = 1;                        //取反指示引脚
                while(!INT0);        //等待外中断为高电平                (按用户程序需要)
                delay_ms(20);        //delay 20ms, 相当于去抖动        (按用户程序需要)

                IT0 = 1;                //INT0 下降沿中断               
                IE0 = 0;                //清除外中断0标志位
                _nop_();
                _nop_();
                EX0 = 1;                //INT0 允许中断
                _nop_();
                _nop_();
                PCON |= 0x02;        //Sleep
                _nop_();
                _nop_();
                _nop_();
                EX0 = 0;                //INT0 禁止中断        (按用户程序需要)
        }
}


/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt 0                //进中断时已经清除标志
{

}

//========================================================================
// 函数: voiddelay_ms(u8 ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-5-15
// 备注:
//========================================================================
voiddelay_ms(u8 ms)
{
        u16 i;
        do
        {
                i = MAIN_Fosc / 10000L;
                while(--i)        ;
        }while(--ms);
}

kap 发表于 2020-3-30 16:21:18

小李非刀 发表于 2020-3-30 14:43
鉴于楼主说的问题,我拿手上的10片ST8G1K08 TSSOP20测试,下载程序时允许低压复位,则MCU在2.0~5.5V唤醒均 ...

好的,我再详细测试看看。谢谢。

kap 发表于 2020-3-31 12:48:32

本帖最后由 kap 于 2020-3-31 12:52 编辑

找到原因了,由于板子是客户做好的,我这边只负责程序,电源部分滤波和稳压电容太小了,只放了10uF+104两个电容,低于3V低压时,按键唤醒掉电模式后,由于启动外围电路工作,实际上产生了低压复位(低压检测为2V),造成程序误认为没起作用(没唤醒),后面在电源部分加了个220uF电容,所有都正常了,到2.2V都可以正常唤醒并工作。这里特别感谢楼上几位厂家技术支持。非常到位。

国学芯用 发表于 2020-3-31 16:56:04

kap 发表于 2020-3-31 12:48
找到原因了,由于板子是客户做好的,我这边只负责程序,电源部分滤波和稳压电容太小了,只放了10uF+104两个 ...

搞定,开心,做好服务是我们的本职工作
页: [1]
查看完整版本: STC8G1K08外部中断在低于3V时很难唤醒掉电模式,什么原因?