Hi,
on example, if Brake is enabled and brakingMode == HARDSWITCH_BRAKE_MODE the following codes is executed, it TURN OFF / DISABLE both NFET, I am not sure if this act like braking ?
static inline void HAL_exitBrakeResetPWM(HAL_MTR_Handle handle) { HAL_MTR_Obj *obj = (HAL_MTR_Obj *)handle; uint16_t cnt; for(cnt=0; cnt<3; cnt++) { // setup the Dead-Band Generator Control Register (DBCTL) EPWM_setDeadBandDelayMode(obj->pwmHandle[cnt], EPWM_DB_RED, true); EPWM_setDeadBandDelayMode(obj->pwmHandle[cnt], EPWM_DB_FED, true); // setup the Action-qualifier Continuous Software Force Register (AQCSFRC) EPWM_setActionQualifierContSWForceAction(obj->pwmHandle[cnt], EPWM_AQ_OUTPUT_A, EPWM_AQ_SW_DISABLED); // setup the Action-qualifier Continuous Software Force Register (AQCSFRC) EPWM_setActionQualifierContSWForceAction(obj->pwmHandle[cnt], EPWM_AQ_OUTPUT_B, EPWM_AQ_SW_DISABLED); } obj->flagEnablePWM = false; return; }
Compare to Yanming's posted 2 year ago, it's TURN ON low side NFET only, energy trap inside MOTOR, what's 2 methods different ?
static inline void HAL_enableBreakPwm(HAL_Handle handle) { HAL_Obj *obj = (HAL_Obj *)handle; // Force high side off, low side on PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Clear); PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_1], PWM_ActionQualContSWForce_Set); PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Clear); PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_2], PWM_ActionQualContSWForce_Set); PWM_setActionQualContSWForce_PwmA(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Clear); PWM_setActionQualContSWForce_PwmB(obj->pwmHandle[PWM_Number_3], PWM_ActionQualContSWForce_Set); return; } // end of HAL_enableBreakPwm() function
Danny