Hi RONG,the test code is below:
#pragma interrupt saveall
void PWMFAULT_ISR(void)
{
PWMA_FSTS0 |= PWM_FSTS0_FFLAG2;
if(PWMfaultflag==0)
{
mSBStat(OFF);
PWMfaultflag=1;
}
//PWMA_FCTRL0 &= ~(4); //disable fault interrupt
//PWMA_FSTS0 |= PWM_FSTS0_FFLAG2;
//PWMB_FSTS0 |= PWM_FSTS0_FFLAG2;
}
/////////////////////////////
if(PWMfaultflag==1){
bDCDC_OnOff=1;
ui16VsbOVCnt++;
if(ui16VsbOVCnt>=3000)
{
ui16VsbOVCnt=0;
PWMfaultflag=0;
mSBStat(ON);
//PESL(PWMA, PWM_CLEAR_FAULTCH0_FLAG, PWM_FAULT2);
//PESL(PWMB, PWM_CLEAR_FAULTCH0_FLAG, PWM_FAULT2);
//PWMA_FSTS0 |= PWM_FSTS0_FFLAG2;
//PWMB_FSTS0 |= PWM_FSTS0_FFLAG2;
//PWMA_FCTRL0 |= 4;
bDCDC_OnOff=0;
}
}
I put GPIOB6(CMPB positive input) with 3.3v and this means CMPB is activated a logic 1 and THERE is always a PWMA_FAULT.The PWMFAULT_ISR can only execute 2 times.Then I put GPIOB6(CMPB positive input) with 0v and The PWMFAULT_ISR can execute again.