STC8G1K08外部中断在低于3V时很难唤醒掉电模式,什么原因?
外部中断0接了一个轻触按键到地,程序进入空闲后打开外部中0下降沿唤醒功能并进入掉电模式。电压高于3V时,没问题,低于3V时,有时需要按3-5次能唤醒一次,大部分无法正常唤醒。 这个情况应该是无解吧。
不过还是要谢谢你的测试,3.3V以上可以用。 猜测一下,是不是跟掉电检测的电压配置有关 yy625 发表于 2020-3-28 20:42
猜测一下,是不是跟掉电检测的电压配置有关
掉电检测配置为2V STC8G1K08-38I-TSSOP20 工作在内部晶振频率11.0592M,外部中断0-4,进入掉电模式(省电模式),没有问题。请楼主留下联系方式,我们来联系你。 鉴于楼主说的问题,我拿手上的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);
}
小李非刀 发表于 2020-3-30 14:43
鉴于楼主说的问题,我拿手上的10片ST8G1K08 TSSOP20测试,下载程序时允许低压复位,则MCU在2.0~5.5V唤醒均 ...
好的,我再详细测试看看。谢谢。 本帖最后由 kap 于 2020-3-31 12:52 编辑
找到原因了,由于板子是客户做好的,我这边只负责程序,电源部分滤波和稳压电容太小了,只放了10uF+104两个电容,低于3V低压时,按键唤醒掉电模式后,由于启动外围电路工作,实际上产生了低压复位(低压检测为2V),造成程序误认为没起作用(没唤醒),后面在电源部分加了个220uF电容,所有都正常了,到2.2V都可以正常唤醒并工作。这里特别感谢楼上几位厂家技术支持。非常到位。 kap 发表于 2020-3-31 12:48
找到原因了,由于板子是客户做好的,我这边只负责程序,电源部分滤波和稳压电容太小了,只放了10uF+104两个 ...
搞定,开心,做好服务是我们的本职工作
页:
[1]