请教MSP430定时器捕获功能,一直进中断

void TimerA0_Init(void) { TACTL |= TASSEL_1 | TACLR | TAIE | TAIFG; TACCTL1 |= CCIE; P2SEL |= BIT3; TACCTL2 |= CCIS_1 | CCIE | CAP | CM_2; //仿真器跟踪执行完这行程序后,后CCIFG、COV马上置位,但外部引脚P2.3一直为低电平,专门测了一下P2.3管脚波形,有一些干扰但可以忽略不计,大概200KHz-0.4mV干扰波 TACCR1 = 0x7fff; TACTL |= MC_2; } void Time_Deal(void) //中断处理函数{ unsigned char flag; flag = TAIV; switch(flag) { case 2: ADC12CTL0 |= ENC | ADC12SC; break; case 4: flag = 0;
TACCTL2 &= ~(COV | CCIFG); //程序一直死在这里 break; case 10: ADC_Start(); break; } }
#pragma vector=TIMERA1_VECTOR //定时器A中断处理__interrupt void timer_a(void){
Time_Deal();
}

你在捕获的同时,打开了定时器中断的缘故,没有捕获信号也会进定时器中断的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-01
怀疑是你进中断之后没有清除中断标志。追问

标志位已清除,只要读写TAIV标志位自动清,至于错误原因不太清楚,可能是硬件bug,已经测试好几块芯片,结果是一样的,后来程序和硬件都做了改动,TB2改为TA2,再也没出现过这种情况

MSP430单片机定时器工作在捕获模式下,计数模式只能用连续计数模式? 而...
就以定时器A来举例,TImerA一共有两个中断向量,一个单独分配给CCR0,另一个作为公用的中断向量用于定时器和另外两个捕获比寄存器。CCR0具有最高的中断优先级,因为CCR0能用于定义增计数模式和增减计数模式的周期。CCR1和CCR2以及定时器共用另一个中断向量。捕获比较寄存器设置很灵活的,建议多看看430定...

msp430如何让定时器计数器重新开始计数。使它重复不断的产生中断
1、你的GIE没开,也许压根没产生过中断。2、也许你开GIE了。TI_CC_LED1在异或下能亮,说明你的LED1的控制位应该是0吧?既下拉点亮LED1,但你要知道0^0永远都是0,你的LED1永远也都是亮着的。3、你打算LED2闪烁,可你用或语句它只能保持一个状态(恰恰这个状态是1吧?LED2就这么灭着不亮)...

用IAR 编译msp430 单片机,中断一直无法通过怎么回事
include "io430.h"与#include "msp430g2553.h" 这两个头文件只能使用一个 并且对于芯片msp430g2553来说,io430.h中包含io430g2553.h文件

MSP430的CCRx中断在连续计数模式下怎么产生中断的
首先,如果你只是用连续计数模式,哪么CCTLx(比较捕获寄存器)根本可以不设置,其次,CCR0的初值没有设置,中断只会在定时器溢出时才能发生。然后,第二个中断,你是想用CCR1,CCR2吧,,也是因为你没设置初值,TAIV的值只会是10,也就是溢出中断产生才会进中断。case中的2,4是计数值到CCR1,2而...

求教关于单片机下降沿捕获的问题
然后就跳进一个中断,如果你要测频的话就记录下此刻的CCR值,挑出中断,随后在下一个触发信号到来时再记录一次CCR的值,两次数据之差就是再除以定时器时钟频率就得到了被测信号一个方波的时间了。3.关于特殊引脚,就是一个复用的脚,可以作为一般IO口,也可以作为捕获信号入口,就像msp430F449中P2.0...

单片机或msp430没有清除中断标志会咋样 看到很多程序里都是要清除中断...
中断的优先级比较高,系统或者硬件都是优先响应处理中断的;而中断标志则是是否有中断产生的标识,所以没有清除中断标志,系统或者硬件会认为有中断产生,而去响应,这样就可能导致出错了。中断标识有些是会自动清除的,比如MSP430中的通信时发送,接收中断标志,而有些是必须手动清除的。

msp430编程定时器B的中断
2.定时器TA TimerA有2个中断向量。TIMERA0,TIMERA1 TIMERA0只针对CCR0的计数溢出 TIMERA1再查询TAIV后可知道是CCR1,还是CCR2,亦或TAIFG引起的,至于TAIFG是什么情况下置位的,则要看TA工作的模式 具体看用户手册。还有一点TA本身有PWM输出功能,无须借用中断功能。在这个问题上经常出现应用弯路的是...

msp430单片机定时器自动跑是怎么个原理呢??求解啊!
此时再产生一个中断,周而复始。输出单元的作用就是自动的输出。当公共汽车到达某一站的时候TAR=CCRx,产生中断的同时输出单元就会自动的输出(51是没有这个功能的,因此你只能自己写输出代码)大概就是这样吧,很多细节都省略了,就是为了你能有个大概的了解。430的定时器功能很强大,当然也要复杂一些,...

在msp430f135单片机中定时器中中断过多是不是会影响程序的执行准确率...
如果是抢先式,则可能出现高级中断总能得到执行,低级中断老是轮不到执行 如果是时间片轮转的,则大家轮流坐庄,都能得到执行,但整个系统时钟慢了(在单片机和台式机CPU都能得到验证)不论什么单片机、DSP还是NP或台式机CPU都不例外 这与保护现场无关(那是必备的次序)...

关于msp430单片机中定时器A的捕获模式寄存器的解读?
最后EQUx信号使锁存CCI到SCCI,产生EQUx的过程就是所谓的“同步”,它表明CCRx中捕获到的值是正确的。最后说一点东东:以上都是很细节的东西,大意明白就可以了,死抠细节你学的会很累。单片机提供给我们的功能往往不是完美和简洁的。MSP430更是如此,有很多鸡肋的东西可能你一辈子都用不上。

相似回答