msp430g2553 用捕获的方法测脉宽长度,但一直测的有问题,求救啊

2019-03-24 13:22发布

msp430g2553 用捕获的方法测脉宽长度,但一直测的有问题,求救啊  
程序如下:

#include "msp430g2553.h"
unsigned int start,end,overflow;
float num;
void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  BCSCTL1 = CALBC1_8MHZ;                  
  DCOCTL = CALDCO_8MHZ;
  TA1CTL = TASSEL_1 + MC_2 + TAIE;
  TA1CCTL2 = CM_1 + CCIS_1 + CAP + CCIE + SCS;
  

  P2DIR |=BIT4;
  P2DIR &=~BIT5;
  P2SEL |=BIT5;
  _EINT();
  while(1);
}

#pragma vector = TIMER1_A1_VECTOR
__interrupt void Timer_A(void)
{
  switch(TA1IV)
  {
  case 4:
         if(TA1CCTL2&CM0)
        {
          start = TA1CCR2;
          TA1CCTL2 = CM_2 + CCIS_1 + CAP + CCIE + SCS;              
          overflow = 0;
        }
         else if(TA1CCTL2&CM1)
        {
          end = TA1CCR2;
          TA1CCTL2 = CM_1 + CCIS_1 + CAP + CCIE + SCS;
          num = (end  + overflow*65535 - start);   
        }        
         break;
  case 10:         
          overflow++;               
          break;
  default:break;
  }

} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
wudayongnb
1楼-- · 2019-03-24 22:51
 精彩回答 2  元偷偷看……
zhangchen0104
2楼-- · 2019-03-25 02:10
< :TI_MSP430_内容页_SA7 --> 无论脉宽是10ms还是100ms,num这个变量的值一直都保持在6~7*10^4,求大神赐教啊
wudayongnb
3楼-- · 2019-03-25 04:23
你把变量都改成float试试
zhangchen0104
4楼-- · 2019-03-25 05:06
 精彩回答 2  元偷偷看……
wudayongnb
5楼-- · 2019-03-25 08:45
你直接设置成下降沿上升沿都捕捉

一周热门 更多>

相关问题

    相关文章