[求助] MSP430F149 Timer_B捕获问题

jameslllong   2013-6-15 22:25 楼主
各位大虾:

我的程序是要实现测量PWM的占空比,正常情况下信号为高电平,下降沿开始计时,上升沿结束计时。

但是目前发现这样的问题,就是下降沿能够捕获到,但是上升沿无论如何捕获不到。(前几天,完全同样的程序就是正常的,但是这几天,同样的程序同样的硬件,就不行了。。。)

想请各位帮帮忙~!小弟先在这里谢谢各位了!

初始化部分部分是这样写的
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;     //START XT2(8MHZ)
  BCSCTL2|=SELM_2+SELS;   
  do{                   //等待时钟转换
    IFG1&=~OFIFG;
    for(i=0;i<100;i++)
       _NOP();
  }
  while((IFG1&OFIFG)!=0);
  IFG1&=~OFIFG;
}

void Port_Init()
{  
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
//    P4DIR = 0XFF;P4OUT = 0XFF;       //这里这句不注释掉的话,P4.0就无法捕获,这又是为什么呢?
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;
}


void Timer_B0_Init( void )
{
  P4SEL|=BIT0;
  TBCCTL0 &= ~(CCIS1+CCIS0);    //捕获输入CCIxB
  TBCCTL0 |= CM_2+SCS+CAP+CCIE;    //下降沿触发+同步+捕获模式+中断开启
  TBCTL |= TBSSEL_1+MC_2+TBCLR;     //选择ACLK(32768Hz)+连续计数+清除TBR
}

中断程序是这样的
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B0_CAP(void)
{
  if(TBCCTL0&CM_2)                    //捕获到下降沿
  {
    TBCTL|=TBCLR;                     //TBR清零
    TBCCTL0=(TBCCTL0&(~CM_2))|CM_1;    //改为上升沿捕获
  }
  else if(TBCCTL0&CM_1)               //捕获到上升沿     //这里怎么也进不来~
  {
    T_Diff+=TBCCR0;                     //记录低电平时间
    TBCCTL0=(TBCCTL0&(~CM_1))|CM_2;    //改为下降沿捕获
  }
}

回复评论 (7)

各位大虾!快来给点提示哈。。。有点崩溃啊!
点赞  2013-6-16 11:21

回复 沙发 jameslllong 的帖子

为什么不用双边沿捕获呢,在中断里面进行捕获模式切换不好,捕获是对输入信号捕获,你设为输出了,那还怎么捕获啊
点赞  2013-6-16 13:05
TBCCTL0 &= ~(CCIS1+CCIS0);    //捕获输入CCIxB
这一句会不会有问题啊,这样写设置的是CCIxA
点赞  2013-6-16 13:16

回复 板凳 yunhaiking 的帖子

您的意思是用双边沿方式,然后在中断里判断TBIV是什么?
点赞  2013-6-17 17:29

回复 4楼 yunhaiking 的帖子

TBCCTL0 &= ~(CCIS1+CCIS0);    //捕获输入CCIxB
这一句我也很纠结,不过我直接TBCCTL0 |= CCIS_1的话,不好用~
点赞  2013-6-17 17:30

回复 5楼 jameslllong 的帖子

不用判断啊,你这样嘛,捕获一次就保存一次,捕获了两次就可以求脉宽了,然后再下一次捕获两次。为什么非要判断是上升沿还是下降沿的捕获。
点赞  2013-6-17 18:32
//    P4DIR = 0XFF;P4OUT = 0XFF;       //这里这句不注释掉的话,P4.0就无法捕获,这又是为什么呢?
是不是用到了功能引脚?捕获?那需要设置为输入吧,P4DIR=0xFF;是输出了呀,看看数据手册中关于该引脚的功能定义设置
点赞  2013-6-17 21:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复