《第6章 定时器相关模块》由会员分享,可在线阅读,更多相关《第6章 定时器相关模块(27页珍藏版)》请在金锄头文库上搜索。
1、第6章 定时器相关模块本章导读:本章讲述了计数器/定时器的一般工作原理,介绍K60N512的定时接口模块(PDB、 FTM、PIT、LPTMR、CMT和RTC )的基本功能与编程基础,并给出具体的例子,读者要仔细体会各种不同的使用方法,并将这些方法运用到具体的应用中。本章知识点有计数器/定时器的工作原理;可编程延时模块PDB;Flex定时器FTM;周期中断定时器PIT;低功耗定时器LPTMR;载波调制传输接口 CMT;实时时钟RTC。6.1计数器/定时器的基本工作原理在嵌入式应用系统中,有时要求能对外部脉冲信号或开关信号进行计数,这可通过计数器来 完成。有些设备要求每间隔一定时间开启并在一段时
2、间后关闭,有些指示灯要求不断地闪烁,这 可利用定时信号来完成。个人计算机也经常要用到定时信号,如系统日历时钟的计时、产生不同 频率的声源等。在计算机系统中,计数与定时问题的解决方法是一致的,只不过是同一个问题的 两种表现形式。实现计数与定时的基本方法有三种:完全硬件方式、完全软件方式、可编程计数器/定时器。 1.完全硬件方式在过去的许多仪器仪表或设备中,需要进行延时、定时或计数,经常使用数字逻辑电路实现, 即完全用硬件电路实现计数/定时功能,若要改变计数/定时的要求,必须改变电路参数,通用性和灵活性差。在微型电子计算机出现以后,特別是随着单片微型计算机的发展与普及,这种完全硬件方式实现定时与计
3、数的方法已较少使用。2.完全软件方式在计算机中,通过编程利用计算机执行指令的时间实现定时,称为完全软件方式,简称软件方式。在这种方式中,一般是根据所需要的时间常数来设计一个延时子程序,延时子程序中包含一定的指令,设计者要对这些指令的执行时间进行精确的计算和测试,以便确定延时时间是否符合要求。当时间常数比较大时,常常将延时子程序设计为一个循环程序,通过循环常数和循环体 内的指令来确定延时时间。这样,每当延时子程序结束以后,可以直接转入下而的操作,也可以用输出指令产生一个信号作为定时输出。这种方法的优点是节省硬件。主要缺点是执行延时程序期间,CPU一直被占用,所以降低了 CPU的使用效率,也不容易
4、提供多作业环境;另外,设计延时子程序时,要用指令执行时间来拼凑延时时间,显得比较麻烦。不过,这种方法在实际应用中还是经常使用的,尤其是在已有系统上作软件开发时,以及延时时间较小而重复次数又较少的情况。在计算机控制软件开发过程中,作为粗略的延时,经常使用软件方法来实现定时。3.可编程计数器/定时器利用专门的可编程计数器/定时器实现计数与定时,克服了完全硬件方式与完全软件方式的缺点,综合利用了它们各自的优点,其计数/定时功能可由程序灵活地设置,设定之后与CPU并行地工作,不占用CPU的工作时间。应用可编程计数器/定时器,在简单的软件控制下,可以产生准确的时间延时。这种方法的主要思想是根据需要的定时
5、时间,用指令对计数器/定时器设置定时常数,并用指令启动计数器/定时器开始计数,当计数到指定值时,便自动产生一个定时输出。在计数器/定时器开始工作以后,CPU不必去管它,而可以去做其他工作。这种方法最突出的优点是计数时不占用CPU的时间,如果利用计数器/定时器产生中断信号还可以建立多作业的环境,所以可大大提高CPU的利用率。加上计数器/定时器本身的开销并不很大,因此这种方法在微机应用系统中得到了广泛的使用。K60的定时器接口模块包括了六个子模块:可编程延迟模块PDB、Flex定时器模块FTM、周期中断定时器模块PIT、低功耗定时器模块LPTMR、载波调制发射器模块CMT,以及实时时钟模块RTC。
6、下面逐个介绍这几个模块。6.2可编程延迟模块PDB6.2.1 PDB的基础知识可编程延迟模块(Programmable Delay Block, PDB)可以提供从内部/外部触发源、可编程间隔到A/D转换(Analog To Digital Convert, ADC)的硬件触发,也可以提供D/A转换模块(Digital-to-Analog Converter, DAC)间隔触发的可控时延,这样就可以为ADC转换和DAC输出提供精确的时间。由于本章涉及ADC与DAC的内容,读者可以先阅读后面的章节再进行本节的学习。另外,PDB模块还可以选择性提供脉冲输出。PDB模块包含高达15种输入触发中断源和
7、软件触发中断源、8路的可配置用于ADC触发的PDB通道、8路的DAC内部触发源和8路的脉冲输出。PDB结构框图如图6-1所示。在图中,只显示了PDB通道n,DAC间隔触发器x以及脉冲输出y (用虚线框表示),没有显示PDB使能控制逻辑与时序错误中断逻辑。6.2.2 PDB模块寄存器介绍PDB的寄存器绝对地址(十六进制)寄存器名称访问4003_6000状态和控制秒寄存器(PDB0_SC)R/W4003_6004模寄存器(PDB0_MOD)R/W4003_6008计数寄存器(PDB0_CNT)R4003_600C中断延时寄存器(PDB0_IDLY)R/W4003_6010通道n控制寄存器1((PD
8、B0_CH0C1)R/W4003_6014通道n状态寄存器(PDB0_CH0S)W1c4003_6018通道n延时0寄存器(PDB0_CH0DLY0)R/W4003_601C通道n延时1寄存器(PDB0_ CH0DLY1)R/W4003_6038通道n控制寄存器1( PDB0_CH1C1 )R/W4003_603C通道n状态寄存器( PDB0_CH1S )W1c4003_6040通道n延时0寄存器(PDB0_CH1DLY0)R/W4003_6044通道n延时1寄存器(PDB0_ CH1DLY1)R/W4003_6150DAC间隔触发n控制寄存器( PDB0_DACINTC0 )R/W4003_
9、6154DAC间隔n寄存器( PDB0_DACINT0 )R/W4003_6158DAC间隔触发n控制寄存器( PDB0_DACINTC1)R/W4003_615CDAC间隔n寄存器( PDB0_DACINT1 )R/W4003_6190输出脉冲n使能寄存器( PDB0_PO0EN)R/W4003_6194输出脉冲n延时寄存器( PDB0_PO0DLY)R/W1)状态和控制寄存器(PDBx_SC)PDBx_SC位描述位描述31-20:预留预留,只读,值为019-18:LDMOD装载模式选择LDOK置位后,此位为MOD、IDLY、ChnDlym、INTx和POyDly寄存器的负载模式选择位00
10、一旦LDOK置位后,内部寄存器立即从缓冲区装载值01 PDB计数器的值与MOD寄存器的值相等且LDOK置位后,内部寄存器从缓冲区装载值(1)10 LDOK置位后,如果检测到输入触发事件,内部寄存器从缓冲区装载值(2)11 当(1)或(2)发生时,内部寄存器从缓冲区装载值。17:PDBEIEPDB时序错误中断使能位0 禁止中断1 使能中断16:SWTRIG软件触发当使能PDB而且选择软件触发作触发输入源时,写1到此位会使计数器重新计数。写0无 效。 读为015:DMAENDMA使能位0 禁止1 使能14-12:PRESCALER预分频选择位000 1倍倍频001 2倍倍频010 4倍倍频011
11、8倍倍频100 16倍倍频101 32倍倍频110 64倍倍频111 128倍倍频11-8:TRGSEL输入触发源选择为PDB选择输入触发源。输入触发源可以是内部或者外部触发源,或者软件触发。00001110分别为中断源0中断源14,1111为软件中断源7:PDBENPDB使能位0 禁止,计数器关闭1 使能6:PDBIFPDB中断标志位当计数器的值等于IDLY寄存器的值时,此位置位。写0清该位。5:PDBIEPDB中断使能这一位使能PDB中断。当此位被置位且DMAEN被清除时,PDBIF会产生一个中断0 禁止1 使能4:预留预留,只读,值为03-2:MULT倍频因子选择位00 倍频因子为101
12、 倍频因子为1010 倍频因子为2011 倍频因子为401:CONT连续模式使能位0 单次模式1 连续模式0:LDOK装载数据OK位写1可以让缓冲装载内部寄存器MOD、IDLY、ChnDlym、INTx和POyDly的值。MOD、IDLY、ChnDlym、INTx和POyDly可以通过LDMOD发挥作用。2)模寄存器(PDBx_MOD)PDBx_MOD位寄存器位描述31-16:预留预留,只读,值为015-0:MODPDB模值这些位确定了计数器的周期,当计数器达到这个值时,归零,如果PDB为连续模式,重新计数。3)计数寄存器(PDBx_CNT)PDBx_CNT位描述位描述31-16:预留预留,只
13、读,值为015-0:CNTPDB计数器,只读4)中断延时寄存器(PDBc_IDLY)PDBc_IDLY位描述位描述31-16:预留预留,只读,值为015-0:IDLYPDB中断延时,这些位确定PDB中断的延时值5)通道n控制寄存器1(PDBx_CHnC1)每个PDB通道都有一个控制寄存器CHnC1,用来控制每个PDB通道的功能。PDBx_CHnC1位描述位描述31-24:预留预留,只读,值为023-16:BBPDB通道预触发背靠背操作使能位0 禁止1 使能15-8:TOSPDB预触发输出选择位这些位用来选择PDB的ADC预触发输出。0 PDB通道响应旁路模式的预触发。1当在输入触发源检测到一个
14、上升沿信号后,计数器的值等于通道延时寄存器的值加一个预分频周期时,或者选择软件触发模式且SWTRIG置位,预触发器会响应7-0:ENPDB通道预触发使能位0 禁用PDB通道响应预触发器1 使能 PDB通道响应预触发器6)通道n状态寄存器(PDBx_CHnS)PDBx_CHnS位描述位描述31-24:预留预留,只读,值为023-16:CFPDB通道标志当PDB计数器与CHnDLYm匹配时置位CFm。写0清除15-8:预留预留,只读,值为07-0:ERRPDB通道时序错误标志0 PDB通道响应预触发器不检测时序错误1 PDB通道响应预触发器检测时序错误7)通道n延时0寄存器(PDBx_CHnDLY0)PDBx_CHnDLY0位描述位描述31-16:预留预留,只读,值为015-0:DLYPDB通道延时值这些位确定通道响应预触发器的延时值8)通道n延时1寄存器(PDBx_CHnDLY1)功能同通道n延时0寄存器,不再赘述。9)DAC间隔触发器n控制寄存器(PDBx_DACINTCn)PDBx_DACINTCn位描述位描述31-2:预留预留,只读,值为01:EXTDAC外部输入触发使能位0 禁用DAC外部输入触发1 使能DAC外部输入触发0:TOEDA