9s12系列增强型捕捉定时器模块

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章IO接口及增强型捕捉定时器模块MC9S12系列单片机增强型定时器模块是在标准定时器模块的基础上添加了新的功能。定时器的核心是一个16位的可编程计数器,计数的频率可以通过分频来调整。用途很多普通定时器的工作,例如脉冲计数、定时等可以用来测量输入的脉冲宽度产生我们需要的脉冲波形。增强型定时器ECT模块第七章IO接口及增强型捕捉定时器模块ECT模块的组成:1个预分频器1个16位自由运行计数器8个16位IC/OC通道2个16位(4个8位)脉冲累加器1个16位模数递减计数器第七章IO接口及增强型捕捉定时器模块输入捕捉功能是用来监测外部的事件和输入信号。当外部事件发生或信号发生变化时,在指定的输入捕捉引脚上发生一个指定的沿跳变(可以指定该跳变是上升沿还是下降沿)。定时器捕捉到特定的沿跳变后,把计数寄存器当前的值锁存到通道寄存器。如果输入捕捉控制寄存器中设定允许输入捕捉中断,系统会产生一次输入捕捉中断,利用中断处理程序可以得到事件发生的时刻或信号发生变化的时刻。触发沿选择触发事件16位捕捉锁存器16位计数器计数器时钟输入捕捉第七章IO接口及增强型捕捉定时器模块在特定的时刻在管脚上输出特定电平,用来控制外电路工作。原理是:输出比较寄存器的值和计数器的值每隔4个总线周期比较一次,当两个值相等的时候,会在该通道的引脚上输出预先规定的电平。如果输出比较中断允许,还会产生一个硬件的定时中断。输出比较最简单和最常用的功能就是产生一定间隔的脉冲。16位输出比较寄存器比较器16位计数器计数器时钟输出比较第七章IO接口及增强型捕捉定时器模块输入捕捉/输出比较通道有8个输入捕捉输出比较通道。共有8个外部引脚,分别为IOC0—IOC7,与PORTT复用。通过选择TIOS寄存器的IOSx位可以选择是输出比较还是输入捕捉。对于输入捕捉:带缓冲的输入捕捉通道不带缓冲的输入捕捉通道第七章IO接口及增强型捕捉定时器模块不带缓冲的输入捕捉通道8个输入捕捉,其中4个(PT4~PT7)带有一个捕捉寄存器用来记录管脚上电平变化时自由计数器的锁存值。捕捉寄存器TCx当输入覆盖控制寄存器(ICOVW)的NOVWx位清0时,每发生一次输入捕捉,新的计数器的值就会覆盖原来的输入捕捉寄存器的内容;当该位置1时,除非输入捕捉寄存器为空,否则新的值不能写入(使输入捕捉寄存器为空的方法是读取该寄存器)。这样就避免了新的计数值覆盖旧的计数值。ICOVW复位时为0x00。第七章IO接口及增强型捕捉定时器模块带缓冲的输入捕捉通道PT0~PT3是带缓冲的输入捕捉通道。捕捉寄存器TCx保持寄存器TCxH。可以在不产生中断的情况下,连续记录两次自由计数器的值。入口设置了延迟计数器用来提高抗干扰能力第七章IO接口及增强型捕捉定时器模块锁存方式:每个有效的引脚事件只将自由定时器的值放入捕捉寄存器TCx,而TCx到保持寄存器TCxH的传送必须依赖强制锁存命令才能实现当模数计数器减为“0”向模数计数器写入“$0000”写强制锁存位ICLAT(输入控制系统控制寄存器ICSYS)输入捕捉寄存器的值将锁存到相应通道的保持寄存器中,并将输入捕捉寄存器的值清零。两种工作模式:(TCx到保持寄存器TCxH)第七章IO接口及增强型捕捉定时器模块队列方式TCx与TCxH形成了一个类似先进先出的队列,每个捕捉结果从TCx进入,然后随着下一个捕捉结果的到来移入TCxH。程序可以从TCxH取得结果,也可以直接从TCx取得捕捉结果。第七章IO接口及增强型捕捉定时器模块4个8位的通道PAC0-PAC3组成可以通过级联形成两个16位通道PACA、PACB通过检测相应管脚上的有效边缘来记录脉冲的个数。各通道的8位累加器与4个缓冲IC通道相关联的,它们共享边沿检测与延迟电路。脉冲累加器第七章IO接口及增强型捕捉定时器模块两种工作模式–锁存方式:•通过锁存命令,将脉冲累加计数器的值锁存到相应通道的保持寄存器中–队列方式•当读取某通道保持寄存器的值时,相应脉冲累加器的值将被写入保持寄存器。第七章IO接口及增强型捕捉定时器模块16位递减模数计数器(MDC)可以用作时钟基准,产生周期性的中断请求。也可用于将IC寄存器和脉冲累加器的值锁存到各自的保持寄存器中。模数递减计数器第七章IO接口及增强型捕捉定时器模块模数递减计数器(MCCNT)模数递减标志寄存器(MCFLG)模数递减控制寄存器(MCCTL)模数计数器由初值递减,递减到0时,会产生相应的中断。递减频率由总线时钟经分频得到。初值可以由用户写入第七章IO接口及增强型捕捉定时器模块在模数模式允许后(MODMC=1),向模数递减计数器的写操作会更新预置数的值,模数计数器递减到0时,就会装载最新的预置数,装载的操作也可以由置MCCTL寄存器的FLMC位为1来强制执行。总定时时间=预置数×总线周期×中断次数第七章IO接口及增强型捕捉定时器模块在中断程序中,需要清除相应的中断标志位(MCFLG),并将中断次数减1,当中断次数减为0时,一次延时就完成了。第七章IO接口及增强型捕捉定时器模块第七章IO接口及增强型捕捉定时器模块三个例子举三个例子讲述本节内容–流水灯显示–使用输入捕捉功能,对外来脉冲进行计数–使用输出比较功能,输出一个具有一定宽度的高电平脉冲第七章IO接口及增强型捕捉定时器模块ECT计数寄存器(TCNT)TCNT为自由计数器的计数值,本例通过读取它的值实现延时。这是一个16位的加法计数器,最大值为65535。任意时刻可读,正常模式下写操作无效。第七章IO接口及增强型捕捉定时器模块ECT控制寄存器1(TSCR1)必须设置TSCR1才可以使主定时器工作,需要在ECT模块初始化时就设置好。TEN=1:主定时器使能。0=主定时器禁止,进入低功耗状态。TSWAI=0:等待模式时主定时器继续工作,方便调试。0=停止工作。TSFRZ=0:冻结模式时主定时器继续工作。0=停止工作。TFFCA=0:自动清除标志位。1=手动清除。本例设置TSCR1=0x80。第七章IO接口及增强型捕捉定时器模块ECT控制寄存器二(TSCR2)TOI:禁止定时器溢出中断。1=允许。TCRE:定时计数器复位允许。0=禁止复位,计数器自由计数。1=允许复位。进行完一次输出比较时,可以使定时计数器复位PR2、PR1、PR0:预分频因子选择第七章IO接口及增强型捕捉定时器模块voidTimerOverflow(void){unsignedchari=1,j=0x80;while((i!=0)&&(j!=0)){PORTA=(i|j);i=1;j=1;while(TCNT!=0x0000);//延时while(TCNT==0x0000);}}voidmain(void){EnableInterrupts;TSCR1=0x80;//定时器使能TSCR2=0x07;//分频系数为128DDRA=0xff;PORTA=0xff;for(;;){TimerOverflow();}}流水灯的显示PORTA输出调用函数设置控制寄存器1设置控制寄存器2延时控制第七章IO接口及增强型捕捉定时器模块while(TCNT!=0x0000);while(TCNT==0x0000);这两句的含义是:TCNT开始计数后值不为0,等待直到TCNT溢出返回0,然后再等到TCNT不为0。为什么要弄两个while?第七章IO接口及增强型捕捉定时器模块例二:输入捕捉利用输入捕捉0通道对外来的方波信号进行捕捉,采用中断的形式。中断发生后,读取捕捉后的计数值,并通过PORTB口使LED灯点亮以指示中断成功。通道0设置为输入捕捉,采用双沿触发(上下沿均触发),IC0开中断,可以进入中断服务程序。方波信号由PORTA_BIT6产生,PORTA_BIT6和IOC0硬件连接。第七章IO接口及增强型捕捉定时器模块输入控制系统寄存器-ICSYSSHxy=0:正常操作。1=x通道和y通道将产生一样的输入动作,x通道的设置同样适用于y。TFMOD=0:当出现有效的输入捕获事件,TFLG1中的对应中断标志位CxF就置1。1=队列模式时才使用。PACMX=0:8位脉冲累加器溢出后自动回0。1=不自动回0,停留在0xFF。脉冲累加器对IC通道捕获的有效边沿数量进行计数。第七章IO接口及增强型捕捉定时器模块输入控制系统寄存器-ICSYSBUFEN=1:使用输入捕获缓冲区。0=不使用。(输入捕捉和脉冲累加器的保持寄存器)LATQ=0:输入捕获队列模式使能。产生一次成功的输入捕获时,IC通道寄存器中保留的计数值会被送到保持器中,然后IC寄存器会接收新的计数值。1=锁存模式使能。ICSYS=0x02;//IC缓冲使能第七章IO接口及增强型捕捉定时器模块TFLG1:主定时器中断寄存器1BIT76543210RC7FC6FC5FC4FC3FC2FC1FC0FWRESET00000000TFLG1指示了中断发生在哪个通道,需要对相应位清零时,可以对它进行置1操作。C7F-C0F:IC/OC的中断标志。当TSCR寄存器中的TFFCA位被置位时,对于输入捕捉和输出比较通道的读写操作,将清除对应通道的CxF位。第七章IO接口及增强型捕捉定时器模块定时器输入捕捉和输出比较寄存器TC0-TC7寄存器:用来锁存自由计数器的值,当得到有效的边沿触发时,我们可以通过读这些寄存器来获得输入捕捉计数值;通过写这些寄存器来设置输出比较的计数值。任意时刻可读。在输出比较模式任何时刻可写。在输入捕捉模式对寄存器的写操作没有意义。当寄存器复位后,寄存器值等于$0000。第七章IO接口及增强型捕捉定时器模块IC/OC通道选择寄存器--TIOSIOSx:1=通道x为输出比较;0=通道x为输入捕获。第七章IO接口及增强型捕捉定时器模块控制寄存器3/4—TCTL3/4EDGnA/B:输入捕捉边沿控制。本例设置0x03(EDG0A=1,EDG0B=1)。即IC0通道采用上升,下降沿都触发。n代表通道序号。第七章IO接口及增强型捕捉定时器模块定时器中断使能寄存器-TIECxI:1=第x个通道中断允许;0=第x个通道中断禁止。第七章IO接口及增强型捕捉定时器模块例二:输入捕捉IC0的初始化:voidic_init(void){TSCR1=0x90;//主定时器使能,对TCNT访问即可清除标志TSCR2=0x07;//分频因子=128ICSYS=0x02;//IC缓冲使能(保持寄存器)TIOS=0;//通道设置为输入捕获TCTL4=0xff;//采用上升、下降沿触发TIE=0b00000001;//通道0开中断}第七章IO接口及增强型捕捉定时器模块例二:输入捕捉初始化好后,需要在main函数中调用初始化函数ic_init()。以下是在main函数中,如何使用PORTA_BIT6来产生一个方波信号。DDRA=0xff;//设置PORTA的方向寄存器,为输出PORTA=0x00;//PORTA的输出初始化为低电平DDRB=0xff;//PORTB设置为LED灯的控制信号PORTB=0x00;//LED全灭for(;;){for(i=0;i6000;i++){PORTA_BIT6=1;//循环中设置信号为高电平}for(i=0;i6000;i++){PORTA_BIT6=0;//循环中设置信号为低电平,产生方波}}第七章IO接口及增强型捕捉定时器模块例二:输入捕捉方波信号已经成功得产生了,下面是中断服务程序:#pragmaCODE_SEGNON_BANKED//必须有这句voidinterrupt8ic0_int(void){TFLG1_C0F=1;//中断标志清除ic4=TC0;//通过读TC0寄存器来响应中断,ic4、ic40为用户定义的变量dic4=ic4-ic40;ic40=ic4;PORTB=0x55;//用LED灯来指示已经进入了中断/*以下放置

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功