历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2020年01月16日 | 浅谈msp430f5529入门(3)——定时器A/Timer_A

2020-01-16 来源:eefocus

这次聊聊定时器A,Timer_A。


F5529的定时器和F149刚能上几乎没有区别,会用F149的定时器就会用F5529的定时器了。可是呢~F55系列定时器的数量不一样了,而且寄存器的名字也有所改变了。


F5529一共有3个定时器A,3个!TimerA!这3个分别是Timer0_A5,Timer1_A3,Timer2_A3,前面的数字就是定时器的序数,后面的数字是这个定时所拥有的捕获比较单元数量。


这些我都不是从datasheet或者user guide上查到的,而是最直接地翻CCS里的知道的。datasheet和user guide 都是讲一个系列的,各种芯片之间可能有点差异,所以还是进这个专门的头文件里找比较精确。因为数目多了,所以在使用时很容易会产生混乱。大家刚开始学着写程序时一定要经常翻翻user guide和头文件,避免写错。


x代表定时器,n代表捕获比较单元,Timer_A的寄存器也就这么6种,需要我们注意的也就2种。都是TAx开头,如果是涉及捕获比较单元的会在后面再有个n。


TAxCTL——定时器Ax的控制寄存器。


TAxCCTLn——定时器Ax里的捕获比较单元n的控制寄存器,多了个C是Capture/Compare。


TAxR——定时器Ax的计数器,这个不归我们管。


TAxCCRn——定时器Ax里的捕获比较寄存器,用到这个捕获比较的时候直接写就行了,或者是写CCR0。


TAxIV——定时器Ax的中断向量寄存器。进这个中断时查看就行了,switch。


TAxEX0——定时器A扩增的寄存器,里面只有一个TAIDEX对时钟再分频,可以忽略。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

待我们用到定时器时,对着user guide,


先把TAxCTL设置好——TASSEL时钟源,ID分频不分频,MC工作模式,TAIE打开不打开定时器溢出中断。


再把要用到的捕获比较单元的TAxCCTLn设置好——CAP捕获还是比较,捕获的话CM怎么捕,SCS同步,CCIS信号从哪进;


                                                                                无论捕获还是比较,CCIE中断总得打开吧;

                                                                                如果输出PWM波,设置OUTMOD就够了(一般用模式7)。


最后写TAxCCRn(比较或者是输出PWM波)。

---------------------------------------------------------------------------------------------------------------------------------------------------------

有些疑问。


对于TAxCCTLn里的CCIS和SCCI我搞不太懂。


CCIS默认的是CCIxA,这个就是该捕获比较单元所对应的引脚,但CCIxB对应的是哪个呢?我找不出来。我也试过,不是对应的TBxCCTLn的引脚。另外VCC和GND是怎么捕获的,也不太好懂。还好这问题无伤大雅,就那默认地CCIxA用就行了。


另外,SCCI的值说是信号发生跳变时,也就是捕获瞬间的值,但这瞬间的值是什么?捕获前还是捕获后的电平,我无从而知,也没有人告诉我。


曾看了这一段程序,说是可以测PWM波持续高电平的时间,用的是上升下降沿捕获。


#pragma vector = TIMERA1_VECTOR

__interrupt void TIMERA1(void)

{

  switch(TAIV)

  {

  case TAIV_TACCR1: if((TACCTL1 & SCCI)== SCCI)

                    {

                        pulse = CCR1-oldCCR1;

                    }

                    oldCCR1=CCR1;

  case TAIV_TACCR2:break;

  case TAIV_TAIFG: break;

  }

}


可我试了貌似不行,而且在我写的程序里面,单步单步的运行,一直看SCCI都是0,没有变过。


如果有哪位懂得这两个问题而又刚好看见这篇文章的,请不要吝啬地留言。谢谢!

----------------------------------------------------------------------------------------------------------------------------------------------------------

那么对于如何测PWM波持续高电平的时间,我想到这样的办法,大家应该都能想出来。


#pragma vector = TIMER0_A1_VECTOR

__interrupt void timer0A1( void )

{

switch( __even_in_range( TA0IV,14) )

{

case TA0IV_TA0CCR1 :

period = TA0CCR1 - oldccr1;

oldccr1 = TA0CCR1;

break;

case TA0IV_TA0CCR2 :

if( TA0CCTL2 & CM_1 )

{

TA0CCTL2 &= ~CM_1; //取消上升沿捕获

TA0CCTL2 |= CM_2; //改为下降沿捕获

oldccr2 = TA0CCR2;

}

else

{

TA0CCTL2 &= ~CM_2; //趋向下降沿捕获

TA0CCTL2 |= CM_1; //改为下降沿捕获

pulse = TA0CCR2 - oldccr2;

}

 

break;

case TA0IV_TA0CCR3 :break;

case TA0IV_TA0CCR4 :break;

case TA0IV_TA0IFG :break;

}

}


无非就是进上升沿中断后改下降沿。比较笨的方法,但能用。

----------------------------------------------------------------------------------------------------------------------------------------------------------

关于每一种工作模式如何如何地我就不啰嗦了,和149一样,如果有F149底子应该都懂的。学到5529,我觉得要注意的就是寄存器和有一些位的命名。多了真的很容易混乱,不过多练几次很快就能掌握记忆的技巧了。


推荐阅读

史海拾趣

远阳(FLYOUNG)公司的发展小趣事

