系统时钟发生器基本功能_CPU寄存器低功耗控制位

控制/MCU

1813人已加入

描述

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

  各控制位的作用如下:

  SCG1: 复位,使能SMCLK;置位,禁止SMCLK。

  SCG0: 复位,激活直流发生器,只有SCG0置位,并且DCOCLK没有被用作MCLK或SMCLK时,直流发生器才能被禁止。

  OSCOFF:复位,激活LFXT1,只有当OSCOFF被置位并且LFXT1CLK不用于MCLK或SMCLK时,FLXT1才能被禁止;当使用晶体振荡器关闭选项OSCOFF时,需要考虑晶体振荡器的启动设置时间

  CPUOFF:复位,激活MCLK;置位,关闭MCLK。

  控制位SCG1、SCG0、CPUOFF、OSCOFF可由软件配制成六种不同的工作模式:

  工作模式 控制位 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位用作MCLK或SMCLK,则直流发生器禁止,

  否则,仍然活动

  OSCOFF=0 SMCLK活动

  CPUOFF=1 ACLK活动

  SCG1=1 CPU禁止

  如果DCO未被用作MCLK或SMCLK,自动禁止

  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、SCG1、CPOOFF和OSCOFF清楚

  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;

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分