MSP430教程11:MSP430單片機低功耗結(jié)構(gòu)
各控制位的作用如下:
SCG1: 復位,使能SMCLK;置位,禁止SMCLK。
SCG0: 復位,激活直流發(fā)生器,只有SCG0置位,并且DCOCLK沒有被用作MCLK或SMCLK時,直流發(fā)生器才能被禁止。
OSCOFF:復位,激活LFXT1,只有當OSCOFF被置位并且LFXT1CLK不用于MCLK或SMCLK時,F(xiàn)LXT1才能被禁止;當使用晶體振蕩器關(guān)閉選項OSCOFF時,需要考慮晶體振蕩器的啟動設置時間
CPUOFF:復位,激活MCLK;置位,關(guān)閉MCLK。
控制位SCG1、SCG0、CPUOFF、OSCOFF可由軟件配制成六種不同的工作模式:
工作模式控制位CPU狀態(tài)、振蕩器及時鐘
SCG1=0CPU活動
SCG0=0MCLK活動
AMCPUOFF=0 SMCLK活動
OSCOFF=0 ACLK活動
SCG1=0CPU禁止
LPM0SCG0=0MCLK禁止
OSCOFF=0SMCLK活動
CPUOFF=1 ACLK活動
SCG1=0CPU禁止
MCLK禁止
LPM1SCG0=1如果DCOCLK位用作MCLK或SMCLK,則直流發(fā)生器禁止,
否則,仍然活動
OSCOFF=0 SMCLK活動
CPUOFF=1ACLK活動
SCG1=1CPU禁止
如果DCO未被用作MCLK或SMCLK,自動禁止
SCG0=0MCLK禁止
LPM2OSCOFF=0 SMCLK禁止
CPUOFF=1 ACLK活動
SCG1=1 CPU禁止
DCO被禁止,直流發(fā)生器被禁止
SCG0=1MCLK禁止
LPM3OSCOFF=0 SMCLK禁止
CPUOFF=1 ACLK活動
SCG1=1CPU禁止
SCG0=1DCO被禁止,直流發(fā)生器被禁止
LPM4OSCOFF=1所有振蕩器停止工作
MCLK、SMCLK禁止
CPUOFF=1 ACLK禁止
低功耗的設計技巧問題
1.LPM4:在振蕩器關(guān)閉模式期間,處理機的所有部件工作停止,此時的電流消耗最小。此時只有在系統(tǒng)上電電路檢測到低點電平或任一請求異步響應中斷的外部中斷事件時才會從新工作。因此在設計應含有可能需要用到的外部中斷才采用這種模式,否則發(fā)生不可預料的結(jié)果。
2.LPM3:在DC發(fā)生關(guān)閉期間,只有晶振是活動的。但此時設置基本時序條件的DC發(fā)生器的DC電流被關(guān)閉。由于此電路的高阻設計,使功耗被抑制。當從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)響應中斷過程:
1.硬件自動中斷服務
a.PC入棧
b.SR入棧
c.中斷向量賦給PC
d.GIE、SCG1、CPOOFF和OSCOFF清楚
e.IFG標志位清除(單源中斷標志比如WDTIFG)
2.執(zhí)行中斷處理子程序
3.執(zhí)行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;
}
評論