🧑💻 Endstops preliminary work (#25780)
This commit is contained in:
@@ -815,7 +815,6 @@
|
||||
#define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage
|
||||
#define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage
|
||||
#define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position
|
||||
#define X2_HOME_DIR 1 // Set to 1. The X2 carriage always homes to the max endstop position
|
||||
#define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS.
|
||||
// NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS.
|
||||
// This allows recalibration of endstops distance without a rebuild.
|
||||
|
@@ -120,7 +120,7 @@ void pciSetup(const int8_t pin) {
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(X_MAX_PIN);
|
||||
#else
|
||||
@@ -128,7 +128,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(X_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(X_MIN_PIN);
|
||||
#else
|
||||
@@ -136,7 +136,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(X_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
#if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Y_MAX_PIN);
|
||||
#else
|
||||
@@ -144,7 +144,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Y_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Y_MIN_PIN);
|
||||
#else
|
||||
@@ -152,7 +152,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Y_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z_MAX_PIN);
|
||||
#else
|
||||
@@ -168,14 +168,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
#if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(I_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(I_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_I_MIN
|
||||
#elif USE_I_MIN
|
||||
#if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(I_MIN_PIN);
|
||||
#else
|
||||
@@ -183,14 +183,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(I_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
#if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(J_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(J_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_J_MIN
|
||||
#elif USE_J_MIN
|
||||
#if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(J_MIN_PIN);
|
||||
#else
|
||||
@@ -198,14 +198,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(J_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
#if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(K_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(K_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_K_MIN
|
||||
#elif USE_K_MIN
|
||||
#if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(K_MIN_PIN);
|
||||
#else
|
||||
@@ -213,14 +213,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(K_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
#if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(U_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(U_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_U_MIN
|
||||
#elif USE_U_MIN
|
||||
#if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(U_MIN_PIN);
|
||||
#else
|
||||
@@ -228,14 +228,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(U_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
#if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(V_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(V_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_V_MIN
|
||||
#elif USE_V_MIN
|
||||
#if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(V_MIN_PIN);
|
||||
#else
|
||||
@@ -243,14 +243,14 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(V_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
#if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(W_MAX_PIN);
|
||||
#else
|
||||
static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
|
||||
pciSetup(W_MAX_PIN);
|
||||
#endif
|
||||
#elif HAS_W_MIN
|
||||
#elif USE_W_MIN
|
||||
#if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(W_MIN_PIN);
|
||||
#else
|
||||
@@ -258,7 +258,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(W_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(X2_MAX_PIN);
|
||||
#else
|
||||
@@ -266,7 +266,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(X2_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
#if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(X2_MIN_PIN);
|
||||
#else
|
||||
@@ -274,7 +274,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(X2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
#if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Y2_MAX_PIN);
|
||||
#else
|
||||
@@ -282,7 +282,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Y2_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
#if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Y2_MIN_PIN);
|
||||
#else
|
||||
@@ -290,7 +290,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Y2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
#if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z2_MAX_PIN);
|
||||
#else
|
||||
@@ -298,7 +298,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z2_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
#if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z2_MIN_PIN);
|
||||
#else
|
||||
@@ -306,7 +306,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
#if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z3_MAX_PIN);
|
||||
#else
|
||||
@@ -314,7 +314,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z3_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
#if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z3_MIN_PIN);
|
||||
#else
|
||||
@@ -322,7 +322,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z3_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
#if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z4_MAX_PIN);
|
||||
#else
|
||||
@@ -330,7 +330,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z4_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
#if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z4_MIN_PIN);
|
||||
#else
|
||||
@@ -338,7 +338,7 @@ void setup_endstop_interrupts() {
|
||||
pciSetup(Z4_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
|
||||
_ATTACH(Z_MIN_PROBE_PIN);
|
||||
#else
|
||||
|
@@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -42,33 +42,33 @@ void ICACHE_RAM_ATTR endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -44,31 +44,31 @@ void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
#define LPC1768_PIN_INTERRUPT_M(pin) ((pin >> 0x5 & 0x7) == 0 || (pin >> 0x5 & 0x7) == 2)
|
||||
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(X_MAX_PIN)
|
||||
#error "X_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(X_MIN_PIN)
|
||||
#error "X_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Y_MAX_PIN)
|
||||
#error "Y_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Y_MIN_PIN)
|
||||
#error "Y_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z_MAX_PIN)
|
||||
#error "Z_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
@@ -80,133 +80,133 @@ void setup_endstop_interrupts() {
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(X2_MAX_PIN)
|
||||
#error "X2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(X2_MIN_PIN)
|
||||
#error "X2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Y2_MAX_PIN)
|
||||
#error "Y2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Y2_MIN_PIN)
|
||||
#error "Y2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN)
|
||||
#error "Z2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z2_MIN_PIN)
|
||||
#error "Z2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z3_MAX_PIN)
|
||||
#error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
|
||||
#error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z4_MAX_PIN)
|
||||
#error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z4_MIN_PIN)
|
||||
#error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PROBE_PIN)
|
||||
#error "Z_MIN_PROBE_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PROBE_PIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(I_MAX_PIN)
|
||||
#error "I_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(I_MAX_PIN);
|
||||
#elif HAS_I_MIN
|
||||
#elif USE_I_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(I_MIN_PIN)
|
||||
#error "I_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(I_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(J_MAX_PIN)
|
||||
#error "J_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(J_MAX_PIN);
|
||||
#elif HAS_J_MIN
|
||||
#elif USE_J_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(J_MIN_PIN)
|
||||
#error "J_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(J_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(K_MAX_PIN)
|
||||
#error "K_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(K_MAX_PIN);
|
||||
#elif HAS_K_MIN
|
||||
#elif USE_K_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(K_MIN_PIN)
|
||||
#error "K_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(K_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(U_MAX_PIN)
|
||||
#error "U_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(U_MAX_PIN);
|
||||
#elif HAS_U_MIN
|
||||
#elif USE_U_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(U_MIN_PIN)
|
||||
#error "U_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(U_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(V_MAX_PIN)
|
||||
#error "V_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(V_MAX_PIN);
|
||||
#elif HAS_V_MIN
|
||||
#elif USE_V_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(V_MIN_PIN)
|
||||
#error "V_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(V_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
#if !LPC1768_PIN_INTERRUPT_M(W_MAX_PIN)
|
||||
#error "W_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(W_MAX_PIN);
|
||||
#elif HAS_W_MIN
|
||||
#elif USE_W_MIN
|
||||
#if !LPC1768_PIN_INTERRUPT_M(W_MIN_PIN)
|
||||
#error "W_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
|
@@ -150,7 +150,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
|
||||
#error "Serial port pins (2) conflict with other pins!"
|
||||
#elif Y_HOME_TO_MIN && IS_TX2(Y_STOP_PIN)
|
||||
#error "Serial port pins (2) conflict with Y endstop pin!"
|
||||
#elif USES_Z_MIN_PROBE_PIN && IS_TX2(Z_MIN_PROBE_PIN)
|
||||
#elif USE_Z_MIN_PROBE && IS_TX2(Z_MIN_PROBE_PIN)
|
||||
#error "Serial port pins (2) conflict with probe pin!"
|
||||
#elif ANY_TX(2, X_ENABLE_PIN, Y_ENABLE_PIN) || ANY_RX(2, X_DIR_PIN, Y_DIR_PIN)
|
||||
#error "Serial port pins (2) conflict with X/Y stepper pins!"
|
||||
@@ -241,7 +241,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
|
||||
#define PIN_IS_SCL2(P) (P##_PIN == P0_11)
|
||||
#if PIN_IS_SDA2(Y_STOP)
|
||||
#error "i2c SDA2 overlaps with Y endstop pin!"
|
||||
#elif USES_Z_MIN_PROBE_PIN && PIN_IS_SDA2(Z_MIN_PROBE)
|
||||
#elif USE_Z_MIN_PROBE && PIN_IS_SDA2(Z_MIN_PROBE)
|
||||
#error "i2c SDA2 overlaps with Z probe pin!"
|
||||
#elif PIN_IS_SDA2(X_ENABLE) || PIN_IS_SDA2(Y_ENABLE)
|
||||
#error "i2c SDA2 overlaps with X/Y ENABLE pin!"
|
||||
|
@@ -54,35 +54,35 @@
|
||||
#include "../../module/endstops.h"
|
||||
|
||||
#define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2))
|
||||
#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
|
||||
#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
|
||||
#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
|
||||
#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
|
||||
#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
|
||||
#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
|
||||
#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
|
||||
#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
|
||||
#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
|
||||
#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
|
||||
#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN))
|
||||
#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
|
||||
#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
|
||||
#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
|
||||
#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
|
||||
#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
|
||||
#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
|
||||
#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN))
|
||||
#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN))
|
||||
#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN))
|
||||
#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN))
|
||||
#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN))
|
||||
#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN))
|
||||
#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN))
|
||||
#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN))
|
||||
#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN))
|
||||
#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN))
|
||||
#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
|
||||
#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
|
||||
#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
|
||||
#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
|
||||
#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
|
||||
#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
|
||||
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
|
||||
#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
|
||||
#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
|
||||
#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
|
||||
#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
|
||||
#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
|
||||
#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
|
||||
#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN))
|
||||
#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN))
|
||||
#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN))
|
||||
#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN))
|
||||
#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN))
|
||||
#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN))
|
||||
#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN))
|
||||
#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN))
|
||||
#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN))
|
||||
#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN))
|
||||
#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
|
||||
#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
|
||||
#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
|
||||
#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
|
||||
#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
|
||||
#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
|
||||
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
|
||||
|
||||
#define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \
|
||||
&& !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \
|
||||
@@ -106,31 +106,31 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE)
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#if !AVAILABLE_EILINE(X_MAX_PIN)
|
||||
#error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#if !AVAILABLE_EILINE(X_MIN_PIN)
|
||||
#error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
#if !AVAILABLE_EILINE(Y_MAX_PIN)
|
||||
#error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#if !AVAILABLE_EILINE(Y_MIN_PIN)
|
||||
#error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#if !AVAILABLE_EILINE(Z_MAX_PIN)
|
||||
#error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
@@ -142,139 +142,139 @@ void setup_endstop_interrupts() {
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
#if !AVAILABLE_EILINE(X2_MAX_PIN)
|
||||
#error "X2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
#if !AVAILABLE_EILINE(X2_MIN_PIN)
|
||||
#error "X2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
#if !AVAILABLE_EILINE(Y2_MAX_PIN)
|
||||
#error "Y2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
#if !AVAILABLE_EILINE(Y2_MIN_PIN)
|
||||
#error "Y2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
#if !AVAILABLE_EILINE(Z2_MAX_PIN)
|
||||
#error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
#if !AVAILABLE_EILINE(Z2_MIN_PIN)
|
||||
#error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
#if !AVAILABLE_EILINE(Z3_MAX_PIN)
|
||||
#error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
#if !AVAILABLE_EILINE(Z3_MIN_PIN)
|
||||
#error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
#if !AVAILABLE_EILINE(Z4_MAX_PIN)
|
||||
#error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
#if !AVAILABLE_EILINE(Z4_MIN_PIN)
|
||||
#error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN)
|
||||
#error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PROBE_PIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
#if !AVAILABLE_EILINE(I_MAX_PIN)
|
||||
#error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
#if !AVAILABLE_EILINE(I_MIN_PIN)
|
||||
#error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
#if !AVAILABLE_EILINE(J_MAX_PIN)
|
||||
#error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
#if !AVAILABLE_EILINE(J_MIN_PIN)
|
||||
#error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
#if !AVAILABLE_EILINE(K_MAX_PIN)
|
||||
#error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
#if !AVAILABLE_EILINE(K_MIN_PIN)
|
||||
#error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
#if !AVAILABLE_EILINE(U_MAX_PIN)
|
||||
#error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
#if !AVAILABLE_EILINE(U_MIN_PIN)
|
||||
#error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
#if !AVAILABLE_EILINE(V_MAX_PIN)
|
||||
#error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
#if !AVAILABLE_EILINE(V_MIN_PIN)
|
||||
#error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
#if !AVAILABLE_EILINE(W_MAX_PIN)
|
||||
#error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
#if !AVAILABLE_EILINE(W_MIN_PIN)
|
||||
#error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
|
@@ -53,35 +53,35 @@
|
||||
#include "../../module/endstops.h"
|
||||
|
||||
#define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2))
|
||||
#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
|
||||
#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
|
||||
#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
|
||||
#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
|
||||
#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
|
||||
#define MATCH_X_MAX_EILINE(P) TERN0(USE_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
|
||||
#define MATCH_X_MIN_EILINE(P) TERN0(USE_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
|
||||
#define MATCH_Y_MAX_EILINE(P) TERN0(USE_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
|
||||
#define MATCH_Y_MIN_EILINE(P) TERN0(USE_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
|
||||
#define MATCH_Z_MAX_EILINE(P) TERN0(USE_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
|
||||
#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN))
|
||||
#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
|
||||
#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
|
||||
#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
|
||||
#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
|
||||
#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
|
||||
#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
|
||||
#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN))
|
||||
#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN))
|
||||
#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN))
|
||||
#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN))
|
||||
#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN))
|
||||
#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN))
|
||||
#define MATCH_X2_MAX_EILINE(P) TERN0(HAS_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN))
|
||||
#define MATCH_X2_MIN_EILINE(P) TERN0(HAS_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN))
|
||||
#define MATCH_Y2_MAX_EILINE(P) TERN0(HAS_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN))
|
||||
#define MATCH_Y2_MIN_EILINE(P) TERN0(HAS_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN))
|
||||
#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
|
||||
#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
|
||||
#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
|
||||
#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
|
||||
#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
|
||||
#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
|
||||
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
|
||||
#define MATCH_I_MAX_EILINE(P) TERN0(USE_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
|
||||
#define MATCH_I_MIN_EILINE(P) TERN0(USE_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
|
||||
#define MATCH_J_MAX_EILINE(P) TERN0(USE_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
|
||||
#define MATCH_J_MIN_EILINE(P) TERN0(USE_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
|
||||
#define MATCH_K_MAX_EILINE(P) TERN0(USE_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
|
||||
#define MATCH_K_MIN_EILINE(P) TERN0(USE_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
|
||||
#define MATCH_U_MAX_EILINE(P) TERN0(USE_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN))
|
||||
#define MATCH_U_MIN_EILINE(P) TERN0(USE_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN))
|
||||
#define MATCH_V_MAX_EILINE(P) TERN0(USE_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN))
|
||||
#define MATCH_V_MIN_EILINE(P) TERN0(USE_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN))
|
||||
#define MATCH_W_MAX_EILINE(P) TERN0(USE_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN))
|
||||
#define MATCH_W_MIN_EILINE(P) TERN0(USE_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN))
|
||||
#define MATCH_X2_MAX_EILINE(P) TERN0(USE_X2_MAX, DEFER4(MATCH_EILINE)(P, X2_MAX_PIN))
|
||||
#define MATCH_X2_MIN_EILINE(P) TERN0(USE_X2_MIN, DEFER4(MATCH_EILINE)(P, X2_MIN_PIN))
|
||||
#define MATCH_Y2_MAX_EILINE(P) TERN0(USE_Y2_MAX, DEFER4(MATCH_EILINE)(P, Y2_MAX_PIN))
|
||||
#define MATCH_Y2_MIN_EILINE(P) TERN0(USE_Y2_MIN, DEFER4(MATCH_EILINE)(P, Y2_MIN_PIN))
|
||||
#define MATCH_Z2_MAX_EILINE(P) TERN0(USE_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
|
||||
#define MATCH_Z2_MIN_EILINE(P) TERN0(USE_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
|
||||
#define MATCH_Z3_MAX_EILINE(P) TERN0(USE_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
|
||||
#define MATCH_Z3_MIN_EILINE(P) TERN0(USE_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
|
||||
#define MATCH_Z4_MAX_EILINE(P) TERN0(USE_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
|
||||
#define MATCH_Z4_MIN_EILINE(P) TERN0(USE_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
|
||||
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(USE_Z_MIN_PROBE, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
|
||||
|
||||
#define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \
|
||||
&& !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \
|
||||
@@ -105,31 +105,31 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE)
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#if !AVAILABLE_EILINE(X_MAX_PIN)
|
||||
#error "X_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#if !AVAILABLE_EILINE(X_MIN_PIN)
|
||||
#error "X_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(X_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
#if !AVAILABLE_EILINE(Y_MAX_PIN)
|
||||
#error "Y_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#if !AVAILABLE_EILINE(Y_MIN_PIN)
|
||||
#error "Y_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Y_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#if !AVAILABLE_EILINE(Z_MAX_PIN)
|
||||
#error "Z_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
@@ -141,115 +141,115 @@ void setup_endstop_interrupts() {
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
#if !AVAILABLE_EILINE(Z2_MAX_PIN)
|
||||
#error "Z2_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
#if !AVAILABLE_EILINE(Z2_MIN_PIN)
|
||||
#error "Z2_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z2_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
#if !AVAILABLE_EILINE(Z3_MAX_PIN)
|
||||
#error "Z3_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
#if !AVAILABLE_EILINE(Z3_MIN_PIN)
|
||||
#error "Z3_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z3_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
#if !AVAILABLE_EILINE(Z4_MAX_PIN)
|
||||
#error "Z4_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MAX_PIN);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
#if !AVAILABLE_EILINE(Z4_MIN_PIN)
|
||||
#error "Z4_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z4_MIN_PIN);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN)
|
||||
#error "Z_MIN_PROBE_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
_ATTACH(Z_MIN_PROBE_PIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
#if !AVAILABLE_EILINE(I_MAX_PIN)
|
||||
#error "I_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
#if !AVAILABLE_EILINE(I_MIN_PIN)
|
||||
#error "I_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
#if !AVAILABLE_EILINE(J_MAX_PIN)
|
||||
#error "J_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
#if !AVAILABLE_EILINE(J_MIN_PIN)
|
||||
#error "J_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
#if !AVAILABLE_EILINE(K_MAX_PIN)
|
||||
#error "K_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
#if !AVAILABLE_EILINE(K_MIN_PIN)
|
||||
#error "K_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
#if !AVAILABLE_EILINE(U_MAX_PIN)
|
||||
#error "U_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
#if !AVAILABLE_EILINE(U_MIN_PIN)
|
||||
#error "U_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
#if !AVAILABLE_EILINE(V_MAX_PIN)
|
||||
#error "V_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
#if !AVAILABLE_EILINE(V_MIN_PIN)
|
||||
#error "V_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
#if !AVAILABLE_EILINE(W_MAX_PIN)
|
||||
#error "W_MAX_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
#if !AVAILABLE_EILINE(W_MIN_PIN)
|
||||
#error "W_MIN_PIN has no EXTINT line available. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
|
||||
#endif
|
||||
|
@@ -29,33 +29,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -54,33 +54,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -47,33 +47,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -46,33 +46,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
*/
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -46,33 +46,33 @@ void endstop_ISR() { endstops.update(); }
|
||||
*/
|
||||
void setup_endstop_interrupts() {
|
||||
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
|
||||
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
|
||||
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
|
||||
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
|
||||
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
|
||||
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
|
||||
TERN_(HAS_Z_MIN_PIN, _ATTACH(Z_MIN_PIN));
|
||||
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
|
||||
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
|
||||
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
|
||||
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
|
||||
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
|
||||
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
|
||||
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
|
||||
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
|
||||
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
|
||||
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
|
||||
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
|
||||
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
|
||||
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
|
||||
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
|
||||
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
|
||||
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
|
||||
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
|
||||
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
|
||||
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
|
||||
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
|
||||
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
|
||||
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
|
||||
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
|
||||
}
|
||||
|
@@ -378,6 +378,7 @@ void test_tmc_connection(LOGICAL_AXIS_DECL(const bool, true));
|
||||
|
||||
return drv_status.stallGuard;
|
||||
}
|
||||
|
||||
#endif // SPI_ENDSTOPS
|
||||
|
||||
#endif // USE_SENSORLESS
|
||||
|
@@ -332,7 +332,7 @@ void GcodeSuite::G28() {
|
||||
#if SENSORLESS_STALLGUARD_DELAY
|
||||
safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle
|
||||
#endif
|
||||
#endif
|
||||
#endif // HAS_HOMING_CURRENT
|
||||
|
||||
#if ENABLED(IMPROVE_HOMING_RELIABILITY)
|
||||
motion_state_t saved_motion_state = begin_slow_homing();
|
||||
|
@@ -476,8 +476,7 @@ void GcodeSuite::G33() {
|
||||
#if HAS_DELTA_SENSORLESS_PROBING
|
||||
if (verbose_level > 0 && do_save_offset_adj) {
|
||||
offset_sensorless_adj.reset();
|
||||
|
||||
auto caltower = [&](Probe::sense_bool_t s){
|
||||
auto caltower = [&](Probe::sense_bool_t s) {
|
||||
float z_at_pt[NPP + 1];
|
||||
LOOP_CAL_ALL(rad) z_at_pt[rad] = 0.0f;
|
||||
probe.test_sensitivity = s;
|
||||
|
@@ -127,21 +127,20 @@
|
||||
case DXC_MIRRORED_MODE: DEBUG_ECHOPGM("MIRRORED"); break;
|
||||
}
|
||||
DEBUG_ECHOPGM("\nActive Ext: ", active_extruder);
|
||||
if (!active_extruder_parked) DEBUG_ECHOPGM(" NOT ");
|
||||
DEBUG_ECHOPGM(" parked.");
|
||||
DEBUG_ECHOPGM("\nactive_extruder_x_pos: ", current_position.x);
|
||||
DEBUG_ECHOPGM("\ninactive_extruder_x: ", inactive_extruder_x);
|
||||
DEBUG_ECHOPGM("\nextruder_duplication_enabled: ", extruder_duplication_enabled);
|
||||
DEBUG_ECHOPGM("\nduplicate_extruder_x_offset: ", duplicate_extruder_x_offset);
|
||||
DEBUG_ECHOPGM("\nduplicate_extruder_temp_offset: ", duplicate_extruder_temp_offset);
|
||||
DEBUG_ECHOPGM("\ndelayed_move_time: ", delayed_move_time);
|
||||
DEBUG_ECHOPGM("\nX1 Home X: ", x_home_pos(0), "\nX1_MIN_POS=", X1_MIN_POS, "\nX1_MAX_POS=", X1_MAX_POS);
|
||||
DEBUG_ECHOPGM("\nX2 Home X: ", x_home_pos(1), "\nX2_MIN_POS=", X2_MIN_POS, "\nX2_MAX_POS=", X2_MAX_POS);
|
||||
DEBUG_ECHOPGM("\nX2_HOME_DIR=", X2_HOME_DIR, "\nX2_HOME_POS=", X2_HOME_POS);
|
||||
DEBUG_ECHOPGM("\nDEFAULT_DUAL_X_CARRIAGE_MODE=", STRINGIFY(DEFAULT_DUAL_X_CARRIAGE_MODE));
|
||||
DEBUG_ECHOPGM("\toolchange_settings.z_raise=", toolchange_settings.z_raise);
|
||||
DEBUG_ECHOPGM("\nDEFAULT_DUPLICATION_X_OFFSET=", DEFAULT_DUPLICATION_X_OFFSET);
|
||||
DEBUG_EOL();
|
||||
if (!active_extruder_parked) DEBUG_ECHOPGM(" NOT ", F(" parked."));
|
||||
DEBUG_ECHOLNPGM(
|
||||
"\nactive_extruder_x_pos: ", current_position.x,
|
||||
"\ninactive_extruder_x: ", inactive_extruder_x,
|
||||
"\nextruder_duplication_enabled: ", extruder_duplication_enabled,
|
||||
"\nduplicate_extruder_x_offset: ", duplicate_extruder_x_offset,
|
||||
"\nduplicate_extruder_temp_offset: ", duplicate_extruder_temp_offset,
|
||||
"\ndelayed_move_time: ", delayed_move_time,
|
||||
"\nX1 Home: ", x_home_pos(0), " X1_MIN_POS=", X1_MIN_POS, " X1_MAX_POS=", X1_MAX_POS,
|
||||
"\nX2 Home: ", x_home_pos(1), " X2_MIN_POS=", X2_MIN_POS, " X2_MAX_POS=", X2_MAX_POS,
|
||||
"\nDEFAULT_DUAL_X_CARRIAGE_MODE=", STRINGIFY(DEFAULT_DUAL_X_CARRIAGE_MODE),
|
||||
"\toolchange_settings.z_raise=", toolchange_settings.z_raise,
|
||||
"\nDEFAULT_DUPLICATION_X_OFFSET=", DEFAULT_DUPLICATION_X_OFFSET
|
||||
);
|
||||
|
||||
HOTEND_LOOP() {
|
||||
DEBUG_ECHOPGM_P(SP_T_STR, e);
|
||||
|
@@ -1391,9 +1391,9 @@
|
||||
#define HAS_DELTA_SENSORLESS_PROBING 1
|
||||
#endif
|
||||
#if NONE(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING)
|
||||
#define USES_Z_MIN_PROBE_PIN 1
|
||||
#define USE_Z_MIN_PROBE 1
|
||||
#endif
|
||||
#if Z_HOME_TO_MIN && (DISABLED(USES_Z_MIN_PROBE_PIN) || ENABLED(USE_PROBE_FOR_Z_HOMING))
|
||||
#if Z_HOME_TO_MIN && (DISABLED(USE_Z_MIN_PROBE) || ENABLED(USE_PROBE_FOR_Z_HOMING))
|
||||
#define HOMING_Z_WITH_PROBE 1
|
||||
#endif
|
||||
#ifndef Z_PROBE_LOW_POINT
|
||||
@@ -1778,7 +1778,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \
|
||||
#if (HAS_X_AXIS && X_HOME_DIR) || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \
|
||||
|| (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR) \
|
||||
|| (HAS_U_AXIS && U_HOME_DIR) || (HAS_V_AXIS && V_HOME_DIR) || (HAS_W_AXIS && W_HOME_DIR)
|
||||
#define HAS_ENDSTOPS 1
|
||||
|
@@ -1044,12 +1044,6 @@
|
||||
#define POLL_JOG
|
||||
#endif
|
||||
|
||||
#if X2_HOME_DIR > 0
|
||||
#define X2_HOME_TO_MAX 1
|
||||
#elif X2_HOME_DIR < 0
|
||||
#define X2_HOME_TO_MIN 1
|
||||
#endif
|
||||
|
||||
#ifndef HOMING_BUMP_MM
|
||||
#define HOMING_BUMP_MM { 0, 0, 0 }
|
||||
#endif
|
||||
@@ -1156,6 +1150,7 @@
|
||||
#define SD_CONNECTION_IS(V) (_SDCARD_ID(SDCARD_CONNECTION) == _SDCARD_ID(V))
|
||||
#else
|
||||
#define SD_CONNECTION_IS(...) 0
|
||||
#undef SD_ABORT_ON_ENDSTOP_HIT
|
||||
#endif
|
||||
|
||||
// Power Monitor sensors
|
||||
|
@@ -1398,6 +1398,7 @@
|
||||
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
|
||||
#define USE_SENSORLESS 1
|
||||
#endif
|
||||
|
||||
// Disable Z axis sensorless homing if a probe is used to home the Z axis
|
||||
#if HOMING_Z_WITH_PROBE
|
||||
#undef Z_STALL_SENSITIVITY
|
||||
@@ -1481,15 +1482,6 @@
|
||||
#define Y2_SLAVE_ADDRESS 0
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
#define U_SPI_SENSORLESS U_SENSORLESS
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
#define V_SPI_SENSORLESS V_SENSORLESS
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
#define W_SPI_SENSORLESS W_SENSORLESS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Z)
|
||||
@@ -1944,202 +1936,205 @@
|
||||
// Endstops and bed probe
|
||||
//
|
||||
|
||||
#define _HAS_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M))
|
||||
#define _USE_STOP(A,N,M,C) ((A##_HOME_TO_##M || (C+0)) && PIN_EXISTS(A##N##_##M))
|
||||
|
||||
#if _HAS_STOP(X,,MIN,)
|
||||
#define HAS_X_MIN 1
|
||||
#if _USE_STOP(X,,MIN,)
|
||||
#define USE_X_MIN 1
|
||||
#endif
|
||||
#if _HAS_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE))
|
||||
#define HAS_X_MAX 1
|
||||
#if _USE_STOP(X,,MAX,ENABLED(DUAL_X_CARRIAGE))
|
||||
#define USE_X_MAX 1
|
||||
#endif
|
||||
#if HAS_X_MIN || HAS_X_MAX
|
||||
#if USE_X_MIN || USE_X_MAX
|
||||
#define HAS_X_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(Y,,MIN,)
|
||||
#define HAS_Y_MIN 1
|
||||
#elif _HAS_STOP(Y,,MAX,)
|
||||
#define HAS_Y_MAX 1
|
||||
#if _USE_STOP(Y,,MIN,)
|
||||
#define USE_Y_MIN 1
|
||||
#elif _USE_STOP(Y,,MAX,)
|
||||
#define USE_Y_MAX 1
|
||||
#endif
|
||||
#if HAS_Y_MIN || HAS_Y_MAX
|
||||
#if USE_Y_MIN || USE_Y_MAX
|
||||
#define HAS_Y_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING))
|
||||
#define HAS_Z_MIN 1
|
||||
#if _USE_STOP(Z,,MIN,EITHER(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, HAS_DELTA_SENSORLESS_PROBING))
|
||||
#define USE_Z_MIN 1
|
||||
#if !HAS_DELTA_SENSORLESS_PROBING
|
||||
#define HAS_Z_MIN_PIN 1
|
||||
#endif
|
||||
#endif
|
||||
#if _HAS_STOP(Z,,MAX,)
|
||||
#define HAS_Z_MAX 1
|
||||
#if _USE_STOP(Z,,MAX,)
|
||||
#define USE_Z_MAX 1
|
||||
#endif
|
||||
#if HAS_Z_MIN || HAS_Z_MAX
|
||||
#if USE_Z_MIN || USE_Z_MAX
|
||||
#define HAS_Z_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(I,,MIN,)
|
||||
#define HAS_I_MIN 1
|
||||
#elif _HAS_STOP(I,,MAX,)
|
||||
#define HAS_I_MAX 1
|
||||
#if _USE_STOP(I,,MIN,)
|
||||
#define USE_I_MIN 1
|
||||
#elif _USE_STOP(I,,MAX,)
|
||||
#define USE_I_MAX 1
|
||||
#endif
|
||||
#if HAS_I_MIN || HAS_I_MAX
|
||||
#if USE_I_MIN || USE_I_MAX
|
||||
#define HAS_I_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(J,,MIN,)
|
||||
#define HAS_J_MIN 1
|
||||
#elif _HAS_STOP(J,,MAX,)
|
||||
#define HAS_J_MAX 1
|
||||
#if _USE_STOP(J,,MIN,)
|
||||
#define USE_J_MIN 1
|
||||
#elif _USE_STOP(J,,MAX,)
|
||||
#define USE_J_MAX 1
|
||||
#endif
|
||||
#if HAS_J_MIN || HAS_J_MAX
|
||||
#if USE_J_MIN || USE_J_MAX
|
||||
#define HAS_J_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(K,,MIN,)
|
||||
#define HAS_K_MIN 1
|
||||
#elif _HAS_STOP(K,,MAX,)
|
||||
#define HAS_K_MAX 1
|
||||
#if _USE_STOP(K,,MIN,)
|
||||
#define USE_K_MIN 1
|
||||
#elif _USE_STOP(K,,MAX,)
|
||||
#define USE_K_MAX 1
|
||||
#endif
|
||||
#if HAS_K_MIN || HAS_K_MAX
|
||||
#if USE_K_MIN || USE_K_MAX
|
||||
#define HAS_K_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(U,,MIN,)
|
||||
#define HAS_U_MIN 1
|
||||
#elif _HAS_STOP(U,,MAX,)
|
||||
#define HAS_U_MAX 1
|
||||
#if _USE_STOP(U,,MIN,)
|
||||
#define USE_U_MIN 1
|
||||
#elif _USE_STOP(U,,MAX,)
|
||||
#define USE_U_MAX 1
|
||||
#endif
|
||||
#if HAS_U_MIN || HAS_U_MAX
|
||||
#if USE_U_MIN || USE_U_MAX
|
||||
#define HAS_U_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(V,,MIN,)
|
||||
#define HAS_V_MIN 1
|
||||
#elif _HAS_STOP(V,,MAX,)
|
||||
#define HAS_V_MAX 1
|
||||
#if _USE_STOP(V,,MIN,)
|
||||
#define USE_V_MIN 1
|
||||
#elif _USE_STOP(V,,MAX,)
|
||||
#define USE_V_MAX 1
|
||||
#endif
|
||||
#if HAS_V_MIN || HAS_V_MAX
|
||||
#if USE_V_MIN || USE_V_MAX
|
||||
#define HAS_V_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if _HAS_STOP(W,,MIN,)
|
||||
#define HAS_W_MIN 1
|
||||
#elif _HAS_STOP(W,,MAX,)
|
||||
#define HAS_W_MAX 1
|
||||
#if _USE_STOP(W,,MIN,)
|
||||
#define USE_W_MIN 1
|
||||
#elif _USE_STOP(W,,MAX,)
|
||||
#define USE_W_MAX 1
|
||||
#endif
|
||||
#if HAS_W_MIN || HAS_W_MAX
|
||||
#if USE_W_MIN || USE_W_MAX
|
||||
#define HAS_W_ENDSTOP 1
|
||||
#endif
|
||||
|
||||
#if EITHER(DUAL_X_CARRIAGE, X_DUAL_ENDSTOPS)
|
||||
#if _HAS_STOP(X,2,MIN,)
|
||||
#define HAS_X2_MIN 1
|
||||
#elif _HAS_STOP(X,2,MAX,)
|
||||
#define HAS_X2_MAX 1
|
||||
#if _USE_STOP(X,2,MIN,)
|
||||
#define USE_X2_MIN 1
|
||||
#elif _USE_STOP(X,2,MAX,)
|
||||
#define USE_X2_MAX 1
|
||||
#endif
|
||||
#if HAS_X2_MIN || HAS_X2_MAX
|
||||
#if USE_X2_MIN || USE_X2_MAX
|
||||
#define HAS_X2_ENDSTOP 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
#if _HAS_STOP(Y,2,MIN,)
|
||||
#define HAS_Y2_MIN 1
|
||||
#elif _HAS_STOP(Y,2,MAX,)
|
||||
#define HAS_Y2_MAX 1
|
||||
#if _USE_STOP(Y,2,MIN,)
|
||||
#define USE_Y2_MIN 1
|
||||
#elif _USE_STOP(Y,2,MAX,)
|
||||
#define USE_Y2_MAX 1
|
||||
#endif
|
||||
#if HAS_Y2_MIN || HAS_Y2_MAX
|
||||
#if USE_Y2_MIN || USE_Y2_MAX
|
||||
#define HAS_Y2_ENDSTOP 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
#if _HAS_STOP(Z,2,MIN,)
|
||||
#define HAS_Z2_MIN 1
|
||||
#elif _HAS_STOP(Z,2,MAX,)
|
||||
#define HAS_Z2_MAX 1
|
||||
#if _USE_STOP(Z,2,MIN,)
|
||||
#define USE_Z2_MIN 1
|
||||
#elif _USE_STOP(Z,2,MAX,)
|
||||
#define USE_Z2_MAX 1
|
||||
#endif
|
||||
#if HAS_Z2_MIN || HAS_Z2_MAX
|
||||
#if USE_Z2_MIN || USE_Z2_MAX
|
||||
#define HAS_Z2_ENDSTOP 1
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
#if _HAS_STOP(Z,3,MIN,)
|
||||
#define HAS_Z3_MIN 1
|
||||
#elif _HAS_STOP(Z,3,MAX,)
|
||||
#define HAS_Z3_MAX 1
|
||||
#if _USE_STOP(Z,3,MIN,)
|
||||
#define USE_Z3_MIN 1
|
||||
#elif _USE_STOP(Z,3,MAX,)
|
||||
#define USE_Z3_MAX 1
|
||||
#endif
|
||||
#if HAS_Z3_MIN || HAS_Z3_MAX
|
||||
#if USE_Z3_MIN || USE_Z3_MAX
|
||||
#define HAS_Z3_ENDSTOP 1
|
||||
#endif
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
#if _HAS_STOP(Z,4,MIN,)
|
||||
#define HAS_Z4_MIN 1
|
||||
#elif _HAS_STOP(Z,4,MAX,)
|
||||
#define HAS_Z4_MAX 1
|
||||
#if _USE_STOP(Z,4,MIN,)
|
||||
#define USE_Z4_MIN 1
|
||||
#elif _USE_STOP(Z,4,MAX,)
|
||||
#define USE_Z4_MAX 1
|
||||
#endif
|
||||
#if HAS_Z4_MIN || HAS_Z4_MAX
|
||||
#if USE_Z4_MIN || USE_Z4_MAX
|
||||
#define HAS_Z4_ENDSTOP 1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_BED_PROBE && PIN_EXISTS(Z_MIN_PROBE)
|
||||
#define HAS_Z_MIN_PROBE_PIN 1
|
||||
#endif
|
||||
|
||||
#undef _HAS_STOP
|
||||
#undef _USE_STOP
|
||||
|
||||
/**
|
||||
* Set ENDSTOPPULLUPS for active endstop switches
|
||||
*/
|
||||
#if ENABLED(ENDSTOPPULLUPS)
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#define ENDSTOPPULLUP_XMIN
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#define ENDSTOPPULLUP_XMAX
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#define ENDSTOPPULLUP_YMIN
|
||||
#elif HAS_Y_MAX
|
||||
#endif
|
||||
#if USE_Y_MAX
|
||||
#define ENDSTOPPULLUP_YMAX
|
||||
#endif
|
||||
#if HAS_Z_MIN_PIN
|
||||
#define ENDSTOPPULLUP_ZMIN
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#define ENDSTOPPULLUP_ZMAX
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
#define ENDSTOPPULLUP_IMIN
|
||||
#elif HAS_I_MAX
|
||||
#endif
|
||||
#if USE_I_MAX
|
||||
#define ENDSTOPPULLUP_IMAX
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
#define ENDSTOPPULLUP_JMIN
|
||||
#elif HAS_J_MAX
|
||||
#endif
|
||||
#if USE_J_MAX
|
||||
#define ENDSTOPPULLUP_JMAX
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
#define ENDSTOPPULLUP_KMIN
|
||||
#elif HAS_K_MAX
|
||||
#endif
|
||||
#if USE_K_MAX
|
||||
#define ENDSTOPPULLUP_KMAX
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
#define ENDSTOPPULLUP_UMIN
|
||||
#elif HAS_U_MAX
|
||||
#endif
|
||||
#if USE_U_MAX
|
||||
#define ENDSTOPPULLUP_UMAX
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
#define ENDSTOPPULLUP_VMIN
|
||||
#elif HAS_V_MAX
|
||||
#endif
|
||||
#if USE_V_MAX
|
||||
#define ENDSTOPPULLUP_VMAX
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
#define ENDSTOPPULLUP_WMIN
|
||||
#elif HAS_W_MAX
|
||||
#endif
|
||||
#if USE_W_MAX
|
||||
#define ENDSTOPPULLUP_WMAX
|
||||
#endif
|
||||
#endif
|
||||
@@ -2148,51 +2143,58 @@
|
||||
* Set ENDSTOPPULLDOWNS for active endstop switches
|
||||
*/
|
||||
#if ENABLED(ENDSTOPPULLDOWNS)
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
#define ENDSTOPPULLDOWN_XMIN
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
#define ENDSTOPPULLDOWN_XMAX
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
#define ENDSTOPPULLDOWN_YMIN
|
||||
#elif HAS_Y_MAX
|
||||
#endif
|
||||
#if USE_Y_MAX
|
||||
#define ENDSTOPPULLDOWN_YMAX
|
||||
#endif
|
||||
#if HAS_Z_MIN_PIN
|
||||
#if USE_Z_MIN
|
||||
#define ENDSTOPPULLDOWN_ZMIN
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
#define ENDSTOPPULLDOWN_ZMAX
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
#define ENDSTOPPULLDOWN_IMIN
|
||||
#elif HAS_I_MAX
|
||||
#endif
|
||||
#if USE_I_MAX
|
||||
#define ENDSTOPPULLDOWN_IMAX
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
#define ENDSTOPPULLDOWN_JMIN
|
||||
#elif HAS_J_MAX
|
||||
#endif
|
||||
#if USE_J_MAX
|
||||
#define ENDSTOPPULLDOWN_JMAX
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
#define ENDSTOPPULLDOWN_KMIN
|
||||
#elif HAS_K_MAX
|
||||
#endif
|
||||
#if USE_K_MAX
|
||||
#define ENDSTOPPULLDOWN_KMAX
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
#define ENDSTOPPULLDOWN_UMIN
|
||||
#elif HAS_U_MAX
|
||||
#endif
|
||||
#if USE_U_MAX
|
||||
#define ENDSTOPPULLDOWN_UMAX
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
#define ENDSTOPPULLDOWN_VMIN
|
||||
#elif HAS_V_MAX
|
||||
#endif
|
||||
#if USE_V_MAX
|
||||
#define ENDSTOPPULLDOWN_VMAX
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
#define ENDSTOPPULLDOWN_WMIN
|
||||
#elif HAS_W_MAX
|
||||
#endif
|
||||
#if USE_W_MAX
|
||||
#define ENDSTOPPULLDOWN_WMAX
|
||||
#endif
|
||||
#endif
|
||||
@@ -2817,7 +2819,7 @@
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_BED_PROBE
|
||||
#if BOTH(ENDSTOPPULLUPS, HAS_Z_MIN_PROBE_PIN)
|
||||
#if BOTH(ENDSTOPPULLUPS, USE_Z_MIN_PROBE)
|
||||
#define ENDSTOPPULLUP_ZMIN_PROBE
|
||||
#endif
|
||||
#ifndef XY_PROBE_FEEDRATE
|
||||
|
@@ -1253,7 +1253,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#else
|
||||
#define _IS_5V_TOLERANT(P) 1 // Assume 5V tolerance
|
||||
#endif
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if !_IS_5V_TOLERANT(Z_MIN_PROBE_PIN)
|
||||
#error "BLTOUCH_SET_5V_MODE is not compatible with the Z_MIN_PROBE_PIN."
|
||||
#endif
|
||||
@@ -1265,7 +1265,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#undef _IS_5V_TOLERANT
|
||||
#undef _5V
|
||||
#elif NONE(ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE)
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#error "BLTOUCH on Z_MIN_PROBE_PIN requires ENDSTOPPULLUP_ZMIN_PROBE, ENDSTOPPULLUPS, or BLTOUCH_SET_5V_MODE."
|
||||
#else
|
||||
#error "BLTOUCH on Z_MIN_PIN requires ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUPS, or BLTOUCH_SET_5V_MODE."
|
||||
@@ -1382,7 +1382,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != Z_MIN_ENDSTOP_HIT_STATE
|
||||
#error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_HIT_STATE to match Z_MIN_PROBE_ENDSTOP_HIT_STATE."
|
||||
#endif
|
||||
#elif !HAS_Z_MIN_PROBE_PIN
|
||||
#elif !USE_Z_MIN_PROBE
|
||||
#error "Z_MIN_PROBE_PIN must be defined if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is not enabled."
|
||||
#endif
|
||||
|
||||
@@ -1767,12 +1767,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#error "DUAL_X_CARRIAGE cannot be used with COREXY, COREYX, COREXZ, COREZX, MARKFORGED_YX, or MARKFORGED_XY."
|
||||
#elif !GOOD_AXIS_PINS(X2)
|
||||
#error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined."
|
||||
#elif !HAS_X_MAX
|
||||
#elif !USE_X_MAX
|
||||
#error "DUAL_X_CARRIAGE requires an X_MAX_PIN in addition to the X_MIN_PIN."
|
||||
#elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS)
|
||||
#error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS."
|
||||
#elif X_HOME_TO_MAX || X2_HOME_TO_MIN
|
||||
#error "DUAL_X_CARRIAGE requires X_HOME_DIR -1 and X2_HOME_DIR 1."
|
||||
#elif X_HOME_TO_MAX
|
||||
#error "DUAL_X_CARRIAGE requires X_HOME_DIR 1."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -3045,13 +3045,12 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) for W MIN homing."
|
||||
#elif W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) for W MAX homing."
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(SPI_ENDSTOPS)
|
||||
#if ENABLED(QUICK_HOME)
|
||||
#warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results."
|
||||
#if !ANY_AXIS_HAS(SPI)
|
||||
#error "SPI_ENDSTOPS requires stepper drivers with SPI support."
|
||||
#endif
|
||||
#else // !SPI_ENDSTOPS
|
||||
// Stall detection DIAG = HIGH : TMC2209
|
||||
@@ -3228,7 +3227,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, Z, I, J, K, U, V, or W axes."
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // SENSORLESS_HOMING
|
||||
|
||||
// Sensorless probing requirements
|
||||
#if ENABLED(SENSORLESS_PROBING)
|
||||
|
@@ -668,6 +668,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(QUICK_HOME) && (X_SPI_SENSORLESS || Y_SPI_SENSORLESS)
|
||||
#warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results."
|
||||
#endif
|
||||
|
||||
#if CANNOT_EMBED_CONFIGURATION
|
||||
#warning "Disabled CONFIGURATION_EMBEDDING because the target usually has less flash storage. Define FORCE_CONFIG_EMBED to override."
|
||||
#endif
|
||||
|
@@ -72,9 +72,9 @@ void ESDiagClass::Draw() {
|
||||
DWINUI::Draw_Button(BTN_Continue, 86, 250);
|
||||
DWINUI::cursor.y = 80;
|
||||
#define ES_LABEL(S) draw_es_label(F(STR_##S))
|
||||
TERN_(HAS_X_MIN, ES_LABEL(X_MIN)); TERN_(HAS_X_MAX, ES_LABEL(X_MAX));
|
||||
TERN_(HAS_Y_MIN, ES_LABEL(Y_MIN)); TERN_(HAS_Y_MAX, ES_LABEL(Y_MAX));
|
||||
TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(HAS_Z_MAX, ES_LABEL(Z_MAX));
|
||||
TERN_(USE_X_MIN, ES_LABEL(X_MIN)); TERN_(USE_X_MAX, ES_LABEL(X_MAX));
|
||||
TERN_(USE_Y_MIN, ES_LABEL(Y_MIN)); TERN_(USE_Y_MAX, ES_LABEL(Y_MAX));
|
||||
TERN_(HAS_Z_MIN_PIN, ES_LABEL(Z_MIN)); TERN_(USE_Z_MAX, ES_LABEL(Z_MAX));
|
||||
TERN_(HAS_FILAMENT_SENSOR, draw_es_label(F(STR_FILAMENT)));
|
||||
Update();
|
||||
}
|
||||
@@ -82,9 +82,9 @@ void ESDiagClass::Draw() {
|
||||
void ESDiagClass::Update() {
|
||||
DWINUI::cursor.y = 80;
|
||||
#define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE)
|
||||
TERN_(HAS_X_MIN, ES_REPORT(X_MIN)); TERN_(HAS_X_MAX, ES_REPORT(X_MAX));
|
||||
TERN_(HAS_Y_MIN, ES_REPORT(Y_MIN)); TERN_(HAS_Y_MAX, ES_REPORT(Y_MAX));
|
||||
TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(HAS_Z_MAX, ES_REPORT(Z_MAX));
|
||||
TERN_(USE_X_MIN, ES_REPORT(X_MIN)); TERN_(USE_X_MAX, ES_REPORT(X_MAX));
|
||||
TERN_(USE_Y_MIN, ES_REPORT(Y_MIN)); TERN_(USE_Y_MAX, ES_REPORT(Y_MAX));
|
||||
TERN_(HAS_Z_MIN_PIN, ES_REPORT(Z_MIN)); TERN_(USE_Z_MAX, ES_REPORT(Z_MAX));
|
||||
TERN_(HAS_FILAMENT_SENSOR, draw_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE));
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
@@ -54,27 +54,27 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
cmd.font(TERN(TOUCH_UI_PORTRAIT, font_large, font_medium))
|
||||
.text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
|
||||
.font(font_tiny);
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(1, 2, PSTR(STR_X_MAX), X_MAX)
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(3, 2, PSTR(STR_Y_MAX), Y_MAX)
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(5, 2, PSTR(STR_Z_MAX), Z_MAX)
|
||||
#endif
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(1, 3, PSTR(STR_X_MIN), X_MIN)
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN)
|
||||
|
@@ -87,12 +87,12 @@
|
||||
#if PIN_EXISTS(MT_DET_2)
|
||||
mt_det2_sta = (READ(MT_DET_2_PIN) == LOW);
|
||||
#endif
|
||||
TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX)));
|
||||
TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX)));
|
||||
TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX)));
|
||||
TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX)));
|
||||
TERN_(HAS_X_ENDSTOP, endstopx1_sta = ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX)));
|
||||
TERN_(HAS_X2_ENDSTOP, endstopx2_sta = ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX)));
|
||||
TERN_(HAS_Y_ENDSTOP, endstopy1_sta = ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX)));
|
||||
TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX)));
|
||||
TERN_(HAS_Z_ENDSTOP, endstopz1_sta = ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX)));
|
||||
TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX)));
|
||||
TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX)));
|
||||
}
|
||||
|
||||
void test_gpio_readlevel_H() {
|
||||
@@ -104,12 +104,12 @@
|
||||
#if PIN_EXISTS(MT_DET_2)
|
||||
mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH);
|
||||
#endif
|
||||
TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(HAS_X_MIN, X_MIN, X_MAX)));
|
||||
TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(HAS_X2_MIN, X2_MIN, X2_MAX)));
|
||||
TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(HAS_Y_MIN, Y_MIN, Y_MAX)));
|
||||
TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(HAS_Y2_MIN, Y2_MIN, Y2_MAX)));
|
||||
TERN_(HAS_X_ENDSTOP, endstopx1_sta = !ESTATE(TERN(USE_X_MIN, X_MIN, X_MAX)));
|
||||
TERN_(HAS_X2_ENDSTOP, endstopx2_sta = !ESTATE(TERN(USE_X2_MIN, X2_MIN, X2_MAX)));
|
||||
TERN_(HAS_Y_ENDSTOP, endstopy1_sta = !ESTATE(TERN(USE_Y_MIN, Y_MIN, Y_MAX)));
|
||||
TERN_(HAS_Y2_ENDSTOP, endstopy2_sta = !ESTATE(TERN(USE_Y2_MIN, Y2_MIN, Y2_MAX)));
|
||||
TERN_(HAS_Z_ENDSTOP, endstopz1_sta = !ESTATE(TERN(HAS_Z_MIN_PIN, Z_MIN, Z_MAX)));
|
||||
TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(HAS_Z2_MIN, Z2_MIN, Z2_MAX)));
|
||||
TERN_(HAS_Z2_ENDSTOP, endstopz2_sta = !ESTATE(TERN(USE_Z2_MIN, Z2_MIN, Z2_MAX)));
|
||||
}
|
||||
|
||||
#include "../../../libs/buzzer.h"
|
||||
|
@@ -445,9 +445,9 @@ void NextionTFT::PanelInfo(uint8_t req) {
|
||||
#elif Z_HOME_TO_MAX
|
||||
SEND_VALasTXT("z2", READ(Z_MAX_PIN) == Z_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
SEND_VALasTXT("z2", READ(Z2_MIN_PIN) == Z2_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#elif HAS_Z2_MAX
|
||||
#elif USE_Z2_MAX
|
||||
SEND_VALasTXT("z2", READ(Z2_MAX_PIN) == Z2_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if HAS_BED_PROBE
|
||||
|
@@ -38,7 +38,7 @@
|
||||
#include HAL_PATH(.., endstop_interrupts.h)
|
||||
#endif
|
||||
|
||||
#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA)
|
||||
#if ENABLED(SD_ABORT_ON_ENDSTOP_HIT)
|
||||
#include "printcounter.h" // for print_job_timer
|
||||
#endif
|
||||
|
||||
@@ -110,88 +110,88 @@ Endstops::endstop_mask_t Endstops::live_state = 0;
|
||||
void Endstops::init() {
|
||||
|
||||
#define _INIT_ENDSTOP(T,A,N) TERN(ENDSTOPPULLUP_##A##T, SET_INPUT_PULLUP, TERN(ENDSTOPPULLDOWN_##A##T, SET_INPUT_PULLDOWN, SET_INPUT))(A##N##_##T##_PIN)
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
_INIT_ENDSTOP(MIN,X,);
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
_INIT_ENDSTOP(MAX,X,);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
_INIT_ENDSTOP(MIN,X,2);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
_INIT_ENDSTOP(MAX,X,2);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
_INIT_ENDSTOP(MIN,Y,);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
_INIT_ENDSTOP(MAX,Y,);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
_INIT_ENDSTOP(MIN,Y,2);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
_INIT_ENDSTOP(MAX,Y,2);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PIN
|
||||
_INIT_ENDSTOP(MIN,Z,);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
_INIT_ENDSTOP(MAX,Z,);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,2);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
_INIT_ENDSTOP(MAX,Z,2);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,3);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
_INIT_ENDSTOP(MAX,Z,3);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,4);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
_INIT_ENDSTOP(MAX,Z,4);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
_INIT_ENDSTOP(MIN,I,);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
_INIT_ENDSTOP(MAX,I,);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
_INIT_ENDSTOP(MIN,J,);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
_INIT_ENDSTOP(MAX,J,);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
_INIT_ENDSTOP(MIN,K,);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
_INIT_ENDSTOP(MAX,K,);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
_INIT_ENDSTOP(MIN,U,);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
_INIT_ENDSTOP(MAX,U,);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
_INIT_ENDSTOP(MIN,V,);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
_INIT_ENDSTOP(MAX,V,);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
_INIT_ENDSTOP(MIN,W,);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
_INIT_ENDSTOP(MAX,W,);
|
||||
#endif
|
||||
|
||||
@@ -205,7 +205,7 @@ void Endstops::init() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN_PROBE)
|
||||
SET_INPUT_PULLUP(Z_MIN_PROBE_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMIN_PROBE)
|
||||
@@ -338,7 +338,7 @@ void Endstops::event_handler() {
|
||||
_ENDSTOP_HIT_TEST(W,'W')
|
||||
);
|
||||
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#define P_AXIS Z_AXIS
|
||||
if (TEST(hit_state, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P');
|
||||
#endif
|
||||
@@ -352,7 +352,7 @@ void Endstops::event_handler() {
|
||||
)
|
||||
);
|
||||
|
||||
#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, HAS_MEDIA)
|
||||
#if ENABLED(SD_ABORT_ON_ENDSTOP_HIT)
|
||||
if (planner.abort_on_endstop_hit) {
|
||||
card.abortFilePrintNow();
|
||||
quickstop_stepper();
|
||||
@@ -384,94 +384,94 @@ void __O2 Endstops::report_states() {
|
||||
TERN_(BLTOUCH, bltouch._set_SW_mode());
|
||||
SERIAL_ECHOLNPGM(STR_M119_REPORT);
|
||||
#define ES_REPORT(S) print_es_state(READ_ENDSTOP(S##_PIN) == S##_ENDSTOP_HIT_STATE, F(STR_##S))
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
ES_REPORT(X_MIN);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
ES_REPORT(X2_MIN);
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
ES_REPORT(X_MAX);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
ES_REPORT(X2_MAX);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
ES_REPORT(Y_MIN);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
ES_REPORT(Y2_MIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
ES_REPORT(Y_MAX);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
ES_REPORT(Y2_MAX);
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
#if USE_Z_MIN
|
||||
ES_REPORT(Z_MIN);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
ES_REPORT(Z2_MIN);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
ES_REPORT(Z3_MIN);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
ES_REPORT(Z4_MIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
ES_REPORT(Z_MAX);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
ES_REPORT(Z2_MAX);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
ES_REPORT(Z3_MAX);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
ES_REPORT(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
ES_REPORT(I_MIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
ES_REPORT(I_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
ES_REPORT(J_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
ES_REPORT(J_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
ES_REPORT(K_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
ES_REPORT(K_MAX);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
ES_REPORT(U_MIN);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
ES_REPORT(U_MAX);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
ES_REPORT(V_MIN);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
ES_REPORT(V_MAX);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
ES_REPORT(W_MIN);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
ES_REPORT(W_MAX);
|
||||
#endif
|
||||
#if ENABLED(PROBE_ACTIVATION_SWITCH)
|
||||
print_es_state(probe_switch_activated(), F(STR_PROBE_EN));
|
||||
#endif
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
print_es_state(PROBE_TRIGGERED(), F(STR_Z_PROBE));
|
||||
#endif
|
||||
#if MULTI_FILAMENT_SENSOR
|
||||
@@ -519,12 +519,12 @@ void Endstops::update() {
|
||||
|
||||
#if ENABLED(G38_PROBE_TARGET)
|
||||
// For G38 moves check the probe's pin for ALL movement
|
||||
if (G38_move) UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN));
|
||||
if (G38_move) UPDATE_LIVE_STATE(Z, TERN(USE_Z_MIN_PROBE, MIN_PROBE, MIN));
|
||||
#endif
|
||||
|
||||
// With Dual X, endstops are only checked in the homing direction for the active extruder
|
||||
#define X_MIN_TEST() TERN1(DUAL_X_CARRIAGE, TERN0(X_HOME_TO_MIN, stepper.last_moved_extruder == 0) || TERN0(X2_HOME_TO_MIN, stepper.last_moved_extruder != 0))
|
||||
#define X_MAX_TEST() TERN1(DUAL_X_CARRIAGE, TERN0(X_HOME_TO_MAX, stepper.last_moved_extruder == 0) || TERN0(X2_HOME_TO_MAX, stepper.last_moved_extruder != 0))
|
||||
#define X_MIN_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder == 0) // Check min for the left carriage
|
||||
#define X_MAX_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder != 0) // Check max for the right carriage
|
||||
|
||||
// Use HEAD for core axes, AXIS for others
|
||||
#if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX)
|
||||
@@ -553,10 +553,10 @@ void Endstops::update() {
|
||||
/**
|
||||
* Check and update endstops
|
||||
*/
|
||||
#if HAS_X_MIN && !X_SPI_SENSORLESS
|
||||
#if USE_X_MIN && !X_SPI_SENSORLESS
|
||||
UPDATE_LIVE_STATE(X, MIN);
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
UPDATE_LIVE_STATE(X2, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(X_MIN, X2_MIN);
|
||||
@@ -564,10 +564,10 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_X_MAX && !X_SPI_SENSORLESS
|
||||
#if USE_X_MAX && !X_SPI_SENSORLESS
|
||||
UPDATE_LIVE_STATE(X, MAX);
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
UPDATE_LIVE_STATE(X2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(X_MAX, X2_MAX);
|
||||
@@ -575,10 +575,10 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MIN && !Y_SPI_SENSORLESS
|
||||
#if USE_Y_MIN && !Y_SPI_SENSORLESS
|
||||
UPDATE_LIVE_STATE(Y, MIN);
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
UPDATE_LIVE_STATE(Y2, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(Y_MIN, Y2_MIN);
|
||||
@@ -586,10 +586,10 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MAX && !Y_SPI_SENSORLESS
|
||||
#if USE_Y_MAX && !Y_SPI_SENSORLESS
|
||||
UPDATE_LIVE_STATE(Y, MAX);
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
UPDATE_LIVE_STATE(Y2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(Y_MAX, Y2_MAX);
|
||||
@@ -597,25 +597,25 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#if USE_Z_MIN && NONE(Z_SPI_SENSORLESS, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#if HAS_Z_MIN_PIN
|
||||
UPDATE_LIVE_STATE(Z, MIN);
|
||||
#endif
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
UPDATE_LIVE_STATE(Z2, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MIN, Z2_MIN);
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
UPDATE_LIVE_STATE(Z3, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MIN, Z3_MIN);
|
||||
#endif
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
UPDATE_LIVE_STATE(Z4, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MIN, Z4_MIN);
|
||||
@@ -627,39 +627,39 @@ void Endstops::update() {
|
||||
#if HAS_BED_PROBE
|
||||
// When closing the gap check the enabled probe
|
||||
if (probe_switch_activated())
|
||||
UPDATE_LIVE_STATE(Z, TERN(USES_Z_MIN_PROBE_PIN, MIN_PROBE, MIN));
|
||||
UPDATE_LIVE_STATE(Z, TERN(USE_Z_MIN_PROBE, MIN_PROBE, MIN));
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MAX && !Z_SPI_SENSORLESS
|
||||
#if USE_Z_MAX && !Z_SPI_SENSORLESS
|
||||
// Check both Z dual endstops
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(Z, MAX);
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
UPDATE_LIVE_STATE(Z2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MAX, Z2_MAX);
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
UPDATE_LIVE_STATE(Z3, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MAX, Z3_MAX);
|
||||
#endif
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
UPDATE_LIVE_STATE(Z4, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(Z_MAX, Z4_MAX);
|
||||
#endif
|
||||
#endif
|
||||
#elif TERN1(USES_Z_MIN_PROBE_PIN, Z_MAX_PIN != Z_MIN_PROBE_PIN)
|
||||
#elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN)
|
||||
// If this pin isn't the bed probe it's the Z endstop
|
||||
UPDATE_LIVE_STATE(Z, MAX);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_I_MIN && !I_SPI_SENSORLESS
|
||||
#if USE_I_MIN && !I_SPI_SENSORLESS
|
||||
#if ENABLED(I_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(I, MIN);
|
||||
#else
|
||||
@@ -667,7 +667,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_I_MAX && !I_SPI_SENSORLESS
|
||||
#if USE_I_MAX && !I_SPI_SENSORLESS
|
||||
#if ENABLED(I_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(I, MAX);
|
||||
#else
|
||||
@@ -675,7 +675,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_J_MIN && !J_SPI_SENSORLESS
|
||||
#if USE_J_MIN && !J_SPI_SENSORLESS
|
||||
#if ENABLED(J_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(J, MIN);
|
||||
#else
|
||||
@@ -683,7 +683,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_J_MAX && !J_SPI_SENSORLESS
|
||||
#if USE_J_MAX && !J_SPI_SENSORLESS
|
||||
#if ENABLED(J_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(J, MAX);
|
||||
#else
|
||||
@@ -691,7 +691,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_K_MIN && !K_SPI_SENSORLESS
|
||||
#if USE_K_MIN && !K_SPI_SENSORLESS
|
||||
#if ENABLED(K_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(K, MIN);
|
||||
#else
|
||||
@@ -699,7 +699,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_K_MAX && !K_SPI_SENSORLESS
|
||||
#if USE_K_MAX && !K_SPI_SENSORLESS
|
||||
#if ENABLED(K_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(K, MAX);
|
||||
#else
|
||||
@@ -707,7 +707,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_U_MIN && !U_SPI_SENSORLESS
|
||||
#if USE_U_MIN && !U_SPI_SENSORLESS
|
||||
#if ENABLED(U_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(U, MIN);
|
||||
#else
|
||||
@@ -715,7 +715,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_U_MAX && !U_SPI_SENSORLESS
|
||||
#if USE_U_MAX && !U_SPI_SENSORLESS
|
||||
#if ENABLED(U_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(U, MAX);
|
||||
#else
|
||||
@@ -723,14 +723,14 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_V_MIN && !V_SPI_SENSORLESS
|
||||
#if USE_V_MIN && !V_SPI_SENSORLESS
|
||||
#if ENABLED(V_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(V, MIN);
|
||||
#else
|
||||
UPDATE_LIVE_STATE(V, MIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_V_MAX && !V_SPI_SENSORLESS
|
||||
#if USE_V_MAX && !V_SPI_SENSORLESS
|
||||
#if ENABLED(O_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(V, MAX);
|
||||
#else
|
||||
@@ -738,14 +738,14 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_W_MIN && !W_SPI_SENSORLESS
|
||||
#if USE_W_MIN && !W_SPI_SENSORLESS
|
||||
#if ENABLED(W_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(W, MIN);
|
||||
#else
|
||||
UPDATE_LIVE_STATE(W, MIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_W_MAX && !W_SPI_SENSORLESS
|
||||
#if USE_W_MAX && !W_SPI_SENSORLESS
|
||||
#if ENABLED(W_DUAL_ENDSTOPS)
|
||||
UPDATE_LIVE_STATE(W, MAX);
|
||||
#else
|
||||
@@ -902,7 +902,7 @@ void Endstops::update() {
|
||||
#if HAS_Y_AXIS
|
||||
if (stepper.axis_is_moving(Y_AXIS)) {
|
||||
if (stepper.motor_direction(Y_AXIS_HEAD)) { // -direction
|
||||
#if HAS_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN)
|
||||
#if USE_Y_MIN || (Y_SPI_SENSORLESS && Y_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP_Y(MIN);
|
||||
#if CORE_DIAG(XY, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Y,MIN);
|
||||
@@ -916,7 +916,7 @@ void Endstops::update() {
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_Y_MAX || (Y_SPI_SENSORLESS && Y_HOME_TO_MAX)
|
||||
#if USE_Y_MAX || (Y_SPI_SENSORLESS && Y_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP_Y(MAX);
|
||||
#if CORE_DIAG(XY, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Y,MAX);
|
||||
@@ -936,9 +936,9 @@ void Endstops::update() {
|
||||
if (stepper.axis_is_moving(Z_AXIS)) {
|
||||
if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up.
|
||||
|
||||
#if HAS_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN)
|
||||
#if USE_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN)
|
||||
if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled)
|
||||
&& TERN1(USES_Z_MIN_PROBE_PIN, !z_probe_enabled)
|
||||
&& TERN1(USE_Z_MIN_PROBE, !z_probe_enabled)
|
||||
) PROCESS_ENDSTOP_Z(MIN);
|
||||
#if CORE_DIAG(XZ, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN);
|
||||
@@ -952,15 +952,15 @@ void Endstops::update() {
|
||||
#endif
|
||||
|
||||
// When closing the gap check the enabled probe
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
if (z_probe_enabled) PROCESS_ENDSTOP(Z, MIN_PROBE);
|
||||
#endif
|
||||
}
|
||||
else { // Z +direction. Gantry up, bed down.
|
||||
#if HAS_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX)
|
||||
#if USE_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX)
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
PROCESS_ENDSTOP_Z(MAX);
|
||||
#elif TERN1(USES_Z_MIN_PROBE_PIN, Z_MAX_PIN != Z_MIN_PROBE_PIN) // No probe or probe is Z_MIN || Probe is not Z_MAX
|
||||
#elif TERN1(USE_Z_MIN_PROBE, Z_MAX_PIN != Z_MIN_PROBE_PIN) // No probe or probe is Z_MIN || Probe is not Z_MAX
|
||||
PROCESS_ENDSTOP(Z, MAX);
|
||||
#endif
|
||||
#if CORE_DIAG(XZ, X, MIN)
|
||||
@@ -980,12 +980,12 @@ void Endstops::update() {
|
||||
#if HAS_I_AXIS
|
||||
if (stepper.axis_is_moving(I_AXIS)) {
|
||||
if (stepper.motor_direction(I_AXIS_HEAD)) { // -direction
|
||||
#if HAS_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN)
|
||||
#if USE_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(I, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX)
|
||||
#if USE_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(I, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -995,12 +995,12 @@ void Endstops::update() {
|
||||
#if HAS_J_AXIS
|
||||
if (stepper.axis_is_moving(J_AXIS)) {
|
||||
if (stepper.motor_direction(J_AXIS_HEAD)) { // -direction
|
||||
#if HAS_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN)
|
||||
#if USE_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(J, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX)
|
||||
#if USE_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(J, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -1010,12 +1010,12 @@ void Endstops::update() {
|
||||
#if HAS_K_AXIS
|
||||
if (stepper.axis_is_moving(K_AXIS)) {
|
||||
if (stepper.motor_direction(K_AXIS_HEAD)) { // -direction
|
||||
#if HAS_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN)
|
||||
#if USE_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(K, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX)
|
||||
#if USE_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(K, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -1025,12 +1025,12 @@ void Endstops::update() {
|
||||
#if HAS_U_AXIS
|
||||
if (stepper.axis_is_moving(U_AXIS)) {
|
||||
if (stepper.motor_direction(U_AXIS_HEAD)) { // -direction
|
||||
#if HAS_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN)
|
||||
#if USE_U_MIN || (U_SPI_SENSORLESS && U_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(U, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_U_MAX || (U_SPI_SENSORLESS && U_HOME_TO_MAX)
|
||||
#if USE_U_MAX || (U_SPI_SENSORLESS && U_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(U, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -1040,12 +1040,12 @@ void Endstops::update() {
|
||||
#if HAS_V_AXIS
|
||||
if (stepper.axis_is_moving(V_AXIS)) {
|
||||
if (stepper.motor_direction(V_AXIS_HEAD)) { // -direction
|
||||
#if HAS_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN)
|
||||
#if USE_V_MIN || (V_SPI_SENSORLESS && V_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(V, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_V_MAX || (V_SPI_SENSORLESS && V_HOME_TO_MAX)
|
||||
#if USE_V_MAX || (V_SPI_SENSORLESS && V_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(V, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -1055,12 +1055,12 @@ void Endstops::update() {
|
||||
#if HAS_W_AXIS
|
||||
if (stepper.axis_is_moving(W_AXIS)) {
|
||||
if (stepper.motor_direction(W_AXIS_HEAD)) { // -direction
|
||||
#if HAS_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN)
|
||||
#if USE_W_MIN || (W_SPI_SENSORLESS && W_HOME_TO_MIN)
|
||||
PROCESS_ENDSTOP(W, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_W_MAX || (W_SPI_SENSORLESS && W_HOME_TO_MAX)
|
||||
#if USE_W_MAX || (W_SPI_SENSORLESS && W_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(W, MAX);
|
||||
#endif
|
||||
}
|
||||
@@ -1171,91 +1171,91 @@ void Endstops::update() {
|
||||
|
||||
#define ES_GET_STATE(S) if (READ_ENDSTOP(S##_PIN)) SBI(live_state_local, S)
|
||||
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
ES_GET_STATE(X_MIN);
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
ES_GET_STATE(X_MAX);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
ES_GET_STATE(Y_MIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
ES_GET_STATE(Y_MAX);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PIN
|
||||
ES_GET_STATE(Z_MIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
ES_GET_STATE(Z_MAX);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
ES_GET_STATE(Z_MIN_PROBE);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
ES_GET_STATE(X2_MIN);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
ES_GET_STATE(X2_MAX);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
ES_GET_STATE(Y2_MIN);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
ES_GET_STATE(Y2_MAX);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
ES_GET_STATE(Z2_MIN);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
ES_GET_STATE(Z2_MAX);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
ES_GET_STATE(Z3_MIN);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
ES_GET_STATE(Z3_MAX);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
ES_GET_STATE(Z4_MIN);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
ES_GET_STATE(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
ES_GET_STATE(I_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
ES_GET_STATE(I_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
ES_GET_STATE(J_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
ES_GET_STATE(J_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
ES_GET_STATE(K_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
ES_GET_STATE(K_MIN);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
ES_GET_STATE(U_MAX);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
ES_GET_STATE(U_MIN);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
ES_GET_STATE(V_MAX);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
ES_GET_STATE(V_MIN);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
ES_GET_STATE(W_MAX);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
ES_GET_STATE(W_MIN);
|
||||
#endif
|
||||
|
||||
@@ -1263,91 +1263,91 @@ void Endstops::update() {
|
||||
#define ES_REPORT_CHANGE(S) if (TEST(endstop_change, S)) SERIAL_ECHOPGM(" " STRINGIFY(S) ":", TEST(live_state_local, S))
|
||||
|
||||
if (endstop_change) {
|
||||
#if HAS_X_MIN
|
||||
#if USE_X_MIN
|
||||
ES_REPORT_CHANGE(X_MIN);
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
#if USE_X_MAX
|
||||
ES_REPORT_CHANGE(X_MAX);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
#if USE_Y_MIN
|
||||
ES_REPORT_CHANGE(Y_MIN);
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
#if USE_Y_MAX
|
||||
ES_REPORT_CHANGE(Y_MAX);
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
#if USE_Z_MIN
|
||||
ES_REPORT_CHANGE(Z_MIN);
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
#if USE_Z_MAX
|
||||
ES_REPORT_CHANGE(Z_MAX);
|
||||
#endif
|
||||
#if HAS_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
ES_REPORT_CHANGE(Z_MIN_PROBE);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
#if USE_X2_MIN
|
||||
ES_REPORT_CHANGE(X2_MIN);
|
||||
#endif
|
||||
#if HAS_X2_MAX
|
||||
#if USE_X2_MAX
|
||||
ES_REPORT_CHANGE(X2_MAX);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
#if USE_Y2_MIN
|
||||
ES_REPORT_CHANGE(Y2_MIN);
|
||||
#endif
|
||||
#if HAS_Y2_MAX
|
||||
#if USE_Y2_MAX
|
||||
ES_REPORT_CHANGE(Y2_MAX);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
#if USE_Z2_MIN
|
||||
ES_REPORT_CHANGE(Z2_MIN);
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
#if USE_Z2_MAX
|
||||
ES_REPORT_CHANGE(Z2_MAX);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
#if USE_Z3_MIN
|
||||
ES_REPORT_CHANGE(Z3_MIN);
|
||||
#endif
|
||||
#if HAS_Z3_MAX
|
||||
#if USE_Z3_MAX
|
||||
ES_REPORT_CHANGE(Z3_MAX);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
#if USE_Z4_MIN
|
||||
ES_REPORT_CHANGE(Z4_MIN);
|
||||
#endif
|
||||
#if HAS_Z4_MAX
|
||||
#if USE_Z4_MAX
|
||||
ES_REPORT_CHANGE(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
#if USE_I_MIN
|
||||
ES_REPORT_CHANGE(I_MIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
#if USE_I_MAX
|
||||
ES_REPORT_CHANGE(I_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
#if USE_J_MIN
|
||||
ES_REPORT_CHANGE(J_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
#if USE_J_MAX
|
||||
ES_REPORT_CHANGE(J_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
#if USE_K_MIN
|
||||
ES_REPORT_CHANGE(K_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
#if USE_K_MAX
|
||||
ES_REPORT_CHANGE(K_MAX);
|
||||
#endif
|
||||
#if HAS_U_MIN
|
||||
#if USE_U_MIN
|
||||
ES_REPORT_CHANGE(U_MIN);
|
||||
#endif
|
||||
#if HAS_U_MAX
|
||||
#if USE_U_MAX
|
||||
ES_REPORT_CHANGE(U_MAX);
|
||||
#endif
|
||||
#if HAS_V_MIN
|
||||
#if USE_V_MIN
|
||||
ES_REPORT_CHANGE(V_MIN);
|
||||
#endif
|
||||
#if HAS_V_MAX
|
||||
#if USE_V_MAX
|
||||
ES_REPORT_CHANGE(V_MAX);
|
||||
#endif
|
||||
#if HAS_W_MIN
|
||||
#if USE_W_MIN
|
||||
ES_REPORT_CHANGE(W_MIN);
|
||||
#endif
|
||||
#if HAS_W_MAX
|
||||
#if USE_W_MAX
|
||||
ES_REPORT_CHANGE(W_MAX);
|
||||
#endif
|
||||
|
||||
@@ -1419,6 +1419,6 @@ void Endstops::update() {
|
||||
safe_delay(SENSORLESS_STALLGUARD_DELAY); // Short delay needed to settle
|
||||
#endif
|
||||
|
||||
#endif // XYZ
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif // USE_SENSORLESS
|
||||
|
@@ -51,36 +51,36 @@
|
||||
*/
|
||||
enum EndstopEnum : char {
|
||||
// Common XYZ (ABC) endstops.
|
||||
ES_ITEM(HAS_X_MIN, X_MIN) ES_ITEM(HAS_X_MAX, X_MAX)
|
||||
ES_ITEM(HAS_Y_MIN, Y_MIN) ES_ITEM(HAS_Y_MAX, Y_MAX)
|
||||
ES_ITEM(HAS_Z_MIN, Z_MIN) ES_ITEM(HAS_Z_MAX, Z_MAX)
|
||||
ES_ITEM(HAS_I_MIN, I_MIN) ES_ITEM(HAS_I_MAX, I_MAX)
|
||||
ES_ITEM(HAS_J_MIN, J_MIN) ES_ITEM(HAS_J_MAX, J_MAX)
|
||||
ES_ITEM(HAS_K_MIN, K_MIN) ES_ITEM(HAS_K_MAX, K_MAX)
|
||||
ES_ITEM(HAS_U_MIN, U_MIN) ES_ITEM(HAS_U_MAX, U_MAX)
|
||||
ES_ITEM(HAS_V_MIN, V_MIN) ES_ITEM(HAS_V_MAX, V_MAX)
|
||||
ES_ITEM(HAS_W_MIN, W_MIN) ES_ITEM(HAS_W_MAX, W_MAX)
|
||||
ES_ITEM(USE_X_MIN, X_MIN) ES_ITEM(USE_X_MAX, X_MAX)
|
||||
ES_ITEM(USE_Y_MIN, Y_MIN) ES_ITEM(USE_Y_MAX, Y_MAX)
|
||||
ES_ITEM(USE_Z_MIN, Z_MIN) ES_ITEM(USE_Z_MAX, Z_MAX)
|
||||
ES_ITEM(USE_I_MIN, I_MIN) ES_ITEM(USE_I_MAX, I_MAX)
|
||||
ES_ITEM(USE_J_MIN, J_MIN) ES_ITEM(USE_J_MAX, J_MAX)
|
||||
ES_ITEM(USE_K_MIN, K_MIN) ES_ITEM(USE_K_MAX, K_MAX)
|
||||
ES_ITEM(USE_U_MIN, U_MIN) ES_ITEM(USE_U_MAX, U_MAX)
|
||||
ES_ITEM(USE_V_MIN, V_MIN) ES_ITEM(USE_V_MAX, V_MAX)
|
||||
ES_ITEM(USE_W_MIN, W_MIN) ES_ITEM(USE_W_MAX, W_MAX)
|
||||
|
||||
// Extra Endstops for XYZ
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
ES_ITEM(HAS_X_MIN, X2_MIN) ES_ITEM(HAS_X_MAX, X2_MAX)
|
||||
ES_ITEM(USE_X_MIN, X2_MIN) ES_ITEM(USE_X_MAX, X2_MAX)
|
||||
#endif
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
ES_ITEM(HAS_Y_MIN, Y2_MIN) ES_ITEM(HAS_Y_MAX, Y2_MAX)
|
||||
ES_ITEM(USE_Y_MIN, Y2_MIN) ES_ITEM(USE_Y_MAX, Y2_MAX)
|
||||
#endif
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
ES_ITEM(HAS_Z_MIN, Z2_MIN) ES_ITEM(HAS_Z_MAX, Z2_MAX)
|
||||
ES_ITEM(USE_Z_MIN, Z2_MIN) ES_ITEM(USE_Z_MAX, Z2_MAX)
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
ES_ITEM(HAS_Z_MIN, Z3_MIN) ES_ITEM(HAS_Z_MAX, Z3_MAX)
|
||||
ES_ITEM(USE_Z_MIN, Z3_MIN) ES_ITEM(USE_Z_MAX, Z3_MAX)
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
ES_ITEM(HAS_Z_MIN, Z4_MIN) ES_ITEM(HAS_Z_MAX, Z4_MAX)
|
||||
ES_ITEM(USE_Z_MIN, Z4_MIN) ES_ITEM(USE_Z_MAX, Z4_MAX)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Bed Probe state is distinct or shared with Z_MIN (i.e., when the probe is the only Z endstop)
|
||||
#if !HAS_DELTA_SENSORLESS_PROBING
|
||||
ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USES_Z_MIN_PROBE_PIN, = Z_MIN))
|
||||
ES_ITEM(HAS_BED_PROBE, Z_MIN_PROBE IF_DISABLED(USE_Z_MIN_PROBE, = Z_MIN))
|
||||
#endif
|
||||
|
||||
// The total number of states
|
||||
|
@@ -608,7 +608,7 @@ void home_if_needed(const bool keeplev=false);
|
||||
|
||||
float x_home_pos(const uint8_t extruder);
|
||||
|
||||
#define TOOL_X_HOME_DIR(T) ((T) ? X2_HOME_DIR : X_HOME_DIR)
|
||||
#define TOOL_X_HOME_DIR(T) ((T) ? 1 : -1)
|
||||
|
||||
void set_duplication_enabled(const bool dupe, const int8_t tool_index=-1);
|
||||
void idex_set_mirrored_mode(const bool mirr);
|
||||
|
@@ -615,7 +615,7 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) {
|
||||
if (test_sensitivity.z) stealth_states.z = tmc_enable_stallguard(stepperZ); // All machines will check Z-DIAG for stall
|
||||
endstops.set_homing_current(true); // The "homing" current also applies to probing
|
||||
endstops.enable(true);
|
||||
#endif
|
||||
#endif // SENSORLESS_PROBING
|
||||
|
||||
TERN_(HAS_QUIET_PROBING, set_probing_paused(true));
|
||||
|
||||
@@ -623,13 +623,13 @@ bool Probe::probe_down_to_z(const_float_t z, const_feedRate_t fr_mm_s) {
|
||||
do_blocking_move_to_z(z, fr_mm_s);
|
||||
|
||||
// Check to see if the probe was triggered
|
||||
const bool probe_triggered =
|
||||
const bool probe_triggered = (
|
||||
#if HAS_DELTA_SENSORLESS_PROBING
|
||||
endstops.trigger_state() & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX))
|
||||
#else
|
||||
TEST(endstops.trigger_state(), Z_MIN_PROBE)
|
||||
#endif
|
||||
;
|
||||
);
|
||||
|
||||
// Offset sensorless probing
|
||||
#if HAS_DELTA_SENSORLESS_PROBING
|
||||
|
@@ -45,7 +45,7 @@
|
||||
};
|
||||
#endif
|
||||
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#if USE_Z_MIN_PROBE
|
||||
#define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
#define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE)
|
||||
|
@@ -991,13 +991,13 @@ void reset_trinamic_drivers() {
|
||||
|
||||
#if USE_SENSORLESS
|
||||
TERN_(X_SENSORLESS, stepperX.homing_threshold(X_STALL_SENSITIVITY));
|
||||
TERN_(X2_SENSORLESS, stepperX2.homing_threshold(CAT(TERN(X2_SENSORLESS, X2, X), _STALL_SENSITIVITY)));
|
||||
TERN_(X2_SENSORLESS, stepperX2.homing_threshold(X2_STALL_SENSITIVITY));
|
||||
TERN_(Y_SENSORLESS, stepperY.homing_threshold(Y_STALL_SENSITIVITY));
|
||||
TERN_(Y2_SENSORLESS, stepperY2.homing_threshold(CAT(TERN(Y2_SENSORLESS, Y2, Y), _STALL_SENSITIVITY)));
|
||||
TERN_(Y2_SENSORLESS, stepperY2.homing_threshold(Y2_STALL_SENSITIVITY));
|
||||
TERN_(Z_SENSORLESS, stepperZ.homing_threshold(Z_STALL_SENSITIVITY));
|
||||
TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(CAT(TERN(Z2_SENSORLESS, Z2, Z), _STALL_SENSITIVITY)));
|
||||
TERN_(Z3_SENSORLESS, stepperZ3.homing_threshold(CAT(TERN(Z3_SENSORLESS, Z3, Z), _STALL_SENSITIVITY)));
|
||||
TERN_(Z4_SENSORLESS, stepperZ4.homing_threshold(CAT(TERN(Z4_SENSORLESS, Z4, Z), _STALL_SENSITIVITY)));
|
||||
TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(Z2_STALL_SENSITIVITY));
|
||||
TERN_(Z3_SENSORLESS, stepperZ3.homing_threshold(Z3_STALL_SENSITIVITY));
|
||||
TERN_(Z4_SENSORLESS, stepperZ4.homing_threshold(Z4_STALL_SENSITIVITY));
|
||||
TERN_(I_SENSORLESS, stepperI.homing_threshold(I_STALL_SENSITIVITY));
|
||||
TERN_(J_SENSORLESS, stepperJ.homing_threshold(J_STALL_SENSITIVITY));
|
||||
TERN_(K_SENSORLESS, stepperK.homing_threshold(K_STALL_SENSITIVITY));
|
||||
|
@@ -497,7 +497,7 @@
|
||||
#undef NEEDS_Z_MINMAX
|
||||
|
||||
//
|
||||
// Assign endstop pins for boards with only 3 connectors
|
||||
// Assign endstop pins, with handling for boards that have only 3 connectors
|
||||
//
|
||||
#if HAS_X_AXIS
|
||||
#ifdef X_STOP_PIN
|
||||
@@ -1639,10 +1639,10 @@
|
||||
/**
|
||||
* X_DUAL_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
#if X_HOME_TO_MAX && !defined(X2_MAX_PIN) && PIN_EXISTS(X2_STOP)
|
||||
#if ENABLED(X_DUAL_ENDSTOPS) && PIN_EXISTS(X2_STOP)
|
||||
#if X_HOME_TO_MAX && !defined(X2_MAX_PIN)
|
||||
#define X2_MAX_PIN X2_STOP_PIN
|
||||
#elif X_HOME_TO_MIN && !defined(X2_MIN_PIN) && PIN_EXISTS(X2_STOP)
|
||||
#elif X_HOME_TO_MIN && !defined(X2_MIN_PIN)
|
||||
#define X2_MIN_PIN X2_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
@@ -1650,10 +1650,10 @@
|
||||
/**
|
||||
* Y_DUAL_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
#if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN) && PIN_EXISTS(Y2_STOP)
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS) && PIN_EXISTS(Y2_STOP)
|
||||
#if Y_HOME_TO_MAX && !defined(Y2_MAX_PIN)
|
||||
#define Y2_MAX_PIN Y2_STOP_PIN
|
||||
#elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN) && PIN_EXISTS(Y2_STOP)
|
||||
#elif Y_HOME_TO_MIN && !defined(Y2_MIN_PIN)
|
||||
#define Y2_MIN_PIN Y2_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
@@ -1662,22 +1662,24 @@
|
||||
* Z_MULTI_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
#if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN) && PIN_EXISTS(Z2_STOP)
|
||||
#define Z2_MAX_PIN Z2_STOP_PIN
|
||||
#elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN) && PIN_EXISTS(Z2_STOP)
|
||||
#define Z2_MIN_PIN Z2_STOP_PIN
|
||||
#if PIN_EXISTS(Z2_STOP)
|
||||
#if Z_HOME_TO_MAX && !defined(Z2_MAX_PIN)
|
||||
#define Z2_MAX_PIN Z2_STOP_PIN
|
||||
#elif Z_HOME_TO_MIN && !defined(Z2_MIN_PIN)
|
||||
#define Z2_MIN_PIN Z2_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
#if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN) && PIN_EXISTS(Z3_STOP)
|
||||
#if NUM_Z_STEPPERS >= 3 && PIN_EXISTS(Z3_STOP)
|
||||
#if Z_HOME_TO_MAX && !defined(Z3_MAX_PIN)
|
||||
#define Z3_MAX_PIN Z3_STOP_PIN
|
||||
#elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN) && PIN_EXISTS(Z3_STOP)
|
||||
#elif Z_HOME_TO_MIN && !defined(Z3_MIN_PIN)
|
||||
#define Z3_MIN_PIN Z3_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
#if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN) && PIN_EXISTS(Z4_STOP)
|
||||
#if NUM_Z_STEPPERS >= 4 && PIN_EXISTS(Z4_STOP)
|
||||
#if Z_HOME_TO_MAX && !defined(Z4_MAX_PIN)
|
||||
#define Z4_MAX_PIN Z4_STOP_PIN
|
||||
#elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN) && PIN_EXISTS(Z4_STOP)
|
||||
#elif Z_HOME_TO_MIN && !defined(Z4_MIN_PIN)
|
||||
#define Z4_MIN_PIN Z4_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user