文件名称:退出空闲和休眠模式-windows internals part 2(6th) 无水印pdf
文件大小:9.91MB
文件格式:PDF
更新时间:2024-06-27 11:57:43
PIC18F46k80 中文资料
4.6 退出空闲和休眠模式 由中断、复位或 WDT 超时触发从休眠模式或任何空闲 模式的退出。本节将讨论从功耗管理模式退出的触发方 式。在每种功耗管理模式章节中我们已经讨论过其时钟 源子系统的操作(见第 4.2 节 “ 运行模式 ”、第 4.3 节 “ 休眠模式 ” 和第 4.4 节 “ 空闲模式 ”)。 4.6.1 通过中断退出 任何可用的中断源都可导致器件从空闲模式或休眠模式 退出回到运行模式。要使能此功能,必须通过将对应 INTCONx 或 PIEx 寄存器中的中断允许位置 1 来允许中 断源。当相应的中断标志位置 1 时,触发退出操作。 在通过中断从空闲或休眠模式退出时,如果GIE/GIEH位 (INTCON<7>)置 1,程序将跳转到中断向量处执行代 码。否则,代码将继续执行,不进行跳转(见第 10.0 节 “ 中断 ”)。 4.6.2 通过 WDT 超时退出 根据 WDT 超时发生时器件所处的不同功耗管理模式会 引发不同的操作。 如果器件不在执行代码(所有空闲模式和休眠模式),超 时将导致从功耗管理模式退出(见第 4.2 节 “ 运行模式 ”和第 4.3 节 “休眠模式 ”)。如果器件正在执行代码(所 有运行模式),超时将导致 WDT 复位(见第 28.2 节 “ 看门狗定时器(WDT) ”)。 执行 SLEEP 或 CLRWDT 指令、当前选定的时钟源失效 (如果使能了故障保护监视器)以及修改 OSCCON 寄 存器中的 IRCF 位 (如果内部振荡器模块为器件时钟 源),均将清零 WDT 定时器和后分频器。 4.6.3 通过复位退出 通常,器件通过振荡器起振定时器(OST)保持在复位 状态,直到主时钟就绪。主时钟就绪后,OSTS 位置 1, 器件开始执行代码。如果内部振荡器模块是新时钟源, 则 HFIOFS/MFIOFS 位将置 1。 从复位状态退出到开始执行代码期间的延迟时间由唤醒 前后的时钟源以及振荡器的类型(如果新时钟源为主时 钟)决定。表 4-4 中总结了退出延时。 可以在主时钟就绪之前开始执行代码。如果使能了双速 启动(见第 28.4 节 “ 双速启动 ”)或故障保护时钟监视 器(见第 28.5 节 “ 故障保护时钟监视器 ”),器件可以 在复位源被清除之后立即开始执行代码。由内部振荡器 模块驱动的 INTOSC 多路开关作为代码执行的时钟源。 执行代码时,由内部振荡器模块提供时钟源直到主时钟 就绪,或者在主时钟就绪前进入功耗管理模式,随后将 关闭主时钟。 4.6.4 在没有振荡器起振延时的情况下退出 从某些功耗管理模式退出完全不需要 OST 延时。有以 下两种情形: • 处于主时钟源不停止的 PRI_IDLE 模式时 • 主时钟源不是 LP、XT、HS 或 HSPLL 中的任意一 种模式时 在这些情况下,主时钟源不需要振荡器起振延时,因为 它已经在运行(PRI_IDLE),或者它本来就不需要振荡 器起振延时(RC、EC 和 INTIO 振荡器模式)。但是, 当器件退出休眠和空闲模式时,在唤醒事件之后仍然需 要一个固定的 TCSD 时间间隔的延时,以便让 CPU 准备 好执行代码。在延时后的第一个时钟周期重新开始执行 指令。DS39977C_CN 第 78 页 初稿 2011 Microchip Technology Inc.