atmega88 低功耗设计问题
为这低功耗揪心好久好久,向大家请教:atmega88最小系统,8mHZ晶振,休眠最小电流能达多少?我做出来的是1mA,感觉很大。不知谁做过达最小。最好给个代码参考一下;
谢谢 1mA?怎么测的 几位的精度 用的哪种休眠模式?
空闲\掉电\省电? 用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是:程序中有时钟中断,5ms一次,难道这时钟中断会不停的唤醒吗,使CPU处于工作状态而导致电流变大?
谢谢 sxbo88 发表于 2013-3-7 08:37 static/image/common/back.gif
用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是: ...
掉电模式只有外部电平中断和看门狗(如果使能的话)工作。进入掉电模式前设置IO的状态和关闭比较器 是这么做的 我做的休眠模式是在3.6V左右。休眠电流在0.25ma左右。 忘记说了,是使用内部晶振。不是外部晶振。 我也正在使用88来做产品,我的休眠电流想做到10uA以下,不知是否可以哟 我看ATMEL的ZIGBIT也用AVR片子,外部晶振是8M,休眠电流很小几个薇安,不知怎么做的 sxbo88 发表于 2013-3-7 08:37 static/image/common/back.gif
用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是: ...
要注意几点:
关掉ADC、比较器、BOD、看门狗、引脚不能悬空(引脚电压不能接近VCC/2)
看手册里掉电模式下电流不到1uA
楼主最好给出电路,有可能是其它设备消耗了电流 程序如下:
掉电模式,按到理,啥都关闭了,电流不应该很大啊,还是1MA多一点点
电路图(就是最小原理,3.6V电源直接供电),烧写设置见另一图
#define SLEEP_MODE_IDLE SMCR&=0x00 //空闲模式
#define SLEEP_MODE_ADC SMCR&=0x02//ADC 噪声抑制模式
#define SLEEP_MODE_PWR_DOWN SMCR&=0x05//掉电模式
#define SLEEP_MODE_PWR_SAVE SMCR&=0x06 //省电模式
#define SLEEP_MODE_STANDBY SMCR&=0x0c//Standby 模式
#define SLEEP_ENABLE SMCR|=0x01//sleep使能
/*
假设看门狗定时器使能了,关闭程式如下*/
WDTCSR=(1<<WDCE)|(1<<WDE);
WDTCSR=(0<<WDE);
/*
模数转换器(上电默认是关闭的)
*/
ADCSRA=(0<<ADEN);
/*
模拟比较器(上电默认是打开的,需要手工关闭)
*/
ACSR=(1<<ACD);
_SEI(); //使能全局中断
while(1)
{
SLEEP_MODE_PWR_DOWN; //设定为掉电模式
SMCR=(1<<SE);
_SLEEP();//进入睡眠状态
}
}
sxbo88 发表于 2013-3-8 15:05 static/image/common/back.gif
程序如下:
掉电模式,按到理,啥都关闭了,电流不应该很大啊,还是1MA多一点点
电路图(就是最小原理,3.6V ...
看起来没初始化IO口 有初始化,代码忘加上了
//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
PORTB=0xFF; //不用的管脚使能内部上拉电阻。
PORTC=0xFF;
PORTD=0xFF;
3.6864MH,3.3V电压供电,功耗最低500薇安,不知啥原因 ATMEGA88PA的功耗低。你这个是PA的吗? 是的。看来要放弃了 ATMEGA88PA、5V供电、掉电模式,开看门狗7微安左右,不开看门狗1微安左右,3V会更低一些,基本与手册上的数据一样 我的最少都是500薇安,能给例程参考一下吗
谢谢 我做过的东东。开看门狗5UA, 低功耗 只要注意把所有外设都关闭,管脚处理好就行了(不用的管脚我设置成了输出低电平)。 我也是这么做的。看来只的转430了 你的问题解决了吗?我也遇到和你相同的问题。 没呢,正看430呢 sxbo88 发表于 2013-5-16 20:46 static/image/common/back.gif
没呢,正看430呢
你好,你有尝试使用内部的RC时钟吗?我尝试的内部8mhz的时钟功耗是140ua。想用内部128K的,但是怕芯片被锁住。 今天又改进了下,睡眠模式下电流4uA。 sxbo88 发表于 2013-5-16 20:46 static/image/common/back.gif
没呢,正看430呢
void SleepMode(void)
{
DDRB = 0Xff;DDRC = 0Xff;DDRD = 0Xfb;
PORTB = 0x00;PORTC = 0x00;PORTD = 0x00;
ADCSRA &= ~_BV(ADEN);
ACSR |= _BV(ACD);
ACSR &= ~_BV(ACBG);
MCUCR |= _BV(PUD);
DIDR1 = 0x03;
DIDR0 = 0x3f;
cli();
SMCR = 0x04;
SMCR |= _BV(SE);//set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sei();
asm("sleep");
}
掉电模式,关闭看门狗(最好一开始就别开),电流<1ua,环境:最小系统,3.3V,ATMEGA88PA-AU 多谢,请问楼上用的晶振是?内部的吗,还是外部的?
页:
[1]