新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430功耗相關(guān)寄存器

MSP430功耗相關(guān)寄存器

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
當(dāng)系統(tǒng)時鐘發(fā)生器基本功能建立之后,CPU內(nèi)狀態(tài)寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF位是重要的低功耗控制位。只要任意中斷被響應(yīng),上述控制位就被壓入堆棧保存,中斷處理之后,又可恢復(fù)先前的工作方式。在中斷處理子程序執(zhí)行期間,通過間接訪問堆棧數(shù)據(jù),可以操作這些控制位;這樣允許程序在中斷返回(RETI) 后,以另一種功耗方式繼續(xù)運行。

本文引用地址:http://butianyuan.cn/article/201611/321239.htm

各控制位的作用如下:

SCG1: 復(fù)位,使能SMCLK;置位,禁止SMCLK。

SCG0:復(fù)位,激活直流發(fā)生器,只有SCG0置位,并且DCOCLK沒有被用作MCLK或SMCLK時,直流發(fā)生器才能被禁止。

OSCOFF:復(fù)位,激活LFXT1,只有當(dāng)OSCOFF被置位并且LFXT1CLK不用于MCLK或SMCLK時,F(xiàn)LXT1才能被禁止;當(dāng)使用晶體振蕩器關(guān)閉選項OSCOFF時,需要考慮晶體振蕩器的啟動設(shè)置時間

CPUOFF:復(fù)位,激活MCLK;置位,關(guān)閉MCLK。

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

工作模式 控制位 CPU狀態(tài)、振蕩器及時鐘

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,則直流發(fā)生器禁止,

否則,仍然活動

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被禁止,直流發(fā)生器被禁止

SCG0=1 MCLK禁止

LPM3 OSCOFF=0 SMCLK禁止

CPUOFF=1 ACLK活動

SCG1=1 CPU禁止

SCG0=1 DCO被禁止,直流發(fā)生器被禁止

LPM4 OSCOFF=1所有振蕩器停止工作

MCLK、SMCLK禁止

CPUOFF=1 ACLK禁止

低功耗的設(shè)計技巧問題

1.LPM4:在振蕩器關(guān)閉模式期間,處理機(jī)的所有部件工作停止,此時的電流消耗最小。此時只有在系統(tǒng)上電電路檢測到低點電平或任一請求異步響應(yīng)中斷的外部中斷事件時才會從新工作。因此在設(shè)計應(yīng)含有可能需要用到的外部中斷才采用這種模式,否則發(fā)生不可預(yù)料的結(jié)果。

2.LPM3:在DC發(fā)生關(guān)閉期間,只有晶振是活動的。但此時設(shè)置基本時序條件的DC發(fā)生器的DC電流被關(guān)閉。由于此電路的高阻設(shè)計,使功耗被抑制。當(dāng)從DC關(guān)閉到啟動DC需要一段時間(ns~us)

3.LPM2:在此期間晶振和DC發(fā)生器是工作的,所以可以實現(xiàn)快速啟動

4.LPM1:在此期間振蕩器已經(jīng)工作,所以不存在啟動延時問題

_BIS_SR(LPM3_bits) _BIC_SR_IRQ(LPM3_bits)

LPM3 LPM3_EXIT

系統(tǒng)響應(yīng)中斷過程:

1.硬件自動中斷服務(wù)

a.PC入棧

b.SR入棧

c.中斷向量賦給PC

d.GIE、SCG1、CPOOFF和OSCOFF清楚

e.IFG標(biāo)志位清除(單源中斷標(biāo)志比如WDTIFG)

2.執(zhí)行中斷處理子程序

3.執(zhí)行RETI指令

4.SR出棧

5.PC出棧

低功耗應(yīng)用

void main(void)

{

WDTCTL=WDT_ADLY_1000;

IE1 | = WDTIE;

P1DIR | = 0X01;

_EINT();

for(;;)

{

LPM3;

_NOP();

}

}

interrupt[WDT_VECTOR] watchdog_timer(void)

{

P1OUT ^ = 0X01;

}



關(guān)鍵詞: MSP430功耗寄存

評論


技術(shù)專區(qū)

關(guān)閉