|
|
@@ -1415,8 +1415,8 @@ static bool mc_can_stop_foc(void) {
|
|
|
if (motor.mode == CTRL_MODE_CURRENT) {
|
|
|
return false;
|
|
|
}
|
|
|
- if (motor.mode == CTRL_MODE_SPD && motor.s_target_speed != MAX_S16) {
|
|
|
- return false;
|
|
|
+ if (!motor.b_cruise && !motor.b_epm && motor.mode == CTRL_MODE_SPD && (motor.s_target_speed == MAX_S16 || motor.s_target_speed == 0)) {
|
|
|
+ return true;
|
|
|
}
|
|
|
if (mc_throttle_released() && PMSM_FOC_GetSpeed() == 0.0f) {
|
|
|
if (!PMSM_FOC_AutoHoldding() && motor.epm_dir == EPM_Dir_None) {
|
|
|
@@ -1435,7 +1435,7 @@ static bool mc_can_restart_foc(void) {
|
|
|
if (!foc_observer_is_encoder() && !foc_observer_sensorless_stable()){
|
|
|
can_start = false;
|
|
|
}
|
|
|
- if (motor.mode == CTRL_MODE_SPD && motor.s_target_speed != MAX_S16) {
|
|
|
+ if (!motor.b_cruise && !motor.b_epm && motor.mode == CTRL_MODE_SPD && (motor.s_target_speed != MAX_S16 && motor.s_target_speed != 0)) {
|
|
|
can_start = true;
|
|
|
}
|
|
|
return can_start;
|