msp430g2553 捕获功能,好像没有进入中断~求指导~
#include <msp430g2553.h>
unsigned int capture1_value = 0;
void main()
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_16MHZ; //设定cpu
DCOCTL = CALDCO_16MHZ; //配置DCOCLK产生16M时钟
BCSCTL2 |= SELM_1 + DIVM_0 + DIVS_0; //主时钟MCLK选择DCOCLK,不分频.子时钟SMCLK选择DCOCLK,不分频
P1DIR &= ~BIT2; //P1.2 INPUT
P1SEL |= BIT2;
TACTL = TASSEL_2 + TACLR + MC_1; //SMCLK,up mode
//capture 1
TACCTL1 = CCIE + CM_2 + CCIS_0 + CAP + SCS ; //neg. edge,enabled interrupt,CCIxA,capture mode,
TACCR1 = 16;
_BIS_SR(GIE);
while(1)
{}
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0 (void)
{
switch (TAIV)
{
case 0x02:
TACCTL1 &= ~CCIFG;
capture1_value = TACCR1;
case 0x04:break; //capture 2
case 0x0a:break;
}
}
此帖出自
小平头技术问答
1.在捕获下,竟然能进入中断里,不是说明满足了捕获条件了吗,那为什么把TAR时的值放入TACCRx里,但用watch看的值还是0.
2.当捕获条件满足后,把TAR时的值放入TACCRx里,那么TACCRx 乘以 定时的时间 是不是就是这次捕获所花的时间。
3.如果输入的是方波,且是下降沿捕获,那么是不是一直都在捕获下降沿,不断进入中断,我想只捕获一次,该怎么做?
4..datasheet里不是说msp430g2553有两个定时器,且每个都有三个捕获口,那怎么timer0只有TA0.0,TA0.1,那对应的CCR2的TA0.2是在哪个引脚?
5.CCIXA与CCIXB,有什么区别,两个都是外部触发源输入口,是不是分别对于的是下降沿与上升沿输入口。
好多问题哦,请多指教~
一周热门 更多>