我用的是430的fe427芯片,现在碰到的问题是我进入了捕获中断,用到的是TACCR0,但是CCR0里面却没有捕获的数据,即我每次在线调试的时候,我能进入捕获中断,但是CCR0里面的值却一直为0,求指点。下附相关的程序:
这个是寄存器的设置。
void Init_TimerA1_BH(void)//定时器A捕获的初始化
{
TACTL = TASSEL_1 + MC_1 + ID_2; // Continous up ACLK/4, 为了测100mHZ
TACCTL0 = CM_1 + CCIS_0 + SCS + CAP + CCIE; // Capture mode: 1 - pos. edge, 3 - both edge; PSLIN0 输入
P1SEL |= BIT0 ;
}
这个是我的TA捕获中断和程序。
#pragma vector = TIMERA0_VECTOR //端口中断,TA0 P1.0 zzg
__interrupt void Timer_A (void)
{
temp=10;
new_cap = TACCR0; //将中断时TACCR0 值装入new_ cap
cap_diff = new_cap - old_cap; // 差异值=新值-旧值
diff_array[index] = cap_diff; // 向差异数组写入差异值
capture_array[index++] = new_cap; // 向捕获数组写入捕获值
if (index >= 32) // 数组是否已满?(1 - 32)
{
index = 0; // 清索引变量
}
old_cap = new_cap; //存储捕获新值
// count ++;
} |