diff --git a/applications/app_ppm.c b/applications/app_ppm.c index 5aba5a8e..f71be2ff 100644 --- a/applications/app_ppm.c +++ b/applications/app_ppm.c @@ -333,6 +333,16 @@ static THD_FUNCTION(ppm_thread, arg) { } break; + case PPM_CTRL_TYPE_PID_POSITION: // make this an actual type. + if (fabsf(servo_val) < 0.001) { + pulses_without_power++; + } + + if (!(pulses_without_power < MIN_PULSES_WITHOUT_POWER && config.safe_start)) { + mc_interface_set_pid_pos(servo_val * 360); + } + break; + default: continue; } diff --git a/datatypes.h b/datatypes.h index d89cb27e..5957f88b 100644 --- a/datatypes.h +++ b/datatypes.h @@ -550,12 +550,13 @@ typedef enum { PPM_CTRL_TYPE_CURRENT, PPM_CTRL_TYPE_CURRENT_NOREV, PPM_CTRL_TYPE_CURRENT_NOREV_BRAKE, + PPM_CTRL_TYPE_CURRENT_BRAKE_REV_HYST, + PPM_CTRL_TYPE_CURRENT_SMART_REV, PPM_CTRL_TYPE_DUTY, PPM_CTRL_TYPE_DUTY_NOREV, PPM_CTRL_TYPE_PID, PPM_CTRL_TYPE_PID_NOREV, - PPM_CTRL_TYPE_CURRENT_BRAKE_REV_HYST, - PPM_CTRL_TYPE_CURRENT_SMART_REV + PPM_CTRL_TYPE_PID_POSITION } ppm_control_type; typedef struct {