a5123058 发表于 2013-5-13 23:13:50

关于AVR省电模式

我搞ATMEGA16的节能模式很久了,都搞不了,在这跪求个位大神帮忙,发个例程或资料我学下。16的说明书我看了也做不出。。太菜了。还有I/O时钟clkI/O是什么时钟?是要外接的么?T/C2 的 32.768 kHz 振荡器又是什么??原谅我的无知。。。。{:cry:} {:cry:} {:cry:}      过后比有回报。君子一言驷马难追!!

浮生似海 发表于 2013-5-14 08:47:12

小兄弟 慢慢来,先把跑马灯基本I/O口搞懂网上很多历程 主动学习。


/********************关闭部分功能,按自己设计需求自行添加删减(这个只是一个思路,自己学着运用)************************/
TWCR &= ~(1<<TWIE);关闭TWI
TWCR = (1<<TWINT)|(1<<TWSTO);
TWCR &=~((1<<TWEA)|(1<<TWIE))|(1<<TWEN);//关闭TWI中断。

UCSR1B &= ~((1<<TXEN1)|(1<<RXEN1));//关闭UART
UCSR0B &= ~((1<<TXEN0)|(1<<RXEN0));
ADCSRA = 0x00; //disable adc
   
/************************设置MCU睡眠(睡眠有多种方式,自己看看手册里MCUCR的描述)***********************************/
   MCUCR = 0x30; //使能休眠功能,设为掉电模式。   
   asm("SLEEP");


把基础搞定其余是思维。加油吧兄弟。还有莫元哦 呵呵

hygbeyond 发表于 2013-5-16 13:20:07

这个问题比较复杂,关键你要实现什么功能,功耗多少能接受。外围电路是一个什么样的结构,如果有点亮的发光管,那你就没有什么必要做低功耗了

skyxjh 发表于 2013-5-18 23:04:00

工作频率尽量最低,没用到的模块时钟全部关闭,设置外部中断唤醒省电(掉电)模式

fanice 发表于 2013-5-19 15:51:42

我已经可以把功耗做的很低了。可以和我说说你的需求。

fanice 发表于 2013-5-19 16:29:09

现在做的睡眠模式下电流为4uA,

a5123058 发表于 2013-5-21 23:47:39

浮生似海 发表于 2013-5-14 08:47 static/image/common/back.gif
小兄弟 慢慢来,先把跑马灯基本I/O口搞懂网上很多历程 主动学习。




avr单片机我一些基础程序我都学得差不多了,就是这个节能模式很少见,所以不太熟悉。      asm("SLEEP");是什么意思?是不是还有加个32.768K的晶振呢?我要实现的功能是去控制一个大功率LED灯。每隔段时间就去PWM调下亮度,期间就省电模式。

a5123058 发表于 2013-5-21 23:50:26

fanice 发表于 2013-5-19 15:51 static/image/common/back.gif
我已经可以把功耗做的很低了。可以和我说说你的需求。

就是PWM去控制一个大功率的LED的亮度。当然还要AD转换得到的参数去控制。每隔端时间就控制下,期间就休眠。可以教下我么?

lu976046395 发表于 2013-5-22 09:28:06

学习      

浮生似海 发表于 2013-5-22 10:47:15

a5123058 发表于 2013-5-21 23:47 static/image/common/back.gif
avr单片机我一些基础程序我都学得差不多了,就是这个节能模式很少见,所以不太熟悉。      asm("SLEEP"); ...

asm("SLEEP");休眠语句呀。    晶振可用内部的 熔丝位配置下就行了。
你用看门狗做定时唤醒也可以功耗大概在7ua左右整体休眠还要看你的负载。 用定时器做休眠唤醒 功耗会很大。
整个过程是这样的:你先把设备运行输出、之后配置单片机端口该关闭的关闭、之后打开看门狗定时器按照你的设计设定合适的时间,再之后调用 “asm("SLEEP");”进行AVR休眠(看数据手册休眠那节),最后一个大循环,整个系统就这样运行明白了吗?我给你的代码已经有很清晰的思路了。整体框架要有然后逐个击破 。基础还是很重要哦。

a5123058 发表于 2013-5-23 09:20:39

浮生似海 发表于 2013-5-22 10:47 static/image/common/back.gif
asm("SLEEP");休眠语句呀。    晶振可用内部的 熔丝位配置下就行了。
你用看门狗做定时唤醒也可以   ...

我看了数据手册,您说的看门狗应该是掉电模式的吧?看门狗溢出最长时间是2.1S,但如果我想时间更长,比如10分钟要怎么做?休眠指令后那个大循环是怎样的?按我理解,我会这样写:运行主程序,完成所有任务后进入休眠,达到一定时间后自动唤醒,继续执行SLEEP后的语句。                  我还是不太明白异步模块,它的时钟是外接还是内部独立的一个时钟?谢谢了

浮生似海 发表于 2013-5-24 09:25:29

a5123058 发表于 2013-5-23 09:20 static/image/common/back.gif
我看了数据手册,您说的看门狗应该是掉电模式的吧?看门狗溢出最长时间是2.1S,但如果我想时间更长,比如 ...

首先“大循环”的意思就是 你程序不是执行一次就不执行了吧 “运行》休眠》唤醒,再运行》休眠》唤醒······”就是循环的意思了。十分钟休眠你可以唤醒后什么都不做记一个标记循环N次后达到你的休眠时间了,再运行所需程序(就是加判断语句)。至于你说的异步模块 指的是哪个模块 单片机运用的是一个时钟 ,看门狗有单独的时钟也是内部有的 去看AVR整体内部框图。如果外部控制其它模块那个模块需要时钟那就外挂啦。

红尘笑客288 发表于 2013-6-10 11:38:52

这个东西我觉得还是多看看数据手册吧,呵呵
页: [1]
查看完整版本: 关于AVR省电模式