第7章-定时部件剖析.ppt_第1页
第7章-定时部件剖析.ppt_第2页
第7章-定时部件剖析.ppt_第3页
第7章-定时部件剖析.ppt_第4页
第7章-定时部件剖析.ppt_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

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

文档简介

1,第七章定时部件,7定时部件,定时器或计数器的逻辑电路本质上是相同的,它们之间的区别主要在用途上。定时器的计数信号是由内部的、周期性的时钟信号承担,以便产生具有固定时间间隔的脉冲信号,实现定时的功能。计数器的计数信号是由非周期性的信号承担,通常是外部事件产生的脉冲信号,以便对外部事件发生的次数进行计数。,定时器和计数器都是主要由带有保存当前值的寄存器和当前寄存器值加1或减1逻辑组成。,7.2看门狗定时器,S3C2440芯片看门狗定时器的作用:当系统程序出现功能错乱,引起系统程序死循环时,能中断该系统程序的不正常运行,恢复系统程序的正常运行。嵌入式系统由于运行环境的复杂,既所处环境中有较强的干扰信号,或者系统底层程序本身的不完善,因而,不能排除系统程序不会出现死循环现象。,在农村,几乎每家每户都养狗,其主要是防止主人不在家的时候家里出现异常事故,比如被盗等。,同样,计算机中也有看门狗,其作用是复位嵌入式系统在无人值守的时候出现异常导致“死机”现象。,人们为什么要养狗?,计算机为什么需要看门狗?,为什么需要看门狗,狗,看门狗,来源于生活,对象不同,看门狗的作用,电源供电,单片机,正行运行,运行出错,看门狗复位,看门狗使单片机从运行错误状态恢复到正常运行状态。,看门狗(WatchDog)是计算机引入的一种专门的复位监控电路。一旦MCU运行出现故障,就强制对MCU进行硬件复位,确保MCU可靠和安全运行。,看门狗的应用场合,DVR视频监控系统,看门狗,嵌入式仪表,智能电饭煲,智能电冰箱,网络服务器,看门狗的工作原理,看门狗工作原理示意图,MCU完成一次喂狗操作,在看门狗“饥饿”前等待下次喂狗,程序异常,喂狗超时,复位单片机,看门狗的工作流程,1,2,3,FD,1,喂狗周期小于看门狗等待时间,看门狗不动作,程序出现异常超过喂狗时间,看门狗输出复位信号,功能n执行耗时,喂狗耗时,CPU复位后进入正常工作状态,功能1,功能2,功能3,喂狗,喂狗超时,复位MCU,微处理器程序流程,看门狗工作流程,看门狗的种类及用法,看门狗的种类有两种,他们的使用方法也不同。,看门狗,喂狗接口,通过此喂狗接口实现喂狗操作,操作方式,操作方式,看门狗的正确用法,一般情况下,看门狗主要是针对在实际应用环境中出现强烈干扰而导致程序跑飞的意外情况。,正行运行,运行出错,看门狗复位,看门狗使用误区,有部分工程师,尤其是入门级水平的开发者,误将看门狗的使用作为解决程序本身存在bug导致程序跑飞的问题。,正行运行,运行出错,看门狗复位,程序本身存在bug,不要在定时器程序中周期喂狗!否则芯片将无法从死循环中恢复!,看门狗周期设置,看门狗定时器的周期值应大于功能模块的最长运行时间程序员应该在功能模块的前后均执行喂狗操作。,假设一个功能模块的运行时间为120ms,看门狗定时器的周期值为100ms,在功能模块运行100ms内插入喂狗指令,温馨提示,历史的经验和教训,我们不能指望看门狗解决所有的问题,有时即使在软件中加了看门狗程序,软件仍然会死机。这原因是多方面的,比如程序因为某些异常状况而触发死循环,而该死循环中没有喂狗程序。因此,想要保住系统的稳定性,必须增强程序的健壮性,提高软硬件的抗干扰能力。,1.什么是看门狗?2.看门狗喂狗的描述?3.watchdog存在的意义是什么?4.s3c2440寄存器的三个寄存器编程操作及作用?5.看门狗工作原理描述?,watchdog本质上是一种定时器,那么普通定时器所拥有的特征它也应该具备,是的,当它记时超时时也会引起事件的发生,只是这个事件除了可以是系统中断外,它也可以是一个系统重起信号(ResetSignal),可以这么说吧,能发送系统重起信号的定时器我们就叫它watchdog.,watchdog,中文名称叫做“看门狗”,全称watchdogtimer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时(TimerOut)则引起一个中断,例如触发一个系统时钟中断。,1.什么是看门狗?,2.看门狗喂狗工作描述,当一个硬件系统开启了watchdog功能,那么运行在这个硬件系统之上的软件必须在规定的时间间隔内向watchdog发送一个信号.这个行为简称为喂狗(feeddog),以免watchdog记时超时引发系统重起。,3watchdog存在的意义是什么?你可能会问watchdog存在的意义是什么?开启了watchdog之后软件必须定时向它发信息,这不是麻烦又耗费资源的行为吗?其实这个行为很重要,这个行为是软件向硬件报告自身运行状态的一中手法。一个软件运行良好,那么它应该可以在规定的时间间隔内向watchdog发送信息.若软件由于某个不当的操作而进入死循环(也就是俗称的死机),则他无法向watchdog发送信息了,watchdog将发生记时超时,从而引起硬件重起。,4s3c2410watchdog的操作,4.s3c2440寄存器的三个寄存器编程操作及作用WTCON:watchdog控制寄存器WTDAT:watchdog数据寄存器WTCNT:watchdog记数寄存器,5.看门狗工作原理描述.在开启watchdog之前,我们必需在寄存器WTDAT里面存有一个值,在watchdog开启之后这个值会被自动加载进寄存器WTCNT中,WTCNT的作用将在下面进行讲解,现在你只需要知道WTDAT必须有一个值,这个值将被自动装进WTCNT中。,.Watchdog根据PCLK,PrescalerValue,ClockSelect会产生一个watchdog自己的工作周期,我们把这个工作周期记为t_watchdog(注2),watchdog在一个t_watchdog周期结束时会产生一个记数递减信号,每当这个信号产生时,WTCNT中的值便减1,若在WTCNT递减为0(TimerOut)的时候软件层还没有重新往WTCNT中写入数值(这个行为便是我上文提到的喂狗),则watchdog触发ResetSignal,系统重起。,根据上述的描述,我们可以更形象地描述watchdog的工作原理和3个寄存器之间的相互关系:WTCNT通过WTDAT得到一个值,watchdog在每个t_watchdog周期里向WTCNT发送一个递减信号,当WTCNT的值递减到0的时候则发生timeout,重而重起系统。,S3C2440芯片的看门狗定时器有2种工作模式:带中断请求信号的常规时隙定时器。产生内部复位信号的定时器,即当定时器中的计数器值变为0时,产生一个宽度为128个PCLK(系统时钟周期)的复位脉冲信号。看门狗定时器逻辑功能框图如下:,S3C2440芯片的看门狗定时器逻辑中含有3个控制其操作的专用寄存器:看门狗控制寄存器(WTCON)计数常数寄存器(WTDAT)看门狗计数器寄存器(WTCNT),(1)看门狗控制寄存器(WTCON)用来控制看门狗定时器是否允许工作。其内容是可读/写的,(2)计数常数寄存器(WTDAT)计数常数寄存器用来存储看门狗定时器的溢出时间间隔值,既从定时器的计数器开始工作,到计数器值变为0的时间间隔。计数常数通过下面公式计算求得:计数常数=所需时间间隔/计数时钟周期=所需时间间隔(PCLK/(预分频器值+1)/分割因子),(3)看门狗计数器寄存器(WTCNT),看门狗计数器寄存器正常情况下用作减1计数器,它对计数时钟信号进行减1计数,既每来一个计数时钟脉冲,计数器内的值减1。WTCNT寄存器在看门狗定时器工作时存储当前计数值。,示例7-1,若一个采用S3C2440芯片为核心开发的嵌入式系统需要看门狗功能,监测系统程序的周期不大于40us,PCLK=50MHz。那么,我们需要使用下面一段程序来完成初始化看门狗:ldrr0,=WTDAT;WTDAT寄存器对应的地址赋给R0ldrr1,=0 x7d;计数器初始值strr1,r0ldrr0,=WTCON;WTCON寄存器对应的地址赋给R0ldrr1,=0 x0021;使能看门狗及其复位功能,分割器值设为16strr1,r0,7.3RTC部件,实时时钟部件RTC是用于提供年、月、日、时、分、秒、星期等实时时间信息的定时部件。它通常在系统电源关闭后,由后备电池供电。RTC部件的主要特点有:年、月、日、时、分、秒、星期等信息采用BCD码表示。闰年发生器。具有报警功能,能提供报警中断或者系统在节电模式下的唤醒。拥有独立的电源引脚(RTCVDD)。支持RTOS内核时间片所需的毫秒计时中断。进位复位功能。,RTC的时间片计时器用于产生一个中断请求,TICNT寄存器有一个中断使能位,和计数器中的值一起用来控制中断。当计数器的值变为0时,引起时间片计时中断。中断信号的周期用下列公司计算:周期=(n+1)/128s上式中,n代表时间片计数器中的值,范围是1127。RTC的时间片计时器可以用来产生实时操作系统内核所需的时间片。,RTC部件内部有许多用于控制其操作的寄存器。通过编程对这些寄存器进行设定,用户就可以控制RTC部件的工作。(1)RTC控制寄存器(RTCCON)【0 x57000040】,(2)时间片计数器(TICNT),时间片计数器中的值计算公式:n周期128s1n值的范围是:1127,除了上述的寄存器,还有年、月、日等数值寄存器,其格式请参考教材。,应用示例,RTC部件的主要功能是产生实时时间,提供年、月、日、时、分、秒等信息。在使用RTC部件之前,需要对其进行初始化。并完成对RTC内部寄存器读取/写入操作。具体的应用程序代码示例请参考教材的7.3.3节。,7.4Timer部件,Timer部件主要是用于提供定时功能、脉宽调制(PWM)功能的部件,它的应用比较灵活,对于需要一定频率的脉冲信号、一定时间间隔的定时信号的应用场合,它都能提供应用支持。S3C2440芯片内部拥有5个16位的Timer部件:Timer0,Timer1,Timer2,Timer3具有脉宽调制(PWM)功能。Timer4仅作定时器用,不具有PWM功能。,Timer部件内部功能框图:,定时器结构图,2、工作原理(1)定时器工作过程装入初值、启动计数,计数结束产生中断请求,并且可以重装初值连续计数。如下图所示。,(2)初值自动重装、手动装载和双缓冲初值自动重装功能:5个定时器都具有此功能。当计数器中值减到0后,若设置了自动重装功能,则在下一计数周期开始前将初值装入计数器重新计数。初值手动装载功能:在启动计数前,必须使用手动装载功能将初值装入计数器,而初值自动重装仅是一次计数结束后重新装入初值。双缓冲功能:如果定时器正在工作,此时写入新的数据到TCNTBn、或者到TCMPBn,该写入的数据不影响本次定时器的操作。当定时器到达0后下一次运行定时器时,新写入的TCNTBn、或者TCMPBn才生效。,(3)PWM输出寄存器TCMPB的作用:当计数器TCNT中的值减到与TCMPB的值相同时,TOUT的输出值取反。改变TCMPB的值,便改变了输出方波的占空比。TOUT的输出可以设置为反相输出,如下图所示。,(4)死区产生器死区的概念:是一小段时间间隔,在这个时间间隔内,禁止两个开关同时处于开启状态。死区是在功率设备控制中常采用的一种技术,防止两个开关同时打开起反作用。S3C2410的timer0具有死区发生器功能,可用于控制大功率设备。,死区发生器开启前后输出波形对比,3、计数时钟和输出计算1)定时器输入时钟频率fTclk(即计数时钟频率):fTclk=fpclk(Prescaler+1)分频值式中:Prescaler,预分频值,0-255;分频值为1/2、1/4、1/8、1/16。2)PWM输出时钟频率:PWM输出时钟频率=fTclkTCNTBn3)PWM输出信号占空比(即高电平持续时间所占信号周期的比例):PWM输出信号占空比=TCMPBnTCNTBn,定时器专用寄存器共有6种、17个寄存器,TCNTBn-Timern计数初值寄存器(计数缓冲寄存器),16位TCMPBn-Timern比较寄存器(比较缓冲寄存器),16位TCNTOn-Timern计数读出寄存器,16位,Deadzonelength-死区宽度设置位其值N为:0255,以timer0的定时时间为单位死区宽度为:(N+1)timer0的定时时间Prescaler1-timer2、3、4的预分频值其值N为:0255输出频率为:PCLK(N+1)Prescaler0-timer0、1的预分频值其值N为:0255输出频率为:PCLK(N+1),1、TCFG0-预分频器配置寄存器,2、TCFG1-DMA模式与分频选择寄存器,DMAmode-DMA通道选择设置位0000:不使用DMA方式,所有通道都用中断方式0001:选择timer00010:选择timer10011:选择timer20100:选择timer30101:选择timer4011X:保留MUX4MUX0-timer4timer0分频值选择0000:1/20001:1/40010:1/80011:1/1601XX:选择外部TCLK0、1(对timer0、1是选TCLK0,对timer4、3、2是选TCLK1),第14讲到此,TL4TL0-计数初值自动重装控制位0:单次计数1:计数器值减到0时,自动重新装入初值连续计数。TUP4TUP0-计数初值手动装载控制位。0:不操作1:立即将TCNTBn中的计数初值装载到计数寄存器TCNTn中。说明:如果没有执行手动装载初值,则计数器启动时无初值。,3、TCON-定时器控制寄存器,TR4TR0-TIMER4TIMER0运行控制位0:停止1:启动对应的TIMERTO3TO0-TIMER4TIMER0输出控制位0:正相输出1:反相输出DZE-TIMER0死区操作控制位0:禁止死区操作1:使能死区操作,3、TCON-定时器控制寄存器(续),四、定时器的使用1、定时器初始化方法(1)写TCFG0,设置计数时钟的预分频值和Timer0死区宽度;(2)写TCFG1,选择各个定时器的分频值和DMA、中断服务;(3)对TCNTBn和TCMPBn分别写入计数初值和比较初值;(4)写TCON,设置计数初值自动重装、手动装载初值、设置反相输出;(5)再写TCON,清除手动装载初值位、设置正相输出、启动计数。2、定时器停止运行方法写TCON,禁止计数初值自动重装。(一般不使用运行控制位停止运行),3、定时器操作例子(1)按照前面初始化定时器;设置TCNTBn=160(50+110),TCMPBn=110;手动装入初值后,又重设TCNTBn=80,TCMPBn=40;(2)启动定时器,按第一个初值计

温馨提示

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

评论

0/150

提交评论