嵌入式系统原理及应用第9章ARM9定时器计数课件.ppt
《嵌入式系统原理及应用第9章ARM9定时器计数课件.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统原理及应用第9章ARM9定时器计数课件.ppt(74页珍藏版)》请在三一办公上搜索。
1、1,第9章 微处理器S3C2410A的定时/计数器,定时器部件在实时控制系统中起着举足轻重的作用,它可以实现对设备的周期性控制,同时使用定时器的PWM输出功能可以实现设备功率的控制,用于恒温控制系统等。S3C2410A芯片中的定时部件有多个,不同的定时部件有不同的用途。看门狗定时器(WATCHDOG)主要用来防止处理器的死机,需要在看门狗定时器规定的时间内喂狗,就是重新给看门狗定时器赋初值,否则时间到产生溢出复位信号,使ARM系统复位而重新启动;定时器(TIMER)主要用于定时或计数,还可用于脉宽调制PWM(Pulse Width Modulation)的控制;实时时钟RTC(Real Tim
2、e Clock)主要用于为系统提供日历与实时钟信号。定时部件虽然种类较多,但它们的工作原理基本相同。本章主要介绍各自的原理与应用。,2,9.1 S3C2410A定时/计数器原理,定时器或计数器的逻辑电路是相同的,它们的主要区别在用途上。在应用时,定时器的输入信号来自于内部,是周期信号,从而通过计数实现了定时的功能;而计数器的输入信号一般来自于外部,是非周期信号,因而只能实现计数的功能。因此这样的逻辑电路被称为定时/计数器。图9-1是一般定时/计数器内部工作原理框图,它是以一个N位计数器(加1或减1)为核心,计数器的初值在编程时设置。计数器的输入脉冲分为2类:系统时钟和外部事件脉冲。微处理器S3
3、C2410A使用的是具有减法功能的定时/计数器。,3,9.2 看门狗定时器(WATCHDOG),S3C2410A中看门狗定时器的作用是,当系统程序出现功能错乱,引起系统程序出现死循环时,是系统重新启动开始工作。嵌入式系统由于使用环境的复杂,即使用环境中有较强的干扰信号,或者系统程序本身的不完善,因而不能排除系统程序不会出现死循环现象。当系统使用看门狗部件时,如果系统出现了死循环,看门狗定时器将产生一个具有一定宽度的复位信号,强迫系统复位,恢复系统的正常运行。看门狗定时器必须在小于定时的时间周期内,对其重新赋初值(俗称“喂狗”) ,使看门狗定时器不会产生复位信号,系统正常运行。当系统程序出现死循
4、环时,无法给看门狗定时器喂狗或者说不能执行喂狗函数,将会产生复位信号。,4,9.2.1 看门狗定时器的工作原理,S3C2410A看门狗定时器有2种工作模式: 带中断请求信号的常规时隙定时器。 产生内部复位信号的定时器,即当定时器的值为0时,产生一个宽度为128PCLK(系统时钟周期)的复位脉冲信号。图9-2是看门狗定时器的逻辑功能图。看门狗定时器一旦启动工作,看门狗定时器的计数常数寄存器(WTDAT)就无法自动地装载到计数寄存器(WTCNT)中。因此应该在看门狗定时器工作之前,通过初始化编程将计数常数寄存器(WTDAT)的值写入到计数寄存器(WTCNT)中。,5,9.2.2 看门狗特殊功能控制
5、寄存器,S3C2410A芯片的看门狗定时器逻辑中有3个控制其操作的特殊功能寄存器:看门狗控制寄存器(WTCON);计数常数寄存器(WTDAT)和看门狗计数寄存器(WTCNT)。它们的属性如表9-1。,6,1. 看门狗控制寄存器(WTCON),7,2. 看门狗常数寄存器(WTDAT),看门狗常数寄存器WTDAT(Watchdog Timer Data Register)用来存储看门狗定时器的溢出时间间隔常数值。看门狗计数寄存器从此值开始做减法计数,直到变为0为时间间隔。计数公式如下: 计数常数=所需时间间隔/计数时钟周期T =所需时间间隔*(PCLK /(预分频值+1)/分割因子) WTDAT是
6、可读写的,地址为0 x53000004,复位初值为0 x8000。其位功能如下表所示。,8,3. 看门狗计数寄存器(WTCNT),看门狗计数寄存器WTCNT(Watchdog Timer Counter Register)是一个实时动态变化的减法计数器,WTCNT工作时存储当前计数值。WTCNT是可读写的,地址为0 x53000008,复位后初值为0 x8000。看门狗计数寄存器的位功能描述如下表所示。,9,9.2.3 看门狗定时器应用示例1. Bootloader中的看门狗定时器编程,在系统启动引导的Bootloader程序中,由于这时ARM系统的部件初始化需要进行大量的工作,需要关闭看门狗
7、定时器,就是设置看门狗控制寄存器WTCON的b5=0(看门狗定时器使能位无效),b0=0(禁止看门狗定时器的复位功能),与其它位无关,因此控制字可为0 x00,而且必须使用汇编语言编写程序。程序代码如下: WTDOG EQU 0 x53000000 ;定义WTCON的地址 LDR R0, =WTCON ; WTCON地址送R0 LDR R1, =0 x00 ;控制字0 x00送R1 STR R1, R0 ;控制字写入R0,2. 程序正常运行时的看门狗定时器编程 看门狗可以实现ARM系统的复位,不需要外围的控制电路。要实现看门狗的功能,需要对看门狗的特殊功能寄存器进行配置操作。编程流程如下: 看
8、门狗定时器作为一般定时器使用时,需要设置看门狗的中断操作,因为这是看门狗作为一般定时器使用时的唯一用法。除包括ARM系统的各个中断寄存器的设置外,还要看门狗自身中断使能有效。如果作为ARM系统的看门狗使用,这一步不用设置。 设置看门狗控制寄存器WTCON,主要包括预分频值、分割因子,看门狗定时器复位信号输出使能b0=1(在看门狗定时器回0时复位信号有效)。 在预估的预分频值、分割因子的情况下,计算看门狗的定时常数。只要计算的结果不大于WTDAT的数值范围即2161均为有效数据。将定时常数赋给WTDAT寄存器和WTCNT寄存器。 启动看门狗定时器。使看门狗定时器使能位b5=1(使能有效电平信号)
9、。,10,11,应用实例,使用看门狗功能时,必须事先进行初始化。初始化的主要工作就是设置WTCON寄存器和WTDAT寄存器。例如,实现S3C2410A芯片的看门狗功能,监测系统的周期不大于40us,PCKL=50Mhz。首先计算赋给WTDAT寄存器的初值。 初值40us*(PCKL/(预分频值+1)/分割系数) 注意:这里PCKL的单位是赫兹,预分频值和分割系数必须事先有一个固定的值。本例中预分频值=0,分割系数=16,即设置WTCON的值为0 x0021,允许看门狗定时器工作,允许看门狗复位信号有效。初值计算过程如下: 初值40*10-6*(50*106/(0+1)/16)=125=0 x7
10、d 程序代码如下:,12,汇编语言代码段,WTCON EQU 0 x53000000WTDAT EQU 0 x53000004AREA Watchdog_Ini,CODE,READONLYENTRYCODE32 ldr r0,=WTDAT ;将WTDAT寄存器地址值赋给r0 ldr r1,=0 x7d ;将计数器初值0 x7d赋给r1 str r1,r0 ;将r1的内容写到以r0内容为地址的单元中 ldr r0,=WTCON ;将WTCON寄存器地址值赋给r0 ldr r1,=0 x0021 str r1,r0 END,C语言代码段,#define rWTCON=( *(volatile un
11、signed char*)0 x53000000)#define rWTDAT=( *(volatile unsigned char*)0 x53000004)#define rWTCNT=( *(volatile unsigned char*)0 x53000008)void watchdog40(void)rWTCON= (rWTCON /*设启动看门狗。看门狗复位使能、看门狗使能*/,13,14,9.3 具有脉宽调制(PWM)的定时器(TIMER),Timer部件主要用于提供定时功能,脉宽调制(PWM)功能,它的应用比较灵活,对于需要一定频率的脉冲信号,一定时间间隔定时信号的应用场合,都
12、能提供支持。9.3.1 定时器Timer概述 S3C2410A芯片中有5个16位的Timer部件,其中Timer0 Timer3具有PWM功能, Timer4仅用于定时,不具有PWM功能,它没有输出引脚。 Timer0是一个同时具有死区(dead-zone)发生器,通常用于控制大电流设备。,15,9.3.2 TIMER部件的操作每个定时/计数器都是16位的减法计数器,是通过定时器自己的时钟驱动的。当计数器减到0时,可产生定时器中断请求信号,通知CPU定时器的操作已经完成了。此时定时/计数缓冲寄存器TCNTBn(Timer Counter Buffer Register n)的值将自动装载到递减
13、计数器,开始下一轮的操作。但是,若定时器停止工作,则TCNTBn的值将不会重新装载到计数器中。定时器比较缓冲寄存器TCMPBn(Timer Compare Buffer Register n)的值用于脉宽调制。当计数器的值与比较寄存器的值相同时,定时器的逻辑将改变输出电平。因此TCMPBn确定脉宽调制信号输出的上升时间(或下降时间)。每个定时器(TIMER4除外)均含有TCNTBn,TCNTn,TCMPBn和TCMPn四种计数缓冲寄存器,其中定时器计数寄存器TCNTn(Timer Counter Register n)和定时器比较寄存器TCMPn(Timer Compare Register
14、n)是内部寄存器(编程不可见),内部寄存器TCNTn的值可以通过计数观察寄存器读取。,16,17,9.3.2 TIMER部件操作(续),每个定时器读时都是16位的减法计数器,是通过定时器自己的时钟驱动的。当计数器减到0时,可产生定时器中断请求信号,通知CPU定时器的操作已经完成了。此时TCNTBn的值将自动装载到递减计数器,开始下一轮的操作。但是,若定时器停止工作,则TCNTBn的值将不会重新装载到计数器中。 TCMPBn的值用于脉宽调制。当计数器的值与比较寄存器的值相同时,定时器的逻辑将改变输出电平。因此TCMPBn确定脉宽调制信号输出的上升时间(或下降时间)。 每个定时器(TIMER4除外
15、)均含有TCNTBn,TCNTn,TCMPBn和TCMPn四种计数缓冲寄存器,其中TCNTn和TCMPn是内部寄存器(编程不可见),内部寄存器TCNTn的值可以通过计数观察寄存器读取。,18,1. 自动重载和双缓冲器,S3C2410A处理器的定时器具有双缓冲功能,即在不停止当前定时器运行的情况下,重载下次定时器运行周期(或频率)的参数、PWM波形的占空比。主要是指向TCNTBn,TCMPBn寄存器赋值。装载新值之后,在按原参数运行完前周期后,在下一个新的周期,按新的设置参数运行。当内部寄存器TCNTn的值减到0时将自动装载TCNTBn的值到TCNTn中,并可重新开始进行减法计数,前提条件是自动
16、重载允许。如果TCNTn0,但自动重载禁止,则定时器停止运行。,19,双缓冲功能编程图例,当内部寄存器TCNTn的值减到0时将自动装载TCNTBn的值到TCNTn中,并可重新开始进行减法计数,前提条件是自动装载功能允许。如果TCNTn0,但自动装载禁止,则定时器停止运行。,2. 复杂的定时器设置示例定时器初始化时,使用手动装载位和反转位。因为定时器的自动操作发生在减法计数器为0和TCNTBn没有预先赋值时。在这种情况下必须使用手动装载功能给TCNTBn赋初值。开启一个定时器的操作如下:向TCNTBn和TCMPBn中写入初值;定时器控制寄存器TCON(Timer Control Register
17、)相关的手动装载位置1,不管是否需要反转位功能,都将反转位的开关打开;设置定时器控制寄存器TCON的相关启动位,同时清除其手动装载位;如果定时器被强行关闭,TCNTn就保持原有的计数值,且不从TCNTBn重新自动装载计数值。如果必须重新设置新值,则必须使用手动装载。定时器的操作示例如下,以图9-5进行叙述。,20,允许自动装载功能,给TCNTBn和TCMPBn赋值,这里控制TOUTn周期的TCNTBn=250,控制高电平持续时间的TCMPBn=150;使能手动装载功能,TCNTBn和TCMPBn的值将被复制到TCNTn和TCMPn寄存器中;最后设置在TCNTBn和TCMPBn的值分别为300和
18、100,作为下一个周期定时器的工作参数。设置相应定时器的启动位为1,清除手动装载控制位为0,关闭反转开关,自动装载开始,定时器按照第一个设定的参数运行工作。当TCNTn的值等于TCMPBn的值时,TOUTn从低电平跳变到高电平。当TCNTn的值等于0时,定时器产生中断请求,同时TCNTBn=300和TCMPBn=100的值自动装载到TCNTn和TCMPn中,定时器使用这个参数将进行下一个周期的工作。在响应4)的中断服务程序中,对TCNTBn和TCMPBn重新赋值,这里分别是130和80,用于下一个周期的工作参数。当TCNTn的值等于TCMPBn的值时,TOUTn又从低电平跳变到高电平。重复4)
19、的操作。在这个中断服务程序中,相应定时器的中断请求和自动装载功能被禁止,定时器将使用最后一个给定的参数工作完后,终止工作。同3)完成的操作相同。当TCNTn的值等于0时,由于自动装载被禁止,因此TCNTn将不再装载计数值,定时器停止工作。(11)不再产生中断请求,工作过程彻底结束。,21,22,3. 脉宽调制(PWM),PWM的频率由TCNTBn的值来确定,PWM的每个周期中高电平(或低电平)的持续时间由TCMPBn的值来确定。 如果TCON中某定时器的输出反转位置0(不反转),若要得到较高的PWM脉宽输出值(高电平持续时间),则需要增加TCMPBn的值;若要得到较低的PWM脉宽输出值,则需要
20、减小TCMPBn的值。 如果TCON中某定时器的输出反转位置1(反转器被使能),若要得到较高的PWM脉宽输出值(高电平持续时间),则需要减小TCMPBn的值;若要得到较低的PWM脉宽输出值,则需要增加TCMPBn的值。 基于双缓冲器的功能,下一周期TCMPBn的值,可以在中断服务程序中,并且在当前的PWM周期内的任何时刻写入。,23,脉宽调制(PWM)设置图例,图中上面的波形是减法计数器的计数过程示意图,为画图方便,使用(216计数器值)。 两条横线代表TCMPB的取值,取值为(TCNTBnTCMPBn)。图例是在反转器关闭的情况下绘制的。,24,4. 输出电平控制,输出电平控制是通过定时器T
21、CON中的输出反转位控制的。包括定时器输出TOUTn的初值及工作过程的波形。在定时器的反转器开关关闭(即反转位置0) ,可以控制TOUTn电平的高或低,方法如下。 关闭TCON自动重载位之后,TOUTn变为高电平,并且定时器在TCNTn=0时停止; 通过对定时器的启动/停止位清0停止定时器工作。如果TCNTn不大于TCMPn, TOUTn输出高电平;如果TCNTn大于TCMPn, TOUTn输出低电平; 通过对TCON中的输出反转位置1控制TOUTn输出反相。开关。反转位开关控制TOUTn的波形如下。,25,定时器反转位控制TOUTn图例,图例如下:,26,5. 死区(DZ Dead Zone
22、)发生器,死区DZ(Dead Zone)是当定时器用于PWM,为大电流控制设备提供电能的时候,需要使用死区功能。这个功能允许在一个设备关闭和另一个设备开启之间插入一个时间间隔,可防止两个设备同时动作对电网及现场环境造成较大的危害。TOUT0是T0的PWM输出,nTOUT0是TOUT0的反相输出。如果允许死区功能,TOUT0和nTOUT0的输出波形就变为TOUT0_DZ和nTOUT0_DZ, nTOUT0_DZ在TOUT1引脚输出。定时器的死区功能使得TOUT0_DZ和nTOUT0_DZ不会同时发生变化。死区功能的波形图9-8所示。,27,死区功能允许波形图,死区允许波形图即在原波形图上将上升沿
23、延迟一个死区间隔时间,而其下降沿的时间与原波形图相同。,6. DMA请求模式与中断,配置寄存器TCFG1中的DMA模式位可以用来控制定时器n产生DMA请求或中断使能,一个定时器只能在DMA方式或中断方式中选择其一,且最多只有一个定时器可以设置为DMA方式。现将TCFG1中的DMA方式位23:20设置如表9-5所示:,28,表9-5 DMA模式字对应表,29,30,9.3.3 TIMER部件内部功能寄存器,控制TIMER控件的操作,需要编程设置TIMER内部的许多功能寄存器。主要有: 定时器配置寄存器0(TCFG0); 定时器配置寄存器1(TCFG1) ; 定时器控制寄存器(TCON); TIM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统原理及应用第9章 ARM9定时器计数课件 嵌入式 系统 原理 应用 ARM9 定时器 计数 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1932460.html