From 3e4b3e97eb6e6b97abea30ee353e2d3310920082 Mon Sep 17 00:00:00 2001 From: Richard Bowman Date: Wed, 22 Feb 2023 12:17:45 +0000 Subject: [PATCH] Store current position in EEPROM Previously, we held our position in EEPROM so it persisted even across power cycles. This seems to have been lost, so I'm restoring it. --- src/modules/stage/stage.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/stage/stage.cpp b/src/modules/stage/stage.cpp index c228c86..fb84138 100644 --- a/src/modules/stage/stage.cpp +++ b/src/modules/stage/stage.cpp @@ -12,12 +12,13 @@ // The array below has 3 stepper objects, for X,Y,Z respectively const uint8_t n_motors = STAGE_N_MOTORS; +const uint8_t stage_position_eeprom = 0; long min_step_delay = -1; -const uint8_t min_step_delay_eeprom = sizeof(long) * n_motors; +const uint8_t min_step_delay_eeprom = stage_position_eeprom + sizeof(long) * n_motors; long ramp_time = -1; -const uint8_t ramp_time_eeprom = sizeof(long) * (n_motors + 1); -const uint8_t axis_max_eeprom = sizeof(long) * (n_motors + 2); -const uint8_t non_blocking_moves_eeprom = sizeof(long) * (n_motors + 3); +const uint8_t ramp_time_eeprom = min_step_delay_eeprom + sizeof(long); +const uint8_t axis_max_eeprom = ramp_time_eeprom + sizeof(long); +const uint8_t non_blocking_moves_eeprom = axis_max_eeprom + sizeof(long); Stepper *motors[n_motors]; signed long current_pos[n_motors]; long steps_remaining[n_motors]; @@ -181,6 +182,7 @@ void stage_loop() } } } + EEPROM.put(0, current_pos); // ensure our position is held in EEPROM so it persists if (!stage_moving && notify_on_stop) {