Implement NO_MOTION_BEFORE_HOMING option
This commit is contained in:
parent
965b0ab53e
commit
90af1fe5ee
|
@ -760,6 +760,8 @@
|
||||||
|
|
||||||
// @section homing
|
// @section homing
|
||||||
|
|
||||||
|
//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed
|
||||||
|
|
||||||
//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
|
//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
|
||||||
// Be sure you have this distance over your Z_MAX_POS in case.
|
// Be sure you have this distance over your Z_MAX_POS in case.
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
* G42: Move X & Y axes to mesh coordinates (I & J)
|
* G42: Move X & Y axes to mesh coordinates (I & J)
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::G42() {
|
void GcodeSuite::G42() {
|
||||||
if (IsRunning()) {
|
if (MOTION_CONDITIONS) {
|
||||||
const bool hasI = parser.seenval('I');
|
const bool hasI = parser.seenval('I');
|
||||||
const int8_t ix = hasI ? parser.value_int() : 0;
|
const int8_t ix = hasI ? parser.value_int() : 0;
|
||||||
const bool hasJ = parser.seenval('J');
|
const bool hasJ = parser.seenval('J');
|
||||||
|
|
|
@ -41,7 +41,7 @@ void GcodeSuite::G0_G1(
|
||||||
bool fast_move/*=false*/
|
bool fast_move/*=false*/
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
if (IsRunning()) {
|
if (MOTION_CONDITIONS) {
|
||||||
get_destination_from_command(); // For X Y Z E F
|
get_destination_from_command(); // For X Y Z E F
|
||||||
|
|
||||||
#if ENABLED(FWRETRACT)
|
#if ENABLED(FWRETRACT)
|
||||||
|
|
|
@ -211,7 +211,7 @@ void plan_arc(
|
||||||
* G3 X20 Y12 R14 ; CCW circle with r=14 ending at X20 Y12
|
* G3 X20 Y12 R14 ; CCW circle with r=14 ending at X20 Y12
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::G2_G3(const bool clockwise) {
|
void GcodeSuite::G2_G3(const bool clockwise) {
|
||||||
if (IsRunning()) {
|
if (MOTION_CONDITIONS) {
|
||||||
|
|
||||||
#if ENABLED(SF_ARC_FIX)
|
#if ENABLED(SF_ARC_FIX)
|
||||||
const bool relative_mode_backup = relative_mode;
|
const bool relative_mode_backup = relative_mode;
|
||||||
|
|
|
@ -50,7 +50,7 @@ void plan_cubic_move(const float offset[4]) {
|
||||||
* G5: Cubic B-spline
|
* G5: Cubic B-spline
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::G5() {
|
void GcodeSuite::G5() {
|
||||||
if (IsRunning()) {
|
if (MOTION_CONDITIONS) {
|
||||||
|
|
||||||
#if ENABLED(CNC_WORKSPACE_PLANES)
|
#if ENABLED(CNC_WORKSPACE_PLANES)
|
||||||
if (workspace_plane != PLANE_XY) {
|
if (workspace_plane != PLANE_XY) {
|
||||||
|
|
|
@ -2928,19 +2928,19 @@ void kill_screen(const char* lcd_msg) {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC || ENABLED(NO_MOTION_BEFORE_HOMING)
|
||||||
#define _MOVE_XYZ_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
#define _MOVE_XYZ_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
||||||
#if ENABLED(DELTA)
|
|
||||||
#define _MOVE_XY_ALLOWED (current_position[Z_AXIS] <= delta_clip_start_height)
|
|
||||||
void lcd_lower_z_to_clip_height() {
|
|
||||||
line_to_z(delta_clip_start_height);
|
|
||||||
lcd_synchronize();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#define _MOVE_XY_ALLOWED true
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#define _MOVE_XYZ_ALLOWED true
|
#define _MOVE_XYZ_ALLOWED true
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DELTA)
|
||||||
|
#define _MOVE_XY_ALLOWED (current_position[Z_AXIS] <= delta_clip_start_height)
|
||||||
|
void lcd_lower_z_to_clip_height() {
|
||||||
|
line_to_z(delta_clip_start_height);
|
||||||
|
lcd_synchronize();
|
||||||
|
}
|
||||||
|
#else
|
||||||
#define _MOVE_XY_ALLOWED true
|
#define _MOVE_XY_ALLOWED true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
#include "../feature/bedlevel/bedlevel.h"
|
#include "../feature/bedlevel/bedlevel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if NEED_UNHOMED_ERR && ENABLED(ULTRA_LCD)
|
#if HAS_AXIS_UNHOMED_ERR && ENABLED(ULTRA_LCD)
|
||||||
#include "../lcd/ultralcd.h"
|
#include "../lcd/ultralcd.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -820,7 +820,7 @@ void prepare_move_to_destination() {
|
||||||
set_current_to_destination();
|
set_current_to_destination();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NEED_UNHOMED_ERR
|
#if HAS_AXIS_UNHOMED_ERR
|
||||||
|
|
||||||
bool axis_unhomed_error(const bool x/*=true*/, const bool y/*=true*/, const bool z/*=true*/) {
|
bool axis_unhomed_error(const bool x/*=true*/, const bool y/*=true*/, const bool z/*=true*/) {
|
||||||
#if ENABLED(HOME_AFTER_DEACTIVATE)
|
#if ENABLED(HOME_AFTER_DEACTIVATE)
|
||||||
|
@ -848,7 +848,7 @@ void prepare_move_to_destination() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // HAS_AXIS_UNHOMED_ERR
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The homing feedrate may vary
|
* The homing feedrate may vary
|
||||||
|
|
|
@ -167,12 +167,26 @@ void clean_up_after_endstop_or_probe_move();
|
||||||
// Homing
|
// Homing
|
||||||
//
|
//
|
||||||
|
|
||||||
#define NEED_UNHOMED_ERR (HAS_PROBING_PROCEDURE || HOTENDS > 1 || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) || ENABLED(NOZZLE_CLEAN_FEATURE) || ENABLED(NOZZLE_PARK_FEATURE) || ENABLED(DELTA_AUTO_CALIBRATION))
|
#define HAS_AXIS_UNHOMED_ERR ( \
|
||||||
|
ENABLED(Z_PROBE_ALLEN_KEY) \
|
||||||
|
|| ENABLED(Z_PROBE_SLED) \
|
||||||
|
|| HAS_PROBING_PROCEDURE \
|
||||||
|
|| HOTENDS > 1 \
|
||||||
|
|| ENABLED(NOZZLE_CLEAN_FEATURE) \
|
||||||
|
|| ENABLED(NOZZLE_PARK_FEATURE) \
|
||||||
|
|| (ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(HOME_BEFORE_FILAMENT_CHANGE)) \
|
||||||
|
) || ENABLED(NO_MOTION_BEFORE_HOMING)
|
||||||
|
|
||||||
#if NEED_UNHOMED_ERR
|
#if HAS_AXIS_UNHOMED_ERR
|
||||||
bool axis_unhomed_error(const bool x=true, const bool y=true, const bool z=true);
|
bool axis_unhomed_error(const bool x=true, const bool y=true, const bool z=true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(NO_MOTION_BEFORE_HOMING)
|
||||||
|
#define MOTION_CONDITIONS (IsRunning() && !axis_unhomed_error())
|
||||||
|
#else
|
||||||
|
#define MOTION_CONDITIONS IsRunning()
|
||||||
|
#endif
|
||||||
|
|
||||||
void set_axis_is_at_home(const AxisEnum axis);
|
void set_axis_is_at_home(const AxisEnum axis);
|
||||||
|
|
||||||
void homeaxis(const AxisEnum axis);
|
void homeaxis(const AxisEnum axis);
|
||||||
|
|
Loading…
Reference in a new issue