zmr1992 发表于 2013-4-8 12:43:25

【求助】MSP430F5438定时器TA捕获的问题

依据官网的资料,p1.1和p8.0的第二引脚功能是TA0.0,所以我用P1.1捕获的时候可以正常使用,但是改为p8.0的时候却怎么也进不了中断,求解!!!!程序如下:#include<msp430x54x.h>
unsigned int i=0,u;
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A(void)
{
   
    P9DIR=0XFF;
    P9OUT ^= 0X0F ;//有捕获就闪灯

}

void Init_CLK(void)
{
WDTCTL   = WDTPW + WDTHOLD                            ; // 关看门狗
P5SEL   |= 0x0C                                       ; // 端口功能选择振荡器
UCSCTL6   &= ~XT2OFF                                    ; // 振荡器使能
UCSCTL3   |= SELREF_2                                 ; // FLLref = REFO
UCSCTL4   |= SELA_2                                     ; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
do
{
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志                                                         
    SFRIFG1 &= ~OFIFG                                     ;
}while(SFRIFG1&OFIFG)                                 ; // 检测振荡器错误标志
   UCSCTL6   |= XT2DRIVE0 + XT2DRIVE1                      ; // XT2 驱动模式 24~32MHz                                          
   UCSCTL4   |= SELS_5 + SELM_5                            ; // SMCLK = MCLK = XT2
}

void Init_Timer0_A5(void)
{

      TA0CCTL0&=~(CCIS1+CCIS0); // 捕获源为P4.0,即CCI0A(也是CCI0B)
      TA0CCTL0|=CM1+SCS+CAP; //下降沿捕获,同步捕获,工作在捕获模式
      TA0CCTL0|=CCIE; //允许捕获比较模块提出中断请求
      TA0CTL|=TASSEL_2; //选择时钟SMCLK
      TA0CTL|=TACLR; //定时器清零,      
      TA0CTL|=MC_2;//定时器开始计数(连续计数模式0~0xFFFF) TBCTL|=MC_2;
      P1SEL|=BIT1;//选择p1.1第二功能
      P1DIR &=~BIT1;//选择p1.1方向为输入
      
      
}

int main( void )
{

WDTCTL = WDTPW + WDTHOLD;P9OUT=0xff;
Init_Timer0_A5();
Init_CLK();
_EINT();
while(1);
}我改为P8只是改了
P1SEL|=BIT1;//选择p1.1第二功能
P1DIR &=~BIT1;//选择p1.1方向为输入这两句,可就是不行了·······求解·········

liujian6f 发表于 2013-4-8 14:31:27

帮你看了下手册P1.1 TA0 CCR0 capture: CCI0A input, compare: Out0 output    P8.0 TA0 CCR0 capture: CCI0B input, compare: Out0 output不一样啊 一个是CCI0A 一个是CCI0B
楼主再好好看看端口描述
TA0CCTL0&=~(CCIS1+CCIS0); // 捕获源为P4.0,即CCI0A(也是CCI0B) ????

zmr1992 发表于 2013-4-8 15:53:49

liujian6f 发表于 2013-4-8 14:31 static/image/common/back.gif
帮你看了下手册P1.1 TA0 CCR0 capture: CCI0A input, compare: Out0 output    P8.0 TA0 CCR0 capture: C ...

嗯。。。是我疏忽了,这个原本是TB(P4.0端口)的捕获程序,我把他改成TA的。。。。。。。。

zmr1992 发表于 2013-4-8 16:22:03

liujian6f 发表于 2013-4-8 14:31 static/image/common/back.gif
帮你看了下手册P1.1 TA0 CCR0 capture: CCI0A input, compare: Out0 output    P8.0 TA0 CCR0 capture: C ...

我试着改成TA0CCTL0|=CCIS0;//
      TA0CCTL0&=~CCIS1;// 使他CCIS位变为01;也就是CCI0B输入信号,下载后发现可以进中断了,但是灯是常亮的,没有闪烁,这是为什么呢?{:3_60:}

liujian6f 发表于 2013-4-8 16:37:42

老兄你有用仿真器吧   一步步走看下不就知道了嘛!

zmr1992 发表于 2013-4-8 16:45:37

liujian6f 发表于 2013-4-8 16:37 static/image/common/back.gif
老兄你有用仿真器吧   一步步走看下不就知道了嘛!

我在中断里加了个自加10000次才闪烁一次,他就闪的慢了一点,看来进入中断非常快啊.........但我外部给的只有1hz,照理应该一秒进一次才对呀······

慢慢懂 发表于 2013-4-15 20:35:09

我的也是进不了中断

ljc2012 发表于 2013-4-22 14:58:26

mark 一下 最近也是十分纠结捕获。。。

在路上的旁观者 发表于 2013-6-7 10:09:17

我也是啊,遇到捕获的问题了

mydepc3721 发表于 2013-6-13 22:36:50

捕获程序,,好好看看,谢谢

dongjiren2012 发表于 2013-8-11 07:58:36

p8.0口是CCIB的输入端口,要使用的话必须先设定寄存器使用CCIB捕获端口,你的应该是没有设定使用这个端口

fisher_am 发表于 2015-11-4 15:41:08

请问TA捕获问题解决了吗?
我一直进不了中断{:sad:},可以加QQ问问吗?
页: [1]
查看完整版本: 【求助】MSP430F5438定时器TA捕获的问题