diff --git a/firmware/src/controller/homing_planner.c b/firmware/src/controller/homing_planner.c index 611108c1..a9f12cf3 100644 --- a/firmware/src/controller/homing_planner.c +++ b/firmware/src/controller/homing_planner.c @@ -58,7 +58,7 @@ TM_RAMFUNC bool homing_planner_evaluate() if (state.stay_t_current >= config.max_stay_t) { // First time the endstop is considered found, reset origins and setpoints - frame_user_to_position_sensor_set_offset(observer_pos); + frame_user_to_position_sensor_set_offset(position_observer_get_pos_estimate()); controller_set_pos_setpoint_user_frame(0); controller_set_vel_setpoint_user_frame(0); } diff --git a/studio/Python/tests/test_nvm.py b/studio/Python/tests/test_nvm.py index b0fd45a9..3c3dc8a4 100644 --- a/studio/Python/tests/test_nvm.py +++ b/studio/Python/tests/test_nvm.py @@ -112,6 +112,34 @@ def test_c_parameter_persistence(self): self.erase_config() time.sleep(0.2) + def test_c2_homing_parameter_persistence(self): + """ + Test persisting homing parameters across config saves. + WARNING: This will perform one NVRAM write and two erase cycles. + """ + self.check_state(0) + self.erase_config() + time.sleep(0.2) + + self.tm.homing.velocity = 5000 + self.tm.homing.max_homing_t = 10.0 + self.tm.homing.retract_dist = 2000 + self.tm.homing.stall_detect.velocity = 3000 + self.tm.homing.stall_detect.delta_pos = 500 + self.tm.homing.stall_detect.t = 2.0 + self.save_config() + + time.sleep(0.2) + self.reset_and_wait() + self.assertAlmostEqual(self.tm.homing.velocity, 5000 * tick / s, delta=1 * tick / s) + self.assertAlmostEqual(self.tm.homing.max_homing_t, 10.0 * s, delta=0.01 * s) + self.assertAlmostEqual(self.tm.homing.retract_dist, 2000 * tick, delta=1 * tick) + self.assertAlmostEqual(self.tm.homing.stall_detect.velocity, 3000 * tick / s, delta=1 * tick / s) + self.assertAlmostEqual(self.tm.homing.stall_detect.delta_pos, 500 * tick, delta=1 * tick) + self.assertAlmostEqual(self.tm.homing.stall_detect.t, 2.0 * s, delta=0.01 * s) + self.erase_config() + time.sleep(0.2) + def test_d_position_control_w_loaded_config(self): """ Test position control after saving and loading config.