您的位置 首页 开关

avr单片机电源办理及其睡觉形式装备阐明

睡眠模式可以使应用程序关闭MCU中没有使用的模块,从而降低功耗。AVR具有不同的睡眠模式,允许用户根据自己的应用要求实施剪裁。/*…

睡觉形式能够使运用程序封闭 MCU 中没有运用的模块,从而降低功耗。AVR 具有不同 的睡觉形式,答运用户依据自己的运用要求施行取舍。

/*
状况寄存器SREG

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 在履行 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、定时器 / 计数器、看门
狗和中止体系持续作业。这个休眠形式只中止了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 从掉电形式唤醒时,有必要坚持外部电平必定的时刻。具
体请拜见 P65“ 外部中止 ” 。

从施加掉电唤醒条件到真实唤醒有一个延迟时刻,此时刻用于时钟重新发动并稳定下来。
唤醒周期与由熔丝位 CKSEL 界说的复位周期是相同的,如 P23“ 时钟源 ” 所示。

省电形式 当 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 个时钟周期。 .

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/266650.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部