【原创】:关于42x0TA问题

KENLAA   2006-2-21 11:26 楼主
我用ta做pwm输出,设置如下:
void init_timer_a(void)
{
TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许
TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE
TACCR0 = 12000; //PWM的周期为1/12000
TACCTL1 = OUTMOD_7;//将CCRx设为比较模式,中断禁止,选择输出模式7,当TAR计数到0时,CCR1重载数据
TACCR1 = 1000; //将某值加载到CCR1
}

当TACCTL0=CCIE无效时,整个程序运行正常,有效时,程序会在此处跳出,中断运行。

_debugbreak:
00A61c 3041
_exit:
请问时怎么回事啊?
我还使用了bt、 ad、 p1口。

回复评论 (7)

为什么没有人回答我的问题啊?版主呢,我挺急的。
点赞  2006-2-22 08:41
用模式输出时候不需要中断的,删除就可以了。
改为
void init_timer_a(void)
{
TACTL = TASSEL1 +TACLR; //选择SMCLK为时钟,定时器清空
TACCR0 = 12000; //PWM的周期为1/12000
TACCTL1 = OUTMOD_7;//将CCRx设为比较模式,中断禁止,选择输出模式7,当TAR计数到0时,CCR1重载数据
TACCR1 = 1000; //将某值加载到CCR1
TACTL=MC_1;
}
点赞  2006-2-23 16:38

【灌水】

这样不行的,我要在中断中改变TACCR1的值,TACCR1的值是根据SD16中转换的值的来的,如果不中断的话我在哪里改变TACCR1中的值呢?
点赞  2006-2-23 16:45
中断程序对否?中断入口的TA,是写的TA0?TA1?
点赞  2006-2-23 17:01

【灌水】

当然是TA0了,TA1是不允许中断的。
点赞  2006-2-24 14:02
引用:

当然是TA0了,TA1是不允许中断的。
可能是中断向量的设置有误
点赞  2006-2-24 14:44
这个问题解决了,谢谢各位.还要问一个问题,我用PWM输出时,两路输出中的第二路有输出,第一路则没有输出,即P1.2无输出,P1.3有输出,我用TI的测试程序测试时两路都有输出,这是什么原因呢?TI的测试程序中只用了TA,我的程序中使用了,TA,BT,SD16,P1口和液晶驱动。
点赞  2006-2-27 13:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复