Skip to content

Commit

Permalink
🩹 Misc. extra axis updates
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Feb 9, 2023
1 parent 88de522 commit 23e2cb0
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 30 deletions.
12 changes: 6 additions & 6 deletions Marlin/src/inc/Conditionals_post.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,22 +190,22 @@
#define XY_CENTER { X_CENTER, Y_CENTER }
#endif
#if HAS_I_AXIS
#define I_CENTER TERN(BED_CENTER_AT_0_0, 0, _I_HALF_BED)
#define I_CENTER _I_HALF_BED
#endif
#if HAS_J_AXIS
#define J_CENTER TERN(BED_CENTER_AT_0_0, 0, _J_HALF_BED)
#define J_CENTER _J_HALF_BED
#endif
#if HAS_K_AXIS
#define K_CENTER TERN(BED_CENTER_AT_0_0, 0, _K_HALF_BED)
#define K_CENTER _K_HALF_BED
#endif
#if HAS_U_AXIS
#define U_CENTER TERN(BED_CENTER_AT_0_0, 0, _U_HALF_BED)
#define U_CENTER _U_HALF_BED
#endif
#if HAS_V_AXIS
#define V_CENTER TERN(BED_CENTER_AT_0_0, 0, _V_HALF_BED)
#define V_CENTER _V_HALF_BED
#endif
#if HAS_W_AXIS
#define W_CENTER TERN(BED_CENTER_AT_0_0, 0, _W_HALF_BED)
#define W_CENTER _W_HALF_BED
#endif

// Get the linear boundaries of the bed
Expand Down
60 changes: 36 additions & 24 deletions Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -1580,30 +1580,32 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#endif

/**
* Features that require a min/max/specific NUM_AXES
* Features that require a min/max/specific steppers / axes to be enabled.
*/
#if HAS_LEVELING && !HAS_Z_AXIS
#error "Leveling in Marlin requires three or more axes, with Z as the vertical axis."
#elif ENABLED(CNC_WORKSPACE_PLANES) && !HAS_Z_AXIS
#error "CNC_WORKSPACE_PLANES currently requires NUM_AXES >= 3"
#error "CNC_WORKSPACE_PLANES currently requires a Z axis"
#elif ENABLED(DIRECT_STEPPING) && NUM_AXES > XYZ
#error "DIRECT_STEPPING currently requires NUM_AXES 3"
#elif ENABLED(FOAMCUTTER_XYUV) && NUM_AXES < 5
#error "FOAMCUTTER_XYUV requires NUM_AXES >= 5."
#error "DIRECT_STEPPING does not currently support more than 3 axes (i.e., XYZ)."
#elif ENABLED(FOAMCUTTER_XYUV) && !(HAS_I_AXIS && HAS_J_AXIS)
#error "FOAMCUTTER_XYUV requires I and J steppers to be enabled."
#elif ENABLED(LINEAR_ADVANCE) && HAS_I_AXIS
#error "LINEAR_ADVANCE currently requires NUM_AXES <= 3."
#error "LINEAR_ADVANCE does not currently support the inclusion of an I axis."
#endif

