From 410657b050c274391cfb1b41b215d5cfa78cea48 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 15 Nov 2016 14:10:28 -0600 Subject: [PATCH] Fix G30 with limits, print correct probe XY --- Marlin/Marlin_main.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 5473f5387..d1c23fe35 100755 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -4241,8 +4241,12 @@ inline void gcode_G28() { * S = Stows the probe if 1 (default=1) */ inline void gcode_G30() { - float X_probe_location = code_seen('X') ? code_value_axis_units(X_AXIS) : current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER; - float Y_probe_location = code_seen('Y') ? code_value_axis_units(Y_AXIS) : current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER; + float X_probe_location = code_seen('X') ? code_value_axis_units(X_AXIS) : current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER, + Y_probe_location = code_seen('Y') ? code_value_axis_units(Y_AXIS) : current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER; + + float pos[XYZ] = { X_probe_location, Y_probe_location, LOGICAL_Z_POSITION(0) }; + if (!position_is_reachable(pos, true)) return; + bool stow = code_seen('S') ? code_value_bool() : true; // Disable leveling so the planner won't mess with us @@ -4252,17 +4256,14 @@ inline void gcode_G28() { setup_for_endstop_or_probe_move(); - float measured_z = probe_pt(X_probe_location, - Y_probe_location, - stow, 1); + float measured_z = probe_pt(X_probe_location, Y_probe_location, stow, 1); SERIAL_PROTOCOLPGM("Bed X: "); - SERIAL_PROTOCOL(current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER + 0.0001); + SERIAL_PROTOCOL(X_probe_location + 0.0001); SERIAL_PROTOCOLPGM(" Y: "); - SERIAL_PROTOCOL(current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER + 0.0001); + SERIAL_PROTOCOL(Y_probe_location + 0.0001); SERIAL_PROTOCOLPGM(" Z: "); - SERIAL_PROTOCOL(measured_z + 0.0001); - SERIAL_EOL; + SERIAL_PROTOCOLLN(measured_z + 0.0001); clean_up_after_endstop_or_probe_move();