新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > avr單片機(jī)電源管理及其睡眠模式配置說明

        avr單片機(jī)電源管理及其睡眠模式配置說明

        作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
        睡眠模式可以使應(yīng)用程序關(guān)閉 MCU 中沒有使用的模塊,從而降低功耗。AVR 具有不同 的睡眠模式,允許用戶根據(jù)自己的應(yīng)用要求實(shí)施剪裁。

        /*
        狀態(tài)寄存器SREG

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

        bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

        I T H S V N Z C

        I:全局中斷使能位。

        在I置位后,單獨(dú)的中斷使能由不同的中斷寄存器控制。若I為0,則禁止中斷。

        MCU控制寄存器MCUCR

        bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

        SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00

        SE:MCU休眠使能位
        為了使 MCU 在執(zhí)行 SLEEP 指令后進(jìn)入休眠模式, SE 必須置位。為了確保進(jìn)入休眠模
        式是程序員的有意行為,建議僅在 SLEEP 指令的前一條指令置位 SE。MCU 一旦喚醒立
        即清除 SE。

        SM1~SM0:MCU休眠模式選擇

        SM2 SM1 SM0 休眠模式

        0 0 0 空閑

        0 0 1 ADC 噪聲抑制模式

        0 1 0 掉電模式

        0 1 1 省電模式

        1 0 0 保留

        1 0 1 保留

        1 1 0 Standby(1) 模式

        1 1 1 擴(kuò)展Standby(1) 模式


        空閑模式 當(dāng) SM2..0 為 000 時(shí),SLEEP 指令將使 MCU 進(jìn)入空閑模式。在此模式下, CPU 停止運(yùn)
        行,而 LCD 控制器、 SPI、 USART、模擬比較器、ADC、 USI、定時(shí)器 / 計(jì)數(shù)器、看門
        狗和中斷系統(tǒng)繼續(xù)工作。這個(gè)休眠模式只停止了clkCPU 和clkFLASH ,其他時(shí)鐘則繼續(xù)工作。

        象定時(shí)器溢出與 USART 傳輸完成等內(nèi)外部中斷都可以喚醒 MCU。如果不需要從模擬比
        較器中斷喚醒 MCU ,為了減少功耗,可以切斷比較器的電源。方法是置位模擬比較器控
        制和狀態(tài)寄存器 ACSR 的 ACD。如果 ADC 使能,進(jìn)入此模式后將自動(dòng)啟動(dòng)一次轉(zhuǎn)換。

        ADC 噪聲抑制模式 當(dāng) SM2..0 為 001 時(shí),SLEEP 指令將使 MCU 進(jìn)入噪聲抑制模式。在此模式下, CPU 停
        止運(yùn)行,而 ADC、外部中斷、兩線接口地址配置、定時(shí)器 / 計(jì)數(shù)器 0 和看門狗繼續(xù)工作。
        這個(gè)睡眠模式只停止了 clkI/O、 clkCPU 和 clkFLASH ,其他時(shí)鐘則繼續(xù)工作。

        此模式提高了 ADC 的噪聲環(huán)境,使得轉(zhuǎn)換精度更高。 ADC 使能的時(shí)候,進(jìn)入此模式將
        自動(dòng)啟動(dòng)一次AD 轉(zhuǎn)換。ADC 轉(zhuǎn)換結(jié)束中斷、外部復(fù)位、看門狗復(fù)位、 BOD 復(fù)位、兩線
        接口地址匹配中斷、定時(shí)器 / 計(jì)數(shù)器 2 中斷、SPM/EEPROM 準(zhǔn)備好中斷、外部中斷 INT0
        或 INT1 ,或外部中斷INT2 可以將 MCU 從 ADC 噪聲抑制模式喚醒。

        掉電模式 當(dāng) SM2..0 為 010 時(shí), SLEEP 指令將使 MCU 進(jìn)入掉電模式。在此模式下,外部晶體停
        振,而外部中斷、兩線接口地址匹配及看門狗 (如果使能的話)繼續(xù)工作。只有外部復(fù)
        位、看門狗復(fù)位、 BOD 復(fù)位、兩線接口地址匹配中斷、外部電平中斷 INT0 或 INT1 ,或
        外部中斷 INT2 可以使 MCU 脫離掉電模式。這個(gè)睡眠模式停止了所有的時(shí)鐘,只有異步
        模塊可以繼續(xù)工作。

        當(dāng)使用外部電平中斷方式將 MCU 從掉電模式喚醒時(shí),必須保持外部電平一定的時(shí)間。具
        體請參見 P65“ 外部中斷 ” 。

        從施加掉電喚醒條件到真正喚醒有一個(gè)延遲時(shí)間,此時(shí)間用于時(shí)鐘重新啟動(dòng)并穩(wěn)定下來。
        喚醒周期與由熔絲位 CKSEL 定義的復(fù)位周期是一樣的,如 P23“ 時(shí)鐘源 ” 所示。

        省電模式 當(dāng) SM2..0 為 011 時(shí), SLEEP 指令將使 MCU 進(jìn)入省電模式。這一模式與掉電模式只有
        一點(diǎn)不同:

        如果定時(shí)器 / 計(jì)數(shù)器 2 為異步驅(qū)動(dòng),即寄存器 ASSR 的 AS2 置位,則定時(shí)器 / 計(jì)數(shù)器 2 在
        睡眠時(shí)繼續(xù)運(yùn)行。除了掉電模式的喚醒方式,定時(shí)器 / 計(jì)數(shù)器 2 的溢出中斷和比較匹配中
        斷也可以將 MCU 從休眠方式喚醒,只要 TIMSK 使能了這些中斷,而且 SREG 的全局中
        斷使能位 I 置位。

        如果異步定時(shí)器不是異步驅(qū)動(dòng)的,建議使用掉電模式,而不是省電模式。因?yàn)樵谑‰娔J?br /> 下,若 AS2 為 0 ,則MCU 喚醒后異步定時(shí)器的寄存器數(shù)值是沒有定義的。

        這個(gè)睡眠模式停止了除 clkASY 以外所有的時(shí)鐘,只有異步模塊可以繼續(xù)工作。

        Standby 模式 當(dāng) SM2..0 為 110 時(shí), SLEEP 指令將使 MCU 進(jìn)入 Standby 模式。這一模式與掉電模式
        唯一的不同之處在于振蕩器繼續(xù)工作。其喚醒時(shí)間只需要 6 個(gè)時(shí)鐘周期。

        擴(kuò)展 Standby 模式 當(dāng) SM2..0 為 111 時(shí), SLEEP 指令將使 MCU 進(jìn)入擴(kuò)展的 Standby 模式。這一模式與省
        掉電模式唯一的不同之處在于振蕩器繼續(xù)工作。其喚醒時(shí)間只需要 6 個(gè)時(shí)鐘周期。 .


        */
        #include
        #include
        void Sleep_init(unsigned char mode)
        {
        switch(mode)
        {
        case 0: MCUCR&=~((1<case 1: MCUCR&=~((1<case 2: MCUCR&=~((1<case 3: MCUCR&=~(1<case 6: MCUCR|=1<case 7: MCUCR|=(1<default: MCUCR&=~((1<}

        }
        void SLEEP_ON(void)
        {MCUCR|=1<asm("SLEEP");
        }
        void SLEEP_OFF(void)
        {
        MCUCR&=~(1<}



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 当阳市| 松桃| 甘孜县| 宜丰县| 黄骅市| 云浮市| 清流县| 香港 | 洛浦县| 昌江| 宁阳县| 临漳县| 九江县| 临沭县| 资兴市| 诸城市| 郯城县| 扶余县| 浦东新区| 故城县| 榆树市| SHOW| 惠州市| 彰武县| 织金县| 林州市| 沙田区| 合川市| 辽阳县| 长武县| 贵溪市| 夹江县| 墨江| 张家港市| 海南省| 和平区| 汾西县| 锡林浩特市| 翁牛特旗| 伊金霍洛旗| 湖北省|