当前位置: 华文世界 > 数码

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 使能,进入此模式后将自动启动一次转换。