PIC单片机第10章.ppt_第1页
PIC单片机第10章.ppt_第2页
PIC单片机第10章.ppt_第3页
PIC单片机第10章.ppt_第4页
PIC单片机第10章.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/4/14,大连理工大学电工电子实验中心 陈育斌,1,第10章 PIC单片机的可靠运行和降耗设计,本章重点围绕着PIC16F87X系列单片机在嵌入式系统的实际应用中,如何确保安全生产、安全运行、增加适应性、提高可靠性和降低功耗等方面的问题进行分析。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,2,本章主要介绍的内容有: 系统配置字:定义单片机部分硬件功能; 时钟系统 :维持内部由数字电路组成电路的正常工作; 复位系统 :保证单片机进入正常工作状态及恢复正常工 作秩序; 监视定时器:将陷入死机状态的单片机强行拉回到正常的 工作状态中来; 睡眠与唤醒技术:控制单片机进入低功耗的睡眠状态以及 从睡眠状态返回到正常工作状态的方法。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,3,10.1 系统配置字以及特殊存储单元,在PIC系列单片机中,大都设置了6个特殊的程序存储单元,由用户自由定义和支配单片机内部部分硬件电路,完成一些特殊功能的定义 “硬件功能软件化” 。 对于PIC16F87X系列单片机而言,这6个特殊的程序存储单元地址为2000H2003H、2006H和2007H单元。这些单元已经超出了13位PC(0000H1FFFH) 8M的寻址范围,所以用户是无法直接使用指令访问。 这些特殊的存储单元的内容只能在单片机进行程序烧写和效验时,借助烧写器(编程器)进行写入和读出。对于flash结构的程序存储器,这些单元可以反复多次擦写。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,4,图10.1 PIC系列单片机程序存储器总体布局图,2K 4K 8K,0000H03FFH0400H07FFH0800H 0FFFH1000H 1FFFH 2000H2007H 2008H 3FFFH,2000H 2001H 2002H 2003H 2004H 2005H 2006H 2007H,图例说明,返回上一次,用户程序区,2019/4/14,大连理工大学电工电子实验中心 陈育斌,5,10.1.1 系统配置字(configuration word),在程序存储器的2007H单元。 用来为单片机的用户自由配置或定义其内部一些功能电路单元性能的选项。 单片机生产厂家将一部分“硬件功能软件化”的设计手法,使单片机的开发具有更大的灵活性和更宽的选择性。 【注】系统配置字各位具体说明是以2000年发布的最新版本 : In Circuit Serial Programming为准。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,6,CP1、CP0:用于flash程序存储器中的代码保护;,图 10.2 系统配置字单元,bit13,bit0,保护时:高10位代码被屏蔽,读出值为“0”。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,7,RESV:正常操作时为1。 WRT:用于flash存储器烧写的使能位。 WRT=1,没有设置保护的存储部分可以通过软件、调用 EECON寄存器控制烧写; WRT=0,没有设置保护的存储部分不能通过软件、使用 EECON寄存器控制烧写。,bit13,bit0,bit9,bit11,2019/4/14,大连理工大学电工电子实验中心 陈育斌,8,CPD :用于EEPROM数据存储器中的数据保护; CPD=1:数据保护功能放弃; CPD=0:EEPOR中的数据被保护。,bit13,bit0,bit8,2019/4/14,大连理工大学电工电子实验中心 陈育斌,9,LVP :用于低电压编程使能控制。 LVP=1:RB3/PGM引脚具有PGM功能,允许低压编程; LVP=0:RB3为普通的I/O引脚,烧写编程高压必须通过 /MCLR引脚进行。,bit13,bit0,bit7,2019/4/14,大连理工大学电工电子实验中心 陈育斌,10,BODEN :用于电源电压跌落BOR(掉电)复位使能位。 BODEN=1:BOR功能被使能; BODEN=0:BOR功能被禁止。,bit13,bit0,bit6,2019/4/14,大连理工大学电工电子实验中心 陈育斌,11,/PWRTE:用于上电延时定时器RWRT的启动。 /PWRTE=1:PWRT功能被禁止; /PWRTE=0:PWRT功能被启动。,bit13,bit0,bit3,2019/4/14,大连理工大学电工电子实验中心 陈育斌,12,WDTE:用于看门狗定时器WDT使能控制。 WDTE=1:WDT被启动; WDTE=0:WDT被禁止。,bit13,bit0,bit2,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,13,F0SC0、F0SC1:用于系统时钟振荡器模式选择。 F0SC0、F0SC1=11:RC阻容震荡方式(使用RC元件); =10:HS高频震荡方式(4MHz以上); =01:XT标准震荡方式(200K4MHz); =00:LP低频震荡方式(200KHz以下)。,bit13,bit0,bit1,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,14,10.1.2 用户识别码ID 用户使用的代码 ( identification code),在单片机内部有一个16位的特殊的存储区域,让用户编写4位16进制码,以作为计算机的识别码ID。该码无论什么内容都不会影响到单片机的正常运行,仅仅是起一个识别的作用。用户可以利用此码对程序(芯片)编号,以便对芯片进行查询、识别和管理。 该区域实际上是4个14位的存储单元(2000H2003H),但按厂家建议仅仅使用每个单元中的低4位,所以是16位。 通常,在烧写程序时,其软件系统在缺省状态时,自动的将程序代码的效验码作为用户识别码ID。,结构图,2019/4/14,大连理工大学电工电子实验中心 陈育斌,15,10.1.3 器件识别码 芯片厂家使用的代码,在PIC16F87X系列单片机中,其芯片中增设了一个特殊的存储单元2006H,其内容在出厂前就已经固化好了。是用来识别单片机的具体型号,这样即使芯片上的型号磨损后仍可以被厂家识别。,返回本章目录,结构图,2019/4/14,大连理工大学电工电子实验中心 陈育斌,16,10.2 时钟系统,PIC系列单片机设计了4种类型的震荡方式; 而不同的震荡频率所对应的电路结构、参数各不相同。为了保证震荡电路与震荡频率处于最佳的匹配状态,可以同过参数的配置得以实现; 标准的晶体振荡器/陶瓷谐振器方式XT; 高频的晶体振荡器/陶瓷谐振器方式HS(4MHz以上); 低频的晶体振荡器/陶瓷谐振器方式LP(32.768KHz); 外接电阻、电容元件的阻容震荡方式RC。 4种不同的方式各有其特点,用户可根据具体情况选择。用户在使用编程器烧写程序代码时,连同系统配置字的F0SC0、F0SC1一起固化到芯片中。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,17,10.2.1 外接晶体/陶瓷震荡器(LP/XT/HS),由G1、电阻RF构成放大器,并与XTAL和电容构成三点式自激多谐振荡器。 G1是受控三态门,当执行SLEEP指令时G1呈现出高阻状态,迫使内部大多电路停止工作,已达到降低功耗的目的。 RS是在HS、XT方式下才使用的电阻,其值为100RS1K。 G2、G3为隔离缓冲电路。,G1,G2,RF,RS,XTAL,C2,C1,到内部电路,执行SLEEP指令,到内部电路,PIC16,G3,OSC1,OSC2,2019/4/14,大连理工大学电工电子实验中心 陈育斌,18,表10.4 外接陶瓷振荡器时C1、C2建议值,【注】电容值越大越有利于振荡器的工作稳定,但会加 大振荡器延时启动时间,2019/4/14,大连理工大学电工电子实验中心 陈育斌,19,表10.5 外接晶体振荡器时C1、C2建议值,【注】电容值越大越有利于振荡器的工作稳定,但会加大振荡器延时启动时间,2019/4/14,大连理工大学电工电子实验中心 陈育斌,20,10.2.2 外接阻容器件(RC),RC方式的最大优点是成本低廉(几分钱的成本); 缺点: 稳定性差(由于电阻、电容的稳定性差,且标称值有很大的离散性),其频率会随着温度、电压的变化而变化; 并且对于同样的参数,不同的芯片其震荡频率也不同。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,21,工作原理: 上电瞬间电容器C上的电压为0V,所以触发器G1输出=0V。这样,场效应管截止。此时电源对电容C充电; 随着时间的延续,电容器C上的电压逐渐升高,当Vc超过触发器的门限值后,G1翻转为高电平。G1输出的高电平有使场效应管导通并饱和,使管子的源极与漏极之间导通,使电容器上的电荷迅速放掉,这样触发器重新截止并导致场效应管再次截止。,R,C,Vdd,内部时钟,RC 建议值: 3k Rext 100k Cext 20pF,G1,2019/4/14,大连理工大学电工电子实验中心 陈育斌,22,R,C,Vdd,内部时钟,G1,Vdd,Vc,VG1,触发器的翻转阀值电压,2019/4/14,大连理工大学电工电子实验中心 陈育斌,23,表10.6 外接RC时的Rext和Cext建议值,2019/4/14,大连理工大学电工电子实验中心 陈育斌,24,10.2.3 引入外来时钟源(LP/XT/HS),当单片机系统配置字将时钟设定为LP/XT/HS方式时,可以使用外部引入的时钟信号,此时信号从OSC1脚输入,OSC2脚开路即可。,OSC1 (CLKIN) PIC16 OSC2,开路,来自外部时钟,2019/4/14,大连理工大学电工电子实验中心 陈育斌,25,+5V,4.7K,10K,10K,20pF,20pF,10K,PIC16 OSC1,到其它芯片,外接并联谐振电路,XTAL,2019/4/14,大连理工大学电工电子实验中心 陈育斌,26,外接串联谐振电路,330K,330K,0.1F,PIC16 OSC1,到其它芯片,XTAL,返回本章目录,2019/4/14,大连理工大学电工电子实验中心 陈育斌,27,小 结,根据实际需要,综合考虑PIC时钟系统的类型。 如:需要准确定时地场合下,要选用晶体震荡方式(XT、HS或LP);在低成本设计中可采用RC模式等。 选择的频率将影响单片机的功耗:频率越高,单片机所消耗的电流就越大;频率越低功耗越小。 RC振荡模式具有成本低的优点,适用于无准确定时要求的场合。 单片机振荡器模式的设定是运行“MPLAB-ICD” 烧写程序时,通过对“配置位Configuration Bit”中的“震荡模式Oscillator” 来确定。,返回,2019/4/14,大连理工大学电工电子实验中心 陈育斌,28,10.3 复位系统,复位(RESET)的英文原意是“重新设置”的意思。在单片机内部,对应一个最明显的操作:PC=0000H; 各种类型的微处理器都需要有复位电路,以确保从头开始执行程序或者重新从头开始执行程序。 复位操作是单片机的重要操作内容,它保证单片机在运行时,有一个确定的、良好的开端。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,29,10.3.1 几种不同的复位方式,PIC单片机的复位电路设计的比较完善。引起单片机内部复位的条件和原因大致可归纳为5种情况: 上电复位(/POR); 人工复位(/MCLR); 人工复位(睡眠状态下); 看门狗复位(/TO); 电源欠压(掉电)复位(/BOR)。 引起复位的方式不同,复位后,对内部特殊功能寄存器的影响也各不相同,这是编程者需要注意的问题。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,30,(一)上电复位,每次单片机上电时,上电复位电路都要对电源电压进行Vdd的上升进行检测,当Vdd上升到1.61.8V时,就会产生一个有效的复位信号。 复位后PC=0000H。 整个复位过程为: 72mS+1024个时钟周期,Vdd系统电源 电源检测POR 上电延时器PWRT 输出 振荡器定时器OST输出 内部复位 单片机状态,72mS,1024Tosc,复位时间,开始工作,开始上电,返回上一次,上电,1.6-1.8V,2019/4/14,大连理工大学电工电子实验中心 陈育斌,31,注意:不是所有的单片机都具备上电复位功能,对于不具备上电复位电路的单片机,在构造系统时必须外加“上电复位电路”(如MCS-51系列单片机)。也可以选择、使用具有上电复位功能的“微处理器监控电路”实现上述功能,但复位的电平极性要严格对应,否则系统将无法正常工作。,单片机 /RST,Vdd,单片机 RST,Vdd,具有高电平复位功能的上电复位电路,具有低电平复位功能的上电复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,32,(二)人工复位,无论单片机处在何种状态,只要在人工复位引脚 /MCLR上加入低电平,就会使单片机复位(令PC=0000H); 当/MCLR回到高电平时,单片机恢复工作,并从程序存储器的0000H处运行程序(因为PC=0000H)。,返回上一次,PIC /MCLR,复位,工作,Vdd,/MCLR,2019/4/14,大连理工大学电工电子实验中心 陈育斌,33,(三)人工复位(单片机在睡眠期间),使单片机脱离低功耗的睡眠状态的方法之一; 单片机处于睡眠状态时,时钟系统和大多数电路都停止工作。只要在人工复位引脚 /MCLR上加入低电平,就会令单片机复位。 睡眠状态下的人工复位:PC=0000H; /MCLR低电平撤出后,系统重新开始工作(从0000H开始)。,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,34,(四)看门狗复位,如果单片机启用了看门狗 WDT电路,只要没有对WDT周期性的清零(CLRWDT 喂狗指令),WDT就会出现超时溢出,这个溢出信号就会引发单片机的复位。 单片机的工作状态分为“工作状态”和“睡眠状态”。其复位的结果是不同的: 若单片机处在运行程序的“工作状态”时,看门狗电路 的溢出将单片机复位(程序拉回到0000H开始执行); 若单片机处在低功耗的“睡眠状态”时,看门狗电路 的溢出只能将单片机从SLEEP状态下唤醒,开始执行 SLEEP后面的程序(一般为NOP指令)。,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,35,(五)电源欠压(掉电)复位,供电电压过低(如3.84.2V 也称危险电压区)时,尽管可能RAM寄存器中的数据不会丢失,但可能造成CPU 读程序的出错!这往往比“死机”所产生的后果更严重。,72mS,72mS,72mS,Vdd 内部复位,Vdd 内部复位,Vdd 内部复位,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,36,表10.11 PIC16F877复位或唤醒后部分SFR的内容,【 注 】u:无影响 x:未知 q:该值取决于条件 - :未使用,读出时为0,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,37,10.3.2 单片机内部的复位操作处理,由于引发复位的方式不同,所以复位操作对单片机的影响也不同。 1. 无论何种方式,对单片机均会产生下列影响: 时基振荡器处于起振准备状态; 各个端口方向寄存器固定设定位“1”,高阻输入状态; 程序计数器PC清零,CPU指向程序存储器的0000H单元; 选项寄存器OPTION_REG被置为全“1”; 看门狗WDT和预分频器全部清零; 状态寄存器STATUS的体选位(高3位)清零; 当采用RC振荡方式时,OSC2被置为低电平输出。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,38,除了上述的操作外,复位后有一些特殊功能寄存器的内容会因复位方式而不同。 状态寄存器STATUS(03H)中的/TO和/PD; 电源控制寄存器PCON(8EH)的/POR和/BOR。 PIC单片机有5种复位的操作。而/TO、/PD、/POR和/BOR这些信息可以作为程序设计人员对单片机复位原因的判断,再根据判断结果采取不同的处理。这些判断程序实际上就安排在0000H(复位矢量入口地址)开始的地方。 当然,对于一些简单的程序设计可以忽略这些复位信息:即一旦产生复位重新运行程序即可。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,39, 其它特殊功能寄存器因不同复位方式而显现的状态请参见教材295页。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,40,10.3.3 复位系统硬件逻辑,晶体 震荡 时钟,Vdd上 升沿检测,G3,G4,G2,/SLEEP(睡眠状态),BODEN(电源跌落使能),G5,使能/PWRT=1时启用,使能OST=1时启用,WDT,S 复位 锁存 R /Q,芯片复位,/MCLR,Vdd,OSC1/CLKIN,晶体 震荡 时钟,片内RC 振荡器,10位串行计数器,G7,G8,10位串行计数器,G9,电源跌落 复位,第一部分,第二部分,第三部分,返回上一次,上电72mS延时系统,起振1024个时钟延时电路,G6,2019/4/14,大连理工大学电工电子实验中心 陈育斌,41,整个电路分为三个部分: 上半部分将实现种复位信号的逻辑或运算。或门的高电平输出将R-S触发器置一(/Q=0),从而实现对系统的复位。可以产生复位信号的四种信号分别是: 人工复位; 看门狗超时溢出复位(受到状态/SLEEP的屏蔽); 电源上电复位(POR) ; 电源跌落复位也称掉电复位(受到系统配置字中的 BODEN=0的屏蔽)。,返回上一次,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,42,右边的R-S触发器构成了复位锁存器: /Q=0 对CPU复位; /Q=1 复位解除,CPU开始工作。 上半部电路的或门输出G2为高电平时,通过触发器的S端,使之置一,从/Q端输出低电平,迫使CPU以及片内各个功能电路单元进入复位状态; 只有当S端的高电平消失,且触发器的R端变为高电平时,才能使锁存器清零(/Q=1),使得CPU以及片内各个功能电路单元脱离复位状态,进入到程序运行状态;,返回上一次,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,43,3. 下半部分实现撤出复位的操作,包含两个延时定时器。 上电72mS延时电路 PWRT。 拥有独立的片内RC振荡电路,频率为:1024/72 mS。 该位还受到系统配置字/PWRT的控制,当PWRT=1时,该功能被启用,反之PWRT=0时,G8门输出为高电平,该定时器的功能被取消(参见讲义126页)。 PWRT电路还受到Vdd上电检测电路的控制,当Vdd上升沿检测电路产生下降沿信号时,PWRT电路才开始震荡。,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,44, 系统时钟振荡器起振延时定时器OST。 延时时间为1024个系统震荡周期Tosc。受到两个信号控制: 1.输出受“使能OST”的控制(并不是所有复位都可以产生OST操作的 见下页): OST=1时,或门G7输出取决于计数器输出,OST功能有效;OST=0时,或门G7输出为高电平,OST功能被屏蔽; 2.1024计数器输入由G8的输出控制,只有在G8输出为高电平时(72ms延时完成)G9门才能打开,或PWRT被屏蔽时OST延时才能开始。 该电路的作用是为了确保振荡器有足够的时间和建立稳定的震荡,以便为芯片提供精确、稳定的时基信号。,返回上一次,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,45,【注意】: 只有振荡器在XT、LP、和HS模式下,且仅在上电复位,或芯片从睡眠状态被唤醒时(因为SLEEP时,系统停振),才能启动OST工作,否则,OST是不起作用的 (如:WDT复位、掉电复位/BOR)。 由于G5门的作用,下半部电路产生高电平只有S端为低时,才能施加到触发器的R端。,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,46,10.3.4 内部上电延时复位电路POR功能,单片机上电时,复位系统首先投入工作的是Vdd上升沿检测电路。 当Vdd上升到1.6V1.8V时,就会产生很窄的正脉冲。该脉冲一方面将复位锁存器的/Q端变为低电平,迫使CPU等电路复位,同时在其下降沿启动“上电延时计数器”PWRT开始计数、定时(72mS)。延时时间一到,便启动“振荡器延时定时器”OST工作,进行1024个Tosc的延时。 即:72mS+1024Tosc 上电延时复位的延时时间长短与振荡器的震荡方式、OST是否关闭有关(详见表10.12)。,复位电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,47,10.12 上电复位延时时长表,*掉电复位:不应当包含1024Tosc -参见257页,2019/4/14,大连理工大学电工电子实验中心 陈育斌,48,10.3.5 外部上电延时复位电路,单片机内部设计的上电复位电路,可以解决单片机上电时,避免因电源建立过程中CPU执行程序的不可靠性。这主要是靠PWRT(72mS)和OST(1024Tosc)的两个延时来实现的。 如果单片机的电源系统采用较大的电源电容耦合时,可能Vdd上升较慢。当电源建立的时间大于100s时,片内上电复位功能POR和上电延时电路PWRT不能正常工作。在这种情况下,采用外部上电复位电路是一个比较可靠的方法。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,49,图10.15 外部上电延时复位电路,Vdd /MCLR PIC16F87X,Vdd,Vdd /MCLR PIC16F87X,Vdd,R,R1,C,R,R1,C,D,R的取值: 40K; R1:限流保护电阻。取值1001000; D:放电二极管。当电源掉电时,能够迅速的将电容C上的电荷释放掉,以保证电源恢复后能及时产生复位操作。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,50,由RC元件构成的复位电路工作原理,Vdd /MCLR PIC16F87X,Vdd,R,R1,C,/MCLR,=RC,等效复位信号,2019/4/14,大连理工大学电工电子实验中心 陈育斌,51,10.3.6 外部人工复位开关电路,Vdd /MCLR PIC16F87X,Vdd,R,R1,C,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,52,/MCLR,=RC,等效复位信号,按下SW,松开SW,Vdd /MCLR PIC 16F87X,Vdd,R,R1,C,上电,2019/4/14,大连理工大学电工电子实验中心 陈育斌,53,10.3.7 内部掉电锁定复位电路,单片机系统无论是采用干电池、充电电池或市电供电,都存在供电电压的波动问题。电源电压的不稳定是造成单片机执行程序发生混乱甚至死机的重要原因。 世界许多著名半导体生产厂家研制出许多“电压监测器”和“P监控器”的专用集成电路,使之与单片机配套使用。在PIC系列单片机中有许多型号内部已经集成了这项功能(BOR)电路,如PIC16F87X。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,54,晶体 震荡 时钟,G4,BODEN,G5,G6,使能/PWRT,使能OST,S 复位 锁存 R /Q,芯片复位,Vdd,OSC1/CLKIN,晶体 震荡 时钟,片内RC 振荡器,10位串行计数器,G7,G8,10位串行计数器,G9,电源跌落 复位,返回上一次,图10.19与掉电锁定复位相关的硬件电路,2019/4/14,大连理工大学电工电子实验中心 陈育斌,55,当Vdd降低到3.84.2V时,锁定复位电路将单片机进入并锁定在复位状态;当Vdd回升到正常的电压以后上电延时定时器PWRT被启动,产生72mS的延时后,将复位锁存器清零,使单片机结束复位状态进入执行程序状态,72mS,72mS,72mS,Vdd 内部复位,Vdd 内部复位,Vdd 内部复位,2019/4/14,大连理工大学电工电子实验中心 陈育斌,56,掉电复位期间,不会改变单片机中各个寄存器内的数据。这样当Vdd恢复正常后,使程序能够继续前面的过程。 当然,这一切指在电源Vdd还没有跌落到单片机内部RAM中的数据不能保存的地步,否则BOR的功能也就毫无意义。 与上电复位相比,掉电复位可以保留RAM中的前期数据,且Vdd正常后启动的时间只是72mS。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,57,10.3.8 外部掉电锁定复位电路,在许多单片机(如MCS-51和部分PIC系列)内部没有BOR电路,这样就需要外加掉电复位电路。电路可以采用分离元件或专用的BOR集成IC芯片来实现; 这里将介绍使用专用的IC芯片进行外部连接BOR电路的几个实例; 参见讲义附录G327页,2019/4/14,大连理工大学电工电子实验中心 陈育斌,58,(一)使用IMP809/810实现BOR,IMP809(或IMP810)是美国IMP公司研制生产的一组微功耗“微控制器电源监控电路”,监控电压为35V。在电源上电、掉电和跌落期间,电源恢复正常后产生240mS的上电延时。只要电源电压还大于1.1V就能保证/RESET端输出0.4V的低电平。,Vcc /RESET GND,Vcc /MCLR GND,Vcc,Vcc RESET GND,Vcc MCLR GND,Vcc,IMP809应用举例(低电平复位),IMP810应用举例(高电平复位),2019/4/14,大连理工大学电工电子实验中心 陈育斌,59,IMP809/810特性参数表,复位门限参数的选择是根据被控单片机及相关的外围电路对电源电压的要求来选择的。,IMP809 IMP810,1 GND,2 /RESETRESET,3 Vcc,芯片封装外形,2019/4/14,大连理工大学电工电子实验中心 陈育斌,60,IMP809 电源复位时序图,Vth:复位门限电压; Trs:复位时间240mS.,Vcc,Vth,Trs,Trs,IMP809的/RESET输出,2019/4/14,大连理工大学电工电子实验中心 陈育斌,61,(二)带有人工复位的专用电压检测芯片,IMP811/812也是美国IMP研制的一种带有人工复位的电源监控电路,其特性与809/810相同。,Vcc /RESET /MR GND,Vcc /MCLR GND,Vcc,人工复位按钮SW1,C,C的作用是避免噪声干扰,提高可靠性防止误操作。,返回上一次,2019/4/14,大连理工大学电工电子实验中心 陈育斌,62,IMP811/812特性参数表,复位门限参数的选择是根据被控单片机及相关的外围电路对电源电压的要求来选择的。,IMP809 IMP810,1 GND,2 /RESETRESET,4 Vcc,芯片封装外形,3 /MR,2019/4/14,大连理工大学电工电子实验中心 陈育斌,63,IMP811 电源/人工复位时序图,IMP810的/RESET输出,/MR (人工复位),Vth,Vcc,Trs,Trs,tmd,Vth:复位门限电压; Trs:复位时间140mS; tmd:/MR到/RESET的延时 0.5 s; Tmr:人工复位最小时间10s。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,64,(三)带有电源故障报警的专用芯片,MAX707/708是美国MAXIM公司研制的具有电源监控、报警功能,同时具备RESET和/RESET输出的芯片8脚芯片。 该芯片提供3种功能: 电源上电/掉电产生复位信号; 有一个门限值为1.25V的电压检测输入。当PFI输入电压小于1.25V时,PFO脚输出低电平,此信号用于电源报警; 具有防抖功能的人工复位输入。 电源门限电压分别为4.65V(MAX707)和4.4V(MAX708)。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,65,MAX707/708应用举例,Vcc /RESET PFI /PFO MAX707 /MR GND,Vcc /MCLR INT 单片机 GND,Vcc=+5V,+5V线性 稳压器,合理的设计电阻的分压比,使稳压器输入电压的最小值对应的PFI端的电压为1.25V,这样利用芯片的/PFO信号向单片机发中断申请,单片机进行相应的紧急处理。,报警门限值1.25V,+12+9V,R1,R2,C,SW1,返回本章目录,2019/4/14,大连理工大学电工电子实验中心 陈育斌,66,10.4 监视定时器WDT,单片机工作的可靠性将直接影响到整个系统的安全; 影响可靠性的因数有:软件、硬件(系统设计、系统结构、电路布局和电磁兼容性等)因素,其中系统的抗干扰性是系统可靠性的重要指标。 因干扰而“失常”的具体表现为用户程序进入不正常状态。 尽管人们千方百计的提高系统的可靠性,但是绝对可靠是很难实现的。因此,当单片机出现不正常时,及时地将单片机复位,是解决问题的唯一方法。 WDT就是一个监视CPU工作状态的“眼睛”。正常时WDT”默默无语”,只有当单片机不正常时,WDT对单片机复位,将其拉回到程序的起点上来。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,67,10.4.1 程序失控的恢复,程序失控的现象 程序失控后的回复措施 程序失控恢复之后的后续处理,2019/4/14,大连理工大学电工电子实验中心 陈育斌,68,程序失控的现象: 程序失控后,虽然仍在执行用户的程序,但会不正常的重复执行(或漏掉)一段指令。这往往与软件设计有关,如干扰对一些标志或关键的变量造成错误影响等。 程序失控后,转向程序存储器的空白区。CPU将空白区中的随机码作为指令来执行。 程序失控后的非法寻址。在正常时,PC的内容是指向正常执行顺序的指令地址。但是如果因干扰,PC的值发生不正常的“突变”,甚至内容已超过了正常程序存储器的范围,在这种情况下,CPU取低位的有效地址,形成非法寻址。,返回,2019/4/14,大连理工大学电工电子实验中心 陈育斌,69,程序失控后的回复措施: 软件陷阱法 看门狗定时器WDT法 人工复位法 软件陷阱法。 在程序的某些位置上安放一个“陷阱”,使失控的CPU掉到陷阱中,再通过引导转向程序的开始部分。很明显,这些陷阱只能安放在正常运行时,PC指不到存储单元如在转移指令后面的程序存储器的空白区等。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,70,所谓的陷阱就是无条件转移语句: 对于2K*14程序ROM芯片只要一条指令: GOTO 0000H 即可; 对于4K*14程序ROM芯片要使用两条指令: BCF PCLATH.3; GOTO 0000H 对于8K*14程序ROM芯片使用3条指令: BCF PCLATH.3; BCF PCLATH.4; GOTO 0000H 如果在程序存储区空白区较大时,安放陷阱时,可先使用NOP指令进行引导。,正常指令,空闲处加入的陷阱,2019/4/14,大连理工大学电工电子实验中心 陈育斌,71,看门狗定时器WDT法 看门狗 WDT是一个独立运行的定时器,它具有清零端和溢出端,其中溢出端直接与单片机的复位端相连接; 在用户的程序的循环体内安置 “喂狗 (CLRWDT)” 指令,这样在程序正常执行中就会定期向看门狗发清零信号; 如果程序发生“飞走”现象时,看门狗因不能及时的得到清零信号,就会产生超时溢出,将单片机强行复位; PIC16F87X系列内部已经具备WDT电路,用户可选择使用。,单片机 口线 RESET,WDT 清零 溢出,循环体,喂狗指令,初始化,上电复位,程序“飞走”,看门狗电路与单片机的外部连接及程序流程图,2019/4/14,大连理工大学电工电子实验中心 陈育斌,72, 人工复位法 人为的一种干预手段。单片机的/MCLR与一个按钮开关连接,当按下开关时强行将单片机复位,并经内部程序计数器PC的内容置为0000H,使CPU从头开始执行程序。具体电路可参照前面相关内容。,Vcc 单片机 /MCLR GND,Vcc=+5V,SW1,人工复位示意图,返回,2019/4/14,大连理工大学电工电子实验中心 陈育斌,73,程序失控恢复之后的后续处理 借助于软件“陷阱”或硬件“看门狗”虽然可以将单片机强行拉回到程序的“起点”,但是程序失控期间会造成数据、标志等信息的破坏或丢失。在某些系统来说,希望尽可能的从断点处恢复运行,因此必须妥善解决程序失控后的处理问题。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,74,回复状态的检测: 软件拉回和WDT、人工复位对单片机产生的影响是各不相同的。其中: 1. 软件陷阱的拉回不会产生复位操作; 2. WDT或人工复位都会产生复位操作; 3.WDT将系统从SLEEP唤醒时不返回0000H。 因此在程序返回后需要对“回复状态”进行检测。分别检测:陷阱拉回、看门狗复位、人工复位、上电复位、掉电复位还是睡眠状态下的人工复位等。这些信息可以通过表10.7来说明。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,75,表10.7 状态寄存器、电源控制器的复位标志(讲义249页),* 注:当单片机处于睡眠状态(/SLEEP=0)时,WDT不会产生复位,但可以将单 片机从睡眠状态中唤醒,继续SLEEP后面的指令。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,76, 回复之后的初始化处理 当单片机被复位后,CPU都会转到复位矢量(0000H)入口。但不同背景下的复位,其初始化的处理往往是不同的。例如: 上电复位 :表明系统冷启动,程序需要做完全的初始化; 看门狗或人工复位:这种复位对寄存器原来的内容都会造成 破坏,因此可以采用上电复位的处理。 软件陷阱拉回:需要保留一些过程参数时,最好不要做初始 化,而是对关键的参数进行检验或修复,如 RAM中的数据进行检测(如事先写入的55H、 AAH) ; 掉电复位:此时寄存器中的数据并没有丢失,因此不应当 对数据初始化,但对SFR的影响同上电复位。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,77,开始,初始化,主程序,复位背景分类,修复参数,上电复位,陷阱拉回,掉电复位,处理不同复位背景的程序流示意程图,2019/4/14,大连理工大学电工电子实验中心 陈育斌,78,10.4.2 WDT的工作原理,看门狗电路实际上是一个拥有独立RC振荡源的累加计数器,在不使用分频器的情况下,约18mS产生一次溢出复位操作。由于使用独立的振荡源,所以单片机无论是运行指令还是处于SLEEP(系统时钟停振)状态,都不影响WDT的工作。 单片机在执行指令时(无论是正常还是非正常的死循环)只要WDT产生溢出操作,都将使单片机复位。如果单片机处于SLEEP状态,WDT的溢出将唤醒CPU,使单片机继续执行被暂停的程序,此时状态寄存器中的/TO=0表明发生了WDT溢出时间。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,79,单片机系统是否启用WDT,取决于烧写程序时,对系统配置字中的WDTE位的一次性设定: WDTE=0,将停用WDT; WDTE=1,启用WDT。 在启用WDT时,为了避免WDT的溢出造成单片机不正常的复位,就应当不断的执行对WDT清零的操作,即执行:CLRWDT 指令。这个过程也称之为“喂狗”。 WDT的溢出周期取决于自身的RC参数,大约为18mS。如果需要加长溢出时间,可以借助于分频器来实现,具体方法是设定选项寄存器OPTION_REG中的PSA位。 PSA=1:WDT使用分频器; PSA=0:WDT不用分频器。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,80,TMR0,预分频器,WDT,内部 信号,外部 信号,T0SC ,0,0,0,0,1,1,1,1,WDT超时信号输出,设置T0IF标志位,PS2:PS0,PSA ,PSA ,PSA ,10.4.3 WDT的电路结构,2019/4/14,大连理工大学电工电子实验中心 陈育斌,81,10.4.4 WDT相关寄存器,2019/4/14,大连理工大学电工电子实验中心 陈育斌,82,(一)选项寄存器 OPTION_REG,PSA:分频器分配位。 PSA=1:分频器分配给WDT; PSA=0:分频器分配给TMR0。,PS2PS0: 分频器分频比选择位,2019/4/14,大连理工大学电工电子实验中心 陈育斌,83,(二)状态寄存器STATUS,/PD:降耗标志位。 /PD=1 单片机初始上电或执行CLRWDT指令后该位置一; /PD=0 单片机执行SLEEP指令后,该位自动清零。 /TO:超时标志位。 /TO=1 单片机初始上电或执行CLRWDT指令或执行 SLEEP 指令后,该位自动置一; /TO=0 看门狗超时溢出时,该位自动清零。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,84,(三)系统配置字,WTDE:看门狗定时器使能位。 WTDE=1时,WDT被启用; WTDE=0时,WDT被禁止。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,85,10.4.5 使用WDT的注意事项,看门狗清零。 执行CLRWDT指令和SLEEP指令时,不仅将WDT清零,而且将分频器同时清零(分频器配置给WDT时),而分频比和配置关系不变。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,86,启用WDT后,OPTION_REG的相关内容不能改变。 选项寄存器中的PSA、PS2PS0用来确定分频器的配置和分频比的。这些是用户根据程序事先计算好并固定使用的参数,这是正确使用WDT的前提。 如果在程序执行中无意的改变了寄存器中的相关内容,就会影响到WDT的超时溢出时间(如定时时间变短),这样程序正常时WDT也会不断的产生溢出复位,破坏了程序的正常运行。防止这种现象方法之一是在程序的循环体中前端刷新OPTION_REG的相关内容。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,87,WDT一旦被启用,程序本身无法修改。 WDT的启用是通过“系统配置字”中的WDTE位来确定的,在烧写程序时一次性的固化到单片机中,不可改变。 因此一旦选用WDT,就要合理计算 WDT 溢出时间,确定WDT初值和分频比。在程序的适当位置上放置CLRWDT(喂狗)指令,使程序运行时不断的清除WDT,这样才能保证程序正常的运行。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,88,10.4.6 WDT应用举例,通过一个实例,分析一下单片机内部WDT是如何工作的。 例10.1霹雳灯 将RC端口全部设定为输出模式,依次从RC0到RC7送出高电平,然后再从RC7到RC0送出高电平,并且周而复始。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,89,Vdd RC0 /MCLR PIC 16F877 OSC1 RC7 Vss,Vdd,Vdd,图10.30 演示板电路图,D0,D7,软件设计思想: 分频器归WDT使用,且分频比为1:64,即WDT的溢出周期为:64*18mS=1.152S 在主程序中加入一条“喂狗” CLRWDT指令,因为程序一次循环约195mS(即延时时间),所以在选环体内程序执行时间远远小于WDT溢出周期。 为了提高程序的抗干扰性,将设置RC端口方向的指令放在循环体内。,2019/4/14,大连理工大学电工电子实验中心 陈育斌,90,图10.32 主程序流程图,设置RC端口为输出,先点亮最右面LED,设左右移标志为1,开 始,C,C,修改移位标志,分配器归WDT 分频比1:64,左/右移超限?,设置RC端口为输出,调延时子程序,CLRWDT,移位标志=1?,循环左移,循环右移,N,N,Y,Y,初始化部分,循环体部分,2019/4/14,大连理工大学电工电子实验中心 陈育斌,91,status equ 03h portc equ 07h trisc equ 87h option_reg equ 81h flag equ 25h,程序清单,2019/4/14,大连理工大学电工电子实验中心 陈育斌,92,org 000h start nop bsf status,5 movlw 00h movwf trisc bcf status,5 movlw 01h movwf portc bsf flag,0 ;右移标志D0位置一,2019/4/14,大连理工大学电工电子实验中心 陈育斌,93,loop bsf status,5 ;程序初始化 movlw 00h movwf trisc ;RC定义为输出 movlw 0eh movwf option_reg ;预分频器给WDT、分频比1:64 bcf status,5 ; (参见206页) btfss status,0 ;如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论