新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430功耗相關寄存器

        MSP430功耗相關寄存器

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

        本文引用地址:http://www.104case.com/article/201611/321239.htm

        各控制位的作用如下:

        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;

        }



        關鍵詞: MSP430功耗寄存

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 远安县| 自贡市| 南涧| 北京市| 孙吴县| 米林县| 五寨县| 农安县| 都昌县| 井冈山市| 北碚区| 玉溪市| 康定县| 通江县| 达尔| 千阳县| 城口县| 崇阳县| 高邮市| 峨山| 广汉市| 交口县| 武鸣县| 柘荣县| 木里| 绵竹市| 长阳| 公安县| 渭南市| 阿尔山市| 长武县| 壶关县| 涟水县| 公安县| 渝北区| 合江县| 铜梁县| 恭城| 金平| 河北省| 靖宇县|