×
单片机 > 单片机程序设计 > 详情

AVR单片机(学习ing)—(KZ)、电源管理及睡眠模式—01

发布时间:2020-06-19 发布时间:
|

电源管理及睡眠模式

睡眠模式可以使应用程序关闭MCU 中没有使用的模块,从而降低功耗。AVR 具有不同
的睡眠模式,允许用户根据自己的应用要求实施剪裁。
进入睡眠模式的条件是置位寄存器MCUCR 的SE,然后执行SLEEP 指令。具体哪一种
模式( 空闲模式、ADC 噪声抑制模式、掉电模式、省电模式、Standby 模式和扩展Standby
模式) 由MCUCR 的SM2、SM1 和SM0 决定,如Table 13 所示。使能的中断可以将进
入睡眠模式的MCU 唤醒。经过启动时间,外加4 个时钟周期后, MCU 就可以运行中断
例程了。然后返回到SLEEP 的下一条指令。唤醒时不会改变寄存器文件和SRAM 的内
容。如果在睡眠过程中发生了复位,则MCU 唤醒后从中断向量开始执行。

下面的是控制寄存器:



下面是休眠模式的选择:



• Bit 6 – SE: 休眠使能
为了使MCU 在执行SLEEP 指令后进入休眠模式, SE 必须置位。为了确保进入休眠模
式是程序员的有意行为,建议仅在SLEEP 指令的前一条指令置位SE。MCU 一旦唤醒立
即清除SE。

• Bits 7, 5, 4 – SM2..0: 休眠模式选择位 2、1 和0
如 Table 13 所示,这些位用于选择具体的休眠模式。

然后介绍一下下每个模式的情况:(这里还是挺重要而,好好看看,这个是实话啊~~哈哈,说实话哦~~~有好几个我都不怎么会,呵呵,要是我会了,回头我给补上)

空闲模式

当SM2..0 为000 时, SLEEP 指令将使MCU 进入空闲模式。在此模式下,CPU 停止运
行,而LCD 控制器、SPI、USART、模拟比较器、ADC、USI、定时器/ 计数器、看门
狗和中断系统继续工作。这个休眠模式只停止了clkCPU和clkFLASH,其他时钟则继续工作。
象定时器溢出与USART 传输完成等内外部中断都可以唤醒MCU。如果不需要从模拟比
较器中断唤醒MCU,为了减少功耗,可以切断比较器的电源。方法是置位模拟比较器控
制和状态寄存器ACSR 的ACD。如果ADC 使能,进入此模式后将自动启动一次转换。

ADC 噪声抑制模式

当SM2..0 为001 时, SLEEP 指令将使MCU 进入噪声抑制模式。在此模式下,CPU 停
止运行,而ADC、外部中断、两线接口地址配置、定时器/ 计数器0 和看门狗继续工作。
这个睡眠模式只停止了clkI/O、clkCPU 和clkFLASH,其他时钟则继续工作。
此模式提高了ADC 的噪声环境,使得转换精度更高。ADC 使能的时候,进入此模式将
自动启动一次AD 转换。ADC 转换结束中断、外部复位、看门狗复位、BOD 复位、两线
接口地址匹配中断、定时器/ 计数器2 中断、SPM/EEPROM 准备好中断、外部中断INT0
或INT1,或外部中断INT2 可以将MCU 从ADC 噪声抑制模式唤醒。

掉电模式

当SM2..0 为010 时, SLEEP 指令将使MCU 进入掉电模式。在此模式下,外部晶体停
振,而外部中断、两线接口地址匹配及看门狗(如果使能的话)继续工作。只有外部复
位、看门狗复位、BOD 复位、两线接口地址匹配中断、外部电平中断INT0 或INT1,或
外部中断INT2 可以使MCU 脱离掉电模式。这个睡眠模式停止了所有的时钟,只有异步
模块可以继续工作。

当使用外部电平中断方式将MCU 从掉电模式唤醒时,必须保持外部电平一定的时间。

从施加掉电唤醒条件到真正唤醒有一个延迟时间,此时间用于时钟重新启动并稳定下来。
唤醒周期与由熔丝位CKSEL 定义的复位周期是一样的。

省电模式

当SM2..0 为011 时, SLEEP 指令将使MCU 进入省电模式。这一模式与掉电模式只有
一点不同:
如果定时器/ 计数器2 为异步驱动,即寄存器ASSR 的AS2 置位,则定时器/ 计数器2 在
睡眠时继续运行。除了掉电模式的唤醒方式,定时器/ 计数器2 的溢出中断和比较匹配中
断也可以将MCU 从休眠方式唤醒,只要TIMSK 使能了这些中断,而且SREG 的全局中
断使能位I 置位。
如果异步定时器不是异步驱动的,建议使用掉电模式,而不是省电模式。因为在省电模式
下,若AS2 为0,则MCU 唤醒后异步定时器的寄存器数值是没有定义的。
这个睡眠模式停止了除clkASY 以外所有的时钟,只有异步模块可以继续工作。

Standby 模式

当SM2..0 为110 时, SLEEP 指令将使MCU 进入Standby 模式。这一模式与掉电模式
唯一的不同之处在于振荡器继续工作。其唤醒时间只需要6 个时钟周期。

扩展Standby 模式

当SM2..0 为111 时, SLEEP 指令将使MCU 进入扩展的Standby 模式。这一模式与省
掉电模式唯一的不同之处在于振荡器继续工作。其唤醒时间只需要6 个时钟周期。

下面的就是在不同模式下的时钟和唤醒源

 


关键字:AVR单片机  电源管理  睡眠模式 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会