<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/315764.htm

          bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

          I T H S V N Z C

          I:全局中斷使能位。

          在I置位后,單獨的中斷使能由不同的中斷寄存器控制。若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 指令后進入休眠模式, SE 必須置位。為了確保進入休眠模
          式是程序員的有意行為,建議僅在 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 擴展Standby(1) 模式


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

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

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

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

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

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

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

          省電模式 當 SM2..0 為 011 時, SLEEP 指令將使 MCU 進入省電模式。這一模式與掉電模式只有
          一點不同:

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

          如果異步定時器不是異步驅(qū)動的,建議使用掉電模式,而不是省電模式。因為在省電模式
          下,若 AS2 為 0 ,則MCU 喚醒后異步定時器的寄存器數(shù)值是沒有定義的。

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

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

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


          */
          #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<}



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();