我用的是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
请高手指教,非常感谢!!!
没有不占用资源的方案了吗?
系统需要一个5K到2MHZ可调的方波
作为模拟板滤波的驱动。
555,不知道怎么办好了。
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
楼上的说的对,你设置好ta的内容,用扑获比较模块中的pwm输出,把相应的i/o口设置为特殊功能口,不用cpu参与,直接输出。
我试了,用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
}这样写不对吗?