MSP430教程11:MSP430单片机低功耗结构

当系统时钟发生器基本功能建立之后,CPU内状态寄存器SRSCG1SCG0CPUOFFOSCOFF位是重要的低功耗控制位。只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可恢复先前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些控制位;这样允许程序在中断返回(RETI) 后,以另一种功耗方式继续运行。

 

        各控制位的作用如下:
SCG1
: 复位,使能SMCLK;置位,禁止SMCLK
SCG0
: 复位,激活直流发生器,只有SCG0置位,并且DCOCLK没有被用作MCLKSMCLK时,直流发生器才能被禁止。
OSCOFF
:复位,激活LFXT1,只有当OSCOFF被置位并且LFXT1CLK不用于MCLKSMCLK时,FLXT1才能被禁止;当使用晶体振荡器关闭选项OSCOFF时,需要考虑晶体振荡器的启动设置时间
CPUOFF
:复位,激活MCLK;置位,关闭MCLK

 

       控制位SCG1SCG0CPUOFFOSCOFF可由软件配制成六种不同的工作模式:

 

   工作模式                 控制位                  CPU状态、振荡器及时钟

 

                                 SCG1=0                  CPU活动
                                 SCG0=0                  MCLK
活动
      AM                         CPUOFF=0               SMCLK
活动
                                 OSCOFF=0               ACLK
活动

 

                                 SCG1=0                  CPU禁止
      LPM0                       SCG0=0                  MCLK
禁止
                                 OSCOFF=0                SMCLK
活动
                                 CPUOFF=1                ACLK
活动

 

                                 SCG1=0                  CPU禁止
                                                        MCLK
禁止
      LPM1                      SCG0=1      
如果DCOCLK位用作MCLKSMCLK,则直流发生器禁止,

                                                  否则,仍然活动
                                 OSCOFF=0             SMCLK
活动
                                CPUOFF=1              ACLK
活动

 

                                 SCG1=1                  CPU禁止
                                            
如果DCO未被用作MCLKSMCLK,自动禁止
                                 SCG0=0                  MCLK
禁止        
      LPM2                      OSCOFF=0             SMCLK
禁止    
                                 CPUOFF=1             ACLK
活动

 

                                 SCG1=1                 CPU禁止
                                                    DCO
被禁止,直流发生器被禁止
                                 SCG0=1                  MCLK
禁止
      LPM3                      OSCOFF=0             SMCLK
禁止
                                 CPUOFF=1             ACLK
活动

 

                                SCG1=1                  CPU禁止
                                SCG0=1                  DCO
被禁止,直流发生器被禁止
      LPM4                     OSCOFF=1              
所有振荡器停止工作
                                                      MCLK
SMCLK禁止
                               CPUOFF=1               ACLK
禁止

 

 

低功耗的设计技巧问题

 

1.LPM4:在振荡器关闭模式期间,处理机的所有部件工作停止,此时的电流消耗最小。此时只有在系统上电电路检测到低点电平或任一请求异步响应中断的外部中断事件时才会从新工作。因此在设计应含有可能需要用到的外部中断才采用这种模式,否则发生不可预料的结果。

 

2.LPM3:DC发生关闭期间,只有晶振是活动的。但此时设置基本时序条件的DC发生器的DC电流被关闭。由于此电路的高阻设计,使功耗被抑制。当从DC关闭到启动DC需要一段时间(ns~us

3.LPM2:
在此期间晶振和DC发生器是工作的,所以可以实现快速启动

4.LPM1
:在此期间振荡器已经工作,所以不存在启动延时问题

_BIS_SR(LPM3_bits)           _BIC_SR_IRQ(LPM3_bits)
LPM3                                 LPM3_EXIT

 

系统响应中断过程:

 

1.硬件自动中断服务
a.PC
入栈
b.SR
入栈
c.
中断向量赋给PC
d.GIE
SCG1CPOOFFOSCOFF清楚
e.IFG
标志位清除(单源中断标志比如WDTIFG

2.
执行中断处理子程序

3.
执行RETI指令

4.SR
出栈

5.PC
出栈

低功耗应用
void main(void)
{
    WDTCTL=WDT_ADLY_1000;
    IE1 | = WDTIE;
    P1DIR | = 0X01;
    _EINT();
    for(;;)
      {
            LPM3;
            _NOP();
      }      
}

interrupt[WDT_VECTOR]  watchdog_timer(void)
{
    P1OUT ^ = 0X01;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值