Support for up to 9 axes (#23112, #24036, #24231)

This commit is contained in:
Scott Lahteine
2022-04-29 15:21:15 -05:00
parent 369542db3b
commit fd13a928c1
103 changed files with 4553 additions and 799 deletions

View File

@ -1547,6 +1547,105 @@
#if PIN_EXISTS(K_STOP)
REPORT_NAME_DIGITAL(__LINE__, K_STOP_PIN)
#endif
#if PIN_EXISTS(U_ATT)
REPORT_NAME_DIGITAL(__LINE__, U_ATT_PIN)
#endif
#if PIN_EXISTS(U_CS)
REPORT_NAME_DIGITAL(__LINE__, U_CS_PIN)
#endif
#if PIN_EXISTS(U_DIR)
REPORT_NAME_DIGITAL(__LINE__, U_DIR_PIN)
#endif
#if PIN_EXISTS(U_ENABLE)
REPORT_NAME_DIGITAL(__LINE__, U_ENABLE_PIN)
#endif
#if PIN_EXISTS(U_MAX)
REPORT_NAME_DIGITAL(__LINE__, U_MAX_PIN)
#endif
#if PIN_EXISTS(U_MIN)
REPORT_NAME_DIGITAL(__LINE__, U_MIN_PIN)
#endif
#if PIN_EXISTS(U_MS1)
REPORT_NAME_DIGITAL(__LINE__, U_MS1_PIN)
#endif
#if PIN_EXISTS(U_MS2)
REPORT_NAME_DIGITAL(__LINE__, U_MS2_PIN)
#endif
#if PIN_EXISTS(U_MS3)
REPORT_NAME_DIGITAL(__LINE__, U_MS3_PIN)
#endif
#if PIN_EXISTS(U_STEP)
REPORT_NAME_DIGITAL(__LINE__, U_STEP_PIN)
#endif
#if PIN_EXISTS(U_STOP)
REPORT_NAME_DIGITAL(__LINE__, U_STOP_PIN)
#endif
#if PIN_EXISTS(V_ATT)
REPORT_NAME_DIGITAL(__LINE__, V_ATT_PIN)
#endif
#if PIN_EXISTS(V_CS)
REPORT_NAME_DIGITAL(__LINE__, V_CS_PIN)
#endif
#if PIN_EXISTS(V_DIR)
REPORT_NAME_DIGITAL(__LINE__, V_DIR_PIN)
#endif
#if PIN_EXISTS(V_ENABLE)
REPORT_NAME_DIGITAL(__LINE__, V_ENABLE_PIN)
#endif
#if PIN_EXISTS(V_MAX)
REPORT_NAME_DIGITAL(__LINE__, V_MAX_PIN)
#endif
#if PIN_EXISTS(V_MIN)
REPORT_NAME_DIGITAL(__LINE__, V_MIN_PIN)
#endif
#if PIN_EXISTS(V_MS1)
REPORT_NAME_DIGITAL(__LINE__, V_MS1_PIN)
#endif
#if PIN_EXISTS(V_MS2)
REPORT_NAME_DIGITAL(__LINE__, V_MS2_PIN)
#endif
#if PIN_EXISTS(V_MS3)
REPORT_NAME_DIGITAL(__LINE__, V_MS3_PIN)
#endif
#if PIN_EXISTS(V_STEP)
REPORT_NAME_DIGITAL(__LINE__, V_STEP_PIN)
#endif
#if PIN_EXISTS(V_STOP)
REPORT_NAME_DIGITAL(__LINE__, V_STOP_PIN)
#endif
#if PIN_EXISTS(W_ATT)
REPORT_NAME_DIGITAL(__LINE__, W_ATT_PIN)
#endif
#if PIN_EXISTS(W_CS)
REPORT_NAME_DIGITAL(__LINE__, W_CS_PIN)
#endif
#if PIN_EXISTS(W_DIR)
REPORT_NAME_DIGITAL(__LINE__, W_DIR_PIN)
#endif
#if PIN_EXISTS(W_ENABLE)
REPORT_NAME_DIGITAL(__LINE__, W_ENABLE_PIN)
#endif
#if PIN_EXISTS(W_MAX)
REPORT_NAME_DIGITAL(__LINE__, W_MAX_PIN)
#endif
#if PIN_EXISTS(W_MIN)
REPORT_NAME_DIGITAL(__LINE__, W_MIN_PIN)
#endif
#if PIN_EXISTS(W_MS1)
REPORT_NAME_DIGITAL(__LINE__, W_MS1_PIN)
#endif
#if PIN_EXISTS(W_MS2)
REPORT_NAME_DIGITAL(__LINE__, W_MS2_PIN)
#endif
#if PIN_EXISTS(W_MS3)
REPORT_NAME_DIGITAL(__LINE__, W_MS3_PIN)
#endif
#if PIN_EXISTS(W_STEP)
REPORT_NAME_DIGITAL(__LINE__, W_STEP_PIN)
#endif
#if PIN_EXISTS(W_STOP)
REPORT_NAME_DIGITAL(__LINE__, W_STOP_PIN)
#endif
#if PIN_EXISTS(ZRIB_V20_D6)
REPORT_NAME_DIGITAL(__LINE__, ZRIB_V20_D6_PIN)
#endif
@ -1619,6 +1718,24 @@
#if PIN_EXISTS(K_SERIAL_RX)
REPORT_NAME_DIGITAL(__LINE__, K_SERIAL_RX_PIN)
#endif
#if PIN_EXISTS(U_SERIAL_TX)
REPORT_NAME_DIGITAL(__LINE__, U_SERIAL_TX_PIN)
#endif
#if PIN_EXISTS(U_SERIAL_RX)
REPORT_NAME_DIGITAL(__LINE__, U_SERIAL_RX_PIN)
#endif
#if PIN_EXISTS(V_SERIAL_TX)
REPORT_NAME_DIGITAL(__LINE__, V_SERIAL_TX_PIN)
#endif
#if PIN_EXISTS(V_SERIAL_RX)
REPORT_NAME_DIGITAL(__LINE__, V_SERIAL_RX_PIN)
#endif
#if PIN_EXISTS(W_SERIAL_TX)
REPORT_NAME_DIGITAL(__LINE__, W_SERIAL_TX_PIN)
#endif
#if PIN_EXISTS(W_SERIAL_RX)
REPORT_NAME_DIGITAL(__LINE__, W_SERIAL_RX_PIN)
#endif
#if PIN_EXISTS(E0_DIAG)
REPORT_NAME_DIGITAL(__LINE__, E0_DIAG_PIN)
#endif

View File

@ -221,6 +221,15 @@
#if !AXIS_HAS_SPI(K)
#undef K_CS_PIN
#endif
#if !AXIS_HAS_SPI(U)
#undef U_CS_PIN
#endif
#if !AXIS_HAS_SPI(V)
#undef V_CS_PIN
#endif
#if !AXIS_HAS_SPI(W)
#undef W_CS_PIN
#endif
#if E_STEPPERS && !AXIS_HAS_SPI(E0)
#undef E0_CS_PIN
#endif
@ -264,6 +273,15 @@
#ifndef K_CS_PIN
#define K_CS_PIN -1
#endif
#ifndef U_CS_PIN
#define U_CS_PIN -1
#endif
#ifndef V_CS_PIN
#define V_CS_PIN -1
#endif
#ifndef W_CS_PIN
#define W_CS_PIN -1
#endif
#ifndef E0_CS_PIN
#define E0_CS_PIN -1
#endif
@ -546,6 +564,75 @@
#undef K_MAX_PIN
#endif
#if HAS_U_AXIS
#ifdef U_STOP_PIN
#if U_HOME_TO_MIN
#define U_MIN_PIN U_STOP_PIN
#ifndef U_MAX_PIN
#define U_MAX_PIN -1
#endif
#else
#define U_MAX_PIN U_STOP_PIN
#ifndef U_MIN_PIN
#define U_MIN_PIN -1
#endif
#endif
#elif U_HOME_TO_MIN
#define U_STOP_PIN U_MIN_PIN
#else
#define U_STOP_PIN U_MAX_PIN
#endif
#else
#undef U_MIN_PIN
#undef U_MAX_PIN
#endif
#if HAS_V_AXIS
#ifdef V_STOP_PIN
#if V_HOME_TO_MIN
#define V_MIN_PIN V_STOP_PIN
#ifndef V_MAX_PIN
#define V_MAX_PIN -1
#endif
#else
#define V_MAX_PIN V_STOP_PIN
#ifndef V_MIN_PIN
#define V_MIN_PIN -1
#endif
#endif
#elif V_HOME_TO_MIN
#define V_STOP_PIN V_MIN_PIN
#else
#define V_STOP_PIN V_MAX_PIN
#endif
#else
#undef V_MIN_PIN
#undef V_MAX_PIN
#endif
#if HAS_W_AXIS
#ifdef W_STOP_PIN
#if W_HOME_TO_MIN
#define W_MIN_PIN W_STOP_PIN
#ifndef W_MAX_PIN
#define W_MAX_PIN -1
#endif
#else
#define W_MAX_PIN W_STOP_PIN
#ifndef W_MIN_PIN
#define W_MIN_PIN -1
#endif
#endif
#elif W_HOME_TO_MIN
#define W_STOP_PIN W_MIN_PIN
#else
#define W_STOP_PIN W_MAX_PIN
#endif
#else
#undef W_MIN_PIN
#undef W_MAX_PIN
#endif
// Filament Sensor first pin alias
#if HAS_FILAMENT_SENSOR
#define FIL_RUNOUT1_PIN FIL_RUNOUT_PIN // Filament Sensor first pin alias
@ -1204,6 +1291,12 @@
#define J_MS3_PIN -1
#endif
#if HAS_K_AXIS && !defined(K_DIAG_PIN) && !defined(K_STEP_PIN) && !PIN_EXISTS(K_CS_PIN)
#define U_E_INDEX INCREMENT(K_E_INDEX)
#else
#define U_E_INDEX K_E_INDEX
#endif
// The K axis, if any, should be the next open extruder port
#if HAS_K_AXIS
#ifndef K_STEP_PIN
@ -1284,6 +1377,258 @@
#define K_MS3_PIN -1
#endif
#if HAS_U_AXIS && !defined(U_DIAG_PIN) && !defined(U_STEP_PIN) && !PIN_EXISTS(U_CS_PIN)
#define V_E_INDEX INCREMENT(U_E_INDEX)
#else
#define V_E_INDEX U_E_INDEX
#endif
// The U axis, if any, should be the next open extruder port
#if HAS_U_AXIS
#ifndef U_STEP_PIN
#define U_STEP_PIN _EPIN(U_E_INDEX, STEP)
#define U_DIR_PIN _EPIN(U_E_INDEX, DIR)
#define U_ENABLE_PIN _EPIN(U_E_INDEX, ENABLE)
#if M_E_INDEX >= MAX_E_STEPPERS || !PIN_EXISTS(U_STEP)
#error "No E stepper plug left for U!"
#else
#define AUTO_ASSIGNED_U_STEPPER 1
#endif
#endif
#if AXIS_HAS_SPI(U) && !defined(U_CS_PIN)
#define U_CS_PIN _EPIN(U_E_INDEX, CS)
#if PIN_EXISTS(U_CS)
#define AUTO_ASSIGNED_U_CS 1
#endif
#endif
#ifndef U_MS1_PIN
#define U_MS1_PIN _EPIN(U_E_INDEX, MS1)
#if PIN_EXISTS(U_MS1)
#define AUTO_ASSIGNED_U_MS1 1
#endif
#endif
#ifndef U_MS2_PIN
#define U_MS2_PIN _EPIN(U_E_INDEX, MS2)
#if PIN_EXISTS(U_MS2)
#define AUTO_ASSIGNED_U_MS2 1
#endif
#endif
#ifndef U_MS3_PIN
#define U_MS3_PIN _EPIN(U_E_INDEX, MS3)
#if PIN_EXISTS(U_MS3)
#define AUTO_ASSIGNED_U_MS3 1
#endif
#endif
#if AXIS_HAS_UART(U)
#ifndef U_SERIAL_TX_PIN
#define U_SERIAL_TX_PIN _EPIN(U_E_INDEX, SERIAL_TX)
#endif
#ifndef U_SERIAL_RX_PIN
#define U_SERIAL_RX_PIN _EPIN(U_E_INDEX, SERIAL_RX)
#endif
#endif
// Auto-assign pins for stallGuard sensorless homing
#if !defined(U_DIAG_PIN) && !defined(U_USE_ENDSTOP) && defined(U_STALL_SENSITIVITY) && _PEXI(U_E_INDEX, DIAG)
#define U_DIAG_PIN _EPIN(U_E_INDEX, DIAG)
#if DIAG_REMAPPED(U, X_MIN)
#define U_USE_ENDSTOP _XMIN_
#elif DIAG_REMAPPED(U, Y_MIN)
#define U_USE_ENDSTOP _YMIN_
#elif DIAG_REMAPPED(U, Z_MIN)
#define U_USE_ENDSTOP _ZMIN_
#elif DIAG_REMAPPED(U, X_MAX)
#define U_USE_ENDSTOP _XMAX_
#elif DIAG_REMAPPED(U, Y_MAX)
#define U_USE_ENDSTOP _YMAX_
#elif DIAG_REMAPPED(U, Z_MAX)
#define U_USE_ENDSTOP _ZMAX_
#else
#define U_USE_ENDSTOP _En_DIAG_(U_E_INDEX)
#endif
#define AUTO_ASSIGNED_U_DIAG 1
#undef U_DIAG_PIN // Defined in Conditionals_post.h based on U_USE_ENDSTOP
#endif
#endif
#ifndef U_CS_PIN
#define U_CS_PIN -1
#endif
#ifndef U_MS1_PIN
#define U_MS1_PIN -1
#endif
#ifndef U_MS2_PIN
#define U_MS2_PIN -1
#endif
#ifndef U_MS3_PIN
#define U_MS3_PIN -1
#endif
#if HAS_V_AXIS && !defined(V_DIAG_PIN) && !defined(V_STEP_PIN) && !PIN_EXISTS(V_CS_PIN)
#define W_E_INDEX INCREMENT(V_E_INDEX)
#else
#define W_E_INDEX V_E_INDEX
#endif
// The V axis, if any, should be the next open extruder port
#if HAS_V_AXIS
#ifndef V_STEP_PIN
#define V_STEP_PIN _EPIN(V_E_INDEX, STEP)
#define V_DIR_PIN _EPIN(V_E_INDEX, DIR)
#define V_ENABLE_PIN _EPIN(V_E_INDEX, ENABLE)
#if V_E_INDEX >= MAX_E_STEPPERS || !PIN_EXISTS(V_STEP)
#error "No E stepper plug left for V!"
#else
#define AUTO_ASSIGNED_V_STEPPER 1
#endif
#endif
#if AXIS_HAS_SPI(V) && !defined(V_CS_PIN)
#define V_CS_PIN _EPIN(V_E_INDEX, CS)
#if PIN_EXISTS(V_CS)
#define AUTO_ASSIGNED_V_CS 1
#endif
#endif
#ifndef V_MS1_PIN
#define V_MS1_PIN _EPIN(V_E_INDEX, MS1)
#if PIN_EXISTS(V_MS1)
#define AUTO_ASSIGNED_V_MS1 1
#endif
#endif
#ifndef V_MS2_PIN
#define V_MS2_PIN _EPIN(V_E_INDEX, MS2)
#if PIN_EXISTS(V_MS2)
#define AUTO_ASSIGNED_V_MS2 1
#endif
#endif
#ifndef V_MS3_PIN
#define V_MS3_PIN _EPIN(V_E_INDEX, MS3)
#if PIN_EXISTS(V_MS3)
#define AUTO_ASSIGNED_V_MS3 1
#endif
#endif
#if AXIS_HAS_UART(V)
#ifndef V_SERIAL_TX_PIN
#define V_SERIAL_TX_PIN _EPIN(V_E_INDEX, SERIAL_TX)
#endif
#ifndef V_SERIAL_RX_PIN
#define V_SERIAL_RX_PIN _EPIN(V_E_INDEX, SERIAL_RX)
#endif
#endif
// Auto-assign pins for stallGuard sensorless homing
#if !defined(V_DIAG_PIN) && !defined(V_USE_ENDSTOP) && defined(V_STALL_SENSITIVITY) && _PEXI(V_E_INDEX, DIAG)
#define V_DIAG_PIN _EPIN(V_E_INDEX, DIAG)
#if DIAG_REMAPPED(V, X_MIN)
#define V_USE_ENDSTOP _XMIN_
#elif DIAG_REMAPPED(V, Y_MIN)
#define V_USE_ENDSTOP _YMIN_
#elif DIAG_REMAPPED(V, Z_MIN)
#define V_USE_ENDSTOP _ZMIN_
#elif DIAG_REMAPPED(V, X_MAX)
#define V_USE_ENDSTOP _XMAX_
#elif DIAG_REMAPPED(V, Y_MAX)
#define V_USE_ENDSTOP _YMAX_
#elif DIAG_REMAPPED(V, Z_MAX)
#define V_USE_ENDSTOP _ZMAX_
#else
#define V_USE_ENDSTOP _En_DIAG_(V_E_INDEX)
#endif
#define AUTO_ASSIGNED_V_DIAG 1
#undef V_DIAG_PIN // Defined in Conditionals_post.h based on O_USE_ENDSTOP
#endif
#endif
#ifndef V_CS_PIN
#define V_CS_PIN -1
#endif
#ifndef V_MS1_PIN
#define V_MS1_PIN -1
#endif
#ifndef V_MS2_PIN
#define V_MS2_PIN -1
#endif
#ifndef V_MS3_PIN
#define V_MS3_PIN -1
#endif
// The W axis, if any, should be the next open extruder port
#if HAS_W_AXIS
#ifndef W_STEP_PIN
#define W_STEP_PIN _EPIN(W_E_INDEX, STEP)
#define W_DIR_PIN _EPIN(W_E_INDEX, DIR)
#define W_ENABLE_PIN _EPIN(W_E_INDEX, ENABLE)
#if W_E_INDEX >= MAX_E_STEPPERS || !PIN_EXISTS(W_STEP)
#error "No E stepper plug left for W!"
#else
#define AUTO_ASSIGNED_W_STEPPER 1
#endif
#endif
#if AXIS_HAS_SPI(W) && !defined(W_CS_PIN)
#define W_CS_PIN _EPIN(W_E_INDEX, CS)
#if PIN_EXISTS(W_CS)
#define AUTO_ASSIGNED_W_CS 1
#endif
#endif
#ifndef W_MS1_PIN
#define W_MS1_PIN _EPIN(W_E_INDEX, MS1)
#if PIN_EXISTS(W_MS1)
#define AUTO_ASSIGNED_W_MS1 1
#endif
#endif
#ifndef W_MS2_PIN
#define W_MS2_PIN _EPIN(W_E_INDEX, MS2)
#if PIN_EXISTS(W_MS2)
#define AUTO_ASSIGNED_W_MS2 1
#endif
#endif
#ifndef W_MS3_PIN
#define W_MS3_PIN _EPIN(W_E_INDEX, MS3)
#if PIN_EXISTS(W_MS3)
#define AUTO_ASSIGNED_W_MS3 1
#endif
#endif
#if AXIS_HAS_UART(W)
#ifndef W_SERIAL_TX_PIN
#define W_SERIAL_TX_PIN _EPIN(W_E_INDEX, SERIAL_TX)
#endif
#ifndef W_SERIAL_RX_PIN
#define W_SERIAL_RX_PIN _EPIN(W_E_INDEX, SERIAL_RX)
#endif
#endif
// Auto-assign pins for stallGuard sensorless homing
#if !defined(W_DIAG_PIN) && !defined(W_USE_ENDSTOP) && defined(W_STALL_SENSITIVITY) && _PEXI(W_E_INDEX, DIAG)
#define W_DIAG_PIN _EPIN(W_E_INDEX, DIAG)
#if DIAG_REMAPPED(W, X_MIN)
#define W_USE_ENDSTOP _XMIN_
#elif DIAG_REMAPPED(W, Y_MIN)
#define W_USE_ENDSTOP _YMIN_
#elif DIAG_REMAPPED(W, Z_MIN)
#define W_USE_ENDSTOP _ZMIN_
#elif DIAG_REMAPPED(W, X_MAX)
#define W_USE_ENDSTOP _XMAX_
#elif DIAG_REMAPPED(W, Y_MAX)
#define W_USE_ENDSTOP _YMAX_
#elif DIAG_REMAPPED(W, Z_MAX)
#define W_USE_ENDSTOP _ZMAX_
#else
#define W_USE_ENDSTOP _En_DIAG_(W_E_INDEX)
#endif
#define AUTO_ASSIGNED_W_DIAG 1
#undef W_DIAG_PIN // Defined in Conditionals_post.h based on Q_USE_ENDSTOP
#endif
#endif
#ifndef W_CS_PIN
#define W_CS_PIN -1
#endif
#ifndef W_MS1_PIN
#define W_MS1_PIN -1
#endif
#ifndef W_MS2_PIN
#define W_MS2_PIN -1
#endif
#ifndef W_MS3_PIN
#define W_MS3_PIN -1
#endif
//
// Disable unused endstop / probe pins
//
@ -1377,6 +1722,39 @@
#if NONE(USE_KMIN_PLUG, USE_KMAX_PLUG)
#undef K_STOP_PIN
#endif
#if DISABLED(USE_UMIN_PLUG)
#undef U_MIN_PIN
#define U_MIN_PIN -1
#endif
#if DISABLED(USE_UMAX_PLUG)
#undef U_MAX_PIN
#define U_MAX_PIN -1
#endif
#if NONE(USE_UMIN_PLUG, USE_UMAX_PLUG)
#undef U_STOP_PIN
#endif
#if DISABLED(USE_VMIN_PLUG)
#undef V_MIN_PIN
#define V_MIN_PIN -1
#endif
#if DISABLED(USE_VMAX_PLUG)
#undef V_MAX_PIN
#define V_MAX_PIN -1
#endif
#if NONE(USE_VMIN_PLUG, USE_VMAX_PLUG)
#undef V_STOP_PIN
#endif
#if DISABLED(USE_WMIN_PLUG)
#undef W_MIN_PIN
#define W_MIN_PIN -1
#endif
#if DISABLED(USE_WMAX_PLUG)
#undef W_MAX_PIN
#define W_MAX_PIN -1
#endif
#if NONE(USE_WMIN_PLUG, USE_WMAX_PLUG)
#undef W_STOP_PIN
#endif
#if DISABLED(X_DUAL_ENDSTOPS) || X_HOME_TO_MAX
#undef X2_MIN_PIN

View File

@ -293,6 +293,126 @@
#endif
#if HAS_U_AXIS
#if PIN_EXISTS(U_MIN)
#define _U_MIN U_MIN_PIN,
#else
#define _U_MIN
#endif
#if PIN_EXISTS(U_MAX)
#define _U_MAX U_MAX_PIN,
#else
#define _U_MAX
#endif
#if PIN_EXISTS(U_CS) && AXIS_HAS_SPI(U)
#define _U_CS U_CS_PIN,
#else
#define _U_CS
#endif
#if PIN_EXISTS(U_MS1)
#define _U_MS1 U_MS1_PIN,
#else
#define _U_MS1
#endif
#if PIN_EXISTS(U_MS2)
#define _U_MS2 U_MS2_PIN,
#else
#define _U_MS2
#endif
#if PIN_EXISTS(U_MS3)
#define _U_MS3 U_MS3_PIN,
#else
#define _U_MS3
#endif
#define _U_PINS U_STEP_PIN, U_DIR_PIN, U_ENABLE_PIN, _U_MIN _U_MAX _U_MS1 _U_MS2 _U_MS3 _U_CS
#else
#define _U_PINS
#endif
#if HAS_V_AXIS
#if PIN_EXISTS(V_MIN)
#define _V_MIN V_MIN_PIN,
#else
#define _V_MIN
#endif
#if PIN_EXISTS(V_MAX)
#define _V_MAX V_MAX_PIN,
#else
#define _V_MAX
#endif
#if PIN_EXISTS(V_CS) && AXIS_HAS_SPI(V)
#define _V_CS V_CS_PIN,
#else
#define _V_CS
#endif
#if PIN_EXISTS(V_MS1)
#define _V_MS1 V_MS1_PIN,
#else
#define _V_MS1
#endif
#if PIN_EXISTS(V_MS2)
#define _V_MS2 V_MS2_PIN,
#else
#define _V_MS2
#endif
#if PIN_EXISTS(V_MS3)
#define _V_MS3 V_MS3_PIN,
#else
#define _V_MS3
#endif
#define _V_PINS V_STEP_PIN, V_DIR_PIN, V_ENABLE_PIN, _V_MIN _V_MAX _V_MS1 _V_MS2 _V_MS3 _V_CS
#else
#define _V_PINS
#endif
#if HAS_W_AXIS
#if PIN_EXISTS(W_MIN)
#define _W_MIN W_MIN_PIN,
#else
#define _W_MIN
#endif
#if PIN_EXISTS(W_MAX)
#define _W_MAX W_MAX_PIN,
#else
#define _W_MAX
#endif
#if PIN_EXISTS(W_CS) && AXIS_HAS_SPI(W)
#define _W_CS W_CS_PIN,
#else
#define _W_CS
#endif
#if PIN_EXISTS(W_MS1)
#define _W_MS1 W_MS1_PIN,
#else
#define _W_MS1
#endif
#if PIN_EXISTS(W_MS2)
#define _W_MS2 W_MS2_PIN,
#else
#define _W_MS2
#endif
#if PIN_EXISTS(W_MS3)
#define _W_MS3 W_MS3_PIN,
#else
#define _W_MS3
#endif
#define _W_PINS W_STEP_PIN, W_DIR_PIN, W_ENABLE_PIN, _W_MIN _W_MAX _W_MS1 _W_MS2 _W_MS3 _W_CS
#else
#define _W_PINS
#endif
//
// Extruder Chip Select, Digital Micro-steps
//
@ -886,7 +1006,7 @@
#endif
#define SENSITIVE_PINS \
_X_PINS _Y_PINS _Z_PINS _I_PINS _J_PINS _K_PINS \
_X_PINS _Y_PINS _Z_PINS _I_PINS _J_PINS _K_PINS _U_PINS _V_PINS _W_PINS \
_X2_PINS _Y2_PINS _Z2_PINS _Z3_PINS _Z4_PINS _Z_PROBE \
_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS _E5_PINS _E6_PINS _E7_PINS \
_H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS _H5_PINS _H6_PINS _H7_PINS \