int main(void)
{
CSL_init();
Timer0_PWM(0xFFFF,0x0000,0x0000);
while(1)
{
OUTPUT_PWM = GetValue(); //计算过程返回值,此处略
while(!(TA0CTL & TAIFG)); //判断计时器到时
Timer0_PWM(0xFFFF,OUTPUT_PWM,0x0000); //更新输出结果
}
}
----------------------------------------------------------------------------------------------------------
void Timer0_PWM(unsigned int PWM,unsigned int PWM1,unsigned int PWM2)
{
TA0CCR0 = PWM;
//TA0CCTL1 = CM_0 + CCIS_0 + OUTMOD_6;
//TA0CCR1 = PWM2;
TA0CCTL2 = CM_0 + CCIS_0 + OUTMOD_6;
TA0CCR2 = PWM1;
TA0CTL = TASSEL_2 + ID_0 + MC_1 + TAIE;
}
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
1、我用通过计算的结果,更新PWM,以期实现输出随着输入值的变化而变化,但是输出会出现跳变。
2、稳定的输出,最长可持续48小时
3、稳定的输出,最短可持续12小时
4、信号源、计算过程均没有问题
我猜测是因为不断刷新PWM得志造成的。
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
问题一:TIMER_A的PWM是不是只用于定值输出?
问题二:不断的刷新PWM是不是会对输出的准确造成影响?
问题三:我上述代码有没有问题?
问题四:如果要用PWM来实现不断变化的输出,是不是有更好的办法,能否介绍一下?
问题五:如果我做精度比较高的信号输出,用Timer_A的PWM来实现,是否合适?
问题六:用MSP430G2553的TIMER_A进行PWM输出,能实现多高的精度?