[求助] 各位朋友,有谁用过MSP430f149的TA的CCIxB吗?

451432837   2013-9-26 15:18 楼主
下面是我的程序,目的是捕获P2.3口的方波脉宽,但是运行结果是仅响应溢出中断,不响应捕获中断,这是为什么呢?有哪位高手能解释一下吗?有谁用过MSP430f149的TA的CCIxB吗?能发段程序看看吗?谢谢啦
/***************************(定时器A)频率捕获************************/
void TA_Capture(void)
{
   TACTL=TACLR+TASSEL_2+ID_3;           //TAR清除,捕获时钟选择SMCLK,8分频(选择8Mhz/8=1Mhz)
   TACTL|=TAIE;                         //此处打开定时器溢出中断
   
  TACCTL1=CM_1+CAP+SCS+CCIS_1;         //CCTL1,上升沿捕获,捕获模式,同步捕获,捕获端口选取CCI1B
   TACCTL1|=CCIE;                       //使能捕获中断
  
   TACCR0=10000-1;                      //定时器溢出值
   
   P2DIR&=~BIT3;                        //将P2.3设定为输入
   P2SEL|=BIT3;                         //将P2.3设定为频率捕获端口
   TACTL|=MC_1;                         //增计数模式
}

/*************************定时器A中断函数*************************/
#pragma vector = TIMERA1_VECTOR          //捕获中断
__interrupt void TIMERA1(void)
{
  switch(TAIV)                           //读中断向量寄存器
  {
    case 2: switch(cap_count)          //捕获瞬间,读取TAR的值
             {
                case 0: T_cap1=TACCR1;
                        cap_count=1;
                        overflow_count=0;
                        break;           //记录捕获值              
                case 1: T_cap2=TACCR1;
                        cap_count=0;
                        intermediate_overflow_count=overflow_count;
                        break;
             }  
            break;
    case  4:  break;      
    case 10:  overflow_count+=1;          //用于计算捕获时候的溢出脉冲
              spacing_count+=1;           //用于检测MODBUS协议中任意两帧数据的间隔
              if(spacing_count>2)                        
              {
               spacing_count=2;
               rec_ok=flag_2;             //flag_2用来确定,没收到一帧数据仅回答一次
              }
              break;
    default: break;      
  }
}

回复评论 (2)

回复 楼主451432837 的帖子

有没有大侠帮个忙啊
点赞  2013-9-26 18:33

回复 沙发451432837 的帖子

有朋友用过CCIxB吗?帮个忙解决一下啊
点赞  2013-9-27 09:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复