🏗️ Support for up to 6 linear axes (#19112)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
@@ -259,6 +259,66 @@ void Endstops::init() {
|
||||
#endif
|
||||
#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
|
||||
#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
|
||||
#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
|
||||
#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
|
||||
#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
|
||||
#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
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(CALIBRATION)
|
||||
#if ENABLED(CALIBRATION_PIN_PULLUP)
|
||||
SET_INPUT_PULLUP(CALIBRATION_PIN);
|
||||
@@ -361,7 +421,7 @@ void Endstops::event_handler() {
|
||||
prev_hit_state = hit_state;
|
||||
if (hit_state) {
|
||||
#if HAS_STATUS_MESSAGE
|
||||
char LINEAR_AXIS_LIST(chrX = ' ', chrY = ' ', chrZ = ' '),
|
||||
char LINEAR_AXIS_LIST(chrX = ' ', chrY = ' ', chrZ = ' ', chrI = ' ', chrJ = ' ', chrK = ' '),
|
||||
chrP = ' ';
|
||||
#define _SET_STOP_CHAR(A,C) (chr## A = C)
|
||||
#else
|
||||
@@ -378,12 +438,20 @@ void Endstops::event_handler() {
|
||||
#define ENDSTOP_HIT_TEST_X() _ENDSTOP_HIT_TEST(X,'X')
|
||||
#define ENDSTOP_HIT_TEST_Y() _ENDSTOP_HIT_TEST(Y,'Y')
|
||||
#define ENDSTOP_HIT_TEST_Z() _ENDSTOP_HIT_TEST(Z,'Z')
|
||||
#define ENDSTOP_HIT_TEST_I() _ENDSTOP_HIT_TEST(I,'I')
|
||||
#define ENDSTOP_HIT_TEST_J() _ENDSTOP_HIT_TEST(J,'J')
|
||||
#define ENDSTOP_HIT_TEST_K() _ENDSTOP_HIT_TEST(K,'K')
|
||||
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM(STR_ENDSTOPS_HIT);
|
||||
ENDSTOP_HIT_TEST_X();
|
||||
ENDSTOP_HIT_TEST_Y();
|
||||
ENDSTOP_HIT_TEST_Z();
|
||||
LINEAR_AXIS_CODE(
|
||||
ENDSTOP_HIT_TEST_X(),
|
||||
ENDSTOP_HIT_TEST_Y(),
|
||||
ENDSTOP_HIT_TEST_Z(),
|
||||
_ENDSTOP_HIT_TEST(I,'I'),
|
||||
_ENDSTOP_HIT_TEST(J,'J'),
|
||||
_ENDSTOP_HIT_TEST(K,'K')
|
||||
);
|
||||
|
||||
#if HAS_CUSTOM_PROBE_PIN
|
||||
#define P_AXIS Z_AXIS
|
||||
@@ -395,7 +463,7 @@ void Endstops::event_handler() {
|
||||
ui.status_printf_P(0,
|
||||
PSTR(S_FMT GANG_N_1(LINEAR_AXES, " %c") " %c"),
|
||||
GET_TEXT(MSG_LCD_ENDSTOPS),
|
||||
LINEAR_AXIS_LIST(chrX, chrY, chrZ), chrP
|
||||
LINEAR_AXIS_LIST(chrX, chrY, chrZ, chrI, chrJ, chrK), chrP
|
||||
)
|
||||
);
|
||||
|
||||
@@ -477,6 +545,24 @@ void _O2 Endstops::report_states() {
|
||||
#if HAS_Z4_MAX
|
||||
ES_REPORT(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
ES_REPORT(I_MIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
ES_REPORT(I_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
ES_REPORT(J_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
ES_REPORT(J_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
ES_REPORT(K_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
ES_REPORT(K_MAX);
|
||||
#endif
|
||||
#if BOTH(MARLIN_DEV_MODE, PROBE_ACTIVATION_SWITCH)
|
||||
print_es_state(probe_switch_activated(), PSTR(STR_PROBE_EN));
|
||||
#endif
|
||||
@@ -549,6 +635,10 @@ void Endstops::update() {
|
||||
#define Z_AXIS_HEAD Z_AXIS
|
||||
#endif
|
||||
|
||||
#define I_AXIS_HEAD I_AXIS
|
||||
#define J_AXIS_HEAD J_AXIS
|
||||
#define K_AXIS_HEAD K_AXIS
|
||||
|
||||
/**
|
||||
* Check and update endstops
|
||||
*/
|
||||
@@ -656,6 +746,84 @@ void Endstops::update() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_I_MIN
|
||||
#if ENABLED(I_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(I, MIN);
|
||||
#if HAS_I2_MIN
|
||||
UPDATE_ENDSTOP_BIT(I2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(I_MIN, I2_MIN);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(I, MIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_I_MAX
|
||||
#if ENABLED(I_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(I, MAX);
|
||||
#if HAS_I2_MAX
|
||||
UPDATE_ENDSTOP_BIT(I2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(I_MAX, I2_MAX);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(I, MAX);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_J_MIN
|
||||
#if ENABLED(J_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(J, MIN);
|
||||
#if HAS_J2_MIN
|
||||
UPDATE_ENDSTOP_BIT(J2, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(J_MIN, J2_MIN);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(J, MIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_J_MAX
|
||||
#if ENABLED(J_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(J, MAX);
|
||||
#if HAS_J2_MAX
|
||||
UPDATE_ENDSTOP_BIT(J2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(J_MAX, J2_MAX);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(J, MAX);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_K_MIN
|
||||
#if ENABLED(K_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(K, MIN);
|
||||
#if HAS_K2_MIN
|
||||
UPDATE_ENDSTOP_BIT(K2, MIN);
|
||||
#else
|
||||
COPY_LIVE_STATE(K_MIN, K2_MIN);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(K, MIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_K_MAX
|
||||
#if ENABLED(K_DUAL_ENDSTOPS)
|
||||
UPDATE_ENDSTOP_BIT(K, MAX);
|
||||
#if HAS_K2_MAX
|
||||
UPDATE_ENDSTOP_BIT(K2, MAX);
|
||||
#else
|
||||
COPY_LIVE_STATE(K_MAX, K2_MAX);
|
||||
#endif
|
||||
#else
|
||||
UPDATE_ENDSTOP_BIT(K, MAX);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENDSTOP_NOISE_THRESHOLD
|
||||
|
||||
/**
|
||||
@@ -804,79 +972,128 @@ void Endstops::update() {
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
PROCESS_ENDSTOP_Y(MIN);
|
||||
#if CORE_DIAG(XY, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Y,MIN);
|
||||
#elif CORE_DIAG(XY, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Y,MIN);
|
||||
#elif CORE_DIAG(YZ, Z, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Z,MIN,Y,MIN);
|
||||
#elif CORE_DIAG(YZ, Z, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Z,MAX,Y,MIN);
|
||||
#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)
|
||||
PROCESS_ENDSTOP_Y(MIN);
|
||||
#if CORE_DIAG(XY, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Y,MIN);
|
||||
#elif CORE_DIAG(XY, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Y,MIN);
|
||||
#elif CORE_DIAG(YZ, Z, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Z,MIN,Y,MIN);
|
||||
#elif CORE_DIAG(YZ, Z, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Z,MAX,Y,MIN);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_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);
|
||||
#elif CORE_DIAG(XY, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Y,MAX);
|
||||
#elif CORE_DIAG(YZ, Z, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Z,MIN,Y,MAX);
|
||||
#elif CORE_DIAG(YZ, Z, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Z,MAX,Y,MAX);
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_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);
|
||||
#elif CORE_DIAG(XY, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Y,MAX);
|
||||
#elif CORE_DIAG(YZ, Z, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Z,MIN,Y,MAX);
|
||||
#elif CORE_DIAG(YZ, Z, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Z,MAX,Y,MAX);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (stepper.axis_is_moving(Z_AXIS)) {
|
||||
if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up.
|
||||
#if HAS_Z_AXIS
|
||||
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 ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled)
|
||||
&& TERN1(HAS_CUSTOM_PROBE_PIN, !z_probe_enabled)
|
||||
) PROCESS_ENDSTOP_Z(MIN);
|
||||
#if CORE_DIAG(XZ, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN);
|
||||
#elif CORE_DIAG(XZ, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Z,MIN);
|
||||
#elif CORE_DIAG(YZ, Y, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Y,MIN,Z,MIN);
|
||||
#elif CORE_DIAG(YZ, Y, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Y,MAX,Z,MIN);
|
||||
#if HAS_Z_MIN || (Z_SPI_SENSORLESS && Z_HOME_TO_MIN)
|
||||
if ( TERN1(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, z_probe_enabled)
|
||||
&& TERN1(HAS_CUSTOM_PROBE_PIN, !z_probe_enabled)
|
||||
) PROCESS_ENDSTOP_Z(MIN);
|
||||
#if CORE_DIAG(XZ, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Z,MIN);
|
||||
#elif CORE_DIAG(XZ, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Z,MIN);
|
||||
#elif CORE_DIAG(YZ, Y, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Y,MIN,Z,MIN);
|
||||
#elif CORE_DIAG(YZ, Y, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Y,MAX,Z,MIN);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// When closing the gap check the enabled probe
|
||||
#if HAS_CUSTOM_PROBE_PIN
|
||||
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 ENABLED(Z_MULTI_ENDSTOPS)
|
||||
PROCESS_ENDSTOP_Z(MAX);
|
||||
#elif !HAS_CUSTOM_PROBE_PIN || Z_MAX_PIN != Z_MIN_PROBE_PIN // No probe or probe is Z_MIN || Probe is not Z_MAX
|
||||
PROCESS_ENDSTOP(Z, MAX);
|
||||
// When closing the gap check the enabled probe
|
||||
#if HAS_CUSTOM_PROBE_PIN
|
||||
if (z_probe_enabled) PROCESS_ENDSTOP(Z, MIN_PROBE);
|
||||
#endif
|
||||
#if CORE_DIAG(XZ, X, MIN)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Z,MAX);
|
||||
#elif CORE_DIAG(XZ, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Z,MAX);
|
||||
#elif CORE_DIAG(YZ, Y, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Y,MIN,Z,MAX);
|
||||
#elif CORE_DIAG(YZ, Y, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Y,MAX,Z,MAX);
|
||||
}
|
||||
else { // Z +direction. Gantry up, bed down.
|
||||
#if HAS_Z_MAX || (Z_SPI_SENSORLESS && Z_HOME_TO_MAX)
|
||||
#if ENABLED(Z_MULTI_ENDSTOPS)
|
||||
PROCESS_ENDSTOP_Z(MAX);
|
||||
#elif !HAS_CUSTOM_PROBE_PIN || 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)
|
||||
PROCESS_CORE_ENDSTOP(X,MIN,Z,MAX);
|
||||
#elif CORE_DIAG(XZ, X, MAX)
|
||||
PROCESS_CORE_ENDSTOP(X,MAX,Z,MAX);
|
||||
#elif CORE_DIAG(YZ, Y, MIN)
|
||||
PROCESS_CORE_ENDSTOP(Y,MIN,Z,MAX);
|
||||
#elif CORE_DIAG(YZ, Y, MAX)
|
||||
PROCESS_CORE_ENDSTOP(Y,MAX,Z,MAX);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINEAR_AXES >= 4
|
||||
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)
|
||||
PROCESS_ENDSTOP(I, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_I_MAX || (I_SPI_SENSORLESS && I_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(I, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINEAR_AXES >= 5
|
||||
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)
|
||||
PROCESS_ENDSTOP(J, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_J_MAX || (J_SPI_SENSORLESS && J_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(J, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINEAR_AXES >= 6
|
||||
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)
|
||||
PROCESS_ENDSTOP(K, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_K_MAX || (K_SPI_SENSORLESS && K_HOME_TO_MAX)
|
||||
PROCESS_ENDSTOP(K, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} // Endstops::update()
|
||||
|
||||
#if ENABLED(SPI_ENDSTOPS)
|
||||
@@ -919,6 +1136,24 @@ void Endstops::update() {
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
#if I_SPI_SENSORLESS
|
||||
if (tmc_spi_homing.i && stepperI.test_stall_status()) {
|
||||
SBI(live_state, I_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
#if J_SPI_SENSORLESS
|
||||
if (tmc_spi_homing.j && stepperJ.test_stall_status()) {
|
||||
SBI(live_state, J_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
#if K_SPI_SENSORLESS
|
||||
if (tmc_spi_homing.k && stepperK.test_stall_status()) {
|
||||
SBI(live_state, K_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (TERN0(ENDSTOP_INTERRUPTS_FEATURE, hit)) update();
|
||||
|
||||
@@ -929,6 +1164,9 @@ void Endstops::update() {
|
||||
TERN_(X_SPI_SENSORLESS, CBI(live_state, X_ENDSTOP));
|
||||
TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_ENDSTOP));
|
||||
TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP));
|
||||
TERN_(I_SPI_SENSORLESS, CBI(live_state, I_ENDSTOP));
|
||||
TERN_(J_SPI_SENSORLESS, CBI(live_state, J_ENDSTOP));
|
||||
TERN_(K_SPI_SENSORLESS, CBI(live_state, K_ENDSTOP));
|
||||
}
|
||||
|
||||
#endif // SPI_ENDSTOPS
|
||||
@@ -1005,6 +1243,24 @@ void Endstops::update() {
|
||||
#if HAS_Z4_MAX
|
||||
ES_GET_STATE(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
ES_GET_STATE(I_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
ES_GET_STATE(I_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
ES_GET_STATE(J_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
ES_GET_STATE(J_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
ES_GET_STATE(K_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
ES_GET_STATE(K_MIN);
|
||||
#endif
|
||||
|
||||
uint16_t endstop_change = live_state_local ^ old_live_state_local;
|
||||
#define ES_REPORT_CHANGE(S) if (TEST(endstop_change, S)) SERIAL_ECHOPAIR(" " STRINGIFY(S) ":", TEST(live_state_local, S))
|
||||
@@ -1061,6 +1317,24 @@ void Endstops::update() {
|
||||
#if HAS_Z4_MAX
|
||||
ES_REPORT_CHANGE(Z4_MAX);
|
||||
#endif
|
||||
#if HAS_I_MIN
|
||||
ES_REPORT_CHANGE(I_MIN);
|
||||
#endif
|
||||
#if HAS_I_MAX
|
||||
ES_REPORT_CHANGE(I_MAX);
|
||||
#endif
|
||||
#if HAS_J_MIN
|
||||
ES_REPORT_CHANGE(J_MIN);
|
||||
#endif
|
||||
#if HAS_J_MAX
|
||||
ES_REPORT_CHANGE(J_MAX);
|
||||
#endif
|
||||
#if HAS_K_MIN
|
||||
ES_REPORT_CHANGE(K_MIN);
|
||||
#endif
|
||||
#if HAS_K_MAX
|
||||
ES_REPORT_CHANGE(K_MAX);
|
||||
#endif
|
||||
SERIAL_ECHOLNPGM("\n");
|
||||
analogWrite(pin_t(LED_PIN), local_LED_status);
|
||||
local_LED_status ^= 255;
|
||||
|
||||
Reference in New Issue
Block a user