搜索
bottom↓
回复: 5

MSP430定时器A的疑问?

[复制链接]

出0入0汤圆

发表于 2012-10-5 17:54:12 | 显示全部楼层 |阅读模式
看TI的C例子,用MSP430的定时器Timer_A来定时/计数时,为什么是往TA1CCR0中写入相应的计数值?MSP430内部不是有一个定时/计数寄存器TAR吗,为什么要定时时不是往这个寄存器写入相应的计数值呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-10-5 18:15:44 | 显示全部楼层
是哪个芯片呀....完整的程序?......TAR是主计数器的计数寄存器吧,另外还有几个比较模块的,一般中断、端口控制都是靠比较模块实现的,TA1CCR0是比较器0的比较寄存器吧......不过最好把源程序放上来啦

出0入0汤圆

 楼主| 发表于 2012-10-5 22:22:36 | 显示全部楼层
BBC 发表于 2012-10-5 18:15
是哪个芯片呀....完整的程序?......TAR是主计数器的计数寄存器吧,另外还有几个比较模块的,一般中断、端 ...

MSP430F5438。不够哪个芯片都差不多一样。如果要定时可以用TAR来定时吗?程序一(TI 的C代码例子)如下:

//******************************************************************************
//  MSP430F54x Demo - Timer_A3, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK
//
//  Description: Toggle P1.0 using software and TA_1 ISR. Timer1_A is
//  configured for up mode, thus the timer overflows when TAR counts
//  to CCR0. In this example, CCR0 is loaded with 50000.
//  ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~1.045MHz
//
//           MSP430F5438
//         ---------------
//     /|\|               |
//      | |               |
//      --|RST            |
//        |               |
//        |           P1.0|-->LED
//
//   M Smertneck / W. Goh
//   Texas Instruments Inc.
//   September 2008
//   Built with CCE Version: 3.2.2 and IAR Embedded Workbench Version: 4.11B
//******************************************************************************

#include "msp430x54x.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  TA1CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA1CCR0 = 50000;
  TA1CTL = TASSEL_2 + MC_1 + TACLR;         // SMCLK, upmode, clear TAR

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, enable interrupts
  __no_operation();                         // For debugger
}

// Timer A0 interrupt service routine
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0
}

出0入0汤圆

发表于 2012-10-6 00:54:26 | 显示全部楼层
kandy286 发表于 2012-10-5 22:22
MSP430F5438。不够哪个芯片都差不多一样。如果要定时可以用TAR来定时吗?程序一(TI 的C代码例子)如下: ...

其实从下面这图就看得挺清楚了:



我只能解答你在楼主位提出的问题,其他得靠你自己看datasheet咯...

430的定时器有点特别,主计数器是受CCR0这个捕获/比较器控制的,从图中TAXR右边的count mode是受EQU0触发的便可以看出。

因此,当TAR == TACCR0时,便会触发事件,根据count mode的设定来对TAR寄存器做相应操作。而在本例中,计数模式是upmode,即TAR的计数范围是0~TACCR0,所以设置的是CCR0,而不是TAR......

我自己都晕了,不知道自己说了啥......

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-6 08:21:27 | 显示全部楼层
你这是51单片机的思想。非要那么用也可以,就是浪费了。

出0入0汤圆

发表于 2012-11-9 20:58:00 | 显示全部楼层
EQU0是什么,有什么作用,可以设置相关寄存器吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-27 03:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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