當前位置: 華文世界 > 數位

ATmega128微控制器的各種模式

2024-01-20數位

1.ATmega128 減少功耗的方法

試圖降低AVR 控制系統的功耗時需要考慮幾個問題。一般來說,要盡可能利用睡眠模式, 並且使盡可能少的模組繼續工作。不需要的功能必須禁止。下面的模組需要特殊考慮以達 到盡可能低的功耗。

模數轉換器
使能時, ADC 在睡眠模式下繼續工作。為了降低功耗,在進入睡眠模式之前需要禁止 ADC。重新啟動後的第一次轉換為擴充套件的轉換。在連續轉換下,持續地進行采樣並對 ADC 數據寄存器進行更新。連續轉換透過在ADCSRA寄存器的ADFR位寫1得到。第一次轉換透過向ADCSRA寄存器的ADSC寫1來啟動。在此模式下,後續的 ADC 轉換不依賴於 ADC 中斷標誌 ADIF 是否置位。

模擬比較器
在空閑模式時,如果沒有使用模擬比較器,可以將其關閉。在ADC 雜訊抑制模式下也是 如此。在其他睡眠模式模擬比較器是自動關閉的。如果模擬比較器使用了內部電壓基準 源,則不論在什麽睡眠模式下都需要關閉它。否則內部電壓基準源將一直使能。請參見手冊P210頁「 模擬比較器」 以了解如何配置模擬比較器。

掉電檢測器

如果套用沒有利用掉電檢測器BOD,這個模組也可以關閉。如果編程熔絲位BODEN 使 能BOD 功能,它將在各種睡眠模式下繼續工作,從而消耗電流。在深層次的睡眠模式下, 這個電流將占總電流的很大比重。請參看P 44「 掉電檢測器」 以了解如何配置BOD。

片內基準電壓
當使用BOD、模擬比較器和ADC 時可能需要內部電壓基準源。若這些模組都禁止了,則 基準源也可以禁止。重新使能後使用者必須等待基準源穩定之後才可以使用。如果基準源在 睡眠過程中是使能的,其輸出立即可以使用。請參見 手冊P 50「 片內基準電壓」 以了解基準源 啟動時間的細節。

看門狗定時器
如果套用沒有利用看門狗,這個模組就可以關閉。若使能,則在任何睡眠模式下都持續工 作,從而消耗電流。在深層次的睡眠模式下,這個電流將占總電流的很大比重。請參看手冊 P 51「 看門狗定時器」 以了解如何配置看門狗定時器。

埠引腳
進入睡眠模式時,所有的埠引腳都應該配置為只消耗最小的功耗。最重要的是避免驅動 電阻性負載。在睡眠模式下I/O 時鐘clkI/O 和ADC 時鐘clkADC 都被停止了,輸入緩衝區 也禁止了。從而保證輸入電路不會消耗電流。某些輸入邏輯是使能的,用來檢測喚醒條 件。具體的引腳請參見P 65「 數位輸入使能和睡眠模式」 。此時輸入不能懸空,訊號電平 也不應該接近VCC/2,否則輸入緩衝區會消耗過多的電流。

JTAG 介面與片內偵錯系統
當透過設定OCDEN 熔絲位使能片內偵錯系統,且進入掉電或省電模式時,主時鐘源仍然使能。此時仍會增加電流消耗。有三種方式可以避免該情況的發生:
• 禁止OCDEN 熔絲位。
• 禁止JTAGEN 熔絲位。
• 對MCUCSR 寄存器的JTD 位寫1。
當JTAG 介面使能而JTAG TAP 控制器沒有移出數據, TDO 引腳懸空。若與TDO 引腳的硬體連線沒有拉高邏輯電平,功耗將增加。註意,在以後的芯片中掃描鏈中的TDI 引腳含有上拉電阻避免該問題。對MCUCSR 寄存器的JTD 位寫1 或不對JTAG 熔絲位編程禁用JTAG 介面。

2.ATmega128 Standby 模式

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

3.ATmega128 省電模式

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

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

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

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

4.ATmega128 掉電模式

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

當使用外部電平中斷方式將MCU 從掉電模式喚醒時,必須保持外部電平一定的時間。具 體請參見手冊 P 84「 外部中斷」 。

從施加掉電喚醒條件到真正喚醒有一個延遲時間,此時間用於時鐘重新啟動並穩定下來。喚醒周期與由熔絲位CKSEL 定義的復位周期是一樣的,如 手冊P 34「 時鐘源」 。

5.ATmega128 ADC雜訊抑制模式

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

此模式提高了ADC 的雜訊環境,使得轉換精度更高。ADC 使能的時候,進入此模式將 自動啟動一次AD 轉換。ADC 轉換結束中斷、外部復位、看門狗復位、BOD 復位、兩線 介面地址匹配中斷、定時器/ 計數器0 中斷、SPM/EEPROM 準備好中斷、外部中斷 INT7:4,或外部中斷INT3:0 可以將MCU 從ADC 雜訊抑制模式喚醒。

6.ATmega128 空閑模式

當SM2..0 為000 時, SLEEP 指令將使MCU 進入空閑模式。在此模式下,CPU 停止運 行,而SPI、USART、模擬比較器、ADC、兩線介面、定時器/ 計數器、看門狗和中斷 系統繼續工作。這個睡眠模式只停止了clkCPU 和clkFLASH,其他時鐘則繼續工作。

內外部中斷都可以喚醒MCU。如果不需要從模擬比較器中斷喚醒MCU,為了減少功耗, 可以切斷比較器的電源。方法是置位模擬比較器控制和狀態寄存器ACSR 的位ACD。如 果ADC 使能,進入此模式後將自動啟動一次轉換。