diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 412e41946..72e2d5e17 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -305,6 +305,7 @@ extern uint8_t saved_printing_type; extern uint16_t saved_extruder_temperature; //!< Active extruder temperature extern uint8_t saved_bed_temperature; //!< Bed temperature +extern bool saved_extruder_relative_mode; extern uint8_t saved_fan_speed; //!< Print fan speed, ranges from 0 to 255 extern uint16_t saved_feedrate2; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c3ccfc9ee..60fe27e0e 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -316,7 +316,7 @@ uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float) static int saved_feedmultiply2 = 0; uint16_t saved_extruder_temperature; //!< Active extruder temperature uint8_t saved_bed_temperature; //!< Bed temperature -static bool saved_extruder_relative_mode = false; +bool saved_extruder_relative_mode; uint8_t saved_fan_speed = 0; //!< Print fan speed //! @} diff --git a/Firmware/power_panic.cpp b/Firmware/power_panic.cpp index 4bcc6f416..df5b8e475 100644 --- a/Firmware/power_panic.cpp +++ b/Firmware/power_panic.cpp @@ -64,13 +64,14 @@ void uvlo_() { tmc2130_set_current_r(E_AXIS, 20); #endif //TMC2130 - // Stop all heaters if (!sd_print_saved_in_ram) { saved_bed_temperature = target_temperature_bed; saved_extruder_temperature = target_temperature[active_extruder]; + saved_extruder_relative_mode = axis_relative_modes & E_AXIS_MASK; } + // Stop all heaters setTargetHotend(0); setTargetBed(0); @@ -99,7 +100,7 @@ void uvlo_() { // Store the print E position before we lose track eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E), current_position[E_AXIS]); - eeprom_update_byte((uint8_t*)EEPROM_UVLO_E_ABS, (axis_relative_modes & E_AXIS_MASK)?0:1); + eeprom_update_byte((uint8_t*)EEPROM_UVLO_E_ABS, !saved_extruder_relative_mode); // Clean the input command queue, inhibit serial processing using saved_printing cmdqueue_reset();