MSP430的CCRx中断在连续计数模式下怎么产生中断的
作者&投稿:重趴 (若有异议请与网页底部的电邮联系)
首先,你要在IO中断中手动清除IO中断标志位,然后再调用_EINT()函数打开全局中断,另外你要在主程序中加一个"while(1) ;"死循环这样就OK了。
对于msp430来说,它的定时器有好几种中断源;以G2553为例,它有TACCR和定时器溢出两种类型的中断。在continuous模式下,TACCR0也可以触发中断,而且中断优先级最高。在进入中断后,对TACCR0加50000.另外,在一些代码中,通过判断TA0IV的值来判断是那一种中断.
其次,CCR0的初值没有设置,中断只会在定时器溢出时才能发生。
然后,第二个中断,你是想用CCR1,CCR2吧,,也是因为你没设置初值,TAIV的值只会是10,也就是溢出中断产生才会进中断。case中的2,4是计数值到CCR1,2而使中断标志置位的。
。。。
最后,你每次中断后,只是把CCR0的值加4,没有做其它任何事,啥效果都没有。
CCRX中断触发是这样的:
首先是对它们付初值,在计数达到CCRX中的其中一个的数字时,产生中断,。然后根据TAIV的值作出你想做的事情。接着继续主函数,当达到第二个CCRX值时,才产生中断,重复以上动作。
例如:
CCR0=200;CCR1=500;CCR2=2000;
当计数到200时,中断产生,进入到值为TIMERA0_VECTOR的中断,执行中断中的程序。然后继续主函数,当计数到500时,进入TIMERA1_VECTOR中断,这时TAIV=2,执行case2后的程序。继续计数到2000时,进入TIMERA1_VECTOR中断,这时TAIV=4,执行case4后的程序
搜一下:MSP430的CCRx中断在连续计数模式下怎么产生中断的
住王虫草: 首先,如果你只是用连续计数模式,哪么CCTLx(比较捕获寄存器)根本可以不设置, 其次,CCR0的初值没有设置,中断只会在定时器溢出时才能发生. 然后,第二个中断,你是想用CCR1,CCR2吧,,也是因为你没设置初值,TAIV的值只会...
承德市15537783205: msp430定时器A工作在连续计数模式时,IO口中断就进不去了,请问高手为什么啊??
住王虫草: 这个IO有可能是复用口,你设置了timer的某个功能,IO的功能就受到 影响了. 具体得看你的单片机型号和timer的设置
承德市15537783205: msp430计时器递增模式的问题 - ?
住王虫草: 你这选择的是连续计数模式,连续计数模式必需在中断后将CCR0加上一个值,就好比重新赋值一样.
承德市15537783205: 为什么在连续模式下CCR0的值对中断的间隔没有影响(MSP430),求高手指教!! - ?
住王虫草: 连续模式中定时器从0计数到0FFFFh,然后再重新从0开始计数,如此循环;当定时器充0FFFFh变回0时,TAIFG中断标志位置位.上述过程与CCRx值无关吧.
承德市15537783205: MSP430单片机进入定时中断,此时CCR0是否已经开始计数了? - ?
住王虫草: 是的,CCR0是不停在计数的,不会因为进入中断而停止.
承德市15537783205: MSP430单片机定时器工作在捕获模式下,计数模式只能用连续计数模式? 而不能工作在增计数模式? - ?
住王虫草: 这个理解有点问题,430单片机定时器A有3个捕获比较寄存器CCR0,CCR1,CCR2..就以定时器A来举例,TImerA一共有两个中断向量,一个单独分配给CCR0,另一个作为公用的中断向量用于定时器和另外两个捕获比寄存器.CCR0具有最高的中断优先级,因为CCR0能用于定义增计数模式和增减计数模式的周期.CCR1和CCR2以及定时器共用另一个中断向量.捕获比较寄存器设置很灵活的,建议多看看430定时器模块的介绍,祝学习愉快!
承德市15537783205: msp430如何用一个定时器实现不同的定时输?msp430如何用 ?
住王虫草: 首先来说说ccr0为什么中断里面要加200,因为定时器工作在连续计数模式,也就是从0-65535.为了产生2kHZ的方波(具体是不是2k我没算你自己算算吧应该是SMCLK/400)必须每隔200个周期P1.1翻转一次也就是CCR0输出翻转.至于P1.2,P1.3和p1.1都是大同小异,其实P1.0应该还有一个比40HZ更低的方波你不信看看因为有这一条 case 10: P1OUT ^= 0x01; // Timer_A3 overflow
承德市15537783205: msp430 外部中断 - ?
住王虫草: 不管你使能与否,中断标志位在接收到中断信号的时候都会置位,只是如果没有使能的话,是不会进入到对应中断向量的中断处理函数的.换句话说就是,你在P1.4的中断函数里处理了P1其他端口的中断.
承德市15537783205: msp430如何让定时器计数器重新开始计数.使它重复不断的产生中断 - ?
住王虫草: 1、你的GIE没开,也许压根没产生过中断.2、也许你开GIE了.TI_CC_LED1在异或下能亮,说明你的LED1的控制位应该是0吧?既下拉点亮LED1,但你要知道0^0永远都是0,你的LED1永远也都是亮着的.3、你打算LED2闪烁,可你用或语句它只能保持一个状态(恰恰这个状态是1吧?LED2就这么灭着不亮),这里应该用异或才对.这个程序执行的步骤是这样的:第一次:k=0,k++后,k=1,结果红灯亮,k++.第二次:k=1,k++后,k=2,结果红灯继续亮,绿灯不亮(1|1=1,它怎么会闪呢?),k=0 第三次:k=0,k++后,k=1,结果红灯继续亮,k++ ……………… 因此,在你看来红灯就一直亮,绿灯从来没亮过.
承德市15537783205: MSP430的"中断"到底是什麽意思 while (!(UCA1IFG&UCTXIFG)) 有看没有懂啊 给个详细的说明谢谢阿 - ?
住王虫草: UCTXIFG是发送中断标志位 当发送缓冲器为空的时候该位被置位 while (!(UCA1IFG&UCTXIFG)) ;的意思就是 等待发送缓冲器的里面的数据发送完毕.