ATmega168 减少功耗的方法

发布者:跳跃龙珠最新更新时间:2020-07-19 来源: eefocus关键字:ATmega168  减少功耗  AVR 手机看文章 扫描二维码
随时随地手机看文章

试图降低AVR 控制系统的功耗时需要考虑几个问题。一般来说,要尽可能利用睡眠模式,并且使尽可能少的模块继续工作。不需要的功能必须禁止。下面的模块需要特殊考虑以达到尽可能低的功耗。

模数转换

使能时, ADC 在所有休眠模式下都继续工作。为了降低功耗,在进入休眠模式之前需要禁止 ADC。重新启动后的第一次转换为扩展的转换。详见 P217“ 模数转换器” 。

模拟比较器

ATmega168在 ADC 噪声抑制模式下也是如此。在其他休眠模式模拟比较器是自动关闭的。如果模拟比较器使用了内部电压基准 源,则不论在什么休眠模式下都需要通过程序来关闭它。否则内部电压基准源将一直使能。请参见 P214“模拟比较器”以了解如何配置模拟比较器。

掉电检测BOD 

如果系统没有利用掉电检测器 BOD,这个模块也可以关闭。如果编程熔丝位 BODLEVEL使能 BOD 功能,它将在各种休眠模式下继续工作,从而消耗电流。在深层次的休眠模式下,这个电流将占总电流的很大比重。请参看 P40“掉电检测” 以了解如何配置 BOD。

片内基准电压

当使用 BOD、模拟比较器 或 ADC 时可能需要内部电压基准源。若这些模块都禁止了,则基准源将被禁止,从而不会消耗能量。重新使能后用户必须等待基准源稳定之后才可以使 用。如果基准源在休眠过程中是使能的,其输出立即可以使用。请参见 P43“片内基准电压”以了解基准源启动时间的细节。

看门狗定时器

如果系统无需利用看门狗,这个模块就可以关闭。若使能,则在任何休眠模式下都持续工作,从而消耗电流。在深层次的睡眠模式下,这个电流将占总电流的很大比重。请参看P44“看门狗定时器”以了解如何配置看门狗定时器。

端口引脚

ATmega168进入休眠模式时,所有的端口引脚都应该配置为只消耗最小的功耗。最重要的是避免驱动 电阻性负载。在休眠模式下I/O时钟clkI/O和ADC时钟clkADC都被停止了,输入缓冲器也禁止了,从而保证输入电路不会消耗电流。在某些情况下输入逻辑是使能的,用来检测唤醒条件。用于此功能的具体引脚请参见 P63“数字输入使能和休眠模式”。 如果输入缓冲器是使能的,此时输入不能悬双 VCC/2,否则输入缓冲器会消耗额外的电流。 

模拟输入引脚的数字输入缓冲器应一直禁用。否则,即使当输入引脚工作于模拟输入状态,当模拟信号电压接近 VCC/2 时输入缓冲器需要消耗很大的电流。可以通过操作数字输入禁止寄存器 (DIDR1 与 DIDR0) 来禁止数字输入缓冲器。具体参见 P216“数字输入禁止 寄存器 1 – DIDR1” 与 P231“数字输入禁止寄存器 0 – DIDR0” 。

片上调试系统

如果通过熔丝位 DWEN 使能了片上调试系统,当芯片进入休眠模式时主时钟保持运行。在休眠模式中这个电流占总电流的很大比重。

关键字:ATmega168  减少功耗  AVR 引用地址:ATmega168 减少功耗的方法

上一篇:ATmega168 复位源
下一篇:ATmega168 Standby模式

推荐阅读最新更新时间:2024-11-11 09:06

