我在使用msp430g2553的time_A0的连续模式下,我把TACCTL0做为捕获模式用,捕获一个矩形波的上升沿并读取中断时TAR的值,读不到正确的值,我又换了读TACCR0中的值,也读不出来,我参考一些其他类型的430关于这方面的程序,都差不多,为什么我的不行呢,求解?
Triton Zhang:
请详细描述下“读不到正确的值”和“读不除TACCR0的值“
检查下你的初始化配置是否正确。
Hardy Hu:
最好是把TA初始化与操作的那一段代码发上来看看
Peter_Zheng:
首先配置timer 捕获模式
TA1CTL = TASSEL_2 + MC_2;// SMCLK, contmode
TA1CCTL0 = CM_3 + CCIS_1 + SCS + CAP + CCIE; // Interrupt at both edges
然后通过中断读取ccr0数值
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer_A (void)
anger0925:
回复 Peter_Zheng:
请问你是读出来的值不对,是怎么判断的?还有你输入的方波的频率是多大?如果输入频率很高,而系统时钟频率跟不上,也会出错。还有救是你在中断处理时出错。一般处理的方法是在一定时间内统计脉冲个数,这样计算出来一般不会出错。
Hardy Hu:
读到TAR的值是不正确还是不是按照自己的想法的结果?