@@ -1552,30 +1552,32 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1552
1552
#endif
1553
1553
1554
1554
/* *
1555
- * Features that require a min/max/specific NUM_AXES
1555
+ * Features that require a min/max/specific steppers / axes to be enabled.
1556
1556
*/
1557
1557
#if HAS_LEVELING && !HAS_Z_AXIS
1558
1558
#error "Leveling in Marlin requires three or more axes, with Z as the vertical axis."
1559
1559
#elif ENABLED(CNC_WORKSPACE_PLANES) && !HAS_Z_AXIS
1560
- #error "CNC_WORKSPACE_PLANES currently requires NUM_AXES >= 3 "
1560
+ #error "CNC_WORKSPACE_PLANES currently requires a Z axis "
1561
1561
#elif ENABLED(DIRECT_STEPPING) && NUM_AXES > XYZ
1562
- #error "DIRECT_STEPPING currently requires NUM_AXES 3 "
1563
- #elif ENABLED(FOAMCUTTER_XYUV) && NUM_AXES < 5
1564
- #error "FOAMCUTTER_XYUV requires NUM_AXES >= 5 ."
1562
+ #error "DIRECT_STEPPING does not currently support more than 3 axes (i.e., XYZ). "
1563
+ #elif ENABLED(FOAMCUTTER_XYUV) && !(HAS_I_AXIS && HAS_J_AXIS)
1564
+ #error "FOAMCUTTER_XYUV requires I and J steppers to be enabled ."
1565
1565
#elif ENABLED(LINEAR_ADVANCE) && HAS_I_AXIS
1566
- #error "LINEAR_ADVANCE currently requires NUM_AXES <= 3 ."
1566
+ #error "LINEAR_ADVANCE does not currently support the inclusion of an I axis ."
1567
1567
#endif
1568
1568
1569
1569
/* *
1570
1570
* Allow only extra axis codes that do not conflict with G-code parameter names
1571
1571
*/
1572
1572
#if HAS_I_AXIS
1573
1573
#if !defined(I_MIN_POS) || !defined(I_MAX_POS)
1574
- #error "I_MIN_POS and I_MAX_POS are required with NUM_AXES >= 4 ."
1574
+ #error "I_MIN_POS and I_MAX_POS are required for the I axis ."
1575
1575
#elif !defined(I_HOME_DIR)
1576
- #error "I_HOME_DIR is required with NUM_AXES >= 4 ."
1576
+ #error "I_HOME_DIR is required for the I axis ."
1577
1577
#elif HAS_I_ENABLE && !defined(I_ENABLE_ON)
1578
- #error "I_ENABLE_ON is required for your I driver with NUM_AXES >= 4."
1578
+ #error "I_ENABLE_ON is required for the I stepper."
1579
+ #elif !defined(INVERT_I_DIR)
1580
+ #error "INVERT_I_DIR is required for the I stepper."
1579
1581
#endif
1580
1582
#endif
1581
1583
#if HAS_J_AXIS
@@ -1584,11 +1586,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1584
1586
#elif ENABLED(AXIS5_ROTATES) && DISABLED(AXIS4_ROTATES)
1585
1587
#error "AXIS5_ROTATES requires AXIS4_ROTATES."
1586
1588
#elif !defined(J_MIN_POS) || !defined(J_MAX_POS)
1587
- #error "J_MIN_POS and J_MAX_POS are required with NUM_AXES >= 5 ."
1589
+ #error "J_MIN_POS and J_MAX_POS are required for the J axis ."
1588
1590
#elif !defined(J_HOME_DIR)
1589
- #error "J_HOME_DIR is required with NUM_AXES >= 5 ."
1591
+ #error "J_HOME_DIR is required for the J axis ."
1590
1592
#elif HAS_J_ENABLE && !defined(J_ENABLE_ON)
1591
- #error "J_ENABLE_ON is required for your J driver with NUM_AXES >= 5."
1593
+ #error "J_ENABLE_ON is required for the J stepper."
1594
+ #elif !defined(INVERT_J_DIR)
1595
+ #error "INVERT_J_DIR is required for the J stepper."
1592
1596
#endif
1593
1597
#endif
1594
1598
#if HAS_K_AXIS
@@ -1597,11 +1601,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1597
1601
#elif ENABLED(AXIS6_ROTATES) && DISABLED(AXIS5_ROTATES)
1598
1602
#error "AXIS6_ROTATES requires AXIS5_ROTATES."
1599
1603
#elif !defined(K_MIN_POS) || !defined(K_MAX_POS)
1600
- #error "K_MIN_POS and K_MAX_POS are required with NUM_AXES >= 6 ."
1604
+ #error "K_MIN_POS and K_MAX_POS are required for the K axis ."
1601
1605
#elif !defined(K_HOME_DIR)
1602
- #error "K_HOME_DIR is required with NUM_AXES >= 6 ."
1606
+ #error "K_HOME_DIR is required for the K axis ."
1603
1607
#elif HAS_K_ENABLE && !defined(K_ENABLE_ON)
1604
- #error "K_ENABLE_ON is required for your K driver with NUM_AXES >= 6."
1608
+ #error "K_ENABLE_ON is required for the K stepper."
1609
+ #elif !defined(INVERT_K_DIR)
1610
+ #error "INVERT_K_DIR is required for the K stepper."
1605
1611
#endif
1606
1612
#endif
1607
1613
#if HAS_U_AXIS
@@ -1610,11 +1616,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1610
1616
#elif ENABLED(AXIS7_ROTATES) && DISABLED(AXIS6_ROTATES)
1611
1617
#error "AXIS7_ROTATES requires AXIS6_ROTATES."
1612
1618
#elif !defined(U_MIN_POS) || !defined(U_MAX_POS)
1613
- #error "U_MIN_POS and U_MAX_POS are required with NUM_AXES >= 7 ."
1619
+ #error "U_MIN_POS and U_MAX_POS are required for the U axis ."
1614
1620
#elif !defined(U_HOME_DIR)
1615
- #error "U_HOME_DIR is required with NUM_AXES >= 7 ."
1621
+ #error "U_HOME_DIR is required for the U axis ."
1616
1622
#elif HAS_U_ENABLE && !defined(U_ENABLE_ON)
1617
- #error "U_ENABLE_ON is required for your U driver with NUM_AXES >= 7."
1623
+ #error "U_ENABLE_ON is required for the U stepper."
1624
+ #elif !defined(INVERT_U_DIR)
1625
+ #error "INVERT_U_DIR is required for the U stepper."
1618
1626
#endif
1619
1627
#endif
1620
1628
#if HAS_V_AXIS
@@ -1623,11 +1631,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1623
1631
#elif ENABLED(AXIS8_ROTATES) && DISABLED(AXIS7_ROTATES)
1624
1632
#error "AXIS8_ROTATES requires AXIS7_ROTATES."
1625
1633
#elif !defined(V_MIN_POS) || !defined(V_MAX_POS)
1626
- #error "V_MIN_POS and V_MAX_POS are required with NUM_AXES >= 8 ."
1634
+ #error "V_MIN_POS and V_MAX_POS are required for the V axis ."
1627
1635
#elif !defined(V_HOME_DIR)
1628
- #error "V_HOME_DIR is required with NUM_AXES >= 8 ."
1636
+ #error "V_HOME_DIR is required for the V axis ."
1629
1637
#elif HAS_V_ENABLE && !defined(V_ENABLE_ON)
1630
- #error "V_ENABLE_ON is required for your V driver with NUM_AXES >= 8."
1638
+ #error "V_ENABLE_ON is required for the V stepper."
1639
+ #elif !defined(INVERT_V_DIR)
1640
+ #error "INVERT_V_DIR is required for the V stepper."
1631
1641
#endif
1632
1642
#endif
1633
1643
#if HAS_W_AXIS
@@ -1636,11 +1646,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1636
1646
#elif ENABLED(AXIS9_ROTATES) && DISABLED(AXIS8_ROTATES)
1637
1647
#error "AXIS9_ROTATES requires AXIS8_ROTATES."
1638
1648
#elif !defined(W_MIN_POS) || !defined(W_MAX_POS)
1639
- #error "W_MIN_POS and W_MAX_POS are required with NUM_AXES >= 9 ."
1649
+ #error "W_MIN_POS and W_MAX_POS are required for the W axis ."
1640
1650
#elif !defined(W_HOME_DIR)
1641
- #error "W_HOME_DIR is required with NUM_AXES >= 9 ."
1651
+ #error "W_HOME_DIR is required for the W axis ."
1642
1652
#elif HAS_W_ENABLE && !defined(W_ENABLE_ON)
1643
- #error "W_ENABLE_ON is required for your W driver with NUM_AXES >= 9."
1653
+ #error "W_ENABLE_ON is required for the W stepper."
1654
+ #elif !defined(INVERT_W_DIR)
1655
+ #error "INVERT_W_DIR is required for the W stepper."
1644
1656
#endif
1645
1657
#endif
1646
1658
0 commit comments