🔧 Refactor endstop state config (#25574)
This commit is contained in:
parent
cb0a8f2fe2
commit
ea5d7e2eee
|
@ -1165,26 +1165,29 @@
|
|||
//#define ENDSTOPPULLDOWN_ZMIN_PROBE
|
||||
#endif
|
||||
|
||||
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
|
||||
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define W_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define W_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
|
||||
/**
|
||||
* Endstop "Hit" State
|
||||
* Set to the state (HIGH or LOW) that applies to each endstop.
|
||||
*/
|
||||
#define X_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define X_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define Y_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define Y_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define Z_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define Z_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define I_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define I_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define J_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define J_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define K_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define K_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define U_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define U_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define V_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define V_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define W_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#define W_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#define Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
|
|
|
@ -139,24 +139,17 @@ inline void servo_probe_test() {
|
|||
bool deploy_state = false, stow_state;
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
|
||||
constexpr bool probe_hit_state = Z_MIN_ENDSTOP_HIT_STATE;
|
||||
#define PROBE_TEST_PIN Z_MIN_PIN
|
||||
constexpr bool probe_inverting = Z_MIN_ENDSTOP_INVERTING;
|
||||
|
||||
SERIAL_ECHOLNPGM(". Probe Z_MIN_PIN: ", PROBE_TEST_PIN);
|
||||
SERIAL_ECHOPGM(". Z_MIN_ENDSTOP_INVERTING: ");
|
||||
|
||||
#define _PROBE_PREF "Z_MIN"
|
||||
#else
|
||||
|
||||
constexpr bool probe_hit_state = Z_MIN_PROBE_ENDSTOP_HIT_STATE;
|
||||
#define PROBE_TEST_PIN Z_MIN_PROBE_PIN
|
||||
constexpr bool probe_inverting = Z_MIN_PROBE_ENDSTOP_INVERTING;
|
||||
|
||||
SERIAL_ECHOLNPGM(". Probe Z_MIN_PROBE_PIN: ", PROBE_TEST_PIN);
|
||||
SERIAL_ECHOPGM( ". Z_MIN_PROBE_ENDSTOP_INVERTING: ");
|
||||
|
||||
#define _PROBE_PREF "Z_MIN_PROBE"
|
||||
#endif
|
||||
|
||||
serialprint_truefalse(probe_inverting);
|
||||
SERIAL_ECHOLNPGM(". Probe " _PROBE_PREF "_PIN: ", PROBE_TEST_PIN);
|
||||
serial_ternary(probe_hit_state, F(". " _PROBE_PREF "_ENDSTOP_HIT_STATE: "), F("HIGH"), F("LOW"));
|
||||
SERIAL_EOL();
|
||||
|
||||
SET_INPUT_PULLUP(PROBE_TEST_PIN);
|
||||
|
@ -173,11 +166,11 @@ inline void servo_probe_test() {
|
|||
SERIAL_ECHOLNPGM(". Check for BLTOUCH");
|
||||
bltouch._reset();
|
||||
bltouch._stow();
|
||||
if (probe_inverting == READ(PROBE_TEST_PIN)) {
|
||||
if (READ(PROBE_TEST_PIN) != probe_hit_state) {
|
||||
bltouch._set_SW_mode();
|
||||
if (probe_inverting != READ(PROBE_TEST_PIN)) {
|
||||
if (READ(PROBE_TEST_PIN) == probe_hit_state) {
|
||||
bltouch._deploy();
|
||||
if (probe_inverting == READ(PROBE_TEST_PIN)) {
|
||||
if (READ(PROBE_TEST_PIN) != probe_hit_state) {
|
||||
bltouch._stow();
|
||||
SERIAL_ECHOLNPGM("= BLTouch Classic 1.2, 1.3, Smart 1.0, 2.0, 2.2, 3.0, 3.1 detected.");
|
||||
// Check for a 3.1 by letting the user trigger it, later
|
||||
|
@ -195,31 +188,30 @@ inline void servo_probe_test() {
|
|||
if (!blt) {
|
||||
// DEPLOY and STOW 4 times and see if the signal follows
|
||||
// Then it is a mechanical switch
|
||||
uint8_t i = 0;
|
||||
SERIAL_ECHOLNPGM(". Deploy & stow 4 times");
|
||||
do {
|
||||
LOOP_L_N(i, 4) {
|
||||
servo[probe_index].move(servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy
|
||||
safe_delay(500);
|
||||
deploy_state = READ(PROBE_TEST_PIN);
|
||||
servo[probe_index].move(servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
|
||||
safe_delay(500);
|
||||
stow_state = READ(PROBE_TEST_PIN);
|
||||
} while (++i < 4);
|
||||
}
|
||||
|
||||
if (probe_inverting != deploy_state) SERIAL_ECHOLNPGM("WARNING: INVERTING setting probably backwards.");
|
||||
if (probe_hit_state == deploy_state) SERIAL_ECHOLNPGM("WARNING: " _PROBE_PREF "_ENDSTOP_HIT_STATE is probably wrong.");
|
||||
|
||||
if (deploy_state != stow_state) {
|
||||
SERIAL_ECHOLNPGM("= Mechanical Switch detected");
|
||||
if (deploy_state) {
|
||||
SERIAL_ECHOLNPGM(" DEPLOYED state: HIGH (logic 1)",
|
||||
" STOWED (triggered) state: LOW (logic 0)");
|
||||
SERIAL_ECHOLNPGM(". DEPLOYED state: HIGH (logic 1)\n"
|
||||
". STOWED (triggered) state: LOW (logic 0)");
|
||||
}
|
||||
else {
|
||||
SERIAL_ECHOLNPGM(" DEPLOYED state: LOW (logic 0)",
|
||||
" STOWED (triggered) state: HIGH (logic 1)");
|
||||
SERIAL_ECHOLNPGM(". DEPLOYED state: LOW (logic 0)\n"
|
||||
". STOWED (triggered) state: HIGH (logic 1)");
|
||||
}
|
||||
#if ENABLED(BLTOUCH)
|
||||
SERIAL_ECHOLNPGM("FAIL: BLTOUCH enabled - Set up this device as a Servo Probe with INVERTING set to 'true'.");
|
||||
SERIAL_ECHOLNPGM("FAIL: Can't enable BLTOUCH. Check your settings.");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -794,8 +794,8 @@
|
|||
#undef AVOID_OBSTACLES
|
||||
#undef ENDSTOPPULLUP_YMIN
|
||||
#undef ENDSTOPPULLUP_YMAX
|
||||
#undef Y_MIN_ENDSTOP_INVERTING
|
||||
#undef Y_MAX_ENDSTOP_INVERTING
|
||||
#undef Y_MIN_ENDSTOP_HIT_STATE
|
||||
#undef Y_MAX_ENDSTOP_HIT_STATE
|
||||
#undef Y2_DRIVER_TYPE
|
||||
#undef Y_ENABLE_ON
|
||||
#undef DISABLE_Y
|
||||
|
@ -821,8 +821,8 @@
|
|||
#else
|
||||
#undef ENDSTOPPULLUP_ZMIN
|
||||
#undef ENDSTOPPULLUP_ZMAX
|
||||
#undef Z_MIN_ENDSTOP_INVERTING
|
||||
#undef Z_MAX_ENDSTOP_INVERTING
|
||||
#undef Z_MIN_ENDSTOP_HIT_STATE
|
||||
#undef Z_MAX_ENDSTOP_HIT_STATE
|
||||
#undef Z2_DRIVER_TYPE
|
||||
#undef Z3_DRIVER_TYPE
|
||||
#undef Z4_DRIVER_TYPE
|
||||
|
@ -841,8 +841,8 @@
|
|||
#if !HAS_I_AXIS
|
||||
#undef ENDSTOPPULLUP_IMIN
|
||||
#undef ENDSTOPPULLUP_IMAX
|
||||
#undef I_MIN_ENDSTOP_INVERTING
|
||||
#undef I_MAX_ENDSTOP_INVERTING
|
||||
#undef I_MIN_ENDSTOP_HIT_STATE
|
||||
#undef I_MAX_ENDSTOP_HIT_STATE
|
||||
#undef I_ENABLE_ON
|
||||
#undef DISABLE_I
|
||||
#undef INVERT_I_DIR
|
||||
|
@ -857,8 +857,8 @@
|
|||
#if !HAS_J_AXIS
|
||||
#undef ENDSTOPPULLUP_JMIN
|
||||
#undef ENDSTOPPULLUP_JMAX
|
||||
#undef J_MIN_ENDSTOP_INVERTING
|
||||
#undef J_MAX_ENDSTOP_INVERTING
|
||||
#undef J_MIN_ENDSTOP_HIT_STATE
|
||||
#undef J_MAX_ENDSTOP_HIT_STATE
|
||||
#undef J_ENABLE_ON
|
||||
#undef DISABLE_J
|
||||
#undef INVERT_J_DIR
|
||||
|
@ -873,8 +873,8 @@
|
|||
#if !HAS_K_AXIS
|
||||
#undef ENDSTOPPULLUP_KMIN
|
||||
#undef ENDSTOPPULLUP_KMAX
|
||||
#undef K_MIN_ENDSTOP_INVERTING
|
||||
#undef K_MAX_ENDSTOP_INVERTING
|
||||
#undef K_MIN_ENDSTOP_HIT_STATE
|
||||
#undef K_MAX_ENDSTOP_HIT_STATE
|
||||
#undef K_ENABLE_ON
|
||||
#undef DISABLE_K
|
||||
#undef INVERT_K_DIR
|
||||
|
@ -889,8 +889,8 @@
|
|||
#if !HAS_U_AXIS
|
||||
#undef ENDSTOPPULLUP_UMIN
|
||||
#undef ENDSTOPPULLUP_UMAX
|
||||
#undef U_MIN_ENDSTOP_INVERTING
|
||||
#undef U_MAX_ENDSTOP_INVERTING
|
||||
#undef U_MIN_ENDSTOP_HIT_STATE
|
||||
#undef U_MAX_ENDSTOP_HIT_STATE
|
||||
#undef U_ENABLE_ON
|
||||
#undef DISABLE_U
|
||||
#undef INVERT_U_DIR
|
||||
|
@ -905,8 +905,8 @@
|
|||
#if !HAS_V_AXIS
|
||||
#undef ENDSTOPPULLUP_VMIN
|
||||
#undef ENDSTOPPULLUP_VMAX
|
||||
#undef V_MIN_ENDSTOP_INVERTING
|
||||
#undef V_MAX_ENDSTOP_INVERTING
|
||||
#undef V_MIN_ENDSTOP_HIT_STATE
|
||||
#undef V_MAX_ENDSTOP_HIT_STATE
|
||||
#undef V_ENABLE_ON
|
||||
#undef DISABLE_V
|
||||
#undef INVERT_V_DIR
|
||||
|
@ -921,8 +921,8 @@
|
|||
#if !HAS_W_AXIS
|
||||
#undef ENDSTOPPULLUP_WMIN
|
||||
#undef ENDSTOPPULLUP_WMAX
|
||||
#undef W_MIN_ENDSTOP_INVERTING
|
||||
#undef W_MAX_ENDSTOP_INVERTING
|
||||
#undef W_MIN_ENDSTOP_HIT_STATE
|
||||
#undef W_MAX_ENDSTOP_HIT_STATE
|
||||
#undef W_ENABLE_ON
|
||||
#undef DISABLE_W
|
||||
#undef INVERT_W_DIR
|
||||
|
@ -1081,10 +1081,8 @@
|
|||
* The BLTouch Probe emulates a servo probe
|
||||
* and uses "special" angles for its state.
|
||||
*/
|
||||
#if ENABLED(BLTOUCH)
|
||||
#ifndef Z_PROBE_SERVO_NR
|
||||
#define Z_PROBE_SERVO_NR 0
|
||||
#endif
|
||||
#if ENABLED(BLTOUCH) && !defined(Z_PROBE_SERVO_NR)
|
||||
#define Z_PROBE_SERVO_NR 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
@ -914,19 +914,19 @@
|
|||
*/
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
#if X_HOME_TO_MAX
|
||||
#ifndef X2_MAX_ENDSTOP_INVERTING
|
||||
#ifndef X2_MAX_ENDSTOP_HIT_STATE
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(X2_MAX)
|
||||
|
@ -936,19 +936,19 @@
|
|||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef X2_MIN_ENDSTOP_INVERTING
|
||||
#ifndef X2_MIN_ENDSTOP_HIT_STATE
|
||||
#if X2_USE_ENDSTOP == _XMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _XMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _YMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _YMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _ZMIN_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif X2_USE_ENDSTOP == _ZMAX_
|
||||
#define X2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(X2_MIN)
|
||||
|
@ -958,11 +958,11 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef X2_MAX_ENDSTOP_INVERTING
|
||||
#define X2_MAX_ENDSTOP_INVERTING false
|
||||
#ifndef X2_MAX_ENDSTOP_HIT_STATE
|
||||
#define X2_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#ifndef X2_MIN_ENDSTOP_INVERTING
|
||||
#define X2_MIN_ENDSTOP_INVERTING false
|
||||
#ifndef X2_MIN_ENDSTOP_HIT_STATE
|
||||
#define X2_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -971,19 +971,19 @@
|
|||
*/
|
||||
#if ENABLED(Y_DUAL_ENDSTOPS)
|
||||
#if Y_HOME_TO_MAX
|
||||
#ifndef Y2_MAX_ENDSTOP_INVERTING
|
||||
#ifndef Y2_MAX_ENDSTOP_HIT_STATE
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Y2_MAX)
|
||||
|
@ -993,19 +993,19 @@
|
|||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef Y2_MIN_ENDSTOP_INVERTING
|
||||
#ifndef Y2_MIN_ENDSTOP_HIT_STATE
|
||||
#if Y2_USE_ENDSTOP == _XMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _XMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _YMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _YMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _ZMIN_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Y2_USE_ENDSTOP == _ZMAX_
|
||||
#define Y2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Y2_MIN)
|
||||
|
@ -1015,11 +1015,11 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Y2_MAX_ENDSTOP_INVERTING
|
||||
#define Y2_MAX_ENDSTOP_INVERTING false
|
||||
#ifndef Y2_MAX_ENDSTOP_HIT_STATE
|
||||
#define Y2_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#ifndef Y2_MIN_ENDSTOP_INVERTING
|
||||
#define Y2_MIN_ENDSTOP_INVERTING false
|
||||
#ifndef Y2_MIN_ENDSTOP_HIT_STATE
|
||||
#define Y2_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -1029,19 +1029,19 @@
|
|||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
|
||||
#if Z_HOME_TO_MAX
|
||||
#ifndef Z2_MAX_ENDSTOP_INVERTING
|
||||
#ifndef Z2_MAX_ENDSTOP_HIT_STATE
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z2_MAX)
|
||||
|
@ -1051,19 +1051,19 @@
|
|||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef Z2_MIN_ENDSTOP_INVERTING
|
||||
#ifndef Z2_MIN_ENDSTOP_HIT_STATE
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z2_MIN)
|
||||
|
@ -1073,28 +1073,28 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Z2_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_ENDSTOP_INVERTING false
|
||||
#ifndef Z2_MAX_ENDSTOP_HIT_STATE
|
||||
#define Z2_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#ifndef Z2_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_ENDSTOP_INVERTING false
|
||||
#ifndef Z2_MIN_ENDSTOP_HIT_STATE
|
||||
#define Z2_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
|
||||
#if NUM_Z_STEPPERS >= 3
|
||||
#if Z_HOME_TO_MAX
|
||||
#ifndef Z3_MAX_ENDSTOP_INVERTING
|
||||
#ifndef Z3_MAX_ENDSTOP_HIT_STATE
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z3_MAX)
|
||||
|
@ -1104,19 +1104,19 @@
|
|||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef Z3_MIN_ENDSTOP_INVERTING
|
||||
#ifndef Z3_MIN_ENDSTOP_HIT_STATE
|
||||
#if Z3_USE_ENDSTOP == _XMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _XMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _YMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _YMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _ZMIN_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z3_USE_ENDSTOP == _ZMAX_
|
||||
#define Z3_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z3_MIN)
|
||||
|
@ -1126,29 +1126,29 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Z3_MAX_ENDSTOP_INVERTING
|
||||
#define Z3_MAX_ENDSTOP_INVERTING false
|
||||
#ifndef Z3_MAX_ENDSTOP_HIT_STATE
|
||||
#define Z3_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#ifndef Z3_MIN_ENDSTOP_INVERTING
|
||||
#define Z3_MIN_ENDSTOP_INVERTING false
|
||||
#ifndef Z3_MIN_ENDSTOP_HIT_STATE
|
||||
#define Z3_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if NUM_Z_STEPPERS >= 4
|
||||
#if Z_HOME_TO_MAX
|
||||
#ifndef Z4_MAX_ENDSTOP_INVERTING
|
||||
#ifndef Z4_MAX_ENDSTOP_HIT_STATE
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z4_MAX)
|
||||
|
@ -1158,19 +1158,19 @@
|
|||
#endif
|
||||
#endif
|
||||
#else
|
||||
#ifndef Z4_MIN_ENDSTOP_INVERTING
|
||||
#ifndef Z4_MIN_ENDSTOP_HIT_STATE
|
||||
#if Z4_USE_ENDSTOP == _XMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE X_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _XMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE X_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _YMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE Y_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _YMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE Y_MAX_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _ZMIN_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE
|
||||
#elif Z4_USE_ENDSTOP == _ZMAX_
|
||||
#define Z4_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE Z_MAX_ENDSTOP_HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
#if !PIN_EXISTS(Z4_MIN)
|
||||
|
@ -1180,11 +1180,11 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Z4_MAX_ENDSTOP_INVERTING
|
||||
#define Z4_MAX_ENDSTOP_INVERTING false
|
||||
#ifndef Z4_MAX_ENDSTOP_HIT_STATE
|
||||
#define Z4_MAX_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#ifndef Z4_MIN_ENDSTOP_INVERTING
|
||||
#define Z4_MIN_ENDSTOP_INVERTING false
|
||||
#ifndef Z4_MIN_ENDSTOP_HIT_STATE
|
||||
#define Z4_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1876,19 +1876,19 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#endif
|
||||
|
||||
#if ENABLED(INVERTED_PROBE_STATE)
|
||||
#if !Z_MIN_PROBE_ENDSTOP_INVERTING
|
||||
#error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_INVERTING set to true."
|
||||
#if Z_MIN_PROBE_ENDSTOP_HIT_STATE != LOW
|
||||
#error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_HIT_STATE LOW."
|
||||
#endif
|
||||
#elif Z_MIN_PROBE_ENDSTOP_INVERTING
|
||||
#error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_INVERTING set to false."
|
||||
#elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != HIGH
|
||||
#error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH."
|
||||
#endif
|
||||
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#if ENABLED(INVERTED_PROBE_STATE)
|
||||
#if !Z_MIN_ENDSTOP_INVERTING
|
||||
#error "BLTOUCH requires Z_MIN_ENDSTOP_INVERTING set to true."
|
||||
#if Z_MIN_ENDSTOP_HIT_STATE != LOW
|
||||
#error "BLTOUCH requires Z_MIN_ENDSTOP_HIT_STATE LOW."
|
||||
#endif
|
||||
#elif Z_MIN_ENDSTOP_INVERTING
|
||||
#error "BLTOUCH requires Z_MIN_ENDSTOP_INVERTING set to false."
|
||||
#elif Z_MIN_ENDSTOP_HIT_STATE != HIGH
|
||||
#error "BLTOUCH requires Z_MIN_ENDSTOP_HIT_STATE HIGH."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -1916,19 +1916,19 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#error "TOUCH_MI_PROBE currently requires an LCD controller or EMERGENCY_PARSER."
|
||||
#endif
|
||||
#if ENABLED(INVERTED_PROBE_STATE)
|
||||
#if !Z_MIN_PROBE_ENDSTOP_INVERTING
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_INVERTING set to true."
|
||||
#if Z_MIN_PROBE_ENDSTOP_HIT_STATE != LOW
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_HIT_STATE LOW."
|
||||
#endif
|
||||
#elif Z_MIN_PROBE_ENDSTOP_INVERTING
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_INVERTING set to false."
|
||||
#elif Z_MIN_PROBE_ENDSTOP_HIT_STATE != HIGH
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH."
|
||||
#endif
|
||||
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#if ENABLED(INVERTED_PROBE_STATE)
|
||||
#if !Z_MIN_ENDSTOP_INVERTING
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_INVERTING set to true."
|
||||
#if Z_MIN_ENDSTOP_HIT_STATE != LOW
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_HIT_STATE LOW."
|
||||
#endif
|
||||
#elif Z_MIN_ENDSTOP_INVERTING
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_INVERTING set to false."
|
||||
#elif Z_MIN_ENDSTOP_HIT_STATE != HIGH
|
||||
#error "TOUCH_MI_PROBE requires Z_MIN_ENDSTOP_HIT_STATE HIGH."
|
||||
#endif
|
||||
#endif
|
||||
#endif // TOUCH_MI_PROBE
|
||||
|
@ -1967,8 +1967,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires USE_ZMIN_PLUG to be enabled."
|
||||
#elif !HAS_Z_MIN
|
||||
#error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires the Z_MIN_PIN to be defined."
|
||||
#elif Z_MIN_PROBE_ENDSTOP_INVERTING != Z_MIN_ENDSTOP_INVERTING
|
||||
#error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."
|
||||
#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
|
||||
#error "Z_MIN_PROBE_PIN must be defined if Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is not enabled."
|
||||
|
@ -3449,17 +3449,17 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#error "TMC2208 or TMC2209 on E6 requires E6_HARDWARE_SERIAL or E6_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E7)
|
||||
#error "TMC2208 or TMC2209 on E7 requires E7_HARDWARE_SERIAL or E7_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_I_AXIS && INVALID_TMC_UART(I)
|
||||
#elif INVALID_TMC_UART(I)
|
||||
#error "TMC2208 or TMC2209 on I requires I_HARDWARE_SERIAL or I_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_J_AXIS && INVALID_TMC_UART(J)
|
||||
#elif INVALID_TMC_UART(J)
|
||||
#error "TMC2208 or TMC2209 on J requires J_HARDWARE_SERIAL or J_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_K_AXIS && INVALID_TMC_UART(K)
|
||||
#elif INVALID_TMC_UART(K)
|
||||
#error "TMC2208 or TMC2209 on K requires K_HARDWARE_SERIAL or K_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_U_AXIS && INVALID_TMC_UART(U)
|
||||
#elif INVALID_TMC_UART(U)
|
||||
#error "TMC2208 or TMC2209 on U requires U_HARDWARE_SERIAL or U_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_V_AXIS && INVALID_TMC_UART(V)
|
||||
#elif INVALID_TMC_UART(V)
|
||||
#error "TMC2208 or TMC2209 on V requires V_HARDWARE_SERIAL or V_SERIAL_(RX|TX)_PIN."
|
||||
#elif HAS_W_AXIS && INVALID_TMC_UART(W)
|
||||
#elif INVALID_TMC_UART(W)
|
||||
#error "TMC2208 or TMC2209 on W requires W_HARDWARE_SERIAL or W_SERIAL_(RX|TX)_PIN."
|
||||
|
||||
#endif
|
||||
|
@ -3552,17 +3552,17 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
INVALID_TMC_MS(E6)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E7)
|
||||
INVALID_TMC_MS(E7)
|
||||
#elif HAS_I_AXIS && !TMC_MICROSTEP_IS_VALID(I)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(I)
|
||||
INVALID_TMC_MS(I)
|
||||
#elif HAS_J_AXIS && !TMC_MICROSTEP_IS_VALID(J)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(J)
|
||||
INVALID_TMC_MS(J)
|
||||
#elif HAS_K_AXIS && !TMC_MICROSTEP_IS_VALID(K)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(K)
|
||||
INVALID_TMC_MS(K)
|
||||
#elif HAS_U_AXIS && !TMC_MICROSTEP_IS_VALID(U)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(U)
|
||||
INVALID_TMC_MS(U)
|
||||
#elif HAS_V_AXIS && !TMC_MICROSTEP_IS_VALID(V)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(V)
|
||||
INVALID_TMC_MS(V)
|
||||
#elif HAS_W_AXIS && !TMC_MICROSTEP_IS_VALID(W)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(W)
|
||||
INVALID_TMC_MS(W)
|
||||
#endif
|
||||
#undef INVALID_TMC_MS
|
||||
|
@ -3579,67 +3579,43 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
// towers to +Z and the individual homing of each tower. This restriction can be removed once a means of
|
||||
// clearing the stallGuard activated status is found.
|
||||
|
||||
// Stall detection DIAG = HIGH : TMC2209
|
||||
// Stall detection DIAG = LOW : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160
|
||||
#define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
|
||||
#define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
|
||||
#define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
|
||||
#if HAS_I_AXIS
|
||||
#define I_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(I,TMC2209)
|
||||
#endif
|
||||
#if HAS_J_AXIS
|
||||
#define J_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(J,TMC2209)
|
||||
#endif
|
||||
#if HAS_K_AXIS
|
||||
#define K_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(K,TMC2209)
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
#define U_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(U,TMC2209)
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
#define V_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(V,TMC2209)
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
#define W_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(W,TMC2209)
|
||||
#endif
|
||||
|
||||
#if NONE(SPI_ENDSTOPS, ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS)
|
||||
#if X_SENSORLESS && X_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_XMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) when homing to X_MIN."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMIN (or ENDSTOPPULLUPS) for X_MIN homing."
|
||||
#elif X_SENSORLESS && X_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_XMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) when homing to X_MAX."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_XMAX (or ENDSTOPPULLUPS) for X_MAX homing."
|
||||
#elif Y_SENSORLESS && Y_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_YMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) when homing to Y_MIN."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMIN (or ENDSTOPPULLUPS) for Y_MIN homing."
|
||||
#elif Y_SENSORLESS && Y_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_YMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) when homing to Y_MAX."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_YMAX (or ENDSTOPPULLUPS) for Y_MAX homing."
|
||||
#elif Z_SENSORLESS && Z_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_ZMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) when homing to Z_MIN."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) for Z_MIN homing."
|
||||
#elif Z_SENSORLESS && Z_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_ZMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) when homing to Z_MAX."
|
||||
#elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_IMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) when homing to I_MIN."
|
||||
#elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_IMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) when homing to I_MAX."
|
||||
#elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_JMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) when homing to J_MIN."
|
||||
#elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_JMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) when homing to J_MAX."
|
||||
#elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_KMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) when homing to K_MIN."
|
||||
#elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_KMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) when homing to K_MAX."
|
||||
#elif HAS_U_AXIS && U_SENSORLESS && U_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_UMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) when homing to U_MIN."
|
||||
#elif HAS_U_AXIS && U_SENSORLESS && U_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_UMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) when homing to U_MAX."
|
||||
#elif HAS_V_AXIS && V_SENSORLESS && V_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_VMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) when homing to V_MIN."
|
||||
#elif HAS_V_AXIS && V_SENSORLESS && V_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_VMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) when homing to V_MAX."
|
||||
#elif HAS_W_AXIS && W_SENSORLESS && W_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_WMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMIN (or ENDSTOPPULLUPS) when homing to W_MIN."
|
||||
#elif HAS_W_AXIS && W_SENSORLESS && W_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_WMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_WMAX (or ENDSTOPPULLUPS) when homing to W_MAX."
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) for Z_MAX homing."
|
||||
#elif I_SENSORLESS && I_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_IMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) for I_MIN homing."
|
||||
#elif I_SENSORLESS && I_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_IMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) for I_MAX homing."
|
||||
#elif J_SENSORLESS && J_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_JMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) for J_MIN homing."
|
||||
#elif J_SENSORLESS && J_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_JMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) for J_MAX homing."
|
||||
#elif K_SENSORLESS && K_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_KMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) for K_MIN homing."
|
||||
#elif K_SENSORLESS && K_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_KMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) for K_MAX homing."
|
||||
#elif U_SENSORLESS && U_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_UMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMIN (or ENDSTOPPULLUPS) for U_MIN homing."
|
||||
#elif U_SENSORLESS && U_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_UMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_UMAX (or ENDSTOPPULLUPS) for U_MAX homing."
|
||||
#elif V_SENSORLESS && V_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_VMIN)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMIN (or ENDSTOPPULLUPS) for V_MIN homing."
|
||||
#elif V_SENSORLESS && V_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_VMAX)
|
||||
#error "SENSORLESS_HOMING requires ENDSTOPPULLUP_VMAX (or ENDSTOPPULLUPS) for V_MAX homing."
|
||||
#elif W_SENSORLESS && W_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_WMIN)
|
||||
#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
|
||||
|
@ -3648,117 +3624,172 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#if ENABLED(QUICK_HOME)
|
||||
#warning "SPI_ENDSTOPS may be unreliable with QUICK_HOME. Adjust back-offs for better results."
|
||||
#endif
|
||||
#else
|
||||
#if X_SENSORLESS && X_HOME_TO_MIN && X_MIN_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING
|
||||
#if X_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING = true when homing to X_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to X_MIN."
|
||||
#endif
|
||||
#elif X_SENSORLESS && X_HOME_TO_MAX && X_MAX_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING
|
||||
#if X_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING = true when homing to X_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to X_MAX."
|
||||
#endif
|
||||
#elif Y_SENSORLESS && Y_HOME_TO_MIN && Y_MIN_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING
|
||||
#if Y_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING = true when homing to Y_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to Y_MIN."
|
||||
#endif
|
||||
#elif Y_SENSORLESS && Y_HOME_TO_MAX && Y_MAX_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING
|
||||
#if Y_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING = true when homing to Y_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Y_MAX."
|
||||
#endif
|
||||
#elif Z_SENSORLESS && Z_HOME_TO_MIN && Z_MIN_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING
|
||||
#if Z_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING = true when homing to Z_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MIN."
|
||||
#endif
|
||||
#elif Z_SENSORLESS && Z_HOME_TO_MAX && Z_MAX_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING
|
||||
#if Z_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = true when homing to Z_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && I_MIN_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
|
||||
#if I_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = true when homing to I_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to I_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && I_MAX_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
|
||||
#if I_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = true when homing to I_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to I_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && J_MIN_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
|
||||
#if J_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = true when homing to J_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to J_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && J_MAX_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
|
||||
#if J_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = true when homing to J_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to J_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && K_MIN_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
|
||||
#if K_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = true when homing to K_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to K_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && K_MAX_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
|
||||
#if K_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = true when homing to K_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to K_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_U_AXIS, U_SENSORLESS, U_HOME_TO_MIN) && U_MIN_ENDSTOP_INVERTING != U_ENDSTOP_INVERTING
|
||||
#if U_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_INVERTING = true when homing to U_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to U_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_U_AXIS, U_SENSORLESS, U_HOME_TO_MAX) && U_MAX_ENDSTOP_INVERTING != U_ENDSTOP_INVERTING
|
||||
#if U_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_INVERTING = true when homing to U_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires U_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to U_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_V_AXIS, V_SENSORLESS, V_HOME_TO_MIN) && V_MIN_ENDSTOP_INVERTING != V_ENDSTOP_INVERTING
|
||||
#if V_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_INVERTING = true when homing to V_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to V_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_V_AXIS, V_SENSORLESS, V_HOME_TO_MAX) && V_MAX_ENDSTOP_INVERTING != V_ENDSTOP_INVERTING
|
||||
#if V_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_INVERTING = true when homing to V_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires V_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to V_MAX."
|
||||
#endif
|
||||
#elif ALL(HAS_W_AXIS, W_SENSORLESS, W_HOME_TO_MIN) && W_MIN_ENDSTOP_INVERTING != W_ENDSTOP_INVERTING
|
||||
#if W_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_INVERTING = true when homing to W_MIN."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to W_MIN."
|
||||
#endif
|
||||
#elif ALL(HAS_W_AXIS, W_SENSORLESS, W_HOME_TO_MAX0) && W_MAX_ENDSTOP_INVERTING != W_ENDSTOP_INVERTING
|
||||
#if W_ENDSTOP_INVERTING
|
||||
#error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_INVERTING = true when homing to W_MAX."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires W_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to W_MAX."
|
||||
#else // !SPI_ENDSTOPS
|
||||
// Stall detection DIAG = HIGH : TMC2209
|
||||
// Stall detection DIAG = LOW : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160
|
||||
#if X_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(X,TMC2209)
|
||||
#if X_HOME_TO_MIN && X_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE LOW for X_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_HIT_STATE HIGH for X_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif X_HOME_TO_MAX && X_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE LOW for X_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_HIT_STATE HIGH for X_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if Y_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(Y,TMC2209)
|
||||
#if Y_HOME_TO_MIN && Y_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE LOW for Y_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_HIT_STATE HIGH for Y_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif Y_HOME_TO_MAX && Y_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE LOW for Y_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Y_MAY_ENDSTOP_HIT_STATE HIGH for Y_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if Z_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(Z,TMC2209)
|
||||
#if Z_HOME_TO_MIN && Z_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE LOW for Z_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_HIT_STATE HIGH for Z_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif Z_HOME_TO_MAX && Z_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE LOW for Z_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires Z_MAZ_ENDSTOP_HIT_STATE HIGH for Z_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if I_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(I,TMC2209)
|
||||
#if I_HOME_TO_MIN && I_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE LOW for I_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_HIT_STATE HIGH for I_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif I_HOME_TO_MAX && I_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE LOW for I_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires I_MAI_ENDSTOP_HIT_STATE HIGH for I_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if J_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(J,TMC2209)
|
||||
#if J_HOME_TO_MIN && J_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE LOW for J_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_HIT_STATE HIGH for J_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif J_HOME_TO_MAX && J_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE LOW for J_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires J_MAJ_ENDSTOP_HIT_STATE HIGH for J_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if K_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(K,TMC2209)
|
||||
#if K_HOME_TO_MIN && K_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE LOW for K_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_HIT_STATE HIGH for K_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif K_HOME_TO_MAX && K_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE LOW for K_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires K_MAK_ENDSTOP_HIT_STATE HIGH for K_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if U_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(U,TMC2209)
|
||||
#if U_HOME_TO_MIN && U_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE LOW for U_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires U_MIN_ENDSTOP_HIT_STATE HIGH for U_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif U_HOME_TO_MAX && U_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE LOW for U_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires U_MAU_ENDSTOP_HIT_STATE HIGH for U_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if V_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(V,TMC2209)
|
||||
#if V_HOME_TO_MIN && V_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE LOW for V_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires V_MIN_ENDSTOP_HIT_STATE HIGH for V_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif V_HOME_TO_MAX && V_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE LOW for V_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires V_MAV_ENDSTOP_HIT_STATE HIGH for V_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#if W_SENSORLESS
|
||||
#define _HIT_STATE AXIS_DRIVER_TYPE(W,TMC2209)
|
||||
#if W_HOME_TO_MIN && W_MIN_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE LOW for W_MIN homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires W_MIN_ENDSTOP_HIT_STATE HIGH for W_MIN homing with TMC2209."
|
||||
#endif
|
||||
#elif W_HOME_TO_MAX && W_MAX_ENDSTOP_HIT_STATE != _HIT_STATE
|
||||
#if _HIT_STATE
|
||||
#error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE LOW for W_MAX homing."
|
||||
#else
|
||||
#error "SENSORLESS_HOMING requires W_MAW_ENDSTOP_HIT_STATE HIGH for W_MAX homing with TMC2209."
|
||||
#endif
|
||||
#endif
|
||||
#undef _HIT_STATE
|
||||
#endif
|
||||
|
||||
#endif // !SPI_ENDSTOPS
|
||||
|
||||
#if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z)
|
||||
#error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
|
||||
|
@ -3768,15 +3799,6 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, Z, I, J, K, U, V, or W axes."
|
||||
#endif
|
||||
|
||||
#undef X_ENDSTOP_INVERTING
|
||||
#undef Y_ENDSTOP_INVERTING
|
||||
#undef Z_ENDSTOP_INVERTING
|
||||
#undef I_ENDSTOP_INVERTING
|
||||
#undef J_ENDSTOP_INVERTING
|
||||
#undef K_ENDSTOP_INVERTING
|
||||
#undef U_ENDSTOP_INVERTING
|
||||
#undef V_ENDSTOP_INVERTING
|
||||
#undef W_ENDSTOP_INVERTING
|
||||
#endif
|
||||
|
||||
// Sensorless probing requirements
|
||||
|
|
|
@ -89,7 +89,7 @@ void ESDiagClass::Draw() {
|
|||
|
||||
void ESDiagClass::Update() {
|
||||
DWINUI::cursor.y = 80;
|
||||
#define ES_REPORT(S) draw_es_state(READ(S##_PIN) != S##_ENDSTOP_INVERTING)
|
||||
#define ES_REPORT(S) draw_es_state(READ(S##_PIN) == S##_ENDSTOP_HIT_STATE)
|
||||
#if HAS_X_MIN
|
||||
ES_REPORT(X_MIN);
|
||||
#endif
|
||||
|
|
|
@ -41,7 +41,7 @@ void EndstopStatesScreen::onExit() {
|
|||
#define GRID_ROWS 7
|
||||
|
||||
#define PIN_BTN(X,Y,PIN,LABEL) button(BTN_POS(X,Y), BTN_SIZE(2,1), LABEL)
|
||||
#define PIN_ENABLED(X,Y,LABEL,PIN,INV) cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL);
|
||||
#define PIN_ENABLED(X,Y,LABEL,PIN,ST) cmd.enabled(1).colors(READ(PIN##_PIN) == ST ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL);
|
||||
#define PIN_DISABLED(X,Y,LABEL,PIN) cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL);
|
||||
|
||||
void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
|
@ -55,32 +55,32 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
|||
.text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
|
||||
.font(font_tiny);
|
||||
#if HAS_X_MAX
|
||||
PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING)
|
||||
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
|
||||
PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING)
|
||||
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
|
||||
PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING)
|
||||
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
|
||||
PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING)
|
||||
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
|
||||
PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING)
|
||||
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)
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN)
|
||||
#endif
|
||||
|
@ -95,7 +95,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
|||
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING)
|
||||
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE)
|
||||
#endif
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
constexpr static bool endstopz2_sta = true;
|
||||
#endif
|
||||
|
||||
#define ESTATE(S) (READ(S##_PIN) != S##_ENDSTOP_INVERTING)
|
||||
#define ESTATE(S) (READ(S##_PIN) == S##_ENDSTOP_HIT_STATE)
|
||||
|
||||
void test_gpio_readlevel_L() {
|
||||
WRITE(WIFI_IO0_PIN, HIGH);
|
||||
|
|
|
@ -431,27 +431,27 @@ void NextionTFT::PanelInfo(uint8_t req) {
|
|||
|
||||
case 36: // Endstop Info
|
||||
#if X_HOME_TO_MIN
|
||||
SEND_VALasTXT("x1", READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("x1", READ(X_MIN_PIN) == X_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#elif X_HOME_TO_MAX
|
||||
SEND_VALasTXT("x2", READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("x2", READ(X_MAX_PIN) == X_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if Y_HOME_TO_MIN
|
||||
SEND_VALasTXT("y1", READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("y1", READ(Y_MIN_PIN) == Y_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#elif Y_HOME_TO_MAX
|
||||
SEND_VALasTXT("y2", READ(X_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("y2", READ(X_MAX_PIN) == Y_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if Z_HOME_TO_MIN
|
||||
SEND_VALasTXT("z1", READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("z1", READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#elif Z_HOME_TO_MAX
|
||||
SEND_VALasTXT("z2", READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("z2", READ(Z_MAX_PIN) == Z_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
SEND_VALasTXT("z2", READ(Z2_MIN_PIN) != Z2_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("z2", READ(Z2_MIN_PIN) == Z2_MIN_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#elif HAS_Z2_MAX
|
||||
SEND_VALasTXT("z2", READ(Z2_MAX_PIN) != Z2_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
SEND_VALasTXT("z2", READ(Z2_MAX_PIN) == Z2_MAX_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#endif
|
||||
#if HAS_BED_PROBE
|
||||
//SEND_VALasTXT("bltouch", READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING ? "triggered" : "open");
|
||||
//SEND_VALasTXT("bltouch", READ(Z_MIN_PROBE_PIN) == Z_MIN_PROBE_ENDSTOP_HIT_STATE ? "triggered" : "open");
|
||||
#else
|
||||
SEND_NA("bltouch");
|
||||
#endif
|
||||
|
|
|
@ -109,284 +109,90 @@ 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 ENABLED(ENDSTOPPULLUP_XMIN)
|
||||
SET_INPUT_PULLUP(X_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_XMIN)
|
||||
SET_INPUT_PULLDOWN(X_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(X_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,X,);
|
||||
#endif
|
||||
|
||||
#if HAS_X2_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_XMIN)
|
||||
SET_INPUT_PULLUP(X2_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_XMIN)
|
||||
SET_INPUT_PULLDOWN(X2_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(X2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_YMIN)
|
||||
SET_INPUT_PULLUP(Y_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_YMIN)
|
||||
SET_INPUT_PULLDOWN(Y_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Y_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y2_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_YMIN)
|
||||
SET_INPUT_PULLUP(Y2_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_YMIN)
|
||||
SET_INPUT_PULLDOWN(Y2_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Y2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMIN)
|
||||
SET_INPUT_PULLDOWN(Z_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z2_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z2_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMIN)
|
||||
SET_INPUT_PULLDOWN(Z2_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z3_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z3_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMIN)
|
||||
SET_INPUT_PULLDOWN(Z3_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z3_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z4_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z4_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMIN)
|
||||
SET_INPUT_PULLDOWN(Z4_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z4_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_X_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_XMAX)
|
||||
SET_INPUT_PULLUP(X_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_XMAX)
|
||||
SET_INPUT_PULLDOWN(X_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(X_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,X,);
|
||||
#endif
|
||||
#if HAS_X2_MIN
|
||||
_INIT_ENDSTOP(MIN,X,2);
|
||||
#endif
|
||||
|
||||
#if HAS_X2_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_XMAX)
|
||||
SET_INPUT_PULLUP(X2_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_XMAX)
|
||||
SET_INPUT_PULLDOWN(X2_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(X2_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,X,2);
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
_INIT_ENDSTOP(MIN,Y,);
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_YMAX)
|
||||
SET_INPUT_PULLUP(Y_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_YMAX)
|
||||
SET_INPUT_PULLDOWN(Y_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Y_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Y,);
|
||||
#endif
|
||||
#if HAS_Y2_MIN
|
||||
_INIT_ENDSTOP(MIN,Y,2);
|
||||
#endif
|
||||
|
||||
#if HAS_Y2_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_YMAX)
|
||||
SET_INPUT_PULLUP(Y2_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_YMAX)
|
||||
SET_INPUT_PULLDOWN(Y2_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Y2_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Y,2);
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,);
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMAX)
|
||||
SET_INPUT_PULLDOWN(Z_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Z,);
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,2);
|
||||
#endif
|
||||
|
||||
#if HAS_Z2_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z2_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMAX)
|
||||
SET_INPUT_PULLDOWN(Z2_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z2_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Z,2);
|
||||
#endif
|
||||
#if HAS_Z3_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,3);
|
||||
#endif
|
||||
|
||||
#if HAS_Z3_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z3_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMAX)
|
||||
SET_INPUT_PULLDOWN(Z3_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z3_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Z,3);
|
||||
#endif
|
||||
#if HAS_Z4_MIN
|
||||
_INIT_ENDSTOP(MIN,Z,4);
|
||||
#endif
|
||||
|
||||
#if HAS_Z4_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z4_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_ZMAX)
|
||||
SET_INPUT_PULLDOWN(Z4_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z4_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,Z,4);
|
||||
#endif
|
||||
|
||||
#if HAS_I_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_IMIN)
|
||||
SET_INPUT_PULLUP(I_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_IMIN)
|
||||
SET_INPUT_PULLDOWN(I_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(I_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,I,);
|
||||
#endif
|
||||
|
||||
#if HAS_I_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_IMAX)
|
||||
SET_INPUT_PULLUP(I_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_IMAX)
|
||||
SET_INPUT_PULLDOWN(I_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(I_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,I,);
|
||||
#endif
|
||||
|
||||
#if HAS_J_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_JMIN)
|
||||
SET_INPUT_PULLUP(J_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_IMIN)
|
||||
SET_INPUT_PULLDOWN(J_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(J_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,J,);
|
||||
#endif
|
||||
|
||||
#if HAS_J_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_JMAX)
|
||||
SET_INPUT_PULLUP(J_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_JMAX)
|
||||
SET_INPUT_PULLDOWN(J_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(J_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,J,);
|
||||
#endif
|
||||
|
||||
#if HAS_K_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_KMIN)
|
||||
SET_INPUT_PULLUP(K_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_KMIN)
|
||||
SET_INPUT_PULLDOWN(K_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(K_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,K,);
|
||||
#endif
|
||||
|
||||
#if HAS_K_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_KMAX)
|
||||
SET_INPUT_PULLUP(K_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_KMIN)
|
||||
SET_INPUT_PULLDOWN(K_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(K_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,K,);
|
||||
#endif
|
||||
|
||||
#if HAS_U_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_UMIN)
|
||||
SET_INPUT_PULLUP(U_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_UMIN)
|
||||
SET_INPUT_PULLDOWN(U_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(U_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,U,);
|
||||
#endif
|
||||
|
||||
#if HAS_U_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_UMAX)
|
||||
SET_INPUT_PULLUP(U_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_UMIN)
|
||||
SET_INPUT_PULLDOWN(U_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(U_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,U,);
|
||||
#endif
|
||||
|
||||
#if HAS_V_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_VMIN)
|
||||
SET_INPUT_PULLUP(V_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_VMIN)
|
||||
SET_INPUT_PULLDOWN(V_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(V_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,V,);
|
||||
#endif
|
||||
|
||||
#if HAS_V_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_VMAX)
|
||||
SET_INPUT_PULLUP(V_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_VMIN)
|
||||
SET_INPUT_PULLDOWN(V_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(V_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,V,);
|
||||
#endif
|
||||
|
||||
#if HAS_W_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_WMIN)
|
||||
SET_INPUT_PULLUP(W_MIN_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_WMIN)
|
||||
SET_INPUT_PULLDOWN(W_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(W_MIN_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MIN,W,);
|
||||
#endif
|
||||
|
||||
#if HAS_W_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_WMAX)
|
||||
SET_INPUT_PULLUP(W_MAX_PIN);
|
||||
#elif ENABLED(ENDSTOPPULLDOWN_WMIN)
|
||||
SET_INPUT_PULLDOWN(W_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(W_MAX_PIN);
|
||||
#endif
|
||||
_INIT_ENDSTOP(MAX,W,);
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(CALIBRATION)
|
||||
|
@ -577,7 +383,7 @@ static void print_es_state(const bool is_hit, FSTR_P const flabel=nullptr) {
|
|||
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_INVERTING, F(STR_##S))
|
||||
#define ES_REPORT(S) print_es_state(READ_ENDSTOP(S##_PIN) == S##_ENDSTOP_HIT_STATE, F(STR_##S))
|
||||
#if HAS_X_MIN
|
||||
ES_REPORT(X_MIN);
|
||||
#endif
|
||||
|
@ -693,7 +499,7 @@ void __O2 Endstops::report_states() {
|
|||
|
||||
#define __ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX
|
||||
#define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN
|
||||
#define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING
|
||||
#define _ENDSTOP_HIT_STATE(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_HIT_STATE
|
||||
#define _ENDSTOP(AXIS, MINMAX) __ENDSTOP(AXIS, MINMAX)
|
||||
|
||||
/**
|
||||
|
@ -708,7 +514,7 @@ void Endstops::update() {
|
|||
#endif
|
||||
|
||||
// Macros to update / copy the live_state
|
||||
#define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)))
|
||||
#define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT_TO(live_state, _ENDSTOP(AXIS, MINMAX), (READ_ENDSTOP(_ENDSTOP_PIN(AXIS, MINMAX)) == _ENDSTOP_HIT_STATE(AXIS, MINMAX)))
|
||||
#define COPY_LIVE_STATE(SRC_BIT, DST_BIT) SET_BIT_TO(live_state, DST_BIT, TEST(live_state, SRC_BIT))
|
||||
|
||||
#if ENABLED(G38_PROBE_TARGET) && NONE(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX)
|
||||
|
|
|
@ -44,9 +44,9 @@
|
|||
#endif
|
||||
|
||||
#if USES_Z_MIN_PROBE_PIN
|
||||
#define PROBE_TRIGGERED() (READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING)
|
||||
#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_INVERTING)
|
||||
#define PROBE_TRIGGERED() (READ(Z_MIN_PIN) == Z_MIN_ENDSTOP_HIT_STATE)
|
||||
#endif
|
||||
|
||||
#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING)
|
||||
|
|
|
@ -39,7 +39,7 @@ restore_configs
|
|||
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \
|
||||
LCD_LANGUAGE vi LCD_LANGUAGE_2 fr \
|
||||
X_DRIVER_TYPE TMC2160 Y_DRIVER_TYPE TMC5160 Z_DRIVER_TYPE TMC2208_STANDALONE E0_DRIVER_TYPE TMC2130 \
|
||||
X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true
|
||||
X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW
|
||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \
|
||||
MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \
|
||||
MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \
|
||||
|
@ -59,7 +59,7 @@ exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3"
|
|||
use_example_configs SCARA/Morgan
|
||||
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \
|
||||
LCD_LANGUAGE es \
|
||||
X_MAX_ENDSTOP_INVERTING false \
|
||||
X_MAX_ENDSTOP_HIT_STATE HIGH \
|
||||
X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130_STANDALONE E0_DRIVER_TYPE TMC2660 \
|
||||
X_HARDWARE_SERIAL Serial2
|
||||
opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
|
||||
|
|
|
@ -55,8 +55,8 @@ exec_test $1 $2 "RAMPS | DELTA | RRD LCD | DELTA_AUTO_CALIBRATION | DELTA_CALIBR
|
|||
#
|
||||
use_example_configs delta/generic
|
||||
opt_set LCD_LANGUAGE cz \
|
||||
Z_MIN_PROBE_ENDSTOP_INVERTING false \
|
||||
Z_MIN_ENDSTOP_INVERTING false
|
||||
Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH \
|
||||
Z_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH
|
||||
exec_test $1 $2 "DELTA | RRD LCD | ABL Bilinear | BLTOUCH" "$3"
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ exec_test $1 $2 "Mixing Extruder" "$3"
|
|||
restore_configs
|
||||
opt_set MOTHERBOARD BOARD_TEENSY35_36 \
|
||||
X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \
|
||||
X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true \
|
||||
X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \
|
||||
X_CS_PIN 46 Y_CS_PIN 47
|
||||
opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING
|
||||
exec_test $1 $2 "Teensy 3.5/3.6 COREXY" "$3"
|
||||
|
|
|
@ -88,7 +88,7 @@ exec_test $1 $2 "Mixing Extruder" "$3"
|
|||
restore_configs
|
||||
opt_set MOTHERBOARD BOARD_TEENSY41 \
|
||||
X_DRIVER_TYPE TMC5160 Y_DRIVER_TYPE TMC5160 \
|
||||
X_MIN_ENDSTOP_INVERTING true Y_MIN_ENDSTOP_INVERTING true \
|
||||
X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW \
|
||||
X_CS_PIN 46 Y_CS_PIN 47
|
||||
opt_enable COREXY USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING
|
||||
exec_test $1 $2 "Teensy 4.0/4.1 COREXY" "$3"
|
||||
|
|
Loading…
Reference in a new issue