diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 58d5aacd..0af6c973 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7108,7 +7108,8 @@ void uvlo_() planner_abort_hard(); // Store the current extruder position. - eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E), st_get_position_mm(E_AXIS)); + // eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E), st_get_position_mm(E_AXIS)); + 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[3]?0:1); // Clean the input command queue. @@ -7259,16 +7260,6 @@ void recover_print(uint8_t automatic) { enquecommand_P(PSTR("G1 E5 F120")); //Extrude some filament to stabilize pessure } enquecommand_P(PSTR("G1 E" STRINGIFY(-DEFAULT_RETRACTION)" F480")); - if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS)) - { - float extruder_abs_pos = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E)); - enquecommand_P(PSTR("M82")); //E axis abslute mode -// current_position[E_AXIS] = extruder_abs_pos; -// plan_set_e_position(extruder_abs_pos); - sprintf_P(cmd, PSTR("G92 E")); - dtostrf(extruder_abs_pos, 6, 3, cmd + strlen(cmd)); - enquecommand(cmd); - } // Mark the power panic status as inactive. eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0); @@ -7389,9 +7380,9 @@ void restore_print_from_eeprom() { uint32_t position = eeprom_read_dword((uint32_t*)(EEPROM_FILE_POSITION)); SERIAL_ECHOPGM("Position read from eeprom:"); MYSERIAL.println(position); - + // E axis relative mode. - enquecommand_P(PSTR("M83")); + enquecommand_P(PSTR("M83")); // Move to the XY print position in logical coordinates, where the print has been killed. strcpy_P(cmd, PSTR("G1 X")); strcat(cmd, ftostr32(eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0)))); strcat_P(cmd, PSTR(" Y")); strcat(cmd, ftostr32(eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4)))); @@ -7405,6 +7396,16 @@ void restore_print_from_eeprom() { // Set the feedrate saved at the power panic. sprintf_P(cmd, PSTR("G1 F%d"), feedrate_rec); enquecommand(cmd); + if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS)) + { + float extruder_abs_pos = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E)); + enquecommand_P(PSTR("M82")); //E axis abslute mode + // current_position[E_AXIS] = extruder_abs_pos; + // plan_set_e_position(extruder_abs_pos); + sprintf_P(cmd, PSTR("G92 E")); + dtostrf(extruder_abs_pos, 6, 3, cmd + strlen(cmd)); + enquecommand(cmd); + } // Set the fan speed saved at the power panic. strcpy_P(cmd, PSTR("M106 S")); strcat(cmd, itostr3(int(fan_speed_rec)));