第9章看门狗定时器和节能模式
目录
本章包括下列主题:
9.1简介................................................................................................................................9-2
9.2节能模式.........................................................................................................................9-2
9.3看门狗定时器.................................................................................................................9-6
9.4设计技巧.........................................................................................................................9-9
9.5相关应用笔记...............................................................................................................9-10
9.6版本历史.......................................................................................................................9-11
9
看门狗定时器(WDT)和节能模式
dsPIC33F系列参考手册
9.1简介
本章介绍dsPIC33F器件中实现的看门狗定时器(Watchdog Timer,WDT)和节能模式。
dsPIC33F系列提供了许多内置功能,允许用户应用程序在性能和低功耗之间选择最佳的平衡。
当发生软件故障时,WDT会复位器件。它还可用于将器件从休眠或空闲模式唤醒。
9.2节能模式
dsPIC33F器件中实现的节能特性包括:
?系统时钟管理
?基于指令的节能模式(休眠和空闲)
?基于硬件的打盹模式
?外设模块禁止
9.2.1系统时钟管理
降低系统时钟频率可以节能,所节省的功耗大致与所降低的频率成比例。dsPIC33F器件提供运
行中时钟切换功能,允许用户应用程序通过动态更改系统时钟频率来最优化功耗。详细信息,请
参见第7章“振荡器”(DS70186)。
9.2.2基于指令的节能模式
dsPIC33F器件具有两种基于指令的节能模式。可以通过执行特殊的PWRSAV指令进入这两种模
式。在执行PWRSAV指令时产生的中断,都将延迟到器件完全进入休眠或空闲模式后才起作用。
如果中断是唤醒事件,它将唤醒器件并执行。
?休眠模式:在休眠模式下,CPU、系统时钟源和依靠系统时钟源工作的外设都被禁止。这是器件的最低功耗模式。
当器件进入休眠模式时,复位控制寄存器中的SLEEP状态标志位(RCON<4>)置1。
?空闲模式:在空闲模式下,CPU被禁止,但系统时钟源仍继续工作。外设继续工作,但可选择将其禁止。
当器件进入空闲模式时,复位控制寄存器中的IDLE状态标志位(RCON<3>)置1。
当上电复位或欠压复位时,SLEEP和IDLE状态位被清零。这两个位也可用软件清零。详细信
息,请参见第8章“复位”(DS70192)。
PWRSAV指令的汇编语法如例9-1所示。
例9-1:PWRSAV汇编语法
PWRSAV#SLEEP_MODE; Put the device into SLEEP mode
PWRSAV#IDLE_MODE; Put the device into IDLE mode
注1:SLEEP_MODE和IDLE_MODE是在所选器件的汇编头文件中定义的常量。
2:休眠模式不改变I/O引脚的状态。
第9章 看门狗定时器和节能模式
看门狗定时器
(WDT )和节能模式
9
9.2.2.1
休眠模式
休眠模式是电流消耗最低的状态。休眠模式具有以下特征:
?主振荡器和内部FRC 振荡器被禁止。
?如果振荡器控制寄存器中的辅助振荡器使能位LPOSCEN (OSCCON<1>)被置1,则辅助振荡器继续运行。详细信息,请参见第7章“振荡器”(DS70186) 。
?如果使能了看门狗定时器,则WDT 和时钟源LPRC 振荡器继续运行。详细信息,请参见第9.3节“看门狗定时器”。
?如果复位控制寄存器中的稳压器待机使能位VREGS (RCON<8>)被清零,则内部稳压器进入待机状态。稳压器在待机状态下消耗的电流量降低。?依靠系统时钟工作的外设被禁止。
?由于系统时钟源被禁止,故障保护时钟监视器(Fail-Safe Clock Monitor ,FSCM )在休眠模式下不工作。为在休眠模式下使电流消耗最小,请执行以下步骤:?确保I/O 引脚不驱动阻性负载。
?确保配置为输入的I/O 引脚不悬空。?禁止辅助振荡器。?禁止看门狗定时器。
?
使稳压器在休眠模式下进入待机状态。
当器件退出休眠模式时,它依靠由振荡器控制寄存器中的当前时钟源选择位COSC<2:0>(OSCCON<14:12>)所指示的当前时钟源来重新启动。
9.2.2.1.1从休眠模式唤醒的延时
图9-1给出了从休眠模式唤醒的延时。该延时由稳压器延时和振荡器延时组成。
?稳压器延时:这是稳压器从待机状态转换为工作状态的延时。仅当使能稳压器待机模式时,才需要该延时。
?振荡器延时:表9-1给出了各种时钟源从起振到时钟就绪之前的延时。更多信息,请参见第7章“振荡器”(DS70186)。
图9-1:
从休眠模式唤醒的延时注
1:T VREG = 稳压器从待机到工作模式的转换时间(标称值为130 μs )
。2:T OSCD = 振荡器起振延时(FRC 标称值 = 1.1 μs ;LPRC 标称值 = 70 μs )。3:T OST = 振荡器起振定时器延时(1024个振荡器时钟周期)。4:如果PLL 使能,T LOCK = PLL 锁定时间(标称值为1 ms )。
器件状态
休眠
器件唤醒延时
唤醒请求振荡器时钟
T OSCD
T OST
T LOCK
T VREG
dsPIC33F 系列参考手册
表9-1:
振荡器延时
9.2.2.2
空闲模式
空闲模式具有以下特征:
?
CPU 停止执行指令。
?系统时钟源保持工作状态。
?默认情况下,外设模块继续依靠系统时钟源正常工作。
?
可选择通过外设的空闲模式停止(SIDL )控制位(通常位于大多数外设模块控制寄存器的bit 13)来关闭外设。通用的位域名称格式为XXXSIDL (其中“XXX ”是外设的助记符名称)。详细信息,请参见各外设相对应的章节。
当器件退出空闲模式时,CPU 在8个系统时钟周期内开始执行指令。
9.2.2.3从休眠和空闲模式唤醒
当发生以下事件时,器件退出休眠和空闲模式:
?发生被允许的中断事件?WDT 超时
?由于任何复位源(上电复位、欠压复位和MCLR )导致的复位发生
9.2.2.3.1产生中断时唤醒
允许的中断事件将器件从休眠或空闲模式唤醒,然后会发生以下事件:
?如果为中断分配的优先级小于或等于当前的CPU 优先级,则器件将被唤醒并从启动休眠模式的PWRSAV 指令的下一条指令继续执行代码。
?如果为中断源分配的优先级大于当前的CPU 优先级,则器件将被唤醒并开始执行CPU 异常处理。将从中断服务程序(Interrupt Service Routine ,ISR )的第一条指令开始执行代码。
振荡器源
振荡器起振延时
振荡器起振定时器
PLL 锁定时间
总延时
FRC 、FRCDIV16和FRCDIVN T OSCD ——T OSCD
FRCPLL T OSCD —T LOCK T OSCD + T LOCK XT T OSCD T OST —T OSCD + T OST HS T OSCD T OST —T OSCD + T OST EC ————
XTPLL T OSCD T OST T LOCK T OSCD + T OST + T LOCK HSPLL T OSCD T OST T LOCK T OSCD + T OST + T LOCK ECPLL ——T LOCK T LOCK
SOSC T OSCD T OST —T OSCD + T OST LPRC T OSCD
—
—
T OSCD
注
1:T OSCD :振荡器起振延时(FRC 起振延时最大值为1.1 μs ;LPRC 起振延时最大值为70 μs )。
晶振起振时间随晶体特性和负载电容等变化。2:T OST = 振荡器起振定时器延时(1024个振荡器时钟周期)
。例如,对于10 MHz 晶振,T OST = 102.4 μs ;对于32 kHz 晶振,T OST = 32 ms 。3:如果PLL 使能,T LOCK = PLL 锁定时间(标称值为1 ms )。
第9章看门狗定时器和节能模式
9.2.2.3.2看门狗定时器超时唤醒
如果看门狗定时器使能,它将在休眠或空闲模式下继续运行。当WDT超时发生时,将唤醒器件
并从执行PWRSAV指令处继续执行代码。
复位控制寄存器中的看门狗超时标志位WDTO(RCON<4>)置1,表明唤醒事件是由WDT超
时引起的。
9.2.2.3.3复位时唤醒
发生任何复位源(上电复位、欠压复位和MCLR)复位时,会使器件退出休眠或空闲模式并从复
位向量处开始执行。
9.2.3打盹模式
降低功耗的首选策略是更改时钟速度以及调用空闲或休眠模式。然而,这种策略在有些情况下不
可行。必须考虑以下影响:
?对系统时钟速度进行操作会改变通信外设的波特率,并且可能引起通信错误。
?使用基于指令的节能模式(空闲/休眠)会完全停止处理器执行。
打盹模式提供了另一种降低功耗的方法。在打盹模式下,外设以系统时钟频率工作,而CPU的
时钟速度则降低了。
通过将时钟分频比寄存器中的打盹使能位DOZEN(CLKDIV<11>)置1来使能打盹模式。外设
与CPU的时钟速度之比是由时钟分频比寄存器中的打盹模式时钟分频比位DOZE<2:0>(CLKDIV<14:12>)决定的。有八种可能的配置,从1:1到1:128,其中1:1是默认设置。
当时钟分频比寄存器中的中断恢复位ROI(CLKDIV<15>)置1时,在产生中断时CPU自动返
回到全速工作模式。默认情况下,中断事件对打盹模式工作没有影响。
9.2.4外设模块禁止
dsPIC33F器件中的所有外设模块(I/O端口除外)都有一个控制位,可选择性禁止以降低功耗。
这些位被称为外设模块禁止(Peripheral Module Disable,PMD)位,通常命名为“XXXPMD”
(其中“XXX”是模块名称的助记符)。这些位位于PMDx特殊功能寄存器中。必须将PMD位
置1(= 1)以禁止模块。PMD位完全关闭外设,实际上会使所有电路断电并断开所有时钟源。
默认情况下,所有外设都被使能。关于PMD寄存器的详细信息,请参见具体器件数据手册。
9
看门狗定时器(WDT)和节能模式
dsPIC33F 系列参考手册
9.3
看门狗定时器
看门狗定时器的主要功能是在发生软件故障时复位器件。它还可用于将器件从休眠或空闲模式唤醒。
看门狗定时器由可编程的预分频器和后分频器组成,由低功耗RC (Low-Power RC ,LPRC )振荡器提供时钟。通过配置预分频器和后分频器的分频比来选择看门狗超时周期。图9-2给出了看门狗定时器的框图。
图9-2:
看门狗定时器框图
9.3.1看门狗定时器(WDT )操作
当使能看门狗定时器时,它将进行递增计数直到溢出或超时。WDT 超时会强制器件复位,在休眠或空闲模式下除外。要防止WDT 超时复位,软件必须使用CLRWDT 指令周期性地清零看门狗定时器。
执行PWRSAV 指令后,当器件进入休眠或空闲模式时,WDT 也被清零。如果在休眠或空闲模式下发生WDT 超时,则器件将被唤醒并从执行PWRSAV 指令处继续执行代码。
在任一种情况下,复位控制寄存器中的看门狗超时标志位WDTO (RCON<4>)都会被置1,表明器件复位或唤醒事件是由WDT 超时引起的。
9.3.1.1使能和禁止WDT
通过WDT 配置寄存器中的看门狗使能位FWDTEN (FWDT<7>)来使能或禁止WDT 。当FWDTEN 位置1时,WDT 始终被使能。这是已擦除器件的默认值。
如果FWDT 寄存器中的WDT 位被禁止,则用户应用程序可选择通过将复位控制寄存器中的软件看门狗使能位SWDTEN (RCON<5>)置1来使能WDT 。
SWDTEN 控制位在任何器件复位时清零。软件看门狗定时器使能位允许用户应用程序在关键代码段使能WDT 并在非关键代码段禁止WDT ,从而最大限度地降低功耗。注1:预分频比(N1)请参见表9-2,后分频比(N2)请参见表9-3。
所有器件复位
切换到新的时钟源退出休眠或空闲模式PWRSAV 指令CLRWDT 指令
1
WDTPRE
WDTPOST<3:0>
看门狗定时器
预分频器(N1分频)
后分频器(N2分频)
休眠/空闲
WDT WDT 窗口选择
WINDIS WDT CLRWDT 指令
SWDTEN FWDTEN
LPRC 时钟
RS
RS
唤醒
复位
注:
WDT 配置(FWDT )寄存器的值在器件编程期间写入。关于WDT 配置寄存器的详细信息,请参见第25章“器件配置” (DS70194) 。
第9章 看门狗定时器和节能模式
看门狗定时器(WDT )和节能模式
9
9.3.1.2
看门狗定时器窗口
看门狗定时器有一种可选的窗口模式,可通过编程WDT 配置寄存器中的WINDIS 位(FWDT<6>)来使能该模式。在窗口模式(WINDIS=0)下,应在看门狗超时周期的最后四分之一(25%)周期内清零WDT ,如图9-3所示。如果看门狗定时器在允许的窗口之前被清零,将立即发生系统复位。
窗口模式对于在代码关键部分意外的快速或慢速执行期间复位器件非常有用。图9-3:
窗口WDT
9.3.2看门狗超时周期选择
通过编程预分频器和后分频器的分频比来选择看门狗超时周期。
通过WDT 配置寄存器中的预分频比选择位WDTPRE (FWDT<4>)来选择预分频比。分频比可变的后分频器对WDT 预分频器的输出进行分频,以获得范围较宽的超时周期。通过WDT 配置寄存器中的后分频比选择位WDTPOST<3:0>(FWDT<3:0>)来选择后分频比,提供16种后分频比设置(1:1至1:32,768)。计算WDT 的超时值如公式9-1所示。公式9-1:
WDT 超时周期
其中:
N1 = 预分频器分频比(见表9-2)N2 = 后分频器分频比(见表9-3)T LPRC = LPRC 时钟周期看门狗超时周期(T WTO )
允许窗口(0.25 x T WTO )
不允许窗口
T WTO N 1()N 2()T LPRC ()
××=注:
WDT 超时周期与LPRC 振荡器频率(标称值为32 kHz )直接相关。在不同温度和
电压下LPRC 频率的精度,请参见相应的dsPIC33F 器件数据手册。
dsPIC33F 系列参考手册
表9-2:
WDT 预分频器分频比设置
表9-3:
WDT 后分频器分频比设置
9.3.3
看门狗定时器复位
看门狗定时器在以下情况下被复位:
?任何器件复位时
?当执行PWRSAV 指令时(即,进入休眠或空闲模式)?当用软件使能WDT 时?完成时钟切换时
?
在正常执行期间或当WINDIS 为0时在WDT 超时周期的最后25%周期内执行CLRWDT 指令
9.3.4休眠和空闲模式下看门狗定时器的操作
如果看门狗定时器使能,它将在休眠或空闲模式下继续运行。当WDT 超时发生时,将唤醒器件并从执行PWRSAV 指令处继续执行代码。
看门狗定时器对于低功耗系统设计非常有用,因为它可在需要时周期性地将器件从休眠模式唤醒来检查系统状态并进行相应操作。在这方面SWDTEN 位非常有用。如果在正常工作期间WDT 被禁止(FWDTEN=0),则可使用SWDTEN 位(RCON<5>)在即将进入休眠模式之前开启WDT 。
预分频比设置(WDTPRE<0>)
预分频器分频比(N1)
032 1
128
后分频比设置(WDTPOST<3:0>)
后分频器分频比(N2)
0000 1 000120010400118010016011132011064100012810012561010512101110241100204811014096110181921110163841111
32768
第9章看门狗定时器和节能模式
9.4设计技巧
问1:尽管我在软件主循环中插入了一条CLRWDT指令,但器件还是复位了。
答1:确保包含CLRWDT指令的软件循环符合WDT的最小值规范(非典型值)。而且,
确保考虑了中断处理时间。
问2:软件在进入休眠或空闲模式之前应该做什么?
答2:确保将要用于唤醒器件的中断源的中断允许位置1。此外,确保特定的中断源可
以唤醒器件。当器件处于休眠模式时,某些中断源不工作。
如果要将器件置为空闲模式,确保每个外设的空闲模式停止控制位设置正确。这
些控制位确定外设在空闲模式下是否继续工作。更多详细信息,请参见本手册各
外设的相应章节。
问3:如何判断是哪个外设将器件从休眠或空闲模式唤醒?
答3:可以查询每个允许的中断源的中断标志位来确定唤醒源。
9
看门狗定时器(WDT)和节能模式
dsPIC33F系列参考手册
9.5相关应用笔记
本节列出了与手册本章内容相关的应用笔记。这些应用笔记可能并不是专为dsPIC33F产品系列
而编写的,但其概念是相近的,通过适当修改并受到一定限制即可使用。当前与看门狗定时器和
节能模式相关的应用笔记包括:
标题应用笔记编号
Low Power Design using PICmicro? Microcontrollers AN606注:如需获取更多dsPIC33F系列器件的应用笔记和代码示例,请访问Microchip网站
(https://www.doczj.com/doc/b15572461.html,)。
第9章看门狗定时器和节能模式
9.6版本历史
版本A
这是本文档的初始版本。
9
看门狗定时器(WDT)和节能模式
dsPIC33F系列参考手册
注: