ATmega16减少功耗的方法试图降低AVR控制系统的功耗时需要考虑几个问题
一般来说,要尽可能利用睡眠模式,并且使尽可能少的模块继续工作
不需要的功能必须禁止
下面的模块需要特殊考虑以达到尽可能低的功耗
模数转换器使能时,ADC在睡眠模式下继续工作
为了降低功耗,在进入睡眠模式之前需要禁止ADC
重新启动后的第一次转换为扩展的转换
具体请参照P192“模数转换器”
模拟比较器在空闲模式时,如果没有使用模拟比较器,可以将其关闭
在ADC噪声抑制模式下也是如此
在其他睡眠模式模拟比较器是自动关闭的
如果模拟比较器使用了内部电压基准源,则不论在什么睡眠模式下都需要关闭它
否则内部电压基准源将一直使能
请参见P189“模拟比较器”以了解如何配置模拟比较器
掉电检测BOD如果系统没有利用掉电检测器BOD,这个模块也可以关闭
如果熔丝位BODEN被编程,从而使能了BOD功能,它将在各种休眠模式下继续工作
在深层次的休眠模式下,这个电流将占总电流的很大比重
请参看P38“掉电检测”以了解如何配置BOD
片内基准电压使用BOD、模拟比较器和ADC时可能需要内部电压基准源
若这些模块都禁止了,则基准源也可以禁止
重新使能后用户必须等待基准源稳定之后才可以使用它
如果基准源在休眠过程中是使能的,其输出立即可以使用
请参见P40“片内基准电压”以了解基准源启动时间的细节
看门狗定时器如果系统无需利用看门狗,这个模块也可以关闭
若使能,则在任何休眠模式下都持续工作,从而消耗电流
在深层次的睡眠模式下,这个电流将占总电流的很大比重
请参看P40“看门狗定时器”以了解如何配置看门狗定时器
端口引脚进入休眠模式时,所有的端口引脚都应该配置为只消耗最小的功耗
最重要的是避免驱动电阻性负载
在休眠模式下I/O时钟clkI/O和ADC时钟clkADC都被停止了,输入缓冲器也禁止了,从而保证输入电路不会消耗电