mutou868 发表于 前天 16:56

掉电休眠后不能再次唤醒



芯片:IAP15W413AS
功能:设备使用电池供电,电池电压4.5V。平时处于掉电休眠状态,按键中断唤醒后,采集并显示数据。然后再次进入休眠。
问题:25年2月生产1K只,其中200只某客户使用中退回50多只,经测试,工作电流为2uA,无法唤醒。断电重启后,恢复正常,可正常唤醒和休眠。
背景:此产品已生产两年多,累计出货上万只,第一次出现此状况。怀疑是客户处有干扰,造成MCU不能被唤醒。



神农鼎 发表于 前天 23:28



https://www.stcaimcu.com/data/download/Datasheet/STC15-CN.pdf



电路图参考上面




//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//若无特别说明,工作频率一般为11.0592MHz


#include "reg51.h"
#include "intrins.h"

//-----------------------------------------------

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

bit FLAG;                     //1:上升沿中断 0:下降沿中断

sbit P10 = P1^0;
sbit P32 = P3^2;
sbit P33 = P3^3;

//-----------------------------------------
//中断服务程序
void exint0() interrupt 0       //INT0中断入口
{
    P10 = !P10;               //将测试口取反
    FLAG = P32;                //保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
}

//-----------------------------------------------

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;

    IT0 = 0;                  //设置INT0的中断类型为上升沿和下降沿,上升沿和下降沿均可唤醒
//IT0 = 1;                  //设置INT0的中断类型为仅下降沿,下降沿唤醒

    EX0 = 1;                  //使能INT0中断
    EA = 1;

    while (1)
    {
      PCON = 0x02;            //MCU进入掉电模式
      _nop_();                //掉电模式被唤醒后,首先执行此语句,然后再进入中断服务程序
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      _nop_();
    }
}


//多加几个_nop_();

DebugLab 发表于 昨天 10:57

PCON|=0x02前后分别加4个或以上NOP

xiaobendan 发表于 昨天 11:03

大概率是死机了。
我有遇到一些情况,比如强干扰之后串口发送的数据里面掺杂了一些非常窄的脉冲,这导致接收端出现无法解析的情况,通讯失败,此时即便硬件复位芯片依然不能解决问题。只能断电重启才能恢复。这个问题困扰我很多年了。通讯失败状态下,并不影响其他的功能。

神农鼎 发表于 昨天 11:15




MCU-VCC/GND 管脚就近加 2个 电容 抗干扰


神农鼎 发表于 昨天 11:15


页: [1]
查看完整版本: 掉电休眠后不能再次唤醒