1、第7章 复位、中断、监控与节电,7.1.1复位的作用、效果和复位源,1.复位的作用:复位使微控制器迅速进入一个已知的初始化状态, 并且从用户定义的存储器地址开始执行程序。2.复位的效果:()迅速停止当前正在执行的指令。()初始化有关寄存器的控制和状态位。()多数微控制器从存储器的初始单元0000H 开始执行程序,MHC系列则是将存放在复位向量($FFFE $FFFF) 中的用户自己定义的程序开始地址送到程序计数器PC 中, 以便微控制器复位后跳转到执行程序的入口。()开启系统的总线时钟。,7.1 复位,3.复位源,1)外部复位: 外部电路在复位引脚上输入幅度和时间长度足够有效的高电平或低电平来
2、实现。 2)内部复位() 上电复位。() 看门狗复位。() 低电压极限复位。此外, 还有一些微控制器设置了:() 正常程序复位。例如, PLPC 中的软件复位和UART 间隔检测复位。() 非正常程序复位。例如, M HC 中的非法操作码(illegal opcode , ILOP) 复位和非法地址(illegal address , ILAD) 复位。,7.1.3 M68HC08 的复位功能,1. 复位源,内部复位时序,(1)上电复位(poweron reset , POR),种内部复位,(2)看门狗(COP) 复位。当系统受到外界干扰而陷入死循环不能正常运行程序时, 看门狗模块将产生MCU
3、 内部复位。(3)低电压极限(lowvoltage inhibit , LVI) 复位。这是由于电源电压降低到最低极限点时产生的内部复位。它产生的复位效果与前述上电复位的效果几乎相同, 唯一的差别是在复位状态寄存器中设置LVI位为 。,(4) 非法操作码(illegal opcode , ILOP) 复位。这是由于执行不在指令集中的非法操作码引起的内部复位。如果系统已经设置了不允许执行STOP 指令, 那么执行该指令也会引起非法操作码复位。(5) 非法地址(illegal address , ILAD) 复位。这是由于读取操作码时访问到不在寻址范围内的非法地址引起的内部复位。然而当存放数据时,
4、 访问非法地址却不会产生复位。,2.复位状态寄存器,SIM 复位状态寄存器(SIM reset status register ,SRSR) 地址值为$FE01,保存 个复位源的复位状态, 每一个复位源对应位,另有 位不使用而默认为。系统一旦产生复位, 引起该次复位的复位源标志位就会置为.,.2 中断,微控制器的实时处理功能是依靠中断来实现的, 因而一般都具有强大的中断功能, 配合可编程中断控制器及其级联还可以进一步增加中断源。 微控制器通常是按顺序执行指令的, 但在许多场合下,CPU 必须首先响应优先权最高的中断。此外, 在某个中断服务中也可能会出现优先权更高的中断请求, 结果形成中断嵌套,
5、 迫使MCU 从一个新的程序指针处开始后续的操作。,.2.1 微控制器的中断源、中断功能和中断过程,1.中断源(1)外部中断源包括: 与微控制器交换数据的外部设备, 包括键盘。 实时控制系统的被控对象。 系统和被控对象的外部故障。(2)内部中断源包括: 定时器计数器溢出时自动产生中断请求。 串行口发送接收的不同情况, 发出中断请求。 ADC 转换结束。 MCU 内部的工作错误等故障源也将引起中断, 如除数为零引起的中断等。(3)程序中断源:根据程序需要, 可以通过执行中断指令使CPU 完成中断服务。,2.中断系统功能,() 中断的可屏蔽和不可屏蔽。 可屏蔽中断。 通过预先设定的开中断指令或关中
6、断指令, 可以决定CPU 是否响应这种中断请求。 不可屏蔽中断。 这种中断请求一旦提出, CPU 就必须响应。() 中断请求的优先级排队。() 中断嵌套。() 中断响应的实时性。 为了及时检测到随机发生的中断请求,MCU 通常在每条指令的最后对中断请求进行一次检测,也就是说,中断源产生中断请求至MCU 检测到的时间一般不会超过一条指令。,中断嵌套过程,3.中断执行过程,()关闭中断允许, 防止其他中断请求干扰本次中断响应; 把原执行程序的断点地址(在程序计数器PC 中) 压入堆栈保存, 保护原工作现场。()调查中断源。()按中断源提供的(或预先约定的) 中断矢量地址转入, 执行相应中断服务程序
7、。()在中断服务开始时撤除本次中断请求, 以免造成对同一次请求的重复响应; 也避免遗漏下一次中断请求。()若容许插入更高优先级的中断, 在中断服务程序开始时安排中断允许指令, 否则在恢复现场时安排。,中断执行过程(续),()在中断服务程序末尾, 恢复现场, 执行中断返回指令, 从堆栈取出保存的断点地址, 返回后继续执行中断前的原程序。()如果用户程序对于中断响应和处理时间有严格要求, 则应考虑保护现场的指令安排引起的延时。()进行查表。,7.2.2P89LPC936的中断系统,P89LPC936 采用中断优先级结构,这为其15个中断源的处理提供了灵活性。任何一个中断源均可通过对寄存器IEN和I
8、EN中相应的位置位或清,实现单独使能或禁能。IEN 中还包含了一个全局使能位EA,它可使能所有的中断。 P89LPC936有个外部中断输入(与标准80C51相同),还有键盘中断功能。,P89LPC936中断汇总,1.中断优先级结构,每个中断源都可被单独设置为个中断优先级之一,分别通过清或置位IP、IPH 、IP、IPH 中相应位来实现。,2.电平触发和边沿触发,通过清或置位TCON 寄存器中的IT或IT,可将外部中断设为电平触发或边沿触发。如果ITn,外部中断n 由INTn脚的低电平触发;ITn,外部中断n由INTn脚的下降沿触发。 由于外部中断脚每个机器周期采样一次,输入高或低电平应当保持至
9、少个机器周期以确保能被正确采样。 如果外部中断为边沿触发,外部中断源应当将中断脚至少保持个机器周期高电平然后至少保持个机器周期低电平。 如果外部中断为电平触发,外部中断源必须一直保持请求有效, 直到产生所请求的中断为止。 如果P89LPC936处于掉电或空闲状态时, 外部中断被设置为电平触发并使能, 中断可以唤醒处理器使其恢复运行。,3.外部中断管脚干扰抑制,除管脚SDAINTP 和SCLT/P外,P89LPC936的大多数管脚都有干扰抑制电路,可以滤除窄脉冲的干扰。也就是说, INT有干扰抑制电路,而INT没有干扰抑制电路。,中断源、中断使能和掉电唤醒中断源,MHC 系列具备 种中断源的设计
10、能力, MC HCGP 等微控制器具有 种中断源, 包括外部中断、软件中断(软件中断指令SWI)和内部功能中断等。,7.2.3MC68HC908GP32 的中断系统,1.中断的处理过程与效果,2.中断源,中断源(续),(1)外部中断源,外部中断状态和控制寄存器,() 软件中断。 MHC 的软件中断源是一条SWI 指令, 执行该指令即会发生不可屏蔽中断, 因而使用这条指令即可方便地在调试的程序中设置断点。() 内部功能中断。 SPI 与SCI 串行通信类中断出现了多个中断源共享一个中断寄存器标志和中断向量地址的情况, 也就是说, 在相应中断源的前端再增加一级开关, 使之拥有 级开关。,3.中断状
11、态寄存器, 个字节的中断状态寄存器用于标记是哪一个中断源发出了中断请求, 其结构如表所示, 其中“” 表示保留位。,4.断点模块,断点模块在微控制器系统开发中非常有用。通过断点功能,可以让被调试的程序分段运行,便于检测与分析程序的执行结果,及时排除错误修改指令,大大提高了开发效率。,断点状态的寄存器,.2.4 PIC16F877的中断系统,PIC 系列微控制器具有种中断源,不同型号中断源的种类和个数不同。但局限于中断矢量只有一个,并且各个中断源之间也没有优先级别之分, 不具备非屏蔽中断。如果同时发生多个中断请求,处理的顺序完全取决于在中断服务子程序中检查中断源的顺序;开放的中断源个数越多,响应
12、中断的可能延时就越长。,1.中断源,2. PIC16F877的中断硬件逻辑,3.相关寄存器,相关寄存器(续),4. 中断的处理,复位后,GIE,屏蔽所有的中断源;中断返回指令“RETFIE”执行后,也由硬件自动设置GIE,重新开放所有的中断源。 CPU响应中断后,GIE,然后由硬件自动把当前的程序计数器PC 值(即程序断点地址)压入硬件堆栈,并且把中断向量地址(0004H)置入PC 寄存器。 进入中断服务子程序后,程序检查同时开放的各个中断源标志位, 找到发出请求的中断源。用软件把该中断源的标志位人为地清。 中断服务子程序的末尾必须放置一条中断返回指令“RETFIE” ,执行该条指令后,不仅可
13、以重开中断,而且还可以由硬件自动将保留在堆栈顶部的断点地址弹出,并放回到程序计数器PC 中,使CPU 返回和继续执行被中断的主程序。,中断的延时响应和延时处理,4. 中断的其它问题,()微控制器初次上电复位(power on reset)、电源跌落(brownout reset)复位和其他复位, 均会导致总屏蔽位GIE 和其他所有中断屏蔽位都被清。也就是默认状态下,禁止CPU 响应所有中断。() 中断嵌套。可以形成多级嵌套,甚至自身嵌套。但嵌套的级数超过硬件堆栈的深度( 级)会造成堆栈溢出而不能正常返回。() 为了利用某一中断源上产生的中断事件来唤醒经过执行SLEEP 指令而进入睡眠状态的CP
14、U ,相应的中断屏蔽位必须预先被置,但是与总屏蔽位GIE状态无关。() 为了保护现场, 读写状态寄存器STATUS 时, 使用BCF 、BSF 、SWAPF 及MOVWF 等对于Z 、DC 和C 没有影响的指令较为合适; 以免因为对这几个状态位的写无效而引起指令的执行结果与预期的不一致。,4. 中断的其它问题,()不同型号的PIC 系列微控制器,数据存储器RAM 的布局和程序存储器ROM 的页数不完全相同,为工作寄存器W 安排备份寄存器W TEMP的方法和对待PCL 寄存器的处理方法也不完全相同。()当CPU 正在执行一条对INTCON寄存器进行“读-修改-写”操作的指令时(如BSFINTCO
15、N 等),如果恰好发生了中断请求,则中断服务程序可能会被执行两次。,. 键盘模块与键盘中断,7.3.1 键盘与键盘中断(KBI)原理1.键盘工作原理,2. 键盘模块,键盘模块具有以下特点:() 使用的IO 线都具有各自的中断输入功能, 只是共用一个键盘中断屏蔽位。() 内含迟滞特性缓冲器, 有利于消除开关抖动等干扰现象。() 可方便地编程为边沿触发或者电平触发方式。() 具有从低功耗模式下唤醒的功能。() 通过软件可配置成通用的IO 位线, 此时相应的位线接通内部上拉电阻。,微控制器增加的键盘中断(KBI) 功能, 能在连至特定脚的键盘上任一键被按下时, 产生一个中断。由于人的感官对时间的分辨
16、率低以及键开关闭合的机械延迟, 该中断可以实现用键盘将CPU 从空闲(IDLE) 模式或低功耗模式中唤醒, 既不占用内部定时器, 又不占用外部中断, 可以使系统体积更小、成本和功耗更低, 特别适于既要省电又要使用方便的电池供电便携式系统。,3. 键盘中断,7.3.2 LPC900的键盘中断功能,键盘中断功能用于总线地址识别或对键盘的识别,当P口等于或不等于特定的模式时将产生一个中断。用户可通过SFR 将端口配置为不同的用途。用于键盘中断功能的特殊功能寄存器有 个:()键盘中断屏蔽寄存器(KBMASK)用于定义连接到P口的使能触发中断的输入管脚。()键盘模式寄存器(KBPATN)用于定义与P口值
17、相比较的模式。() 键盘中断控制寄存器(KBCON) 中: 键盘中断标志(KBIF) 当键盘中断功能有效且条件匹配时置 ;如果通过置位IEN寄存器的EKBI 位和EA 位将中断使能,则会产生一个中断。 匹配定义位(PATN SEL)用于比较时定义等于或不等于。,7.3.3 M68HC08的键盘中断功能,1. M68HC08的键盘模块寄存器,M68HC08的键盘模块的内部结构,2.中断请求的清除,() 向量预取或软件清除。 中断向量预取:中断向量是一个地址信息, 该地址操作数的预取将产生一个中断应答信号并清除中断请求。软件清除:对键盘状态与控制寄存器中的ACKK 位写可产生中断应答信号,登记键盘
18、引脚中断,并且清除中断请求。() 使所有引起中断的引脚都返回到高电平。 键盘中断允许寄存器中置 的位所对应的引脚都返回到高电平后将清除键盘中断请求。,3.矩阵键盘接口,MC HCGP 键盘模块可以构成最多 的矩阵键盘见图-(b) , 此时PTA PTA 用作输入, 并配置内部上拉电阻, 使之平常保持在高电平状态; PTA PTA 用作输出, 都输出低电平。当某一按键按下时, 按键连通相应的IO 输出线和输入线, 此时会在相应的输入线上出现下降沿和低电平。若输入线允许键盘中断, 则可以在键盘中断服务程序中通过软件扫描获取相应的按键值以及进行键盘编码等工作。,. 监视定时器WDT,监视定时器( w
19、atchdog timer , WDT) 可在程序脱出正常运行时,给出复位信号,使系统重新启动。微控制器的WDT 模块实质上是一个独立运行的计数器,该计数器产生溢出时就会使系统位。WDT 也可以用独立于CPU 的硬件电路构成,例如,计数器型单稳部件或CSIC 、MAX 等器件。也可以用软件定时程序和高优先级的中断构成软件WDT , 但可靠性较差。,.1 监视定时器原理,7.4.2 LPC900的WDT,1 WDT模块,WDCON 和UCFG寄存器控制着WDT 的开关、WDT的时钟源、预分频值和溢出时是否使能WDT 让器件复位。,1 WDT模块,看门狗定时器使能位WDTE( UCFG)置,使能W
20、DT 溢出时对器件的复位。复位后,不管WDTE 位是何种状态,WDT 将继续运行。 看门狗安全使能位WDSE( UCFG)和WDTE 一起,可在上电时使看门狗强制进入某种工作状态。,看门狗模式中的看门狗定时器(WDTE ),2 看门狗清0序列,清序列就是顺序执行两条指令:将AH送入WFEED寄存器,将AH送入WFEED寄存器。在这两条写指令之间允许读出SFR,但不允许写操作。 为了防止清序列执行过程中,因为中断服务有对SFR 的写操作而触发看门狗复位,可以在清序列前禁止中断(EA清),在清序列后再使能中断(EA置)。,3 看门狗时钟源,看门狗定时器包含一个片内400kHz的振荡器。通过配置看门
21、狗控制寄存器WDCON 的WDCLK 位,来选择看门狗振荡器或PCLK 作为看门狗的时钟源。,4 定时器模式中的看门狗定时器,5 掉电操作,掉电模式下,如果选择振WDT 荡器作为时钟源,WDT将继续运行,消耗大约A 电流。如果选择PCLK 作为时钟源,WDT 振荡器将和其他器件一同进入掉电状态,并产生复位。掉电模式也将使PCLK 停止运行,导致看门狗被定时器模式中的看门狗定时器(WDTE)禁止。 不使用外部振荡器的掉电周期唤醒 在不使用外部振荡器的条件下, 周期唤醒所需功耗取决于用来产生唤醒信号的内部振荡器的功耗。内部RC 振荡器可用作实时时钟的时钟源,它消耗的电流大约为A 。如果用WDT 代
22、替RC 振荡器来产生中断,消耗的电流可降至A 。WDT 溢出时可将器件唤醒。,7.4.3 M68HC08的WDT,1. 看门狗工作模块,配置寄存器,2. 看门狗在各种模式下的操作,() 监控模式。一般情况下, 监控模式无须看门狗功能。() 断点状态。一般情况下, 断点状态下开放看门狗功能反而会带来麻烦。当RST 引脚上存在VTS T 电压时, 断点中断服务中禁止看门狗功能。() WAIT 模式。在WAIT 低功耗模式下, 看门狗仍然是激活的, 为了防止看门狗产生复位,必须在相应的程序中周期性地清除看门狗计数器。() STOP 模式。在STOP 低功耗模式下, 振荡器停止工作, 看门狗无输入时钟
23、, 自然也停止操作。,7.4.4 PIC16F87X的WDT, WDT 模块PICFX 的WDT 是一个拥有独立的片内RC 时钟信号源的、计时周期约为ms 的、自由运行的计时器, 实际上看门狗就是一个用独立时钟源提供的脉冲进行累加计数的计数器, 无须任何外部元件。 WDT 相关寄存器, 使用WDT 的注意事项,()看门狗清 “喂狗” 指令CLRWDT 和睡眠指令SLEEP , 不仅可以清看门狗计时器, 还可以把已经配置给WDT 使用的分频器同时清,但是分频器的分频比以及配置关系不会被改变。()如果分频器配置给看门狗使用,分频比一旦设定好之后, 选项寄存器OPTION REG 的内容就应该保持恒
24、定,以保证看门狗WDT 的超时溢出周期也随之确定。因此,在噪声工作环境之下,每隔一段时间就把选项寄存器OPTION REG 刷新一遍, 可以防止其内容因为干扰而被意外改变。,. 电源监控与节电模式,电源监控包括上电检测和掉电检测, 目的是防止在运行期间电压上升、断电及电压下降时的错误操作。,.5.1 LPC900的电源监控与节电模式,PLPC 通过两个硬件功能: 上电检测及掉电检测( brownout detect)防止初始上电时的错误操作和运行时出现掉电或电压下降的情况。,电源监控(掉电检测),() 空闲模式 外围功能继续工作,允许其在产生中断时激活处理器。任何一个使能的中断或复位均可结束空
25、闲模式。() 掉电模式 掉电模式将振荡器停振以使功耗最小。在掉电模式中, 某些功能继续工作并消耗功率, 这样就增加了掉电时的整体功耗。这些功能包括: 掉电检测、看门狗定时器、比较器(比较器可单独实现掉电) 、实时时钟系统定时器(及其作为系统时钟使用的RC 振荡器电路) 。() 完全掉电模式 为减少功耗,掉电检测电路和电压比较器都被关闭, 系统时钟一般使用外部低频时钟而不用内部RC 振荡器。,2 节电模式,2 节电模式,表7-17(续),2 节电模式,2 节电模式,7.5.2 M68HC08的节电模式,MHC 提供两种低功耗模式 WAIT 模式和STOP 模式, 分别对应微控制器的指令WAIT
26、和STOP 。RUN模式:15mA5V,16.4MHz 5.2mA3V,16.4MHzWAIT模式: 4mA5V,16.4MHz 1.65mA3V,16.4MHzSTOP模式: 2uA5V 1uA3V,M68HC08的节电模式功耗比较,7.5.2 M68HC08的节电模式,MHC 提供两种低功耗模式 WAIT 模式和STOP 模式, 分别对应微控制器的指令WAIT 和STOP 。,1.STOP 模式,2.WAIT 模式,3.唤醒微控制器的事件,4.低功耗下各模块的工作状态,7.5.3 PIC16F87X的节电模式,执行SLEEP 指令后,微控制器进入睡眠模式。为了进一步减少功耗,在进入睡眠模式
27、之前,应该:() 把所有IO端口设置为VDD 高电平或VSS低电平,并且不能让外部电路从IO端口汲取电流或灌入电流。() 对于高阻输入的IO 引脚,应该在外部上拉成高电平或下拉成低电平,以免悬空状态下的杂散信号侵入引起开关电流。() 将定时器计数器TMR的外部信号输入端TOCKI脚接VDD 或者VSS引脚;启用端口RB 的内部上拉功能,关闭外部相关电路的工作时钟;禁止模数转换器ADC 模块的工作。,1.睡眠状态的进入,() 唤醒方式。可以把微控制器从睡眠状态唤醒的方式或事件有: 在外部人工复位输入端MCLR施加一个有效的低电平复位信号。 监视定时器WDT 产生的超时溢出信号。 利用睡眠状态之下
28、仍然可用的各种外设模块的中断请求信号。() 与唤醒相关的寄存器。与微控制器睡眠和唤醒功能有关的寄存器有状态寄存器STATUS 中, 相关的位是: 降耗标志位PD (STATUS ) 看门狗超时标志位TO (STATUS ),2.睡眠状态的唤醒,(3) 唤醒操作时序。,2.睡眠状态的唤醒,习题与思考题,. 如何分析与判断当前产生复位的原因?. 响应中断的条件是什么? 简述在多个中断源同时提出中断请求时的处理过程。. 怎样在中断服务程序开始时撤除本次中断请求? 为什么需要这么做? 无论何种中断触发方式都是这样吗?. 微控制器的中断源较多对提高系统的哪些性能有利?. 何谓外部中断状态与控制寄存器? 该寄存器各位的功能是什么?. 何谓中断状态寄存器? 它的作用是什么?. 何谓中断向量地址表? 举例说明它的使用方法。. 断点在何时起何作用?. 叙述看门狗复位的工作原理以及在程序运行时发挥的重要作用。. 实际应用中如何进入与退出低功耗模式?,