搜索
bottom↓
回复: 9

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

[复制链接]
(15130149)

出0入0汤圆

发表于 2020-3-28 11:48:01 | 显示全部楼层 |阅读模式
外部中断0接了一个轻触按键到地,程序进入空闲后打开外部中0下降沿唤醒功能并进入掉电模式。
电压高于3V时,没问题,低于3V时,有时需要按3-5次能唤醒一次,大部分无法正常唤醒。
(15124087)

出0入0汤圆

发表于 2020-3-28 13:29:03 | 显示全部楼层
这个情况应该是无解吧。
不过还是要谢谢你的测试,3.3V以上可以用。
(15098081)

出0入0汤圆

发表于 2020-3-28 20:42:29 | 显示全部楼层
猜测一下,是不是跟掉电检测的电压配置有关
(14963017)

出0入0汤圆

 楼主| 发表于 2020-3-30 10:13:33 | 显示全部楼层
yy625 发表于 2020-3-28 20:42
猜测一下,是不是跟掉电检测的电压配置有关

掉电检测配置为2V
(14952168)

出15入30汤圆

发表于 2020-3-30 13:14:22 | 显示全部楼层
STC8G1K08-38I-TSSOP20 工作在内部晶振频率11.0592M,外部中断0-4,进入掉电模式(省电模式),没有问题。请楼主留下联系方式,我们来联系你。
(14946830)

出0入0汤圆

发表于 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                //进中断时已经清除标志
{

}

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

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2020-3-31 12:48:32 | 显示全部楼层
本帖最后由 kap 于 2020-3-31 12:52 编辑

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

出15入30汤圆

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

搞定,开心,做好服务是我们的本职工作
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-9-19 14:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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