MSP430的低功耗事件驱动工作模式
2009-09-14 19:09
274 查看
程序匠人 发表于 2006-3-14 21:07:00
MSP430系列单片机的各个模块都可以独立运行,如定时器、输入/输出端口、A/D转换、看门狗、液晶显示器等都可以在CPU休眠的状态下独立工作。若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。
让CPU工作于突发状态可以充分利用CPU的低功耗性能。通常,使用软件将CPU设定到某一低功耗模式,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又可以进入相应的休眠状态。如:让CPU工作在LPM3状态,通过中断事件转换到AM活动模式,根据运行需要,又可以从AM状态进入相应的低功耗模式:LPM0/LPM3或LPM4。
系统的这些低功耗特性是靠系统对中断的响应来实现的。系统响应中断的过程:(1)硬件自动中断服务。包括PC入栈、SR入栈;中断向量赋给PC;GIE、CPUOFF、OSCOFF和SCG1清除;以及IFG标志位清除(单源中断标志)。(2)执行中断处理子程序。(3)执行RETI指令(中断返回),包括SR出栈;PC出栈。
例如:系统初始化完成后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入低功耗模式3。
;主程序
……;初始化操作开始
……;
……;初始化结束
BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0
;……;程序在这里停止
;中断子程序
……
……; 中断处理结束
BIS #GIE+CPUOFF+SCG1+SCG0, 0(SP) ; 设置SR为低功耗模式3,LPM3
RETI; 中断返回
;系统进入低功耗模式3
……
如果主程序期待在中断返回之后继续执行某些操作,可以在中断处理子程序中改变SR的值为AM模式,系统中断退出后根据恢复的SR和PC的值,来执行设定的某些操作。
;主程序
……;初始化操作开始
……;
……;初始化结束
BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0
L1 操作1
L2 操作2
……;
;中断子程序
…… ;中断处理开始
……
……; 中断处理结束
BIS #GIE+CPUOFF, 0(SP) ; 设置SR为活动模式,AM
RETI; 中断返回,系统进入活动模式
……
主程序执行到LPM0处停止执行,L1,L2等语句不执行。之后中断事件保存PC(L1指令地址)和SR(低功耗模式0),中断唤醒CPU,执行中断处理程序;由于在中断处理子程序中将SR设置为活动模式,所以中断返回后CPU处于活动状态,并从PC指向的L1指令处开始继续执行…… 。
MSP430系列单片机的各个模块都可以独立运行,如定时器、输入/输出端口、A/D转换、看门狗、液晶显示器等都可以在CPU休眠的状态下独立工作。若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。
让CPU工作于突发状态可以充分利用CPU的低功耗性能。通常,使用软件将CPU设定到某一低功耗模式,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又可以进入相应的休眠状态。如:让CPU工作在LPM3状态,通过中断事件转换到AM活动模式,根据运行需要,又可以从AM状态进入相应的低功耗模式:LPM0/LPM3或LPM4。
系统的这些低功耗特性是靠系统对中断的响应来实现的。系统响应中断的过程:(1)硬件自动中断服务。包括PC入栈、SR入栈;中断向量赋给PC;GIE、CPUOFF、OSCOFF和SCG1清除;以及IFG标志位清除(单源中断标志)。(2)执行中断处理子程序。(3)执行RETI指令(中断返回),包括SR出栈;PC出栈。
例如:系统初始化完成后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入低功耗模式3。
;主程序
……;初始化操作开始
……;
……;初始化结束
BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0
;……;程序在这里停止
;中断子程序
……
……; 中断处理结束
BIS #GIE+CPUOFF+SCG1+SCG0, 0(SP) ; 设置SR为低功耗模式3,LPM3
RETI; 中断返回
;系统进入低功耗模式3
……
如果主程序期待在中断返回之后继续执行某些操作,可以在中断处理子程序中改变SR的值为AM模式,系统中断退出后根据恢复的SR和PC的值,来执行设定的某些操作。
;主程序
……;初始化操作开始
……;
……;初始化结束
BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0
L1 操作1
L2 操作2
……;
;中断子程序
…… ;中断处理开始
……
……; 中断处理结束
BIS #GIE+CPUOFF, 0(SP) ; 设置SR为活动模式,AM
RETI; 中断返回,系统进入活动模式
……
主程序执行到LPM0处停止执行,L1,L2等语句不执行。之后中断事件保存PC(L1指令地址)和SR(低功耗模式0),中断唤醒CPU,执行中断处理程序;由于在中断处理子程序中将SR设置为活动模式,所以中断返回后CPU处于活动状态,并从PC指向的L1指令处开始继续执行…… 。
相关文章推荐
- android蓝牙的调试(博通蓝牙工作 and 低功耗模式)
- 第三章 在事件驱动环境中工作
- android蓝牙的调试(博通蓝牙工作 and 低功耗模式)
- Spring 设计模式——观察者|事件驱动模型
- 耦合与内聚的应用 —— 事件驱动模式与解耦
- Zookeeper的事件驱动和订阅模式
- 浅谈JSF的两大两点:面向组件编程和事件驱动模式
- MSP430学习笔记-低功耗模式
- poi事件驱动模式_中文乱码问题的解决方法
- 【Java】事件驱动模型和观察者模式
- [.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
- 事件驱动架构(EDA)和观察者模式
- Java观察者模式与事件驱动模式实例比较
- Linux中切换网卡工作模式及查看HBA卡驱动型号
- 事件驱动模型和观察者模式
- 事件驱动和状态机模式在YARN中的使用
- 简述Java中,GUI的事件驱动模式
- android蓝牙的调试(博通蓝牙工作 and 低功耗模式)
- future相比于其他并发设计模式的优势(“回调驱动(多线程环境下)”、“消息/事件驱动(Actor模型中))
- [转]MSP430单片机低功耗控制与系统工作模式详解