11章TIMER2、ccp模块
- 格式:ppt
- 大小:453.00 KB
- 文档页数:50
Timer Design Spec1.1概述Timer模块用于定时,第一路Timer和第二路Timer均为16bit。
其中第一路Timer 可复用为两路8bit计数器。
当其计数值与用户预设值相同时产生溢出中断。
第二路Timer带输出比较功能,可用于PWM。
1.2接口说明1.3寄存器说明表格1-2 第一路Timer 寄存器说明:此处的Timer0和Timer1指的是第一路Timer作为8bit模式时分出的低8位和高8位两个定时器。
1.3.1定时寄存器TMxCDATA该寄存器中存放着用户设定的定时值,TM0CDATA为低8位设定值,TM1CDATA 为高8位设定值。
当计数器计数到与该寄存器的值相等时,产生溢出中断。
表格1-3 TM0CDA TA寄存器表格1-4 TM1CDA TA寄存器说明:在独立8 Bit Timer时,两个寄存器定时值分别对应Timer0和Timer1。
在16 Bit Timer模式下,TM0CDATA对应低八位定时值设定,TM1CDATA对应高八位定时值设定。
1.3.2 模式选择寄存器TM1MOD表格1-5 TM1MOD寄存器说明:Timer停止运行时,并且清除中断之后,才可重新配置该寄存器。
1.3.3 Timer控制寄存器TMxCON表格1-6 TM0CON寄存器清零;2.在配置该寄存器时,建议T0Run、T0Clr信号只有1位是有效的,即启动和清零独立操作,不建议同时令T0Run、T0Clr有效;3、当系统时钟比计时时钟快时,执行T0Clr操作后要等待35us再执行启动Timer操作,否则可能会导致计数器清零不成功,导致Timer功能异常。
表格1-7 TM1CON寄存器说明:1、该小节指的Timer0、Timer1均针对独立8 Bit 模式时的低八位和高八位的定时器。
2、在16 Bit 模式时,TM1CON 寄存器无效,一直保持为0。
第一路Timer 的运行和清零控制均交由TM0CON 寄存器控制。
与输入捕捉模式\比较器相关的寄存器作用:1)用于测量输入引脚的周期信号的周期,频率和占空比等2)测量输入的非周期性矩形脉冲信号的宽度,到达时刻和消失时刻等特点: 1)时钟源来自TMR12)应先设好TMR1,且RC2/CCP1脚设为输入状态3)捕捉开启后,TMR1自动累加,CCP1一直检测引脚状态,与设定事件相同符时,TMR1的值被捕捉到CCPR1中,并产生中断.工作原理:捕捉条件,1)每个脉冲下降沿; 2)每个脉冲上升沿; 3) 每4个脉冲上升沿;4) 每16个脉冲下降沿; 发生后,CCPR1马上记下TMR1的值注意点:1) CCP1中断后,应用软件将其清0; 2)当CCPR1中的值还没取出时有新的捕捉发生,则原有的值被覆盖;3) 如果修改预分频器的值,可能会产生一次错误中断,并且预分频器不会清0.因此第一次捕捉可能是从预分频器的一个非0的起始值开始计数的.4)TMR1要设为定时器或同步工作方式;使用输入捕捉模式的步骤:1 设置RC2/CCP1为引脚输入;(TRISC寄存器)2 设置TIMER1的参数:T1CON=--000001:内部时钟,计数器频率FOSC/4,工作允许(进一步可设置PIE1中的TMR1IE中断允许,PIR1中的TMR1IF)3 设置CCP1CON的参数:CCP1CON=----0100;每个下降沿捕捉;(进一步可设置PIE1中的CCP1IE中断允许,PIR1中的CCP1IF)4 等待捕捉成功(中断或者查询)5 从CCPR1L和CCPR1H取值,该值代表捕捉发生的时刻;6 和上次的捕捉值相减,得到两次捕捉之间的时间;7 保留本次捕捉值,为下次作准备;8 重复等待捕捉成功(跳到第4步);输出比较模式作用:从引脚上输出不同宽度的矩形脉冲,延时驱动信息,晶闸管驱动信号,步进电机驱动信号等特点:由TMR1作为时钟源,选好TMR1工作方式,如果比较符合的事件发生后,改变RC2的状态工作原理:比较模式时,CCPR1和TMR1的值会一直作比较,当值相同时,产生中断,驱动事件发生:1)RC2/CCP1输出高电平; 2)输出低电平; 3)电平不变,内部产生软件中断; 4)引脚电平不变,内部触发特殊事件./////由CCP1CON中的D3---D0选择///////使用输出比较模式的步骤:1)RC2/CCP1设为输出, CCP1CON清0 迫使RC2/CCP1比较输出引脚对低电平锁存.2)TMR1设为定时器(时钟由内部产生) 或同步计数方式(时钟来自外引脚或自带振荡器)3)设定产生软件中断方式,当CCP1M3-CCP1M0=1010时,则为软件中断方式,当输出比较匹配时,RC2不受影响,而CCP1IF置1,可产生中断4)当CCP1M3-CCP1M0=1011时,为特殊事件触发方式,匹配时内部硬件产生一个触发信号,启动一些操作,同时TMR1复位清0但TMR1F不会置1PWM工作模式作用:在RC2中输出频率与脉宽随时可调的方波信号,时钟来自TMR2说明: 1) 脉宽寄存器用来调整PWM信号的脉冲宽度.2) 10位从属脉宽寄存器,CCPR1H+内部2位专用锁存器,只读,减少干扰3) 当脉宽寄存器=TMR2时,输出高电平4) 当对CCP1CON清0时,RC2输出一个低电平.并非是正确的PWM输出结果5) PWM的周期由8位的TMR2确定,宽度由TMR2的8位+其低端扩展两位工作原理: 周期确定由PR2的值确定,公式:T=(PR2+1)x4TOSCxTMR2预分频器TOSC为系统的时钟周期,4TOSC为指令周期, 预分频器可为1/4/16*****TMR2后分频不影响周期设定,但可利用其产生的中断来对PR2和CCLR1L换新值,调节脉宽.**********脉冲确定: 由CCPR1L+CCP1CON的D5和D4位确定, 公式:脉宽=DC1xTOSCxTMR2预分频器当PR2=TMR2时,脉宽值补装到从属脉宽寄存器中编程步骤: 1) 向PR2写入周期2) 写入脉宽值3) 将RC2/CCP1设为输出4) 通过T2CON设定TMR2,启用TMR25) 设定CCP1CON低4位为11XX,为PWM模式。
第 10章 利用 CCP 模块设计频率计#include <math.h>table[11]={0xc0 ,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8 ,0x80,0x90,0xFF} ;//不带小数点的显示段码表const char table0[11]={0X40 ,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00, 0X1 0 ,0xFF} ;//带小数点的显示段码表10.5 程序设计 10.5.4 #includ e #includ e 程序清单 <pic.h><stdio.h> //本程序利用 CCP1模块实现一个“简易数字频率计”的功能const charint cp1z[11];cp1 y1;unsignedcharcp1e[2];bank3 union {int //定义一个数组,用于存放各次的捕捉值 }cp1u ;unsigned unsigned unsigned char COUNTW ,COUNT ;char COUNTER , data ,k ;char FLAG @ 0XEF ; //定义一个共用体 //测量脉冲个数寄存器#define FLAGIT(adr ,bit) ((unsigned)(&adr)*8+(bit)) //绝对寻址位操作指令 staticbit FLAG1staticbit FLAG2staticbit FLAG3unsignedintdouble@ FLAGIT(FLAG , @ FLAGIT(FLAG , @ FLAGIT(FLAG , char s[4] ; T5 ,uo ; RE5; puad5; 0); 1); 2); //定义一个显示缓冲数组 double//spi 方式显示初始化子程序void SPIINIT(){PIR1=0;SSPCON=0x30;SSPSTAT=0xC0;〃设置SPI 的控制方式,允许SSP 方式,并且时钟下降沿发送,与"74HC595,当其 //SCLk 从低到高跳变时,串行输入寄存器 "的特点相对应TRISC=0xD7 ; //SDO 引脚为输出,SCK 引脚为输出 TRISA5=0; //RA5 引脚设置为输出,以输出显示锁存信号 FLAG1=0 ;FLAG2=0 ;FLAG3=0 ;COUNTER=0X01 ;}//CCP 模块工作于捕捉方式初始化子程序void ccpint( ){CCP1CON=0X05; T1CON=0X00 ; PEIE=1; CCP1IE=1; TRISC2=1; }//系统其它部分初始化子程序//为保证测试精度,测试 5 个脉冲的参数后//求平均值,每个脉冲都要捕捉其上升、下降沿,//故需要有 11 次中断TRISB1=0;TRISB2=0;TRISB4=1;TRISB5=1; RB1=0;RB2=0; }//SPI 传送数据子程序{SSPBUF=data ; do { }while(SSPIF==0) ;//首先设置 CCP1 捕捉每个脉冲的上升沿 //关闭 TMR1 震荡器//外围中断允许 (此时总中断关闭 ) //允许 CCP1 中断//设置 RC2 为输入void initial( ){COUNT=0X0B ; //设置与键盘有关的各口的输入、输出方式 //建立键盘扫描的初始条件void SPILED(data)//启动发送SSPIF=0;} //显示子程序,显示 4 位数 void display( ){RA5=0 ; //准备锁存for(COUNTW=0 ;COUNTW<4 ; COUNTW++){ data=s[COUNTW] ; data=data&0x0F ;if(COUNTW==k) data=tableO[data]; 〃第二位需要显示小数点 else data=table[data];SPILED(data); }for(COUNTW=0 ; COUNTW<4 ; COUNTW++){ data=0xFF ; SPILED(data); }RA5=1; } //键盘扫描子程序 void keyscan( ) {if((RB4==0)||(RB5==0)) else FLAG1 = 0 ;}//键服务子程序{ PORTB=0XFD ;if(RB5==0) data=0X01;if(RB4==0) data=0X03;PORTB=0XFB ;if(RB5==0) data=0X02;if(RB4==0) data=0X04; PORTB=0X00; if(data==0x01) { COUNTER=COUNTER+1 ; if(COUNTER>4)COUNTER=0x01 ; 〃若COUNTER 超过 4,则又从 1 计起void keyserve()//发送显示段码//连续发送 4个 DARK ,使显示好看一些 //最后给一个锁存信号,代表显示任务完成 FLAG1=1 ;//若有键按下,则建立标志 FLAG1//若无键按下,则清除标志 FLAG1//以上确定是哪个键按下//恢复 PORTB 的值//若按下 S9 键,则 COUNTER 加 1} if(data==0x02) { COUNTER=COUNTER-1 ; //若按下 S11 键,则 COUNTER 减 1 if(C0UNTER<1) COUNTER=0x04 ; 〃若 COUNTER 小于 1, } if(data==0x03) FLAG2=1 ; if(data==0x04) FLAG2=0 ; } //中断服务程序 void interrupt cp1int(void) {CCP1IF=0; cp1u.cp1e[0]=CCPR1L ; cp1u.cp1e[1]=CCPR1H ; cp1z[data]=cp1u.y1;CCP 1CON=CCPICONTOXOI ;data++;COUNT--;} //周期处理子程序//若按下 S10 键,则建立标志 //若按下 S12 键,则清除标志 //清除中断标志 则又循环从 4 计起 FLAG2 FLAG2 //存储 1 次捕捉值 //把 CCP1 模块改变成捕捉相反的脉冲沿 void PERIOD( ){T5=cp1z[1O]-cp1z[O] ;RE5=(double)T5;RE5=RE5/5;}//频率处理子程序 //求得 5 个周期的值 //强制转换成双精度数 〃求得平均周期,单位为卩s void FREQUENCY( ) {PERIOD( );RE5=1OOOOOO/RE5;//先求周期 //周期值求倒数,再乘以 1 000 000,得频率, //单位为 HZ }//脉宽处理子程序void PULSE( ) {int pu ;for(data=0, puad5=0;data<=9;data++) {pu=cp1z[data+1]-cp1z[data];puad5=(double)pu+puad5;data=data+2;}RE5=puad5/5;}//占空比处理子程序//求得5 个脉宽的和值//求得平均脉宽void OCCUPATIONAL( ) {PULSE( );puad5=RE5;PERIOD();RE5=puad5/RE5;} //主程序//先求脉宽//暂存脉宽值//再求周期//求得占空比main( ) {SPIINIT( ) ;while(1) { ccpint();initial() ;if(FLAG2==0) { s[0]=COUNTER ;s[1]=0X0A ;s[2]=0X0A ;s[3]=0X0A ;} display( );keyscan();data=0x00;TMR1H=0 ;TMR1L=0 ;CCP1IF=0;//SPI 方式显示初始化//CCP 模块工作于捕捉方式初始化//系统其它部分初始化//第一个存储COUNTER 的值//后面的LED 将显示"DARK"//调用显示子程序//键盘扫描//存储数组指针赋初值ei( );TMR1ON=1 ;while(1){if(COUNT==0)break ;//定时器1清0//清除CCP1 的中断标志,以免中断一打开就进入//中断//中断允许//定时器1 开//等待中断次数结束//禁止中断//关闭定时器//键盘扫描//若确实有键按下,则调用键服务程序 //如果没有按下确定键,则终止此次循环, //继续进行测量 //如果按下了确定键,则进行下面的数值转换和显示工作 if(COUNTER==0x01) FREQUENCY() ; //COUNTER=1 ,则需要进行频率处理 if(COUNTER==0x02) PERIOD() ;//COUNTER=2 ,则需要进行周期处理 if(C0UNTER==0x03) OCC UP A TIONAL() ; //COUNTER=3,则需要进行占空比处理 if(COUNTER==0x04) PULSE() ;k=5;if(RE5<1){RE5=RE5*1000;k=0x00;if(RE5<10){RE5=RE5*1000;k=0x00; if(RE5<100){RE5=RE5*100;k=0x01 ;if(RE5<1000){RE5=RE5*10;k=0x02;RE5=RE5;uo=(int)RE5;sprintf(s , "%4d" , uo);display(); } di(); TMR1ON=0 ; keyscan(); if(FLAG1==1) keyserve() ; if(FLAG2==0) continue//COUNTER=4 ,则需要进行脉宽处理 } else } else } else } else〃若RE5<10,则乘以1 000,保证小数点的精度 〃若RE5<100,则乘以100,保证小数点的精度 〃若RE5<1000,则乘以10,保证小数点的精度 〃把需要显示的数据转换成 4位ASII 码,且放入数//组 S 中〃若RE5<1,则乘以1 000,保证小数点的精度。
1) 芯片的振荡模式选择。
2) 片内看门狗的启动。
3) 上电复位延时定时器PWRT的启用。
4) 低电压检测复位BOR模块的启用。
5) 代码保护。
__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;_CP_OFF 代码保护关闭_WDT_OFF 看门狗关闭_BODEN_OFF_PWRTE_ON 上电延时定时器打开_XT_OSC XT振荡模式_WRT_OFF 禁止Flash程序空间写操作_LVP_OFF 禁止低电压编程_CPD_OFF EEPROM数据读保护关闭LVP Low Voltage Program 低电压编程CP Code Protect 代码保护Date EE Read Protect EEPROM数据读保护Brown Out DetectPower Up TimerWatchdog TimerFlash Program Write外部时钟输入(HS,XT或LP OSC配置)如下图:陶瓷(ceramic)谐振器电容的选择如下表:一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭0=上电定时器开启位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择1=看门狗开启如右图:0=看门狗关闭位1:0 Fosc1:Fosc0:振荡器选择位0111=RC振荡器10=晶体振荡器HS模式。
定时器模块介绍范文定时器模块是一种用于在特定时间间隔内执行任务的工具。
它通常包括一个时钟、一个计数器和一些用于配置定时器行为的寄存器。
定时器模块主要应用于嵌入式系统、实时操作系统和计算机网络等领域,广泛用于周期性任务、定时中断和数据采样等应用场景。
定时器模块的核心组成部分是时钟。
时钟是系统中最基本的时间参考,它可以通过外部振荡器、晶振或者内部振荡电路来产生稳定的时间脉冲。
时钟信号的周期决定了定时器的计时精度,通常以赫兹(Hz)表示,例如1MHz、10MHz等。
较高的时钟频率意味着更精确的定时器,但同时也会消耗更多的系统资源。
计数器是定时器模块的关键组件之一、它根据时钟信号的脉冲来进行计数,从而实现对时间的测量。
计数器通常是一个二进制计数器,它可以存储一个固定范围的数字,并在计数溢出时自动回滚到初始值。
计数器的位数决定了它的计数范围,例如8位计数器可以计数0至255之间的数字。
位数越多,计数范围越大,但计数器的速度也会降低。
寄存器用于配置定时器的行为。
常见的配置包括定时器模式、计数方向、计数初始值、中断使能和中断触发条件等。
定时器模式决定了定时器的工作模式,例如周期模式、单次模式、定时中断模式等。
计数方向决定了计数器递增还是递减,可以用于计算时间间隔的正反向。
计数初始值决定了计数器的起始值,可以用于同步多个定时器或者设定定时器的起始时间。
中断使能和中断触发条件用于在计时达到特定数值时产生中断请求,从而进行中断处理。
定时器模块的工作过程通常如下:首先,配置定时器的寄存器,包括选择合适的定时器模式、计数方向、计数初始值等。
然后,启动定时器,使其开始计时。
定时器会根据配置的模式和时钟信号的脉冲进行计数,当计数达到特定数值时,定时器会触发中断请求。
中断处理程序会相应地处理中断请求,并执行相应的任务。
最后,根据需要,可以重新配置寄存器以改变定时器的行为,或者停止定时器的计时。
定时器模块有许多应用场景。
在嵌入式系统中,定时器常用于实时任务调度、系统时钟同步和数据采集等。
用CCP模块中PWM模式产生波形目的:1 掌握PIC18F452中CCP模块的应用2 熟悉与该模块相关的寄存器的应用原理:实验中将用到CCP1模块的PWM模式,所用定时器为TIMER2。
PWM即脉宽调制模式,用此模式时,须进行如下设置操作:(1)写入PR2寄存器以设置PWM周期。
PWM周期=[PR2+1]*4*TOSC*(TMR2预分频值)当TMR2等于PR2时,在下一递增计数周期将产生:1 清零TMR2 2 将CCP1引脚置1(若PWM占空比=0%,将不被置1)3 PWM占空比从CCPR1L被锁存为CCPR1H(2)写入CCPR1L寄存器和CCP1CON<5:4>位以设置PWM占空比。
CCPR1L包含8位MSB,CCP1CON<5:4>包含2位LSB,这10位值由[CCPR1L:CCP1CON<5:4>] 表征。
(3)设定端口C的RC2/CCP1引脚为PWM的输出引脚即将TRISC<2>设为0。
(4)写入T2CON以设置TMR2预分频值并使能TIMER2T2CON<1:0>为TIMER2时钟预分频选择位。
为00时,预分频值为1;为01时,预分频值为4;为1X时,预分频值为16;T2CON<2>为TIMER2使能位,1为使能,0为停止。
(5)将CCP1模块设置为PWM模式。
设置CCP1CON中的CCP1M3:CCP1M0为11XX时,即为PWM模式。
本实验中将产生分频率为10位的PWM波形,占空比为50%。
流程图如下:程序:#include<p18f452.h>void CCP1initial(){ CCPR1L=0X7F;CCP1CON=0X3C; // 设置ccp1为pwm工作方式,且其占空因数低2位为11,高8位为01111111b=7fh //INTCON=0X00; //关闭所有中断PR2=0XFF; //设置pwm工作周期TRISC=0XFB; // 设置ccp1引脚为输出}void main(){ CCP1initial(); //ccp1模块初始化T2CON=0X04; //启动timer2,开始计数,且其预分频值为1 do{;} while(1); //输出pwm波形,无限循环}。
PIC16F877的Timer2与CCP模块的PWM
Timer2 是一个8 位定时器,带有一个预分频器、一个后分频器和一个周期寄存器。
当将预分频器和后分频器设置为最大值时,其溢出时间与16 位定时器的相同。
在PWM 模式下使用CCP 模块时,Timer2 为PWM 时基。
下图显示了Timer2 的结构框图。
后分频器对TMR2 寄存器和PR2 寄存器的匹配次数进行计数。
这样有助于减少中断服务程序的调用频率,优化CPU 性能。
与Timer2 有关的寄存器
PWM 模式在脉冲宽度调制(PWM) 模式下,CCPx 引脚可输出分辨率高达10 位的PWM 输出。
因为CCPx 引脚与端口数据锁存器是复用的,所以相应的TRIS 位必须清零以使CCPx 引脚为输出状态,下图为PWM 结构简图。
一个PWM 输出包含一个时基(周期)和一段输出高电平的时间(占空比)。
PWM 的频率是周期的倒数(1/周期)。
PWM 周期可通过写入PR2 寄存器来规定,可用以下公式计算:PWM 周期= [(PR2) + 1] 4 TOSC (TMR2 预分频比),用时间单位表示PWM 频率(FPWM)定义为1/[PWM 周期]。
当TMR2 等于PR2 时,在下一递增计数周期中将产生下面三个事件:TMR2 被清零CCPx 引脚被置1( 例外情况:如果PWM 占空比=0%,CCPx 不被置1) PWM 占空比从CCPRxL 被锁定为CCPRxH
PWM 占空比可通过写入CCPRxL 寄存器和DCxB1:DCxB0(CCPxCON)位来规定。
最高分辨率可达10 位:由CCPRxL 中的高8 位和CCPxCON 中的低2。
PIC16F87XX引脚图:设计要求:测试对象为100~1000Hz的TTL电平信号,要求对其以下的参数进行测量:1、频率测量,测量误差小于0.1%;2、周期测量,测量误差小于0.1%;3、脉冲宽度(高电平持续时间)测量,脉冲宽度大于100us,测量误差小于1%;4、占空比测量,占空比的变化范围为10%~90%,要求测量误差小于1%。
t1t2t3t3时刻捕捉TMR13 t1时刻捕捉TMR11t2捕捉TMR12t1时刻以前,把CCP1设置成捕捉上升沿;当上升沿到来时,CCP中断,捕捉此时TMR1寄存器中16位的值TMR11,把CCP1再设置成捕捉下降沿,当t2下降沿到来时,CCP中断,捕捉此时TMR1寄存器中16位的值TMR12,把CCP1再设置成捕捉上升沿,当t3时刻下降沿到来时,CCP中断,捕捉此时TMR1寄存器中16位的值TMR13。
则:信号的周期T=TMR13—TMR11 us脉冲宽度Tp=TMR12—TMR11 us信号的频率f= 1/T占空比D=Tp/T *100%如何提高测量频率•特别注意:•2次中断的时间间隔必须大于一次中断服务的执行时间;•如需要测量的最高频率为1000HZ,周期时1000us,且占空比的变化范围是10%--90%,则高电平持续的最短时间是:100us。
可以由充分的中断服务时间。
•如果实际应用中发现两次捕捉中断的时间间隔小于中断服务时间,则可以设置CCP1CON的值,时CCP模块每4个脉冲上升沿捕捉1次,或16个脉冲捕捉一次•要么把被测信号进行分频。
本例要求测试4种参数,并且可以利用按键选择显示其中任何1种,设定S9为加1键、S11为减1键、S10为确定键、S12为功能键。
按下S9键时,程序中得一个寄存器COUNTER 可以从1连续或点动步进的加到4;同理按下减1键时,COUNTER从4减到1,并把COUNTER值显示在LED上。
不同的COUNTER值对应不同的测试参数。
>手把手教你写S12XS128程序(17)--Timer模块介绍1时间:2009-12-29 11:51来源:电子设计吧作者:dzsj8 点击:380次1、简述MC9S12XS128定时器模块与MC9S12DG128 ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。
HC12 增强型捕捉计时器模块在HCS12标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车ABS 方面。
基准计时器的核心仍然是一个16 位的可编程计数器,其时钟源来自一个预分频器。
该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。
波形的脉宽可以在几微秒到数秒的范围内变化。
增强型定时器模块(ECT)的结构框图如下,ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。
ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。
2、运行模式停止:由于时钟停止,计时器和计数器均关闭。
冻结:计时器和计数器均保持运行,直到T SCR($06)的T SFRZ 位被置1。
等待:计数器保持运行,直到T SCR($06)的T SWAI 位被置1。
正常:计时器和计数器均保持运行,直到T SCR($06)的T EN 位和M CCTL($26)的MCEN 位被分别清0。
手把手教你写S12XS128程序(18)--Timer模块介绍2时间:2009-12-30 22:12来源:电子设计吧作者:dzsj8 点击:366次IC 通道组IC 通道组由四个标准的缓冲通道IC0-IC3 和四个非缓冲通道IC4-IC7 组成,两部分的基本功能都是捕捉外部事件发生的时刻,但是缓冲通道除了IC/OC 寄存器TCn 外,还设有保持寄存器TCnH,此外还在入口设置了延迟计数器,用来提高抗干扰能力。