福建国光新业科技股份有限公司,作为全球领先的聚合物片式叠层铝电解电容器(MLPC)制造商,自成立之初便致力于国产高端被动元器件的技术开发与产品创新。面对高端电容器被国外厂商长期垄断的局面,国光新业经过长期技术积累与研发,成功打破了国际垄断,实现了MLPC电容器的国产替代。这一成就不仅填补了国内空白,还使公司在细分领域发明专利授权数量上跃居全球第一,荣获多项国家级荣誉称号。

HDP_Power公司的发展小趣事

人才是企业发展的根本。国光新业深知这一点,因此始终注重人才的引进与培养。公司推出了“国新力”人才计划专项,构建了一支优秀人才梯队。目前,企业的技术团队中科技人员占比超过30%,其中拥有工程师以上职称的比例更是超过六成。这些高素质的人才为公司的技术创新与产品研发提供了源源不断的动力。

FCT Electronics公司的发展小趣事

随着电子产品的日益复杂化,FCT Electronics意识到技术创新是保持竞争力的关键。公司投入大量资源进行研发,成功开发出一系列高性能的测试设备。其中,一款多功能集成电路测试系统因其高效、稳定、可靠的特点,被众多电子制造商所采纳,为FCT Electronics赢得了极高的声誉。

Dawning Precision Co Ltd公司的发展小趣事

Dawning Precision Co Ltd(以下简称“Dawning”)成立于本世纪初,当时正值电子行业的快速发展期。公司的创始人张先生是一位在电子行业摸爬滚打多年的资深人士,他看到了精密制造在电子行业中的巨大潜力。然而,初创时期,公司面临着资金短缺、技术瓶颈和市场认知度低等困难。张先生带领团队夜以继日地工作,不断研发新技术,优化产品性能,同时积极寻找投资者和合作伙伴。经过几年的不懈努力,Dawning逐渐在行业中树立了良好的口碑,开始获得客户的认可。

德力康(DLK)公司的发展小趣事

在扩大产品线的同时,DLK公司也积极拓展国内外市场。通过参加各种行业展会、建立营销网络、加强客户服务等方式,DLK公司成功将产品销往全球多个国家和地区。在品牌建设方面,DLK公司注重产品质量和服务质量的提升,积极塑造企业形象和品牌形象。通过多年的努力,DLK已经成为了国内外知名的连接器品牌之一。

台湾町洋(dinkle)公司的发展小趣事

町洋注重企业文化建设,倡导以人为本的管理理念。公司为员工提供了良好的工作环境和福利待遇,并积极开展各种培训和学习活动,帮助员工提升自身素质和专业技能。这种关注员工成长和发展的企业文化使得町洋的凝聚力不断增强,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

一种基于CPLD的曼彻斯特编解码器设计

引言 虽然计算机通信的方法和手段多种多样,但都必须依靠数据通信技术。数据通信就是将数据信号加到数据传输信道上进行传输,并在接收点将原始发送的数据正确地恢复过来。由于计算机产生的一般都是数字信号,因此计算机之间的通信实际上都属于数 ...…

查看全部问答>

求NE5534的MULTISIM元件

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 我求求大哥些了~~救救我这个新手吧~~~我痛苦啊~~~  …

查看全部问答>

关天wince6.0 media player的问题

我在定制内核时加入了windows media player 播放影片时,出现半透明播放(可以看得见windows背景) 请各位大侠指点下! …

查看全部问答>

Source Insight 中怎么才能让中文注释之间没有空格呢?

如题: 用Source Install写代码的时候,中文注释的每个汉字间都会有一个空格,请问这个空格怎么才能去掉呢,在选项里面能改吗? 还有一个问题: 我发现这个软件即使你没有包含在它的工程里面的文件也是能看到的,但是我还发现用结构体名定义的结构变量 ...…

查看全部问答>

LED与荧光粉知识

led用LED芯片上涂敷荧光粉而实现白光发射。 LED采用荧光粉实现白光主要有三种方法,但它们并没有完全成熟,由此严重地影响白光LED在照明领域的应用。具体来说,第一种方法是在蓝色LED芯片 上涂敷能被蓝光激发的黄色荧光粉,芯片发出的蓝光与荧光粉 ...…

查看全部问答>

格式化开发板是大面积扇区坏的问题?

我用的是友善之臂的MicroS3C2440开发板,想运行一个Linux系统,但是在第一步格式化NandFlah的时候却出现大面积分区坏的问题,不知如何解决? [ 本帖最后由 zhangle0922 于 2011-5-12 12:37 编辑 ]…

查看全部问答>

简易433MHz单芯天线疑问

用单芯线来做简易的433MHz天线,除了接口阻抗匹配外,天线直径大小对发射功率大小有何影响呢?比如0.6mm,0.8mm,1.0mm…

查看全部问答>

公开征集DIY数控电源相关器件的供货信息

为了实现DIY数控电源更好的可用性及美化美观,现公开征集以下器件的供应商,也欢迎网友们提供相关信息:   1、单键飞梭成品 注塑件、结构件、电气件齐全,可以直接装机使用 2、光电旋钮/编码器 作为单键飞梭的替代,带塑胶旋钮和紧固件 ...…

查看全部问答>

环境影响有这么大吗?

我做了个激光器功率的PID电路,周围有人走动就会有影响,没人的时候没有变化。因为是光纤激光器,光路也没有空间部分不会因为震动影响光路部分,那这个飘动就是电路部分了,但是在不理解怎么会有这么大的影响,人一走动就变化,快成生命探测器了。 ...…

查看全部问答>

运算放大器增益稳定性

介绍 运算放大器增益稳定性…

查看全部问答>