我想通过msp430f149的捕捉功能,两次上升沿,通过两次对应CCR0之间的差值,求出频率
在小于1.5khz的时候可以测量出来,但大于1.5kHz的时候两次CCR0的值就等于0,从而求出差值(算是一个突变)
#include <msp430x14x.h>
unsigned int LastCCR0=0;
void InitSys();
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; //关闭看门狗
LcdReset(); //设置液晶
InitSys();
for(;;)
{
}
}
void InitSys()
{
unsigned int iq0;
BCSCTL1&=~XT2OFF;
do
{
IFG1 &= ~OFIFG;
for (iq0 = 0xFF; iq0 > 0; iq0--);
}
while ((IFG1 & OFIFG) != 0);
BCSCTL2 =SELM_2+SELS;
InitBhTimerA();
_EINT();
}
void InitBhTimerA()
{
TACTL = TASSEL_2+TACLR+ID_3+MC_2; //SMCLK ,8分频,连续计数模式
CCTL0 = CCIS_1+CM_1+CAP+SCS+CCIE; //上升沿,捕捉,同步,中断使能
BHSEL |= BH_IO; //选择P2.2使用第二功能
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0()
{
show(CCR0-LastCCR0); //show是显示子函数,通过两次上升沿对应的CCR0数值,相减,再通过计算求出频率
LastCCR0=CCR0;
}
此帖出自
小平头技术问答
一周热门 更多>