




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AVRAVR 单片机进入睡眠状态及唤醒的单片机进入睡眠状态及唤醒的 C C 语言程序语言程序 M16 掉电模式的耗电情况 看门狗关闭 时钟为内部 RC 1MHz 0 9uA Vcc 5 0V 手册的图表约为 1 1uA 0 3uA Vcc 3 3V 手册的图表约为 0 4uA 测量的数字万用表是 FLUKE 15B 分辨率 0 1uA 这个程序需要 MCU 进入休眠状态 为实现最低功耗 JTAG 接口会被关闭 只能 通过 LED 的变化来观察程序的运行 这个实验里面 用 STK500 AVRISP ISP 下载线来烧录更方便 熔丝位设置 1 关断 BOD 功能 BODEN 1 2 如果用 ISP 方式烧录 就可以完全关闭 JTAG 口了 OCEEN 1 JTAGEN 1 include include include include 时钟定为内部 RC 1MHz F CPU 1000000 也可以采用其他时钟 include sleep h 里面定义的常数 对应各种睡眠模式 define SLEEP MODE IDLE 0 空闲模式 define SLEEP MODE ADC BV SM0 ADC 噪声抑制模式 define SLEEP MODE PWR DOWN BV SM1 掉电模式 define SLEEP MODE PWR SAVE BV SM0 BV SM1 省电模式 define SLEEP MODE STANDBY BV SM1 BV SM2 Standby 模式 define SLEEP MODE EXT STANDBY BV SM0 BV SM1 BV SM2 扩展 Standby 模式 函数 void set sleep mode uint8 t mode 设定睡眠模式 void sleep mode void 进入睡眠状态 管脚定义 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 0 x00 PORTx 0 x00 输入 无上拉电阻 PORTA 0 xFF 不用的管脚使能内部上拉 电阻 PORTC 0 xFF PORTD 0 xFF PORTB 0 xFF 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 引脚的静态电流 在软件中关闭 JTAG 接口的方法 MCUCSR 1 JTD MCUCSR 1 JTD 掉电模式 当 SM2 0 为 010 时 SLEEP 指令将使 MCU 进入掉电模式 在此模式下 外部晶体停振 而外部中断 两线接口地址匹配及看门狗 如果使能的话 继续工作 只有外部复位 看门狗复位 BOD 复位 两线接口地址匹配中断 外部电 平中断 INT0 或 INT1 或外部中断 INT2 可以使 MCU 脱离掉电模式 这个睡眠模式停止了所有的时钟 只有异步模块可以继续工作 当使用外部电平中断方式将 MCU 从掉电模式唤醒时 必须保持外部电平一 定的时间 从施加掉电唤醒条件到真正唤醒有一个延迟时间 此时间用于时钟重新启 动并稳定下来 唤醒周期与由熔丝位 CKSEL 定义的复位周期是一样的 如果在睡眠过程中发生了复位 则 MCU 唤醒后从中断向量开始执行 使能的中断可以将进入睡眠模式的 MCU 唤醒 经过启动时间 外加 4 个 时钟周期后 MCU 就可以运行中断例程了 然后返回到 SLEEP 的下一条指令 MCUCSR 0 ISC2 INT2 的下降沿激活中断 默认的 这句话可以 不写 GICR 1 INT2 使能外部中断 INT2 sei 使能全局中断 while 1 for i 0 i 10 i LED 闪动 10 次后进入掉电模式的睡眠状态 delay 10ms 30 PORTB 点亮 LED delay 10ms 30 PORTB 1 LED 熄灭 LED set sleep mode SLEEP MODE PWR DOWN 设定为掉电模式 sleep mode 进入睡眠状态 也可以自行编写 MCUCR 0 SM2 1 SM1 0 SM0 设定为掉电模式 asm volatile sleep 进入睡眠状态 SIGNAL SIG INTERRUPT2 外部中断 2 服务程序 唤醒源 PORTB 点亮 LED delay 10ms 500 PORTB 1 LED 熄灭 LED delay 10ms 100 LED 长亮 5 秒钟 熄灭 1 秒钟后 退出中断服务程序 然后返回到 SLEEP 的下一条指令 程序运行效果 万用表打到直流电流的最小档位 uA 分辨率 接到开关的两头 烧录后要把 STK500 拔出 否则无法测得正确的电流数据 上电后 LED 闪动 10 次后进入掉电模式的睡眠状态 此时可断开开关 看看万用表的读数 然后接通开关 按下 INT2 按键 将会发现 LED 长亮 5 秒钟 熄灭 1 秒钟后 退回主程序 LED 闪动 10 次后进入掉电模式的睡眠状态 如果按下复位按键 马上复位 网友可以编写其他睡眠模式 开关各种模块 其他时钟源 其他电源电压来 测试电流消耗情况 电源管理及睡眠模式 睡眠模式可以使应用程序关闭 MCU 中没有使用的模块 从而降低功耗 AVR 具有不同的睡眠模式 允许用户根据自己的应用要求实施剪裁 进入睡眠模式的条件是置位寄存器 MCUCR 的 SE 然后执行 SLEEP 指令 具体哪一种模式 空闲模式 ADC 噪声抑制模式 掉电模式 省电模式 Standby 模式和扩展 Standby 模式 由 MCUCR 的 SM2 SM1 和 SM0 决定 使能的中断可以将进入睡眠模式的 MCU 唤醒 经过启动时间 外加 4 个时钟周期后 MCU 就可以运行中断例程了 然后 返回到 SLEEP 的下一条指令 唤醒时不会改变寄存器文件和 SRAM 的内容 如果在睡眠过程中发生了复位 则 MCU 唤醒后从中断向量开始执行 需要了解 AVR 芯片内部不同的时钟系统及其分布 在选择合适的睡眠模式 时非常有用 MCU 控制寄存器 MCUCR MCU 控制寄存器包含了电源管理的控制位 Bits 7 5 4 SM2 0 休眠模式选择位 2 1 和 0 这些位用于选择具体的休眠模式 SM2 SM1 SM0 休眠模式 0 0 0 空闲模式 0 0 1 ADC 噪声抑制模式 0 1 0 掉电模式 0 1 1 省电模式 1 0 0 保留 1 0 1 保留 1 1 0 Standby 模式 1 1 1 1 扩展 Standby 模式 1 Note
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石灰厂承包协议合同范本
- 心电监护仪合同补充协议
- 纸尿裤用品购销合同范本
- (2025年标准)破产重组协议书
- (2025年标准)农民就业培训协议书
- (2025年标准)农村园地买卖协议书
- (2025年标准)牛肉意向采购协议书
- (2025年标准)磨具持股协议书
- (2025年标准)米油买卖协议书
- 2025年新朋友开店合伙协议书
- 高等数学函数的连续性与间断点
- 梅毒专题知识讲座
- 实联化工(江苏)有限公司100万吨年联碱项目验收监测
- 70周岁以上老年人换长久驾照三力测试题库
- 斜视患者的护理
- GB/T 18492-2001信息技术系统及软件完整性级别
- 陈阅增第四版普通生物学第1篇2生命的化学基础课件
- 多团队协作下的加速康复外科ERAS课件
- 博物馆建筑设计-博物馆建筑设计原理课件
- 脓毒症诊断和治疗进展课件
- 急诊医学-中毒
评论
0/150
提交评论