我把init_protection()中的欠压保护init_uvp()给去掉,然后缓慢抬升电压,发现当抬升到输入10V左右(输出电压达到2V),DPWM就关闭了。
之后在寻找问题时发现,将init_protection()中的三条FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 给屏蔽了,电压可以继续抬升。
为了找出是哪个模拟错误,我先后把相关的模拟比较使能都关闭了,而FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1仍在,电压又无法抬升。
***********************************************************************
这是什么原因呢? 我这样调试是否有些欠妥?我关闭的模拟比较使能包括:
init_ocp(void)中的: // FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_E_EN = 1;
// FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_E_EN = 1;
// FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_E_EN = 1;
// FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_E_EN = 1;
//Dpwm0Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm0Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
//Dpwm0Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
//Dpwm0Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
//Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm1Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
//Dpwm1Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
//Dpwm1Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
//Dpwm2Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm2Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
//Dpwm2Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
//Dpwm2Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
//Dpwm3Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm3Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
//Dpwm3Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
//Dpwm3Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
void init_cbc(void)中的:
//FaultMuxRegs.DPWM0CLIM.bit.ACOMP_F_EN = 1;
// FaultMuxRegs.DPWM1CLIM.bit.ACOMP_F_EN = 1;
// FaultMuxRegs.DPWM2CLIM.bit.ACOMP_F_EN = 1;
// FaultMuxRegs.DPWM3CLIM.bit.ACOMP_F_EN = 1;
//Dpwm0Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;
//Dpwm1Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;
//Dpwm2Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;
//Dpwm3Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;
void init_ovp(void)中的:
//FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_B_EN = 1; //FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_B_EN = 1; //FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_B_EN = 1; //FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_B_EN = 1; //Dpwm0Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1; //Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1; //Dpwm2Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1; //Dpwm3Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
void init_dpwm(void)中的:
//FaultMuxRegs.DPWM0CLIM.bit.ANALOG_PCM_EN = 1; //FaultMuxRegs.DPWM1CLIM.bit.ANALOG_PCM_EN = 1; //FaultMuxRegs.DPWM2CLIM.bit.ANALOG_PCM_EN = 1; //FaultMuxRegs.DPWM3CLIM.bit.ANALOG_PCM_EN = 1;
inline void idle_state_handler(void)中的:
//FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_INT_EN = 1; //FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_INT_EN = 1;