基于AVR单片机的医用智能输液系统设计
1. 研究意义   目前,医院静脉输液主要是人工控制,由人监控的静脉输液,无法正确调解药液流速,速度过快由于点滴里有钾元素的成分会造成血管刺激,通常刺激会表现为疼痛。但通常输液快慢要看自身身体情况,但输液还是会对血管和心脏,肾脏有刺激。利用现有的科技设计智能输液系统,即可以控制药液流速、检测药液剩余量、及时地停止输液防止血液回流等,医护人员可以通过主控室观察和调解所有药液流速,从而大大地节省人力。   本设计研究一种操作方便,显示直观,具有报警功能的智能型液体点滴速度控制器,该系统让护理人员监控病人打点滴的进程时间得到充分利用,避免病人在输液过程中出现“回血”而造成的医疗事故,提高病人治病输液过程中的安全系数,同时减少护理
[医疗电子]
基于<font color='red'>AVR</font>单片机的医用智能输液系统设计
用PonyProg2000 for Windows烧写AVR MCU
摘要:本文主要介绍了PonyProg2000 版本2.06c beta for Windows的安装和用该程序开发AVR系列微控制器的方法,希望对于广大使用该程序的朋友们能起到一定的帮助作用。 PonyProg2000简介: PonyProg2000是由Claudio Lanconelli先生编制的一个可以对微控制器、电可擦写存储器进行在线串行编程的程序,PonyProg2000目前可以支持AVR微控制器、AT89S微控制器、PIC 16微控制器、PIC 12微控制器、ImBUS eeprom、SDE2506 eeprom和X2444 eeprom,PonyProg2000 V2.06c在使用中非常稳定,可以很方便的开发支持
[单片机]
用PonyProg2000 for Windows烧写<font color='red'>AVR</font> MCU
AVR(Mega8)红外接收
使用一体化的红外接收头,直接就解码出来了,平时红外接收头输出的是高电平,当有红外数据的时候,就会根据发送的红外数据有相应的电平转换。大家可以随便找个遥控板,测一下红外接收波形,看看高低电平的表示,便于计数及接收步骤。这次用的遥控板的红外协议是这样的: 0.6ms高电平+0.48ms低电平表示0,接收解码出来是0.6ms低电平+0.48ms高电平。 0.6ms高电平+1.66ms低电平表示1,接收解码出来是0.6ms低电平+1.66ms高电平。 调制38kHz,占空比1/3. 遥控发送数据先是9ms高电平,4.5ms低电平,然后是两个字节的识别码,接着是一个字节的数据和一个字节的数据反码。 单片机解码0和
[单片机]
AVR单片机教程——数码管
先解答之前一个思考题:如果不把引脚配置为输出而写高电平,连接LED会怎样? 实验结果是,LED会亮,但相比于输出高电平的情况,亮度很低。这是为什么呢? 通过上一篇教程我们知道,引脚输入输出模式是由寄存器DDRx中DDxn位控制的,可以推断出 pin_mode 函数会改变一个引脚对应的DDxn值,输入为0,输出为1,而其复位后的值为0,即输入,因此如果不把引脚配置为输出,它的模式就是输入。类似地 pin_write 函数会改变PORTxn,其值为函数的第二个参数。 所以不配置输出而写高电平的结果就是,这一引脚的DDxn为0,PORTxn为1,是带上拉电阻的输入模式。上拉电阻相当于VCC接电阻后再接在引脚上,外部电路是引脚
[单片机]
<font color='red'>AVR</font>单片机教程——数码管
avr单片机 TC1的16位PWM输出程序
********************************************/ * 工作频率:内部8M * * 编 译 器:ICCAVR 6.31A * * 输 出:PD4输出PWMB,PD5输出PWMA * * 产生的PWM频率为8M/65536约122Hz * ********************************************/ #include iom16v.h #include macros.h //延时函数:入口time 需延时的MS数 void delay_ms(unsigned int time) { unsi
[单片机]
ATmega48 减少功耗的方法
试图降低AVR 控制系统的功耗时需要考虑几个问题。一般来说,要尽可能利用睡眠模式,并且使尽可能少的模块继续工作。不需要的功能必须禁止。下面的模块需要特殊考虑以达到尽可能低的功耗。 模数转换器 使能时, ADC 在所有休眠模式下都继续工作。为了降低功耗,在进入休眠模式之前需要禁止 ADC。重新启动后的第一次转换为扩展的转换。详见 P217“ 模数转换器” 。 模拟比较器 在 ADC 噪声抑制模式下也是如此。在其他休眠模式模拟比较器是自动关闭的。如果模拟比较器使用了内部电压基准 源,则不论在什么休眠模式下都需要通过程序来关闭它。否则内部电压基准源将一直使能。请参见 P214“模拟比较器”以了解如何配置模拟比较器。 掉电检测BOD 如
[单片机]
AVR端口先设置方向还是先赋值?
简介:AVR端口先设置方向还是先赋值的讨论 我对这个问题进行过仔细研究,最后得出结论,还是先电平后方向合理。 正如4楼所说,时间长短,但是还是存在的。 电平和方向寄存器默认都是0x00。即: DDRX = 0X00; PROTX = 0X00; 如果我们想将它设置为输出、高电平,下面来分析两者区别: A先方向后电平: DDRX = 0XFF; 那么此时电平寄存器PORTX = 0X00,那么这个时候IO口向外输出低电平,注意此时是“输出低电平”。 PORTX = 0XFF; 运行此语条后,IO口即会“输出高电平”。 经过上面两条语我们达到了目的,输出高电平,同志们有没有发现在输出高电平前面还有一个“输出低电
[单片机]
IAR for AVR 学习笔记(3)--位操作
3.1.在c语言里对位的操作如一般如下: PORTB|=(1 2);//置PORTB的第2位=1 PORTB&=~(1 2);//置PORTB的第2位=0 PORTB^|=(1 2);//取反PORTB的第2位 While(PORTB&(1 2));//判断1 While(!(PORTB&(1 2)));//判断为0 3.2.IAR编译器对位的支持更强大,除了上面的方法外还有以下更简单的操作方法: PORTB_ Bit2=1; //置PORTB的第2位=1 PORTB_ Bit2=0; //置PORTB的第2位=0 PORTB_ Bit2=~ PORTB_ Bit2;//取反PORTB的第2位 While(PORTB_ Bit2)
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved