




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MSP430的定时器中有比较捕获的概念,刚刚接触非常生疏。看了半天终于清楚:比较模式: 这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx置一,同时产生中断。若中断允许未开启则只将中断标志位CCIFGx置一。例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断处理。捕获模式: 利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。完成捕获后相应的捕获标志位CCIFGx置一捕获模式的应用: 利用捕获源的来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。如测量时间、频率、速度等例子:利用两次捕获的值来测量脉冲的宽度。或捕获选择任意沿,CCISx=”11“(输入选择VCC),这样即当VCC与GND发生切换时产生捕获条件结合利用:异步通讯同时应用比较模式和捕获模式来实现UART异步通信。即利用定时器的比较模式来模拟通讯时序的波特率来发送数据,同时采用捕获模式来接收数据,并及时转换比较模式来选定调整通信的接受波特率,达到几首一个字节的目的-利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。 本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。在实际应用中可根据例程中的start,end,overflow三个变量来计算脉冲宽度。此功能模块在实际产品应用中体现出有较高的应用价值。2-例程 #include unsigned int start,end;unsigned char overflow;void main (void)WDTCTL= WDTPW+WDTHOLD;/关闭看门狗定时器P1DIR = BIT0+BIT4;/设置P1.0方向为输出P1SEL = BIT2;/设置P1.2端口为功能模块使用 TACTL = TASSEL0+TACLR+TAIE+MC1;/定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式CCTL1 = MC0+SCS+CAP+CCIE;/输入上升沿捕获,CCI0A为捕获信号源_EINT();/中断允许while(1);/LOOP #pragma vector=TIMERA1_VECTOR/定时器A中断处理_interrupt void timer_a(void)switch(TAIV)/向量查询case2:/捕获中断if(CCTL1&CM0)/上升沿 CCTL1=(CCTL1&(CM0)|CM1;/更变设置为下降沿触发start=TAR;/记录初始时间overflow=0;/溢出计数变量复位else if (CCTL1&CM1)/下降沿CCTL1=(CCTL1&(CM1)|CM0;/更变设置为上升沿触发end=TAR;/用start,end,overflow计算脉冲宽度 break;case 10:/定时器溢出中断overflow+;break;/溢出计数加1default:break; /例程结束-msp430单片机定时器Timer_ATimer_A定时器:注:msp430有两个16位定时器Timer_A和Timer_B.二者基本相同。主要有TACTL,TAR,CCTL0,CCR0,CCTL1,CCR1,CCTL2,CCR2,TAIV几个寄存器。其中最主要的是TACTL寄存器,它决定Timer_A的输入时钟信号,Timer_A的工作模式,Timer_A的开启与停止,中断的申请等。定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2。计数器是主体它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断。那怎么实现定时功能呢?这就要靠三个比较/捕获寄存器了以后用CCRx表示。CCR0比较特殊,通过他可以改变计数器的最大计数值,也就是当计数器计数到CCR0的值时自动会将计数器清零。但这需要设置相应的工作模式,模式列表如下:0停止模式,用于定时器的暂停1增计数模式,计数器计数到CCR0,再清零计数2连续计数模式,计数器增计数到0xffff,再清零计数3增/减计数模式,增计数到CCR0,再减计数到0当计数器计数到CCR0时,CCR0单元会产生一个中断。同样当计数器计数到CCR1和CCR2时,两个单元也都会个产生一个中断。这样我们可以通过定时器A得到三个定时时间了。看程序中的定时器初始化模块。CCTLx是相应比较/捕获寄存器的控制寄存器。它可对比较/捕获寄存器进行设置,在这里只用到比较功能,也就是当计数到CCRx时产生中断,由于CCTLx默认的是比较功能,所以一般也就只用到CCIE这个控制字,就是开启相应比较器的中断。CCRx就是相应比较器的值。下面介绍几个Timer_A的重要寄存器:TACTL寄存器:15109876543210未用SSEL1SSEL0ID1ID0MC1MC0未用CLRTAIETALFGSSEL_1 SSEL_0 是时钟源的选择0TACLK,使用外部引脚信号作为输入1ACLK,辅助时钟2SMCLK,子系统主时钟3INCLK,外部输入时钟对TACTL进行模式设置的同时也开启了定时器,要停止只需把MC_0赋值给TACTL就可以。ID1 ID0 是时钟源的分频选择00不分频012分频104分频118分频MC1 MC0 是模式选择0停止模式,用于定时器的暂停1增计数模式,计数器计数到CCR0,再清零计数2连续计数模式,计数器增计数到0xffff,再清零计数3增/减计数模式,增计数到CCR0,再减计数到0CLR定时器清楚位TAIE定时器中断允许位TAIFG定时器溢出标志位TAR寄存器:16位计数器,是执行计数的单元,是计数器的主体。我的理解:即存储你的计数值,0CCR0CCTLx寄存器:捕获比较控制寄存器:15/1413/121110987/6/543210CAPTMOD10CCIS10SCSSCCIxCAPOUTMODxCCIExCCIxOUTCOVCCIFGxCAPTMOD10:选择捕获模式0 0禁止捕获模式0 1上升沿捕获1 0下降沿捕获1 1上升沿与下降沿都捕获CCIS10: 捕获事件输入源0 0选择CCIxA0 1选择CCIxB1 0选择GND1 1选择VccSCS选择捕获信号与定时器时钟同步、异步关系0:异步捕获1:同步捕获(实际中经常使用同步模式,捕获总是有效的)SCCIx比较相等信号EQUx将选中的捕获/比较输入信号CCIx(CCIxA,CCIxB,Vcc和GND)进行锁存,然后可由SCCIx读出。CAP选择捕获模式还是比较模式。0:比较模式1:捕获模式OUTMODx: 选择输出模式0 0 0输出0 0 1置位0 1 0PWM翻转/复位0 1 1PWM置位/复位1 0 0翻转1 0 1复位1 1 0PWM翻转/置位1 1 1PWM复位/置位CCIEx捕获/比较模块中断允许位0:禁止中断1:允许中断CCIx捕获/比较模块的输入信号捕获模式:由CCIS0和CCIS1选择的输入信号可通过该位读出比较模式:CCIx复位OUT输出信号(如果OUTMODx选择输出模式0,则该位对应于输入状态)0:输出低电平1:输出高电平COV捕获溢出标志0:没有捕获溢出1:发生捕获溢出当CAP=0时,选择比较模式。捕获信号发生复位。没有使COV置位的捕获事件当CAP=1时,选择捕获模式。如果捕获寄存器的值被读出前再次发生捕获事件,则COV置位。程序检测COV来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件复位。CCIFGx捕获比较中断标志捕获模式:寄存器CCRx捕获了定时器TAR值时置位比较模式:定时器TAR值等于寄存器CCRx值时置位/*/ Date: 2009.8.4/ Author: xurafreedom / Email: / / Blog: / Description: Toggle P3.4 using software and TA_0 ISR. Toggles every/ 50000 SMCLK cycles. SMCLK provides clock source for TACLK./ During the TA_0 ISR, P3.4 is toggled and 50000 clock cycles are added to/ CCR0. TA_0 ISR is triggered every 50000 cycles. CPU is normally off and/ used only during TA_ISR./ ACLK = n/a, MCLK = SMCLK = TACLK = default DCO 800kHz/ Software release:IAR Assembler for MSP430 V4.09A/W32 ()/*#include /*函数声明*/void InitClock();/*主函数*/void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop WDTInitClock(); / Initialize the clockP3DIR |= BIT4; / P3.4 outputCCTL0 = CCIE; / CCR0 interrupt enabledCCR0 = 500;TACTL = TASSEL_2 + MC_1; / SMCLK, Up to CCR0 mode_BIS_SR(LPM0_bits + GIE); / Enter LPM0 w/ interrupt/*函数名称:InitClock功 能:初始化时钟函数参 数:无返回值 :无*/void InitClock()unsigned int oscdly;BCSCTL1 &= XT2OFF; /-清OSCOFF/XT2,使XT2振荡器有效doIFG1 &=OFIFG; /-清OFIFGoscdly=255;while(oscdly-); /-延时等待 while(IFG1 & OFIFG); /-直到OFIFG=0为止/-DCOCTL |= DCO0 + DCO1 + DCO2; / Max DCOBCSCTL1 |= RSEL0 + RSEL1 + RSEL2; / XT2on, max RSEL/这两句设置DCOCTL和BCSCTL1,设置DCO的频率/一般来说,PUC复位之后,如果没有特定设置系统时钟MCLK,MCU将默/认DCO振荡器产生的频率为系统时钟,不过如果设置BCSCTL2来选定/MCLK的时钟源的话(如:BCSCTL2 |= SELM_2+SELS;)系统时钟就是由/XT2振荡而来./-BCSCTL2 |= SELM_2+SELS; /SMCLK and MCLK uses XT2/这一句设置BCSCTL2,选定MCLK和SM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省义马市中考数学综合提升测试卷含答案详解(B卷)
- 2024安全员考试题库检测试题打印附参考答案详解(培优A卷)
- 人工智能在农村信息化建设中的应用方案
- 推进小区多元化管理模式
- 安全事件处置规程方案规范
- Unit 5 Seasons(Story time)(教学设计)-2023-2024学年译林版(三起)英语四年级下册
- 农产品物流配送规定
- 物业管理服务标准及考核要点
- 幼儿户外拓展活动安全管理方案
- Unit 1 Past and present说课稿-2025-2026学年初中英语牛津译林版2012八年级下册-译林版2012
- 城市空中交通管理试点工作方案
- 肺真菌病的诊断与治疗
- 名著章节课件-《水浒传》第5回《小霸王醉入销金帐 花和尚大闹桃花村》情节梳理+人物形象+巩固试题
- 海口寰岛小升初数学试卷
- 智能化系统施工方案及技术措施
- 城市更新中装饰工程重点及难点措施
- 惠普尔养障体肺炎诊疗要点解析
- 计算机视觉技术 课件全套 第1-5章 计算机视觉概述-图像噪声
- 智能课件自动生成技术解析
- 2025至2030全球及中国汽车外饰件行业项目调研及市场前景预测评估报告
- 贷款中介员工培训
评论
0/150
提交评论