|
AVR电源管理——睡眠模式范例
//管脚定义 #define LED 0 //PB0 驱动LED,低电平有效 #define KEY_INT2 0 //PB3 按键, 低电平有效 void delay_10ms(unsigned int t) { /* 由于内部函数_delay_ms() 最高延时较短 262.144mS@1MHz / 32.768ms@8MHz / 16.384ms@16MHz 故编写了这条函数,实现更长的延时,并能令程序能适应各种时钟频率 */ while(t--) _delay_ms(10); } int main(void) { unsigned char i; //上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻 PORTA=0xFF; //不用的管脚使能内部上拉电阻。 PORTC=0xFF; PORTD=0xFF; PORTB=0xFF; DDRB =(1<<LED); //PB0设为输出高电平,灯灭 /* 端口引脚 进入休眠模式时,所有的端口引脚都应该配置为只消耗最小的功耗。 最重要的是避免驱动电阻性负载。 在休眠模式下I/O 时钟clkI/O 和ADC 时钟clkADC 都被停止了,输入缓冲器也禁止了,从而保证输入电路不会消耗电流。 在某些情况下输入逻辑是使能的,用来检测唤醒条件。用于此功能的具体引脚请参见“ 数字输入使能和休眠模式” 。 如果输入缓冲器是使能的,此时输入不能悬空,信号电平也不应该接近VCC/2,否则输入缓冲器会消耗额外的电流。 IO作输出(DDR=1)时,维持状态不变 */ /* 看门狗定时器(上电默认是关闭的) 如果系统无需利用看门狗,这个模块也可以关闭。 若使能,则在任何休眠模式下都持续工作,从而消耗电流。 在深层次的睡眠模式下,这个电流将占总电流的很大比重。 假设看门狗定时器使能了,关闭程式如下 1. 在同一个指令内对WDTOE 和WDE 写"1“,即使WDE 已经为"1“ 2. 在紧接的4 个时钟周期之内对WDE 写"0” */ WDTCR=(1<<WDTOE)|(1<<WDE); WDTCR=(0<<WDE); //或使用wdt.h里面的wdt_disable()函数 /* 模数转换器(上电默认是关闭的) 使能时, ADC在睡眠模式下继续工作。 为了降低功耗,在进入睡眠模式之前需要禁止ADC。 重新启动后的第一次转换为扩展的转换。 假设模数转换器使能了,关闭程式如下 */ ADCSRA=(0<<ADEN); /* 模拟比较器(上电默认是打开的,需要手工关闭) 在空闲模式时,如果没有使用模拟比较器,可以将其关闭。在ADC 噪声抑制模式下也是如此。 在其他睡眠模式模拟比较器是自动关闭的。 如果模拟比较器使用了内部电压基准源,则不论在什么睡眠模式下都需要关闭它。否则内部电压基准源将一直使能。 关闭程式如下 */ ACSR=(1<<ACD); /* 掉电检测BOD (由熔丝位BODEN控制) 如果系统没有利用掉电检测器BOD,这个模块也可以关闭。 如果熔丝位BODEN 被编程,从而使能了BOD 功能,它将在各种休眠模式下继续工作。 在深层次的休眠模式下,这个电流将占总电流的很大比重。 设置熔丝位BODEN=1 关断BOD功能 */ /* 片内基准电压 使用BOD、模拟比较器和ADC 时可能需要内部电压基准源。 若这些模块都禁止了,则基准源也可以禁止。 重新使能后用户必须等待基准源稳定之后才可以使用它。 如果基准源在休眠过程中是使能的,其输出立即可以使用。 当BOD、模拟比较器和ADC都禁止了,则基准源也自动禁止了。 */ /* JTAG 接口与片上调试系统 如果通过熔丝位OCDEN使能了片上调试系统,当芯片进入掉电或省电模式时主时钟保持运行。 在休眠模式中这个电流占总电流的很大比重。 下面有三种替代方法: 1 不编程OCDEN 2 不编程JTAGEN 3 置位MCUCSR 的JTD 当JTAG 接口使能而JTAG TAP 控制器没有进行数据交换时,引脚TDO 将悬空。 如果与TDO 引脚连接的硬件电路没有上拉电阻,功耗将增加。 器件的引脚TDI 包含一个上拉电阻,因此在扫描链中无需为下一个芯片的TDO 引脚设置上拉电阻。 通过置位MCUCSR寄存器的JTD 或不对JTAG 熔丝位编程可以禁止JTAG 接口。 JTD: 禁止JTAG 接口(MCU控制与状态寄存器MCUCSR Bit7) 此位为0 时,如果JTAGEN熔丝位被编程则JTAG 接口使能。 如果这位为1, JTAG接口禁止。 为了避免无意的禁止或使能JTAG接口,必须通过一个时间序列来改变JTD 位。 应用软件必须在四个时钟周期内将期望的数值两次写入JTD。 如果JTAG 接口没有与其他JTAG电路连接, JTD应该置位。这样做的原因是为了避免JTAG接口TDO引脚的静态电流。
上一页 [1] [2] [3] 下一页 |
|