/**
* Allow only extra axis codes that do not conflict with G-code parameter names
*/
#if HAS_I_AXIS
#if !defined(I_MIN_POS) || !defined(I_MAX_POS)
#error "I_MIN_POS and I_MAX_POS are required with NUM_AXES >= 4."
#error "I_MIN_POS and I_MAX_POS are required for the I axis."
#elif !defined(I_HOME_DIR)
#error "I_HOME_DIR is required with NUM_AXES >= 4."
#error "I_HOME_DIR is required for the I axis."
#elif HAS_I_ENABLE && !defined(I_ENABLE_ON)
#error "I_ENABLE_ON is required for your I driver with NUM_AXES >= 4."
#error "I_ENABLE_ON is required for the I stepper."
#elif !defined(INVERT_I_DIR)
#error "INVERT_I_DIR is required for the I stepper."
#endif
#endif
#if HAS_J_AXIS
Expand All @@ -1612,11 +1614,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#elif ENABLED(AXIS5_ROTATES) && DISABLED(AXIS4_ROTATES)
#error "AXIS5_ROTATES requires AXIS4_ROTATES."
#elif !defined(J_MIN_POS) || !defined(J_MAX_POS)
#error "J_MIN_POS and J_MAX_POS are required with NUM_AXES >= 5."
#error "J_MIN_POS and J_MAX_POS are required for the J axis."
#elif !defined(J_HOME_DIR)
#error "J_HOME_DIR is required with NUM_AXES >= 5."
#error "J_HOME_DIR is required for the J axis."
#elif HAS_J_ENABLE && !defined(J_ENABLE_ON)
#error "J_ENABLE_ON is required for your J driver with NUM_AXES >= 5."
#error "J_ENABLE_ON is required for the J stepper."
#elif !defined(INVERT_J_DIR)
#error "INVERT_J_DIR is required for the J stepper."
#endif
#endif
#if HAS_K_AXIS
Expand All @@ -1625,11 +1629,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#elif ENABLED(AXIS6_ROTATES) && DISABLED(AXIS5_ROTATES)
#error "AXIS6_ROTATES requires AXIS5_ROTATES."
#elif !defined(K_MIN_POS) || !defined(K_MAX_POS)
#error "K_MIN_POS and K_MAX_POS are required with NUM_AXES >= 6."
#error "K_MIN_POS and K_MAX_POS are required for the K axis."
#elif !defined(K_HOME_DIR)
#error "K_HOME_DIR is required with NUM_AXES >= 6."
#error "K_HOME_DIR is required for the K axis."
#elif HAS_K_ENABLE && !defined(K_ENABLE_ON)
#error "K_ENABLE_ON is required for your K driver with NUM_AXES >= 6."
#error "K_ENABLE_ON is required for the K stepper."
#elif !defined(INVERT_K_DIR)
#error "INVERT_K_DIR is required for the K stepper."
#endif
#endif
#if HAS_U_AXIS
Expand All @@ -1638,11 +1644,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#elif ENABLED(AXIS7_ROTATES) && DISABLED(AXIS6_ROTATES)
#error "AXIS7_ROTATES requires AXIS6_ROTATES."
#elif !defined(U_MIN_POS) || !defined(U_MAX_POS)
#error "U_MIN_POS and U_MAX_POS are required with NUM_AXES >= 7."
#error "U_MIN_POS and U_MAX_POS are required for the U axis."
#elif !defined(U_HOME_DIR)
#error "U_HOME_DIR is required with NUM_AXES >= 7."
#error "U_HOME_DIR is required for the U axis."
#elif HAS_U_ENABLE && !defined(U_ENABLE_ON)
#error "U_ENABLE_ON is required for your U driver with NUM_AXES >= 7."
#error "U_ENABLE_ON is required for the U stepper."
#elif !defined(INVERT_U_DIR)
#error "INVERT_U_DIR is required for the U stepper."
#endif
#endif
#if HAS_V_AXIS
Expand All @@ -1651,11 +1659,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#elif ENABLED(AXIS8_ROTATES) && DISABLED(AXIS7_ROTATES)
#error "AXIS8_ROTATES requires AXIS7_ROTATES."
#elif !defined(V_MIN_POS) || !defined(V_MAX_POS)
#error "V_MIN_POS and V_MAX_POS are required with NUM_AXES >= 8."
#error "V_MIN_POS and V_MAX_POS are required for the V axis."
#elif !defined(V_HOME_DIR)
#error "V_HOME_DIR is required with NUM_AXES >= 8."
#error "V_HOME_DIR is required for the V axis."
#elif HAS_V_ENABLE && !defined(V_ENABLE_ON)
#error "V_ENABLE_ON is required for your V driver with NUM_AXES >= 8."
#error "V_ENABLE_ON is required for the V stepper."
#elif !defined(INVERT_V_DIR)
#error "INVERT_V_DIR is required for the V stepper."
#endif
#endif
#if HAS_W_AXIS
Expand All @@ -1664,11 +1674,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
#elif ENABLED(AXIS9_ROTATES) && DISABLED(AXIS8_ROTATES)
#error "AXIS9_ROTATES requires AXIS8_ROTATES."
#elif !defined(W_MIN_POS) || !defined(W_MAX_POS)
#error "W_MIN_POS and W_MAX_POS are required with NUM_AXES >= 9."
#error "W_MIN_POS and W_MAX_POS are required for the W axis."
#elif !defined(W_HOME_DIR)
#error "W_HOME_DIR is required with NUM_AXES >= 9."
#error "W_HOME_DIR is required for the W axis."
#elif HAS_W_ENABLE && !defined(W_ENABLE_ON)
#error "W_ENABLE_ON is required for your W driver with NUM_AXES >= 9."
#error "W_ENABLE_ON is required for the W stepper."
#elif !defined(INVERT_W_DIR)
#error "INVERT_W_DIR is required for the W stepper."
#endif
#endif

Expand Down

0 comments on commit 23e2cb0

Please sign in to comment.