最近做了msp430定时捕获的实验,想用计算一个下降沿脉冲的时间间隔,发现能捕获到但是每来一个下降沿的时候,捕获到多个是什么原因啊,用信号发生器给了一个1s周期的方波,采集到情况是每秒采集到2个,不知道哪里有问题
#include <msp430x14x.h>
unsigned char overflow,value;
void main (void)
{
WDTCTL = WDTPW+WDTHOLD; //关闭看门狗定时器
P1DIR = BIT0+BIT4; //设置P1.0方向为输出
P1SEL = BIT2; //设置P1.2端口为功能模块使用
TACTL = TASSEL0+TACLR+TAIE+MC_2; //定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式
CCTL1 = CM_2+SCS+CAP+CCIE; //下降沿捕获,CCI0A为捕获信号源
_EINT(); //中断允许
while(1); //LOOP
}
#pragma vector=TIMERA1_VECTOR //定时器A中断处理
__interrupt void timer_a(void)
{
switch(TAIV) //向量查询
{ case 2: //捕获中断
if (CCTL1&CM1) //下降沿
{
value++
}
break;
case 10: //定时器溢出中断
overflow++;
break; //溢出计数加1
default:break;
}
} |