找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5400|回复: 1
打印 上一主题 下一主题
收起左侧

MSP430F149 TIMER_A—16位定时计数介绍及比较模式介绍

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-2-13 00:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TIMER_A有四个可选时钟源,为了方便一般选择ACLK和SMCLK,经过分频器产生一个时基,其结构图如下:


  TIMER_A有三种定时/计数方式:
(1).增计数模式:计数周期:TAR从0增加到TACCR0,

(2).连续计数模式:计数周期:TAR从0增加到0xffff,


(3).增减计数模式:计数周期:TAR从0增加到TACCR0然后再从TACCR0减到0



  由上图可见TIMER_A的中断标志有两个,分别是TAIFG和CCIFG。TACTL中的TAIE允许产生TAIFG中断标志,中断入口是TIMERA_1VECTOR即0FFEAh,此入口有三个中断源,由TAIV的值决定。

在IAR中,进入中断服务的方式如下:
#pragma vector=中断向量的入口地址
__interrupt void 函数名(类型)
比如:
#pragma vector=0x14
__interrupt void my_handler(void);

TIMERA0_VECTOR是单中断源的,因此不需要判断
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
  P4OUT^=BIT0;
}

既然TIMERA1_VECTOR由三种中断源,则需要判断,例子如下
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
  switch(TAIV)
  {
  case 0x02:break;
  case 0x04:break;
  case 0x0a:P4OUT^=BIT0;break;
}                           
}

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

MSP430F149的TIMER_A的比较模式主要用来做PWM发生器,可产生两路独立的PWM波形(TA1,TA2)。只要管脚第二功能为TA1或TA2都可配置成输出。我看了下datasheet,用增计数配合PWM方式6(即toggle/set)比较简单和灵活,可以做到周期和占空比可变,能满足日常应用。在这种配置下,PWM周期即CCR0,占空比(用时间表示)即CCR1或CCR2的值。


   由上图可知,在模式6中,当TAR中的值等于TACCR1中的值时,输出管脚会变为低电平,当TAR的值记到TACCR0时,输出管脚又变为高电平,而中断只在记数到CCR0时发生,且中断标志为TAIFG。注意改变占空比的间隔最好稍微长点,波形比较好看。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:492215 发表于 2019-3-16 20:19 | 只看该作者
楼主连续模式的配图搞错了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表