打印

MSP430TimerA捕获问题

[复制链接]
5976|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiahy|  楼主 | 2011-8-2 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做一个捕获的实验,P1.2和1.3作为TA1和TA2的捕获源,下降沿捕获,点捕获到的时候,指示灯1亮,并马上改为上升沿捕获,当捕获到的时候,指示灯2亮,指示灯1灭。
现在问题来了,只有TA1能捕获到,而TA2不能捕获到

相关帖子

沙发
shimx| | 2011-8-2 16:52 | 只看该作者
你是什么接法?

使用特权

评论回复
板凳
jiahy|  楼主 | 2011-8-2 16:54 | 只看该作者
接法是外接一个按键到地

使用特权

评论回复
地板
heweibig| | 2011-8-2 16:56 | 只看该作者
能进入TA0中断吗?

使用特权

评论回复
5
jiahy|  楼主 | 2011-8-2 16:58 | 只看该作者
不能进入TA0中断。为什么呢??
请问是我的配置错了吗??

使用特权

评论回复
6
五谷道场| | 2011-8-2 17:00 | 只看该作者
看看你的程序

使用特权

评论回复
7
jiahy|  楼主 | 2011-8-2 17:03 | 只看该作者
#include <msp430x16x.h>
void bcs_init()
{
unsigned char i;
BCSCTL1 &= ~XT2OFF;//打开XT
do
  {
   IFG1 &= ~OFIFG;//清除振荡失效
   for(i = 0xff; i > 0; i--);//等待
  }
while((IFG1 & OFIFG) != 0);
BCSCTL2 |= SELM_2 + SELS + DIVS_3;//MCLK = SMCLK = XT2,三分频
}
void timera_init()
{
P1SEL |= BIT0 + BIT1 + BIT2;
P4DIR |= BIT0 + BIT1 + BIT2;
TACTL |= TASSEL_2 + ID_3 ;//时钟源为SMCLK再三分频
TACCTL1 |= CM_2 + SCS + CAP + CCIE;//捕获模式,同步捕获,中断打开,下降沿捕获
TACCTL2 |= CM_2 + SCS + CAP + CCIE;//捕获模式,同步捕获,中断打开,下降沿捕获
_EINT();//开总中断
}
void main()
{
WDTCTL = WDTPW + WDTHOLD;//关狗
bcs_init();
timera_init();
    while(1);
}
#pragma vector = TIMERA0_VECTOR
__interrupt void timera0_vec()
{
P4OUT ^= BIT0;
}
#pragma vector = TIMERA1_VECTOR
__interrupt void timera1_vec()
{
switch(TAIV)
    {
  case 2: if(TACCTL1 & CM_2)//上升沿
    {
     TACCTL1 = (CCTL1 & (~CM_2) | CM_1);//改成下降沿
     P4OUT ^= BIT1;//LDE翻转
     CCTL1 &= ~CCIFG;//清除中断标志
    }
    else if(TACCTL1 & CM_1)//下降沿
    {
     P4OUT ^= BIT1;//LDE翻转
     TACCTL1 = (CCTL1 &(~CM_1) | CM_2);//改成上升沿
     P4OUT ^= BIT2;//LDE翻转
     CCTL1 &= ~CCIFG;//清除中断标志
    }
    break;
  case 4: if(TACCTL2 & CM_2)//上升沿
    {
     TACCTL2 = (CCTL2 & (~CM_2) | CM_1);//改成下降沿
     P4OUT ^= BIT1;//LDE翻转
     CCTL2 &= ~CCIFG;//清除中断标志
    }
    else if(TACCTL2 & CM_1)//下降沿
    {
     P4OUT ^= BIT1;//LDE翻转
     TACCTL2 = (CCTL2 &(~CM_1) | CM_2);//改成下降沿
     P4OUT ^= BIT2;//LDE翻转
     CCTL2 &= ~CCIFG;//清除中断标志
    }
    break;
        case 10: break;
    }
}

使用特权

评论回复
8
午夜粪车| | 2011-8-2 17:04 | 只看该作者
估计是软件设计的问题。

使用特权

评论回复
9
spark周| | 2011-8-2 17:56 | 只看该作者
是不是退出中断后,忘了清PCA的中断标志了呢?

使用特权

评论回复
10
jiahy|  楼主 | 2011-8-2 18:08 | 只看该作者
清出了

使用特权

评论回复
11
wuhany| | 2011-8-2 19:12 | 只看该作者
奇怪

使用特权

评论回复
12
永远的不知| | 2011-8-2 23:59 | 只看该作者
1# jiahy

您可以做个测试,先不接TA1,单独用TA2捕获,这样试试,再分析到底是哪出的问题。

使用特权

评论回复
13
farrtone| | 2011-8-3 08:15 | 只看该作者
你这里有设置P1.3口吗

使用特权

评论回复
14
jiahy|  楼主 | 2011-8-3 09:41 | 只看该作者
1# jiahy  

您可以做个测试,先不接TA1,单独用TA2捕获,这样试试,再分析到底是哪出的问题。
永远的不知 发表于 2011-8-2 23:59
嗯,我试试

使用特权

评论回复
15
永远的不知| | 2011-8-3 10:48 | 只看该作者
14# jiahy

把问题拆开来验证,更容易定位问题在哪里。

使用特权

评论回复
16
五谷道场| | 2011-8-3 13:37 | 只看该作者
楼上说得对

使用特权

评论回复
17
米其林r| | 2011-8-3 22:08 | 只看该作者
没太看懂楼主的意思

使用特权

评论回复
18
梦幻时钟| | 2011-8-10 10:12 | 只看该作者
BCSCTL2 |= SELM_2 + SELS + DIVS_3;//MCLK = SMCLK = XT2,三分频
应该是8分频吧

使用特权

评论回复
19
梦幻时钟| | 2011-8-10 10:13 | 只看该作者
BCSCTL2 |= SELM_2 + SELS + DIVS_3;//MCLK = SMCLK = XT2,三分频
应该是8分频吧

使用特权

评论回复
20
梦幻时钟| | 2011-8-10 10:13 | 只看该作者
BCSCTL2 |= SELM_2 + SELS + DIVS_3;//MCLK = SMCLK = XT2,三分频应该是8分频吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

862

主题

9861

帖子

4

粉丝