/*配置计时器*/
TA1CCR0 = 800;
P3DIR |=(PWM_buck + SD_Buck);
P3SEL 和=~PWM_buck;
// SMCLK /1 - CCR0 CLR
TA1CTL = tassel_2 + ID_1 + MC_1 + TCLR + TAIE;//除2主时钟为16MHz/2=8MHz
//TA1CTL = tassel_2 + ID_0 + MC_1 + TCLR + TAIE;//相同问题为16 MHz/1 = 16MHz
//
挥发 uint16反计时器=0;
#pragma vector=Timer1_A1_vector //28优先级
中断无效时间1_A1 (无效)
{
IF (TA1IV 和 TA1IV_TAIFG)
{
反计时器++;
如果(MPPT_CORRECTION < 0 || TIMER _Buck_state == STOP_IN_PROGRESS)// Decrease
{
IF (TA1CCR1>死时间)
{
TA1CCR1-;
MPPT_CORRECTION ++;
}
否则
{
MPPT_CORRECTION = 0;
如果(timer_buck_state == stop_in_progress)// stop 完成计时器 CCTL1
{
TA1CCTL1 = OUTMOD_0;
P3SEL 和=~PWM_buck;
P3OUT 和=~PWM_buck;
MPPT_CORRECTION=0;
//停用_降压;
Timer_Bucb_state =停止;
}
}
}
否则,如果(MPPT_CORRECTION > 0)//增加
{
IF (TA1CCR1<(频率死机时间))
{
TA1CCR1+;
MPPT_CORRECTION --;
}
否则 MPPT_CORRECTION = 0;
}
否则
{
}//无事可做,MISRA
}
TA1CCTL0和=~CCIFG;
}
当 aprx。 TA1CCR1 = 150 I TIMER _Buck_state = STOP_IN_PROGRESS ,并应非常中断计时器以将 最小占空比减至死时间(15个小数位值) 在这段时间内,很容易重现1个全周期+小负荷周期 ,这会导致我在英国的 PWM 出现严重问题。
1.我在这里正确更新了占空比?
2.为什么会出现此问题?
aign 示波器调查。
使用 TA1CTL = tassel_2 + ID_1 + MC_1 + TCLR + TAIE;
使用 TA1CTL = tassel_2 + ID_0 + MC_1 + TCLR + TAIE;
谢谢

