我的项目需要让msp430g2231输出2路15KHZ的PWM信号,其中一路相位固定,另一路相位可调,改变相位是通过更新CCR1来实现。调试中当更新CCR1后经常出现PWM信号错误地多移相了180度。敬盼赐教。代码附后:
void main(void)
{ WDTCTL = WDTPW +WDTHOLD;
for (i = 0; i < 0xfffe; i++);
P1OUT = 0x00;
j = 0;
Set_DCO(DELTA_16MHZ);
CAL_DATA[j++] = DCOCTL;
CAL_DATA[j++] = BCSCTL1;
P1SEL |= 0x16;
P1DIR |= 0x16;
CCTL0 = OUTMOD_4;
CCTL1 = OUTMOD_4 ;
CCR0 = 512-1;
CCR1 = 398;
TACTL = TASSEL_2 + MC_1 ;
while(1)
{ for(j=0;j<400;j++)
{
do{if(TACCTL0&&CCIFG)break;} while(1);
setbit(TACCTL0,CCIFG);
CCR1 = j;
Delay(50000);
}
for(j=400;j>100;j--)
{
do{if(TACCTL0&&CCIFG)break;} while(1);
setbit(TACCTL0,CCIFG);
CCR1 = j;
Delay(50000);
}
}
}
Set_DCO()引用TI 例程