sxbo88 发表于 2013-3-6 13:15:13

atmega88 低功耗设计问题

为这低功耗揪心好久好久,向大家请教:
atmega88最小系统,8mHZ晶振,休眠最小电流能达多少?我做出来的是1mA,感觉很大。不知谁做过达最小。最好给个代码参考一下;
谢谢

子鱼 发表于 2013-3-6 13:36:03

1mA?怎么测的 几位的精度

lcw_swust 发表于 2013-3-6 13:39:17

用的哪种休眠模式?
空闲\掉电\省电?

sxbo88 发表于 2013-3-7 08:37:11

用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是:程序中有时钟中断,5ms一次,难道这时钟中断会不停的唤醒吗,使CPU处于工作状态而导致电流变大?
谢谢

xsh2005105326 发表于 2013-3-7 08:40:19

sxbo88 发表于 2013-3-7 08:37 static/image/common/back.gif
用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是: ...

掉电模式只有外部电平中断和看门狗(如果使能的话)工作。进入掉电模式前设置IO的状态和关闭比较器

sxbo88 发表于 2013-3-7 12:14:47

是这么做的

fanice 发表于 2013-3-7 16:16:59

我做的休眠模式是在3.6V左右。休眠电流在0.25ma左右。

fanice 发表于 2013-3-7 16:17:44

忘记说了,是使用内部晶振。不是外部晶振。

水寒 发表于 2013-3-7 18:18:03

我也正在使用88来做产品,我的休眠电流想做到10uA以下,不知是否可以哟

sxbo88 发表于 2013-3-8 09:15:30

我看ATMEL的ZIGBIT也用AVR片子,外部晶振是8M,休眠电流很小几个薇安,不知怎么做的

lcw_swust 发表于 2013-3-8 09:39:50

sxbo88 发表于 2013-3-7 08:37 static/image/common/back.gif
用福禄克表测的电源输入端,输入电压是3.3V,电流是1MA,已做到最小了。
休闲模式是掉电模式。
一个问题是: ...

要注意几点:
关掉ADC、比较器、BOD、看门狗、引脚不能悬空(引脚电压不能接近VCC/2)
看手册里掉电模式下电流不到1uA
楼主最好给出电路,有可能是其它设备消耗了电流

sxbo88 发表于 2013-3-8 15:05:02

程序如下:
掉电模式,按到理,啥都关闭了,电流不应该很大啊,还是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();//进入睡眠状态
}
}

lcw_swust 发表于 2013-3-8 15:11:21

sxbo88 发表于 2013-3-8 15:05 static/image/common/back.gif
程序如下:
掉电模式,按到理,啥都关闭了,电流不应该很大啊,还是1MA多一点点
电路图(就是最小原理,3.6V ...

看起来没初始化IO口

sxbo88 发表于 2013-3-8 15:49:05

有初始化,代码忘加上了
//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
PORTB=0xFF; //不用的管脚使能内部上拉电阻。
PORTC=0xFF;
PORTD=0xFF;

sxbo88 发表于 2013-3-11 17:09:08

3.6864MH,3.3V电压供电,功耗最低500薇安,不知啥原因

ST_ATMEL_NXP 发表于 2013-5-5 21:38:04

ATMEGA88PA的功耗低。你这个是PA的吗?

sxbo88 发表于 2013-5-6 08:52:03

是的。看来要放弃了

hdxet 发表于 2013-5-6 10:26:02

ATMEGA88PA、5V供电、掉电模式,开看门狗7微安左右,不开看门狗1微安左右,3V会更低一些,基本与手册上的数据一样

sxbo88 发表于 2013-5-6 13:07:00

我的最少都是500薇安,能给例程参考一下吗
谢谢

chaoshuai 发表于 2013-5-6 13:31:45

我做过的东东。开看门狗5UA, 低功耗 只要注意把所有外设都关闭,管脚处理好就行了(不用的管脚我设置成了输出低电平)。

sxbo88 发表于 2013-5-6 15:23:28

我也是这么做的。看来只的转430了

fanice 发表于 2013-5-16 17:33:36

你的问题解决了吗?我也遇到和你相同的问题。

sxbo88 发表于 2013-5-16 20:46:17

没呢,正看430呢

fanice 发表于 2013-5-18 22:23:26

sxbo88 发表于 2013-5-16 20:46 static/image/common/back.gif
没呢,正看430呢

你好,你有尝试使用内部的RC时钟吗?我尝试的内部8mhz的时钟功耗是140ua。想用内部128K的,但是怕芯片被锁住。

fanice 发表于 2013-5-19 16:31:41

今天又改进了下,睡眠模式下电流4uA。

qjs412_avr 发表于 2013-5-19 16:48:30

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

sxbo88 发表于 2013-5-20 09:19:20

多谢,请问楼上用的晶振是?内部的吗,还是外部的?
页: [1]
查看完整版本: atmega88 低功耗设计问题