【求助】用TA能产生2MHZ的方波吗?急,在线等!!!

fengyiqishi   2006-7-11 13:49 楼主
我用的是MSPF1611
MCLK=7.3728MHZ现在想产生一个最高频率为2M的方波,程序我是这样写的
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop WDT
P3DIR|=0x04;
P3OUT|=0x04;

CCR0 = 4; // PWM Period
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 2; // CCR1 PWM duty cycle
P1DIR |= 0x40; // P1.6 output
P1SEL |= 0x40; // P1.6 TA2 otion
TACTL = TACLR | TASSEL_2;
TACTL |= MC0; // Start Timer_A in up mode
// Start Timer_A in up mode

for (;;)
{
_BIS_SR(LPM3_bits); // Enter LPM3
_NOP(); // Required only for C-spy
}
}
为什么产生不了方波呢?
我选ACLK做时钟源就能产生方波
这是为什么呢?
这样占CPU的资源吗?
我曾试过用中断,结果程序根本没法正常运行5555555555555
请高手指教,非常感谢!!!

回复评论 (5)

是的要占CPU的资源,一般中断需十几个周期.
点赞  2006-7-11 15:17
没有不占用资源的方案了吗?
系统需要一个5K到2MHZ可调的方波
作为模拟板滤波的驱动。
555,不知道怎么办好了。
点赞  2006-7-11 15:56

ok

PRODUCE PWM DO NOT NEED CPU INTERRUPT,
WHEN IN LPM3 ,THE OSC IS OFF DEEPLY,SO ...
THAT'S A GOOD JOB TO CREATE 8 CHANNEL PWM WITH 8MHZ OSC
点赞  2006-7-12 12:47
楼上的说的对,你设置好ta的内容,用扑获比较模块中的pwm输出,把相应的i/o口设置为特殊功能口,不用cpu参与,直接输出。
点赞  2006-7-12 14:58
我试了,用32。768K的晶振能产生方波,用8M的就不行,为什么呢?
void set_TA()
{
CCR0 = 4; // PWM 周期
CCTL1 = OUTMOD_4; // PWM toggle/reset
CCR1 = 2; // ccr1 Pwm cycle
P1DIR |= 0x40; // p1.6 output mode
P1SEL |= 0x40; // p1.6 option select
TACTL = TACLR | TASSEL_2 | MC_1; // SMACLK, clear TAR, up mode
}这样写不对吗?
点赞  2006-7-14 16:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复