在线情况
楼主
  • 头像
  • 级别
    • 积分31
    • 经验13407
    • 文章152
    • 注册2006-12-15
    低功耗模式的困惑
    [P]最近做了个板子,停电时用电池供电,顺便进入低功耗模式,但是怎么调也不行,程序如下,望各位大侠能不吝指点一二,谢谢了![/P][P]  {
        //处理P1IN.7中断
        P1IFG &= ~BIT7; //清除中断标志
        if(sign_P17==0)
        {
          sign_P17=1;
          P1IES &=~BIT7 ;           //设P17上升沿中断
          LPM2;
        }
        else
        {
          sign_P17=0;
          P1IES |=BIT7 ;            //设P17下降沿触发中断
          LPM2_EXIT; //退出中断后退出低功耗模式。[/P][P]    }
    程序用P1.7中断检测电源的有无,停电时用下降沿进入中断,将系统设置为低功耗模式。上电时,上升沿中断,退出低功耗。程序运行好像能进入低功耗,退不出来。[/P]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    [P]我看你的思路与程序结构是有问题的~[/P][P]最基本你这段是IO口的中断程序,居然在IO中断后,在这段程序中居然再次进入LPM2模式。本来就是在执行中断程序的,然而在这里头再次进入低功耗,那么进入低功耗后,都不能完成中断程序的完成。[/P][P]你自己想想看...是不是有问题[EM09][/P]
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分29
      • 经验413
      • 文章25
      • 注册2011-03-17
      [P]请问 DC 低功耗状态也影响中断程序么?[/P]
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      [P][QUOTE][B]下面引用由[U]WQY900618[/U]发表的内容:[/B]

      请问 DC 低功耗状态也影响中断程序么?[/QUOTE] [/P][P]低功耗的“状态”会影响“中断程序”?是否影响到,那要看你是如何编写中断程序了。[/P][P]像楼主这样编写就出问题了,上面的贴子我已说明了。也不知为啥楼主去哪了...[EM05][/P]
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      5
      • 头像
      • 级别
        • 积分31
        • 经验13407
        • 文章152
        • 注册2006-12-15
        [P]不好意思DC,这两天没时间上网,我也意识到这种方法有问题了,我修改过了,用P17检测电压,当检测到低电压(这个口接电源,也就是停电)时进入低功耗,并且我把所有口(除P17,用来中断退出低功耗)都设置为输出,并且输出为0。但是现在感觉电池电压还是下降的很快。不知道是什么原因……[/P][P]我看了一下电流,用交流电的时候才4.7毫安,我断电之后就7.7毫安了[/P]
        微控网感谢您的参与
        在线情况
        6
        • 头像
        • 级别
        • 门派
        • 职务总版主
        • 声望+9
        • 财富5
        • 积分3065
        • 经验390701
        • 文章6744
        • 注册2006-03-07
        [P][EM16]要搞清这7.7mA电流是MCU自身的消耗掉的还是外围电路的。[/P][P]在低功耗时,要注意的时钟源是否真的被关闭了。这关系到你所用的型号,旧型号可能会有些bug的。比如149这个,就算你进入了LPM3后。ACLK还在活动的,那么此时你得用人工将晶振器关闭。这样才能达到低功耗的目的,另外,还要注意MCU IO与外面的电路相连状态,这也有可能引起功耗增加的。[/P][P]自己再细心看看吧[EM11][/P]
        [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
        在线情况
        7
        • 头像
        • 级别
          • 积分31
          • 经验13407
          • 文章152
          • 注册2006-12-15
          我用的是147,不知道这个片子有什么bug不,我都进入LPM4了,我现在电池只给CPU供电了……都设置为输出,并且输出为0 了,应该与外围电路没有多大关系了吧?
          微控网感谢您的参与
          在线情况
          8
          • 头像
          • 级别
          • 门派
          • 职务总版主
          • 声望+9
          • 财富5
          • 积分3065
          • 经验390701
          • 文章6744
          • 注册2006-03-07
          [P][EM01] 呵呵,149就有我上述讲的问题了,LPM4时还得需要人工关将32678关闭的。[/P][P]而且,IO与外围电路也会直接影响到电流的。比如IO高,且输出,那么外围如果低阻的话也会有较大的电流对外输出的。功耗就上来了。[/P]
          [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
          在线情况
          9
          • 头像
          • 级别
            • 积分31
            • 经验13407
            • 文章152
            • 注册2006-12-15
            [P]谢谢你DC! 麻烦请问一下怎么关闭32678的晶振?我想把关了,但是没找到命令。说明一下,现在电流能做到2ma了,但是输出不能全部为0,不知什么原因。现在程序如下:[/P][P]    if((P1IN&BIT7)==0)
                {
                  P1DIR |=0x7C ;              //P11,P10 P17设置为输入,其余口设置为输出
                  P1OUT  =0x20 ;              //[/P][P]      P1IE   =0x83 ;              //允许P10 P11 P17中断
                  P1IES  =0x03 ;              //下降沿触发中断 设P17上升沿中断[/P][P]      P2DIR  =0xFF ;              //[/P][P]      P2OUT  =0x0F ;              //[/P][P]      
                  P3DIR  =0xFF ;              //[/P][P]      P3OUT  =0x02 ;              //[/P][P]      
                  P4DIR  =0xFF ;              //P4口设置为输出
                  P4OUT  =0x80 ;              //输出设置为0
                 
                  P5DIR  =0xFF ;              //P5口设置为输出
                  P5OUT  =0x00 ;              //输出设置为0
                 
                  P6DIR  =0xFF ;              [/P][P]      P6OUT  =0x00 ;
                 
                  BCSCTL1|= XT2OFF;           //关闭XT2 振荡器
                  LPM4;                  //进入低功耗模式n,n:0~4。若不希望进入低功耗模式,屏蔽本句
                }
            [/P]
            微控网感谢您的参与
            在线情况
            10
            • 头像
            • 级别
            • 门派
            • 职务总版主
            • 声望+9
            • 财富5
            • 积分3065
            • 经验390701
            • 文章6744
            • 注册2006-03-07
            [P][QUOTE][B]下面引用由[U]圆梦[/U]发表的内容:[/B]麻烦请问一下怎么关闭32678的晶振?[/QUOTE] [/P][P]1系列的时基寄存器中有指定的位是可用来关闭和打开的;为何你去看看呢[EM16]
            [/P]
            [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
            在线情况
            11
            • 头像
            • 级别
              • 积分31
              • 经验13407
              • 文章152
              • 注册2006-12-15
              谢谢DC!找到了一个原因,P3口我用作串口了,没有关闭串口,所以电流一直很大。“1系列的时基寄存器中有指定的位是可用来关闭和打开的”我只找到了关闭高频晶振的,不知道那个是关闭32768的,望DC明示……
              微控网感谢您的参与
              在线情况
              12
              • 头像
              • 级别
              • 门派
              • 职务总版主
              • 声望+9
              • 财富5
              • 积分3065
              • 经验390701
              • 文章6744
              • 注册2006-03-07
              Sorry[EM07],我重新看看手册...;太久没看这部分了。待回你...[EM60]
              [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
              Powered by LeadBBS 9.2 .
              Page created in 0.2656 seconds with 8 queries.