diff --git a/datatypes.h b/datatypes.h index 074897e34..bc8f5c177 100644 --- a/datatypes.h +++ b/datatypes.h @@ -52,7 +52,9 @@ typedef enum { FAULT_CODE_OVER_VOLTAGE, FAULT_CODE_UNDER_VOLTAGE, FAULT_CODE_DRV8302, - FAULT_CODE_ABS_OVER_CURRENT + FAULT_CODE_ABS_OVER_CURRENT, + FAULT_CODE_OVER_TEMP_FET, + FAULT_CODE_OVER_TEMP_MOTOR } mc_fault_code; typedef enum { diff --git a/mcpwm.c b/mcpwm.c index ea740d9ab..ca3287980 100644 --- a/mcpwm.c +++ b/mcpwm.c @@ -534,6 +534,7 @@ static void update_override_limits(volatile mc_configuration *conf) { } else if (temp > conf->l_temp_fet_end) { conf->lo_current_min = 0.0; conf->lo_current_max = 0.0; + fault_stop(FAULT_CODE_OVER_TEMP_FET); } else { float maxc = fabsf(conf->l_current_max); if (fabsf(conf->l_current_min) > maxc) { @@ -719,6 +720,8 @@ const char* mcpwm_fault_to_string(mc_fault_code fault) { case FAULT_CODE_UNDER_VOLTAGE: return "FAULT_CODE_UNDER_VOLTAGE"; break; case FAULT_CODE_DRV8302: return "FAULT_CODE_DRV8302"; break; case FAULT_CODE_ABS_OVER_CURRENT: return "FAULT_CODE_ABS_OVER_CURRENT"; break; + case FAULT_CODE_OVER_TEMP_FET: return "FAULT_CODE_OVER_TEMP_FET"; break; + case FAULT_CODE_OVER_TEMP_MOTOR: return "FAULT_CODE_OVER_TEMP_MOTOR"; break; default: return "FAULT_UNKNOWN"; break; } }