|
@@ -588,27 +588,27 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) {
|
588
|
588
|
}
|
589
|
589
|
#endif
|
590
|
590
|
|
591
|
|
-#if LINEAR_AXES == 4
|
|
591
|
+#if LINEAR_AXES >= 4
|
592
|
592
|
void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s/*=0.0*/) {
|
593
|
593
|
do_blocking_move_to_xyz_i(current_position, ri, fr_mm_s);
|
594
|
594
|
}
|
595
|
595
|
void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const_float_t i, const_feedRate_t fr_mm_s/*=0.0f*/) {
|
596
|
|
- do_blocking_move_to(raw.x, raw.y, raw.z, i, fr_mm_s);
|
|
596
|
+ do_blocking_move_to(
|
|
597
|
+ LINEAR_AXIS_LIST(raw.x, raw.y, raw.z, i, raw.j, raw.k),
|
|
598
|
+ fr_mm_s
|
|
599
|
+ );
|
597
|
600
|
}
|
598
|
601
|
#endif
|
599
|
602
|
|
600
|
603
|
#if LINEAR_AXES >= 5
|
601
|
|
- void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s/*=0.0*/) {
|
602
|
|
- do_blocking_move_to_xyz_i(current_position, ri, fr_mm_s);
|
603
|
|
- }
|
604
|
|
- void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const_float_t i, const_feedRate_t fr_mm_s/*=0.0f*/) {
|
605
|
|
- do_blocking_move_to(raw.x, raw.y, raw.z, i, raw.j, fr_mm_s);
|
606
|
|
- }
|
607
|
604
|
void do_blocking_move_to_j(const_float_t rj, const_feedRate_t fr_mm_s/*=0.0*/) {
|
608
|
605
|
do_blocking_move_to_xyzi_j(current_position, rj, fr_mm_s);
|
609
|
606
|
}
|
610
|
607
|
void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const_float_t j, const_feedRate_t fr_mm_s/*=0.0f*/) {
|
611
|
|
- do_blocking_move_to(raw.x, raw.y, raw.z, raw.i, j, fr_mm_s);
|
|
608
|
+ do_blocking_move_to(
|
|
609
|
+ LINEAR_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, j, raw.k),
|
|
610
|
+ fr_mm_s
|
|
611
|
+ );
|
612
|
612
|
}
|
613
|
613
|
#endif
|
614
|
614
|
|
|
@@ -617,7 +617,10 @@ void do_blocking_move_to_x(const_float_t rx, const_feedRate_t fr_mm_s/*=0.0*/) {
|
617
|
617
|
do_blocking_move_to_xyzij_k(current_position, rk, fr_mm_s);
|
618
|
618
|
}
|
619
|
619
|
void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const_float_t k, const_feedRate_t fr_mm_s/*=0.0f*/) {
|
620
|
|
- do_blocking_move_to(raw.x, raw.y, raw.z, raw.i, raw.j, k, fr_mm_s);
|
|
620
|
+ do_blocking_move_to(
|
|
621
|
+ LINEAR_AXIS_LIST(raw.x, raw.y, raw.z, raw.i, raw.j, k),
|
|
622
|
+ fr_mm_s
|
|
623
|
+ );
|
621
|
624
|
}
|
622
|
625
|
#endif
|
623
|
626
|
|
|
@@ -822,7 +825,7 @@ void restore_feedrate_and_scaling() {
|
822
|
825
|
#endif
|
823
|
826
|
}
|
824
|
827
|
#endif
|
825
|
|
- #if LINEAR_AXES >= 4 // TODO (DerAndere): Find out why this was missing / removed
|
|
828
|
+ #if LINEAR_AXES >= 4
|
826
|
829
|
if (axis_was_homed(I_AXIS)) {
|
827
|
830
|
#if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_I)
|
828
|
831
|
NOLESS(target.i, soft_endstop.min.i);
|
|
@@ -1295,7 +1298,7 @@ void prepare_line_to_destination() {
|
1295
|
1298
|
|
1296
|
1299
|
bool homing_needed_error(linear_axis_bits_t axis_bits/*=linear_bits*/) {
|
1297
|
1300
|
if ((axis_bits = axes_should_home(axis_bits))) {
|
1298
|
|
- PGM_P home_first = GET_TEXT(MSG_HOME_FIRST); // TODO: (DerAndere) Set this up for extra axes
|
|
1301
|
+ PGM_P home_first = GET_TEXT(MSG_HOME_FIRST);
|
1299
|
1302
|
char msg[strlen_P(home_first)+1];
|
1300
|
1303
|
sprintf_P(msg, home_first,
|
1301
|
1304
|
LINEAR_AXIS_LIST(
|
|
@@ -1390,8 +1393,21 @@ void prepare_line_to_destination() {
|
1390
|
1393
|
#if ENABLED(SPI_ENDSTOPS)
|
1391
|
1394
|
switch (axis) {
|
1392
|
1395
|
case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = true; break;
|
1393
|
|
- case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = true; break;
|
1394
|
|
- case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = true; break;
|
|
1396
|
+ #if HAS_Y_AXIS
|
|
1397
|
+ case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = true; break;
|
|
1398
|
+ #endif
|
|
1399
|
+ #if HAS_Z_AXIS
|
|
1400
|
+ case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = true; break;
|
|
1401
|
+ #endif
|
|
1402
|
+ #if LINEAR_AXES >= 4
|
|
1403
|
+ case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = true; break;
|
|
1404
|
+ #endif
|
|
1405
|
+ #if LINEAR_AXES >= 5
|
|
1406
|
+ case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = true; break;
|
|
1407
|
+ #endif
|
|
1408
|
+ #if LINEAR_AXES >= 6
|
|
1409
|
+ case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = true; break;
|
|
1410
|
+ #endif
|
1395
|
1411
|
default: break;
|
1396
|
1412
|
}
|
1397
|
1413
|
#endif
|
|
@@ -1454,11 +1470,21 @@ void prepare_line_to_destination() {
|
1454
|
1470
|
#if ENABLED(SPI_ENDSTOPS)
|
1455
|
1471
|
switch (axis) {
|
1456
|
1472
|
case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = false; break;
|
1457
|
|
- case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = false; break;
|
1458
|
|
- case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break;
|
1459
|
|
- case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break;
|
1460
|
|
- case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break;
|
1461
|
|
- case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break;
|
|
1473
|
+ #if HAS_Y_AXIS
|
|
1474
|
+ case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = false; break;
|
|
1475
|
+ #endif
|
|
1476
|
+ #if HAS_Z_AXIS
|
|
1477
|
+ case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break;
|
|
1478
|
+ #endif
|
|
1479
|
+ #if LINEAR_AXES >= 4
|
|
1480
|
+ case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break;
|
|
1481
|
+ #endif
|
|
1482
|
+ #if LINEAR_AXES >= 5
|
|
1483
|
+ case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break;
|
|
1484
|
+ #endif
|
|
1485
|
+ #if LINEAR_AXES >= 6
|
|
1486
|
+ case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break;
|
|
1487
|
+ #endif
|
1462
|
1488
|
default: break;
|
1463
|
1489
|
}
|
1464
|
1490
|
#endif
|
|
@@ -1734,11 +1760,11 @@ void prepare_line_to_destination() {
|
1734
|
1760
|
#endif
|
1735
|
1761
|
|
1736
|
1762
|
//
|
1737
|
|
- // Back away to prevent an early X/Y sensorless trigger
|
|
1763
|
+ // Back away to prevent an early sensorless trigger
|
1738
|
1764
|
//
|
1739
|
1765
|
#if DISABLED(DELTA) && defined(SENSORLESS_BACKOFF_MM)
|
1740
|
|
- const xy_float_t backoff = SENSORLESS_BACKOFF_MM;
|
1741
|
|
- if ((TERN0(X_SENSORLESS, axis == X_AXIS) || TERN0(Y_SENSORLESS, axis == Y_AXIS)) && backoff[axis]) {
|
|
1766
|
+ const xyz_float_t backoff = SENSORLESS_BACKOFF_MM;
|
|
1767
|
+ if ((TERN0(X_SENSORLESS, axis == X_AXIS) || TERN0(Y_SENSORLESS, axis == Y_AXIS) || TERN0(Z_SENSORLESS, axis == Z_AXIS) || TERN0(I_SENSORLESS, axis == I_AXIS) || TERN0(J_SENSORLESS, axis == J_AXIS) || TERN0(K_SENSORLESS, axis == K_AXIS)) && backoff[axis]) {
|
1742
|
1768
|
const float backoff_length = -ABS(backoff[axis]) * axis_home_dir;
|
1743
|
1769
|
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Sensorless backoff: ", backoff_length, "mm");
|
1744
|
1770
|
do_homing_move(axis, backoff_length, homing_feedrate(axis));
|
|
@@ -1777,6 +1803,15 @@ void prepare_line_to_destination() {
|
1777
|
1803
|
case X_AXIS: es = X_ENDSTOP; break;
|
1778
|
1804
|
case Y_AXIS: es = Y_ENDSTOP; break;
|
1779
|
1805
|
case Z_AXIS: es = Z_ENDSTOP; break;
|
|
1806
|
+ #if LINEAR_AXES >= 4
|
|
1807
|
+ case I_AXIS: es = I_ENDSTOP; break;
|
|
1808
|
+ #endif
|
|
1809
|
+ #if LINEAR_AXES >= 5
|
|
1810
|
+ case J_AXIS: es = J_ENDSTOP; break;
|
|
1811
|
+ #endif
|
|
1812
|
+ #if LINEAR_AXES >= 6
|
|
1813
|
+ case K_AXIS: es = K_ENDSTOP; break;
|
|
1814
|
+ #endif
|
1780
|
1815
|
}
|
1781
|
1816
|
if (TEST(endstops.state(), es)) {
|
1782
|
1817
|
SERIAL_ECHO_MSG("Bad ", AS_CHAR(AXIS_CHAR(axis)), " Endstop?");
|