From 97c27525d47a843e0539109ef24937e003fffcce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 1 Jul 2023 11:52:23 +0000 Subject: [PATCH] power panic: re-use saved_extruder_relative_mode Change in memory: Flash: +8 bytes SRAM: 0 bytes --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 2 +- Firmware/power_panic.cpp | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) 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();