diff --git a/drivers/stepper/step_dir/step_dir_stepper_common.c b/drivers/stepper/step_dir/step_dir_stepper_common.c index 9955b140867..86be8d5d3c3 100644 --- a/drivers/stepper/step_dir/step_dir_stepper_common.c +++ b/drivers/stepper/step_dir/step_dir_stepper_common.c @@ -44,6 +44,12 @@ static inline int step_dir_stepper_perform_step(const struct device *dev) } } + if (data->direction == STEPPER_DIRECTION_POSITIVE) { + data->actual_position++; + } else { + data->actual_position--; + } + return 0; } @@ -105,12 +111,15 @@ static void stepper_work_event_handler(struct k_work *work) static void update_remaining_steps(struct step_dir_stepper_common_data *data) { + const struct step_dir_stepper_common_config *config = data->dev->config; + if (data->step_count > 0) { data->step_count--; } else if (data->step_count < 0) { data->step_count++; } else { stepper_trigger_callback(data->dev, STEPPER_EVENT_STEPS_COMPLETED); + config->timing_source->stop(data->dev); } }