Allow M206 offsets to apply to z safe home move
This commit is contained in:
@@ -3327,6 +3327,9 @@
|
||||
|
||||
#define USER_DESC_3 "Standard"
|
||||
#define USER_GCODE_3 "M92E814\nM907E750\nM500"
|
||||
|
||||
#define USER_DESC_4 "Mosquito BMG-M"
|
||||
#define USER_GCODE_4 "M92E814\nM206X5Y15\nM907E750\nM500"
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@@ -1555,6 +1555,9 @@
|
||||
* numbers for those locations should be 0.
|
||||
*/
|
||||
#ifdef VALIDATE_MESH_TILT
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT , Z_SAFE_HOMING_Y_POINT };
|
||||
#endif
|
||||
auto d_from = []{ DEBUG_ECHOPGM("D from "); };
|
||||
auto normed = [&](const xy_pos_t &pos, const float &zadd) {
|
||||
return normal.x * pos.x + normal.y * pos.y + zadd;
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
#include "../../lcd/ultralcd.h"
|
||||
#if ENABLED(DWIN_CREALITY_LCD)
|
||||
#include "../../lcd/dwin/e3v2/dwin.h"
|
||||
#include "../../lcd/dwin/dwin.h"
|
||||
#endif
|
||||
|
||||
#if HAS_L64XX // set L6470 absolute position registers to counts
|
||||
@@ -118,15 +118,15 @@
|
||||
DEBUG_SECTION(log_G28, "home_z_safely", DEBUGGING(LEVELING));
|
||||
|
||||
// Disallow Z homing if X or Y homing is needed
|
||||
if (homing_needed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return;
|
||||
|
||||
if (axis_unhomed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return;
|
||||
sync_plan_position();
|
||||
|
||||
/**
|
||||
* Move the Z probe (or just the nozzle) to the safe homing point
|
||||
* (Z is already at the right height)
|
||||
*/
|
||||
destination.set(safe_homing_xy, current_position.z);
|
||||
|
||||
destination.set((xy_float_t){ Z_SAFE_HOMING_X_POINT + home_offset[X_AXIS], Z_SAFE_HOMING_Y_POINT + home_offset[Y_AXIS] }, current_position.z);
|
||||
|
||||
TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy);
|
||||
|
||||
@@ -192,6 +192,7 @@
|
||||
* X Home to the X endstop
|
||||
* Y Home to the Y endstop
|
||||
* Z Home to the Z endstop
|
||||
*
|
||||
*/
|
||||
void GcodeSuite::G28() {
|
||||
DEBUG_SECTION(log_G28, "G28", DEBUGGING(LEVELING));
|
||||
@@ -298,8 +299,8 @@ void GcodeSuite::G28() {
|
||||
#else // NOT DELTA
|
||||
|
||||
const bool homeZ = parser.seen('Z'),
|
||||
needX = homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(X_AXIS))),
|
||||
needY = homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(Y_AXIS))),
|
||||
needX = homeZ && TERN0(Z_SAFE_HOMING, axes_need_homing(_BV(X_AXIS))),
|
||||
needY = homeZ && TERN0(Z_SAFE_HOMING, axes_need_homing(_BV(Y_AXIS))),
|
||||
homeX = needX || parser.seen('X'), homeY = needY || parser.seen('Y'),
|
||||
home_all = homeX == homeY && homeX == homeZ, // All or None
|
||||
doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ;
|
||||
|
||||
@@ -41,6 +41,12 @@ void GcodeSuite::M206() {
|
||||
if (parser.seen(XYZ_CHAR(i)))
|
||||
set_home_offset((AxisEnum)i, parser.value_linear_units());
|
||||
|
||||
if (!parser.seen_any()) {
|
||||
SERIAL_ECHOLNPAIR("M206X : ", home_offset[X_AXIS]);
|
||||
SERIAL_ECHOLNPAIR("M206Y : ", home_offset[Y_AXIS]);
|
||||
SERIAL_ECHOLNPAIR("M206Z : ", home_offset[Z_AXIS]);
|
||||
}
|
||||
|
||||
#if ENABLED(MORGAN_SCARA)
|
||||
if (parser.seen('T')) set_home_offset(A_AXIS, parser.value_float()); // Theta
|
||||
if (parser.seen('P')) set_home_offset(B_AXIS, parser.value_float()); // Psi
|
||||
|
||||
@@ -78,10 +78,6 @@ extern xyz_pos_t cartes;
|
||||
#define XY_PROBE_FEEDRATE_MM_S PLANNER_XY_FEEDRATE()
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT };
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Feed rates are often configured with mm/m
|
||||
* but the planner and stepper like mm/s units.
|
||||
|
||||
Reference in New Issue
Block a user