Skip to content

Commit

Permalink
Don't apply hotend_offset.z to Z soft endstops (MarlinFirmware#20675)
Browse files Browse the repository at this point in the history
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
  • Loading branch information
zeleps and thinkyhead committed Apr 29, 2021
1 parent 27ad5f1 commit 7e7319d
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
5 changes: 5 additions & 0 deletions Marlin/src/feature/solenoid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ static void set_solenoid(const uint8_t num, const bool active) {
#endif
default: SERIAL_ECHO_MSG(STR_INVALID_SOLENOID); break;
}

#if ENABLED(PARKING_EXTRUDER)
if (!active && active_extruder == num) // If active extruder's solenoid is disabled, carriage is considered parked
parking_extruder_set_parked(true);
#endif
}

void enable_solenoid(const uint8_t num) { set_solenoid(num, true); }
Expand Down
15 changes: 8 additions & 7 deletions Marlin/src/module/motion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -595,16 +595,17 @@ void restore_feedrate_and_scaling() {
// Software endstops are relative to the tool 0 workspace, so
// the movement limits must be shifted by the tool offset to
// retain the same physical limit when other tools are selected.
if (old_tool_index != new_tool_index) {
const float offs = hotend_offset[new_tool_index][axis] - hotend_offset[old_tool_index][axis];
soft_endstop.min[axis] += offs;
soft_endstop.max[axis] += offs;
}
else {
const float offs = hotend_offset[active_extruder][axis];

if (new_tool_index == old_tool_index || axis == Z_AXIS) { // The Z axis is "special" and shouldn't be modified
const float offs = (axis == Z_AXIS) ? 0 : hotend_offset[active_extruder][axis];
soft_endstop.min[axis] = base_min_pos(axis) + offs;
soft_endstop.max[axis] = base_max_pos(axis) + offs;
}
else {
const float diff = hotend_offset[new_tool_index][axis] - hotend_offset[old_tool_index][axis];
soft_endstop.min[axis] += diff;
soft_endstop.max[axis] += diff;
}

#else

Expand Down
4 changes: 1 addition & 3 deletions Marlin/src/module/tool_change.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,6 @@ inline void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_a
return true;
}

void parking_extruder_set_parked() { extruder_parked = true; }

inline void parking_extruder_tool_change(const uint8_t new_tool, bool no_move) {
if (!no_move) {

Expand Down Expand Up @@ -378,7 +376,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_a
planner.synchronize(); // Always sync the final move

DEBUG_POS("PE Tool-Change done.", current_position);
extruder_parked = false;
parking_extruder_set_parked(false);
}
else if (do_solenoid_activation) { // && nomove == true
// Deactivate current extruder solenoid
Expand Down
3 changes: 2 additions & 1 deletion Marlin/src/module/tool_change.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,9 @@

void pe_solenoid_init();

extern bool extruder_parked;
inline void parking_extruder_set_parked(const bool parked) { extruder_parked = parked; }
bool parking_extruder_unpark_after_homing(const uint8_t final_tool, bool homed_towards_final_tool);
void parking_extruder_set_parked();

#elif ENABLED(MAGNETIC_PARKING_EXTRUDER)

Expand Down

0 comments on commit 7e7319d

Please sign in to comment.