完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想用定时器1捕获方波,当捕获到上升沿或下降延时开定时器0延时输出。起到输出方波与被采集的方波存在相位差。但是现在经过测试,发现并不能达到效果。捕获中断进去后,定时器的CCR0能被赋值,然后定时器0中断也能进去,但是延时输出的效果没有。就像没有定时一样。TA0CCR0的赋值由time[]这个数组提供,不论给TA0CCR0赋多大的值,延时效果都是一样的。如果去掉捕获,单独测试定时器是可以的。
定时器配置如下: /*********************************************************************************/ void TA1_Init() { P2DIR &=~ BIT0; //CAPTURE P2SEL |= BIT0; TA1CCTL1 = CAP + CCIS_0 + CM_1 + SCS+CCIE; // Capture CCIxA, pos edge, interrupt enable. TA1CTL = TASSEL_2 + MC_1 + ID__1; // SMCLK, up mode. } void TA0_Init(void) { TA0CCTL0 &=~ CCIE; //比较功能0(定时计数)开启CCIFG位中断 TA0CTL = TACLR | TASSEL_2 | MC_1 | ID__1; //计数器清零,选择SMCLK作为时钟(16MHz),选用増计数模式 } #pragma vector=TIMER1_A1_VECTOR __interrupt void Timer1_A1 (void) { //_disable_interrupts(); TA1CCTL1 &= ~CCIFG; folg=~folg; if(folg) { if(yx==0) fb_L; //TA1CCTL1 &= ~CM_2; TA1CCTL1 |= CM_1; //捕获方式切换 } else { if(yx==0) fb_H; //TA1CCTL1 &= ~CM_1; TA1CCTL1 |= CM_2; //捕获方式切换 } if(yx!=0) { if(yx<179) { TA0CCR0=time[yx]; // //TA0R=0; //TA0CTL|=TAIE; TA0CCTL0 |= CCIE; //TR0=1; } else { TA0CCR0=time[180]; //TA0R=0; //TA0CTL|=TAIE; TA0CCTL0 |= CCIE; //TR0=1; } } //_enable_interrupts(); } #pragma vector=TIMER0_A0_VECTOR __interrupt void TimerA0(void) { //_disable_interrupts(); TA0CTL &= ~TAIFG; TA0CCTL0 &=~ CCIFG; TA0CCTL0 &=~ CCIE; if(folg) fb_L; else fb_H; //_enable_interrupts(); } /********************************************************/ |
|
相关推荐
1个回答
|
|
问题已经解决,是在重新打开CCR0中断前(TA0CCTL0 |= CCIE;) 没有清除中断标志位。原因是定时器0在程序运行时一直在计数,只要达到CCRO,中断标志就会置位。 |
|
|
|
只有小组成员才能发言,加入小组>>
3056个成员聚集在这个小组
加入小组2981 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3706 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2367 浏览 1 评论
4833 浏览 1 评论
2595 浏览 1 评论
1538浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3708浏览 2评论
2981浏览 1评论
1735浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 20:06 , Processed in 1.382861 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号