Browse Source

🧑‍💻 Apply axis conditionals

Scott Lahteine 2 years ago
parent
commit
e65c12cf96

+ 3
- 3
Marlin/src/core/language.h View File

369
 #define LCD_STR_E STR_E
369
 #define LCD_STR_E STR_E
370
 
370
 
371
 // Extra Axis and Endstop Names
371
 // Extra Axis and Endstop Names
372
-#if LINEAR_AXES >= 4
372
+#if HAS_I_AXIS
373
   #if AXIS4_NAME == 'A'
373
   #if AXIS4_NAME == 'A'
374
     #define AXIS4_STR "A"
374
     #define AXIS4_STR "A"
375
     #define STR_I_MIN "a_min"
375
     #define STR_I_MIN "a_min"
403
   #define AXIS4_STR   ""
403
   #define AXIS4_STR   ""
404
 #endif
404
 #endif
405
 
405
 
406
-#if LINEAR_AXES >= 5
406
+#if HAS_J_AXIS
407
   #if AXIS5_NAME == 'A'
407
   #if AXIS5_NAME == 'A'
408
     #define AXIS5_STR "A"
408
     #define AXIS5_STR "A"
409
     #define STR_J_MIN "a_min"
409
     #define STR_J_MIN "a_min"
437
   #define AXIS5_STR   ""
437
   #define AXIS5_STR   ""
438
 #endif
438
 #endif
439
 
439
 
440
-#if LINEAR_AXES >= 6
440
+#if HAS_K_AXIS
441
   #if AXIS6_NAME == 'A'
441
   #if AXIS6_NAME == 'A'
442
     #define AXIS6_STR "A"
442
     #define AXIS6_STR "A"
443
     #define STR_K_MIN "a_min"
443
     #define STR_K_MIN "a_min"

+ 8
- 8
Marlin/src/core/types.h View File

98
 
98
 
99
   // A, B, and C are for DELTA, SCARA, etc.
99
   // A, B, and C are for DELTA, SCARA, etc.
100
   , A_AXIS = X_AXIS
100
   , A_AXIS = X_AXIS
101
-  #if LINEAR_AXES >= 2
101
+  #if HAS_Y_AXIS
102
     , B_AXIS = Y_AXIS
102
     , B_AXIS = Y_AXIS
103
   #endif
103
   #endif
104
-  #if LINEAR_AXES >= 3
104
+  #if HAS_Z_AXIS
105
     , C_AXIS = Z_AXIS
105
     , C_AXIS = Z_AXIS
106
   #endif
106
   #endif
107
 
107
 
408
       FI void set(const T (&arr)[DISTINCT_AXES])       { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5]); }
408
       FI void set(const T (&arr)[DISTINCT_AXES])       { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5]); }
409
     #endif
409
     #endif
410
   #endif
410
   #endif
411
-  #if LINEAR_AXES >= 4
411
+  #if HAS_I_AXIS
412
     FI void set(const T px, const T py, const T pz)                         { x = px; y = py; z = pz; }
412
     FI void set(const T px, const T py, const T pz)                         { x = px; y = py; z = pz; }
413
   #endif
413
   #endif
414
-  #if LINEAR_AXES >= 5
414
+  #if HAS_J_AXIS
415
     FI void set(const T px, const T py, const T pz, const T pi)             { x = px; y = py; z = pz; i = pi; }
415
     FI void set(const T px, const T py, const T pz, const T pi)             { x = px; y = py; z = pz; i = pi; }
416
   #endif
416
   #endif
417
-  #if LINEAR_AXES >= 6
417
+  #if HAS_K_AXIS
418
     FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
418
     FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
419
   #endif
419
   #endif
420
 
420
 
549
     FI void set(const XYZval<T> pxyz, const T pe)  { set(pxyz); e = pe; }
549
     FI void set(const XYZval<T> pxyz, const T pe)  { set(pxyz); e = pe; }
550
     FI void set(LOGICAL_AXIS_ARGS(const T))        { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, u = i, v = j, w = k); }
550
     FI void set(LOGICAL_AXIS_ARGS(const T))        { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, u = i, v = j, w = k); }
551
   #endif
551
   #endif
552
-  #if LINEAR_AXES >= 4
552
+  #if HAS_I_AXIS
553
     FI void set(const T px, const T py, const T pz)                         { x = px; y = py; z = pz; }
553
     FI void set(const T px, const T py, const T pz)                         { x = px; y = py; z = pz; }
554
   #endif
554
   #endif
555
-  #if LINEAR_AXES >= 5
555
+  #if HAS_J_AXIS
556
     FI void set(const T px, const T py, const T pz, const T pi)             { x = px; y = py; z = pz; i = pi; }
556
     FI void set(const T px, const T py, const T pz, const T pi)             { x = px; y = py; z = pz; i = pi; }
557
   #endif
557
   #endif
558
-  #if LINEAR_AXES >= 6
558
+  #if HAS_K_AXIS
559
     FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
559
     FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
560
   #endif
560
   #endif
561
 
561
 

+ 3
- 9
Marlin/src/gcode/calibrate/G28.cpp View File

441
       }
441
       }
442
     #endif
442
     #endif
443
 
443
 
444
-    #if LINEAR_AXES >= 4
445
-      if (doI) homeaxis(I_AXIS);
446
-    #endif
447
-    #if LINEAR_AXES >= 5
448
-      if (doJ) homeaxis(J_AXIS);
449
-    #endif
450
-    #if LINEAR_AXES >= 6
451
-      if (doK) homeaxis(K_AXIS);
452
-    #endif
444
+    TERN_(HAS_I_AXIS, if (doI) homeaxis(I_AXIS));
445
+    TERN_(HAS_J_AXIS, if (doJ) homeaxis(J_AXIS));
446
+    TERN_(HAS_K_AXIS, if (doK) homeaxis(K_AXIS));
453
 
447
 
454
     sync_plan_position();
448
     sync_plan_position();
455
 
449
 

+ 14
- 14
Marlin/src/gcode/calibrate/G425.cpp View File

73
 #if BOTH(CALIBRATION_MEASURE_LEFT, CALIBRATION_MEASURE_RIGHT)
73
 #if BOTH(CALIBRATION_MEASURE_LEFT, CALIBRATION_MEASURE_RIGHT)
74
   #define HAS_X_CENTER 1
74
   #define HAS_X_CENTER 1
75
 #endif
75
 #endif
76
-#if HAS_Y_AXIS && BOTH(CALIBRATION_MEASURE_FRONT, CALIBRATION_MEASURE_BACK)
76
+#if ALL(HAS_Y_AXIS, CALIBRATION_MEASURE_FRONT, CALIBRATION_MEASURE_BACK)
77
   #define HAS_Y_CENTER 1
77
   #define HAS_Y_CENTER 1
78
 #endif
78
 #endif
79
-#if LINEAR_AXES >= 4 && BOTH(CALIBRATION_MEASURE_IMIN, CALIBRATION_MEASURE_IMAX)
79
+#if ALL(HAS_I_AXIS, CALIBRATION_MEASURE_IMIN, CALIBRATION_MEASURE_IMAX)
80
   #define HAS_I_CENTER 1
80
   #define HAS_I_CENTER 1
81
 #endif
81
 #endif
82
-#if LINEAR_AXES >= 5 && BOTH(CALIBRATION_MEASURE_JMIN, CALIBRATION_MEASURE_JMAX)
82
+#if ALL(HAS_J_AXIS, CALIBRATION_MEASURE_JMIN, CALIBRATION_MEASURE_JMAX)
83
   #define HAS_J_CENTER 1
83
   #define HAS_J_CENTER 1
84
 #endif
84
 #endif
85
-#if LINEAR_AXES >= 6 && BOTH(CALIBRATION_MEASURE_KMIN, CALIBRATION_MEASURE_KMAX)
85
+#if ALL(HAS_K_AXIS, CALIBRATION_MEASURE_KMIN, CALIBRATION_MEASURE_KMAX)
86
   #define HAS_K_CENTER 1
86
   #define HAS_K_CENTER 1
87
 #endif
87
 #endif
88
 
88
 
246
       case RIGHT: dir = -1;
246
       case RIGHT: dir = -1;
247
       case LEFT:  axis = X_AXIS; break;
247
       case LEFT:  axis = X_AXIS; break;
248
     #endif
248
     #endif
249
-    #if LINEAR_AXES >= 2 && AXIS_CAN_CALIBRATE(Y)
249
+    #if HAS_Y_AXIS && AXIS_CAN_CALIBRATE(Y)
250
       case BACK:  dir = -1;
250
       case BACK:  dir = -1;
251
       case FRONT: axis = Y_AXIS; break;
251
       case FRONT: axis = Y_AXIS; break;
252
     #endif
252
     #endif
258
         return;
258
         return;
259
       }
259
       }
260
     #endif
260
     #endif
261
-    #if LINEAR_AXES >= 4 && AXIS_CAN_CALIBRATE(I)
261
+    #if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I)
262
       case IMINIMUM: dir = -1;
262
       case IMINIMUM: dir = -1;
263
       case IMAXIMUM: axis = I_AXIS; break;
263
       case IMAXIMUM: axis = I_AXIS; break;
264
     #endif
264
     #endif
265
-    #if LINEAR_AXES >= 5 && AXIS_CAN_CALIBRATE(J)
265
+    #if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J)
266
       case JMINIMUM: dir = -1;
266
       case JMINIMUM: dir = -1;
267
       case JMAXIMUM: axis = J_AXIS; break;
267
       case JMAXIMUM: axis = J_AXIS; break;
268
     #endif
268
     #endif
269
-    #if LINEAR_AXES >= 6 && AXIS_CAN_CALIBRATE(K)
269
+    #if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K)
270
       case KMINIMUM: dir = -1;
270
       case KMINIMUM: dir = -1;
271
       case KMAXIMUM: axis = K_AXIS; break;
271
       case KMAXIMUM: axis = K_AXIS; break;
272
     #endif
272
     #endif
370
         SERIAL_ECHOLNPGM("  Back: ", m.obj_side[BACK]);
370
         SERIAL_ECHOLNPGM("  Back: ", m.obj_side[BACK]);
371
       #endif
371
       #endif
372
     #endif
372
     #endif
373
-    #if LINEAR_AXES >= 4
373
+    #if HAS_I_AXIS
374
       #if ENABLED(CALIBRATION_MEASURE_IMIN)
374
       #if ENABLED(CALIBRATION_MEASURE_IMIN)
375
         SERIAL_ECHOLNPGM("  " STR_I_MIN ": ", m.obj_side[IMINIMUM]);
375
         SERIAL_ECHOLNPGM("  " STR_I_MIN ": ", m.obj_side[IMINIMUM]);
376
       #endif
376
       #endif
378
         SERIAL_ECHOLNPGM("  " STR_I_MAX ": ", m.obj_side[IMAXIMUM]);
378
         SERIAL_ECHOLNPGM("  " STR_I_MAX ": ", m.obj_side[IMAXIMUM]);
379
       #endif
379
       #endif
380
     #endif
380
     #endif
381
-    #if LINEAR_AXES >= 5
381
+    #if HAS_J_AXIS
382
       #if ENABLED(CALIBRATION_MEASURE_JMIN)
382
       #if ENABLED(CALIBRATION_MEASURE_JMIN)
383
         SERIAL_ECHOLNPGM("  " STR_J_MIN ": ", m.obj_side[JMINIMUM]);
383
         SERIAL_ECHOLNPGM("  " STR_J_MIN ": ", m.obj_side[JMINIMUM]);
384
       #endif
384
       #endif
386
         SERIAL_ECHOLNPGM("  " STR_J_MAX ": ", m.obj_side[JMAXIMUM]);
386
         SERIAL_ECHOLNPGM("  " STR_J_MAX ": ", m.obj_side[JMAXIMUM]);
387
       #endif
387
       #endif
388
     #endif
388
     #endif
389
-    #if LINEAR_AXES >= 6
389
+    #if HAS_K_AXIS
390
       #if ENABLED(CALIBRATION_MEASURE_KMIN)
390
       #if ENABLED(CALIBRATION_MEASURE_KMIN)
391
         SERIAL_ECHOLNPGM("  " STR_K_MIN ": ", m.obj_side[KMINIMUM]);
391
         SERIAL_ECHOLNPGM("  " STR_K_MIN ": ", m.obj_side[KMINIMUM]);
392
       #endif
392
       #endif
439
     #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
439
     #if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
440
       SERIAL_ECHOLNPGM("  Top: ", m.backlash[TOP]);
440
       SERIAL_ECHOLNPGM("  Top: ", m.backlash[TOP]);
441
     #endif
441
     #endif
442
-    #if LINEAR_AXES >= 4 && AXIS_CAN_CALIBRATE(I)
442
+    #if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I)
443
       #if ENABLED(CALIBRATION_MEASURE_IMIN)
443
       #if ENABLED(CALIBRATION_MEASURE_IMIN)
444
         SERIAL_ECHOLNPGM("  " STR_I_MIN ": ", m.backlash[IMINIMUM]);
444
         SERIAL_ECHOLNPGM("  " STR_I_MIN ": ", m.backlash[IMINIMUM]);
445
       #endif
445
       #endif
447
         SERIAL_ECHOLNPGM("  " STR_I_MAX ": ", m.backlash[IMAXIMUM]);
447
         SERIAL_ECHOLNPGM("  " STR_I_MAX ": ", m.backlash[IMAXIMUM]);
448
       #endif
448
       #endif
449
     #endif
449
     #endif
450
-    #if LINEAR_AXES >= 5 && AXIS_CAN_CALIBRATE(J)
450
+    #if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J)
451
       #if ENABLED(CALIBRATION_MEASURE_JMIN)
451
       #if ENABLED(CALIBRATION_MEASURE_JMIN)
452
         SERIAL_ECHOLNPGM("  " STR_J_MIN ": ", m.backlash[JMINIMUM]);
452
         SERIAL_ECHOLNPGM("  " STR_J_MIN ": ", m.backlash[JMINIMUM]);
453
       #endif
453
       #endif
455
         SERIAL_ECHOLNPGM("  " STR_J_MAX ": ", m.backlash[JMAXIMUM]);
455
         SERIAL_ECHOLNPGM("  " STR_J_MAX ": ", m.backlash[JMAXIMUM]);
456
       #endif
456
       #endif
457
     #endif
457
     #endif
458
-    #if LINEAR_AXES >= 6 && AXIS_CAN_CALIBRATE(K)
458
+    #if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K)
459
       #if ENABLED(CALIBRATION_MEASURE_KMIN)
459
       #if ENABLED(CALIBRATION_MEASURE_KMIN)
460
         SERIAL_ECHOLNPGM("  " STR_K_MIN ": ", m.backlash[KMINIMUM]);
460
         SERIAL_ECHOLNPGM("  " STR_K_MIN ": ", m.backlash[KMINIMUM]);
461
       #endif
461
       #endif

+ 4
- 4
Marlin/src/gcode/feature/trinamic/M911-M914.cpp View File

38
   #if M91x_USE(X) || M91x_USE(X2)
38
   #if M91x_USE(X) || M91x_USE(X2)
39
     #define M91x_SOME_X 1
39
     #define M91x_SOME_X 1
40
   #endif
40
   #endif
41
-  #if LINEAR_AXES >= 2 && (M91x_USE(Y) || M91x_USE(Y2))
41
+  #if HAS_Y_AXIS && (M91x_USE(Y) || M91x_USE(Y2))
42
     #define M91x_SOME_Y 1
42
     #define M91x_SOME_Y 1
43
   #endif
43
   #endif
44
   #if HAS_Z_AXIS && (M91x_USE(Z) || M91x_USE(Z2) || M91x_USE(Z3) || M91x_USE(Z4))
44
   #if HAS_Z_AXIS && (M91x_USE(Z) || M91x_USE(Z2) || M91x_USE(Z3) || M91x_USE(Z4))
45
     #define M91x_SOME_Z 1
45
     #define M91x_SOME_Z 1
46
   #endif
46
   #endif
47
-  #if LINEAR_AXES >= 4 && M91x_USE(I)
47
+  #if HAS_I_AXIS && M91x_USE(I)
48
     #define M91x_USE_I 1
48
     #define M91x_USE_I 1
49
   #endif
49
   #endif
50
-  #if LINEAR_AXES >= 5 && M91x_USE(J)
50
+  #if HAS_J_AXIS && M91x_USE(J)
51
     #define M91x_USE_J 1
51
     #define M91x_USE_J 1
52
   #endif
52
   #endif
53
-  #if LINEAR_AXES >= 6 && M91x_USE(K)
53
+  #if HAS_K_AXIS && M91x_USE(K)
54
     #define M91x_USE_K 1
54
     #define M91x_USE_K 1
55
   #endif
55
   #endif
56
 
56
 

+ 18
- 4
Marlin/src/inc/Conditionals_LCD.h View File

693
   #define HAS_Y_AXIS 1
693
   #define HAS_Y_AXIS 1
694
   #if LINEAR_AXES >= XYZ
694
   #if LINEAR_AXES >= XYZ
695
     #define HAS_Z_AXIS 1
695
     #define HAS_Z_AXIS 1
696
+    #if LINEAR_AXES >= 4
697
+      #define HAS_I_AXIS 1
698
+      #if LINEAR_AXES >= 5
699
+        #define HAS_J_AXIS 1
700
+        #if LINEAR_AXES >= 6
701
+          #define HAS_K_AXIS 1
702
+        #endif
703
+      #endif
704
+    #endif
696
   #endif
705
   #endif
697
 #endif
706
 #endif
698
 
707
 
926
 #elif X_HOME_DIR < 0
935
 #elif X_HOME_DIR < 0
927
   #define X_HOME_TO_MIN 1
936
   #define X_HOME_TO_MIN 1
928
 #endif
937
 #endif
938
+#if X2_HOME_DIR > 0
939
+  #define X2_HOME_TO_MAX 1
940
+#elif X2_HOME_DIR < 0
941
+  #define X2_HOME_TO_MIN 1
942
+#endif
929
 #if Y_HOME_DIR > 0
943
 #if Y_HOME_DIR > 0
930
   #define Y_HOME_TO_MAX 1
944
   #define Y_HOME_TO_MAX 1
931
 #elif Y_HOME_DIR < 0
945
 #elif Y_HOME_DIR < 0
1215
 #if HAS_Z_AXIS && !defined(INVERT_Z_DIR)
1229
 #if HAS_Z_AXIS && !defined(INVERT_Z_DIR)
1216
   #define INVERT_Z_DIR false
1230
   #define INVERT_Z_DIR false
1217
 #endif
1231
 #endif
1218
-#if LINEAR_AXES >= 4 && !defined(INVERT_I_DIR)
1232
+#if HAS_I_AXIS && !defined(INVERT_I_DIR)
1219
   #define INVERT_I_DIR false
1233
   #define INVERT_I_DIR false
1220
 #endif
1234
 #endif
1221
-#if LINEAR_AXES >= 5 && !defined(INVERT_J_DIR)
1235
+#if HAS_J_AXIS && !defined(INVERT_J_DIR)
1222
   #define INVERT_J_DIR false
1236
   #define INVERT_J_DIR false
1223
 #endif
1237
 #endif
1224
-#if LINEAR_AXES >= 6 && !defined(INVERT_K_DIR)
1238
+#if HAS_K_AXIS && !defined(INVERT_K_DIR)
1225
   #define INVERT_K_DIR false
1239
   #define INVERT_K_DIR false
1226
 #endif
1240
 #endif
1227
 #if HAS_EXTRUDERS && !defined(INVERT_E_DIR)
1241
 #if HAS_EXTRUDERS && !defined(INVERT_E_DIR)
1411
   #endif
1425
   #endif
1412
 #endif
1426
 #endif
1413
 
1427
 
1414
-#if ANY(USE_XMIN_PLUG, USE_YMIN_PLUG, USE_ZMIN_PLUG, USE_XMAX_PLUG, USE_YMAX_PLUG, USE_ZMAX_PLUG)
1428
+#if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) || (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR)
1415
   #define HAS_ENDSTOPS 1
1429
   #define HAS_ENDSTOPS 1
1416
   #define COORDINATE_OKAY(N,L,H) WITHIN(N,L,H)
1430
   #define COORDINATE_OKAY(N,L,H) WITHIN(N,L,H)
1417
 #else
1431
 #else

+ 0
- 6
Marlin/src/inc/Conditionals_adv.h View File

823
   #define POLL_JOG
823
   #define POLL_JOG
824
 #endif
824
 #endif
825
 
825
 
826
-#if X2_HOME_DIR > 0
827
-  #define X2_HOME_TO_MAX 1
828
-#elif X2_HOME_DIR < 0
829
-  #define X2_HOME_TO_MIN 1
830
-#endif
831
-
832
 #ifndef HOMING_BUMP_MM
826
 #ifndef HOMING_BUMP_MM
833
   #define HOMING_BUMP_MM { 0, 0, 0 }
827
   #define HOMING_BUMP_MM { 0, 0, 0 }
834
 #endif
828
 #endif

+ 22
- 22
Marlin/src/inc/Conditionals_post.h View File

97
 #else
97
 #else
98
   #undef CONTROLLER_FAN_USE_Z_ONLY
98
   #undef CONTROLLER_FAN_USE_Z_ONLY
99
 #endif
99
 #endif
100
-#if LINEAR_AXES >= 4
100
+#if HAS_I_AXIS
101
   #define I_MAX_LENGTH (I_MAX_POS - (I_MIN_POS))
101
   #define I_MAX_LENGTH (I_MAX_POS - (I_MIN_POS))
102
 #endif
102
 #endif
103
-#if LINEAR_AXES >= 5
103
+#if HAS_J_AXIS
104
   #define J_MAX_LENGTH (J_MAX_POS - (J_MIN_POS))
104
   #define J_MAX_LENGTH (J_MAX_POS - (J_MIN_POS))
105
 #endif
105
 #endif
106
-#if LINEAR_AXES >= 6
106
+#if HAS_K_AXIS
107
   #define K_MAX_LENGTH (K_MAX_POS - (K_MIN_POS))
107
   #define K_MAX_LENGTH (K_MAX_POS - (K_MIN_POS))
108
 #endif
108
 #endif
109
 
109
 
114
 #if HAS_Y_AXIS && !defined(Y_BED_SIZE)
114
 #if HAS_Y_AXIS && !defined(Y_BED_SIZE)
115
   #define Y_BED_SIZE Y_MAX_LENGTH
115
   #define Y_BED_SIZE Y_MAX_LENGTH
116
 #endif
116
 #endif
117
-#if LINEAR_AXES >= 4 && !defined(I_BED_SIZE)
117
+#if HAS_I_AXIS && !defined(I_BED_SIZE)
118
   #define I_BED_SIZE I_MAX_LENGTH
118
   #define I_BED_SIZE I_MAX_LENGTH
119
 #endif
119
 #endif
120
-#if LINEAR_AXES >= 5 && !defined(J_BED_SIZE)
120
+#if HAS_J_AXIS && !defined(J_BED_SIZE)
121
   #define J_BED_SIZE J_MAX_LENGTH
121
   #define J_BED_SIZE J_MAX_LENGTH
122
 #endif
122
 #endif
123
-#if LINEAR_AXES >= 6 && !defined(K_BED_SIZE)
123
+#if HAS_K_AXIS && !defined(K_BED_SIZE)
124
   #define K_BED_SIZE K_MAX_LENGTH
124
   #define K_BED_SIZE K_MAX_LENGTH
125
 #endif
125
 #endif
126
 
126
 
134
 #if HAS_Y_AXIS
134
 #if HAS_Y_AXIS
135
   #define _Y_HALF_BED ((Y_BED_SIZE) / 2)
135
   #define _Y_HALF_BED ((Y_BED_SIZE) / 2)
136
 #endif
136
 #endif
137
-#if LINEAR_AXES >= 4
137
+#if HAS_I_AXIS
138
   #define _I_HALF_IMAX ((I_BED_SIZE) / 2)
138
   #define _I_HALF_IMAX ((I_BED_SIZE) / 2)
139
 #endif
139
 #endif
140
-#if LINEAR_AXES >= 5
140
+#if HAS_J_AXIS
141
   #define _J_HALF_JMAX ((J_BED_SIZE) / 2)
141
   #define _J_HALF_JMAX ((J_BED_SIZE) / 2)
142
 #endif
142
 #endif
143
-#if LINEAR_AXES >= 6
143
+#if HAS_K_AXIS
144
   #define _K_HALF_KMAX ((K_BED_SIZE) / 2)
144
   #define _K_HALF_KMAX ((K_BED_SIZE) / 2)
145
 #endif
145
 #endif
146
 
146
 
149
   #define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED)
149
   #define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED)
150
   #define XY_CENTER { X_CENTER, Y_CENTER }
150
   #define XY_CENTER { X_CENTER, Y_CENTER }
151
 #endif
151
 #endif
152
-#if LINEAR_AXES >= 4
152
+#if HAS_I_AXIS
153
   #define I_CENTER TERN(BED_CENTER_AT_0_0, 0, _I_HALF_BED)
153
   #define I_CENTER TERN(BED_CENTER_AT_0_0, 0, _I_HALF_BED)
154
 #endif
154
 #endif
155
-#if LINEAR_AXES >= 5
155
+#if HAS_J_AXIS
156
   #define J_CENTER TERN(BED_CENTER_AT_0_0, 0, _J_HALF_BED)
156
   #define J_CENTER TERN(BED_CENTER_AT_0_0, 0, _J_HALF_BED)
157
 #endif
157
 #endif
158
-#if LINEAR_AXES >= 6
158
+#if HAS_K_AXIS
159
   #define K_CENTER TERN(BED_CENTER_AT_0_0, 0, _K_HALF_BED)
159
   #define K_CENTER TERN(BED_CENTER_AT_0_0, 0, _K_HALF_BED)
160
 #endif
160
 #endif
161
 
161
 
166
   #define Y_MIN_BED (Y_CENTER - _Y_HALF_BED)
166
   #define Y_MIN_BED (Y_CENTER - _Y_HALF_BED)
167
   #define Y_MAX_BED (Y_MIN_BED + Y_BED_SIZE)
167
   #define Y_MAX_BED (Y_MIN_BED + Y_BED_SIZE)
168
 #endif
168
 #endif
169
-#if LINEAR_AXES >= 4
169
+#if HAS_I_AXIS
170
   #define I_MINIM (I_CENTER - _I_HALF_BED_SIZE)
170
   #define I_MINIM (I_CENTER - _I_HALF_BED_SIZE)
171
   #define I_MAXIM (I_MINIM + I_BED_SIZE)
171
   #define I_MAXIM (I_MINIM + I_BED_SIZE)
172
 #endif
172
 #endif
173
-#if LINEAR_AXES >= 5
173
+#if HAS_J_AXIS
174
   #define J_MINIM (J_CENTER - _J_HALF_BED_SIZE)
174
   #define J_MINIM (J_CENTER - _J_HALF_BED_SIZE)
175
   #define J_MAXIM (J_MINIM + J_BED_SIZE)
175
   #define J_MAXIM (J_MINIM + J_BED_SIZE)
176
 #endif
176
 #endif
177
-#if LINEAR_AXES >= 6
177
+#if HAS_K_AXIS
178
   #define K_MINIM (K_CENTER - _K_HALF_BED_SIZE)
178
   #define K_MINIM (K_CENTER - _K_HALF_BED_SIZE)
179
   #define K_MAXIM (K_MINIM + K_BED_SIZE)
179
   #define K_MAXIM (K_MINIM + K_BED_SIZE)
180
 #endif
180
 #endif
253
   #define Z_HOME_POS TERN(Z_HOME_TO_MIN, Z_MIN_POS, Z_MAX_POS)
253
   #define Z_HOME_POS TERN(Z_HOME_TO_MIN, Z_MIN_POS, Z_MAX_POS)
254
 #endif
254
 #endif
255
 
255
 
256
-#if LINEAR_AXES >= 4
256
+#if HAS_I_AXIS
257
   #ifdef MANUAL_I_HOME_POS
257
   #ifdef MANUAL_I_HOME_POS
258
     #define I_HOME_POS MANUAL_I_HOME_POS
258
     #define I_HOME_POS MANUAL_I_HOME_POS
259
   #else
259
   #else
260
     #define I_HOME_POS TERN(I_HOME_TO_MIN, I_MIN_POS, I_MAX_POS)
260
     #define I_HOME_POS TERN(I_HOME_TO_MIN, I_MIN_POS, I_MAX_POS)
261
   #endif
261
   #endif
262
 #endif
262
 #endif
263
-#if LINEAR_AXES >= 5
263
+#if HAS_J_AXIS
264
   #ifdef MANUAL_J_HOME_POS
264
   #ifdef MANUAL_J_HOME_POS
265
     #define J_HOME_POS MANUAL_J_HOME_POS
265
     #define J_HOME_POS MANUAL_J_HOME_POS
266
   #else
266
   #else
267
     #define J_HOME_POS TERN(J_HOME_TO_MIN, J_MIN_POS, J_MAX_POS)
267
     #define J_HOME_POS TERN(J_HOME_TO_MIN, J_MIN_POS, J_MAX_POS)
268
   #endif
268
   #endif
269
 #endif
269
 #endif
270
-#if LINEAR_AXES >= 6
270
+#if HAS_K_AXIS
271
   #ifdef MANUAL_K_HOME_POS
271
   #ifdef MANUAL_K_HOME_POS
272
     #define K_HOME_POS MANUAL_K_HOME_POS
272
     #define K_HOME_POS MANUAL_K_HOME_POS
273
   #else
273
   #else
745
     #define LIB_INTERNAL_MAX31865 1
745
     #define LIB_INTERNAL_MAX31865 1
746
   #endif
746
   #endif
747
 
747
 
748
-#endif //HAS_MAX_TC
748
+#endif // HAS_MAX_TC
749
 
749
 
750
 /**
750
 /**
751
  * X_DUAL_ENDSTOPS endstop reassignment
751
  * X_DUAL_ENDSTOPS endstop reassignment
1620
   #endif
1620
   #endif
1621
 #endif
1621
 #endif
1622
 
1622
 
1623
-#if LINEAR_AXES >= 4
1623
+#if HAS_I_AXIS
1624
   #if PIN_EXISTS(I_ENABLE) || AXIS_IS_L64XX(I) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(I))
1624
   #if PIN_EXISTS(I_ENABLE) || AXIS_IS_L64XX(I) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(I))
1625
     #define HAS_I_ENABLE 1
1625
     #define HAS_I_ENABLE 1
1626
   #endif
1626
   #endif
1640
   #undef DISABLE_INACTIVE_I
1640
   #undef DISABLE_INACTIVE_I
1641
 #endif
1641
 #endif
1642
 
1642
 
1643
-#if LINEAR_AXES >= 5
1643
+#if HAS_J_AXIS
1644
   #if PIN_EXISTS(J_ENABLE) || AXIS_IS_L64XX(J) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(J))
1644
   #if PIN_EXISTS(J_ENABLE) || AXIS_IS_L64XX(J) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(J))
1645
     #define HAS_J_ENABLE 1
1645
     #define HAS_J_ENABLE 1
1646
   #endif
1646
   #endif
1660
   #undef DISABLE_INACTIVE_J
1660
   #undef DISABLE_INACTIVE_J
1661
 #endif
1661
 #endif
1662
 
1662
 
1663
-#if LINEAR_AXES >= 6
1663
+#if HAS_K_AXIS
1664
   #if PIN_EXISTS(K_ENABLE) || AXIS_IS_L64XX(K) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(K))
1664
   #if PIN_EXISTS(K_ENABLE) || AXIS_IS_L64XX(K) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(K))
1665
     #define HAS_K_ENABLE 1
1665
     #define HAS_K_ENABLE 1
1666
   #endif
1666
   #endif

+ 37
- 37
Marlin/src/inc/SanityCheck.h View File

1416
 /**
1416
 /**
1417
  * Allow only extra axis codes that do not conflict with G-code parameter names
1417
  * Allow only extra axis codes that do not conflict with G-code parameter names
1418
  */
1418
  */
1419
-#if LINEAR_AXES >= 4
1419
+#if HAS_I_AXIS
1420
   #if AXIS4_NAME != 'A' && AXIS4_NAME != 'B' && AXIS4_NAME != 'C' && AXIS4_NAME != 'U' && AXIS4_NAME != 'V' && AXIS4_NAME != 'W'
1420
   #if AXIS4_NAME != 'A' && AXIS4_NAME != 'B' && AXIS4_NAME != 'C' && AXIS4_NAME != 'U' && AXIS4_NAME != 'V' && AXIS4_NAME != 'W'
1421
     #error "AXIS4_NAME can only be one of 'A', 'B', 'C', 'U', 'V', or 'W'."
1421
     #error "AXIS4_NAME can only be one of 'A', 'B', 'C', 'U', 'V', or 'W'."
1422
   #elif !defined(I_MIN_POS) || !defined(I_MAX_POS)
1422
   #elif !defined(I_MIN_POS) || !defined(I_MAX_POS)
1427
     #error "I_ENABLE_ON is required for your I driver with LINEAR_AXES >= 4."
1427
     #error "I_ENABLE_ON is required for your I driver with LINEAR_AXES >= 4."
1428
   #endif
1428
   #endif
1429
 #endif
1429
 #endif
1430
-#if LINEAR_AXES >= 5
1430
+#if HAS_J_AXIS
1431
   #if AXIS5_NAME == AXIS4_NAME
1431
   #if AXIS5_NAME == AXIS4_NAME
1432
     #error "AXIS5_NAME must be unique."
1432
     #error "AXIS5_NAME must be unique."
1433
   #elif AXIS5_NAME != 'A' && AXIS5_NAME != 'B' && AXIS5_NAME != 'C' && AXIS5_NAME != 'U' && AXIS5_NAME != 'V' && AXIS5_NAME != 'W'
1433
   #elif AXIS5_NAME != 'A' && AXIS5_NAME != 'B' && AXIS5_NAME != 'C' && AXIS5_NAME != 'U' && AXIS5_NAME != 'V' && AXIS5_NAME != 'W'
1440
     #error "J_ENABLE_ON is required for your J driver with LINEAR_AXES >= 5."
1440
     #error "J_ENABLE_ON is required for your J driver with LINEAR_AXES >= 5."
1441
   #endif
1441
   #endif
1442
 #endif
1442
 #endif
1443
-#if LINEAR_AXES >= 6
1443
+#if HAS_K_AXIS
1444
   #if AXIS6_NAME == AXIS5_NAME || AXIS6_NAME == AXIS4_NAME
1444
   #if AXIS6_NAME == AXIS5_NAME || AXIS6_NAME == AXIS4_NAME
1445
     #error "AXIS6_NAME must be unique."
1445
     #error "AXIS6_NAME must be unique."
1446
   #elif AXIS6_NAME != 'A' && AXIS6_NAME != 'B' && AXIS6_NAME != 'C' && AXIS6_NAME != 'U' && AXIS6_NAME != 'V' && AXIS6_NAME != 'W'
1446
   #elif AXIS6_NAME != 'A' && AXIS6_NAME != 'B' && AXIS6_NAME != 'C' && AXIS6_NAME != 'U' && AXIS6_NAME != 'V' && AXIS6_NAME != 'W'
2412
   #if _AXIS_PLUG_UNUSED_TEST(Z)
2412
   #if _AXIS_PLUG_UNUSED_TEST(Z)
2413
     #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
2413
     #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
2414
   #endif
2414
   #endif
2415
-  #if LINEAR_AXES >= 4 && _AXIS_PLUG_UNUSED_TEST(I)
2415
+  #if HAS_I_AXIS && _AXIS_PLUG_UNUSED_TEST(I)
2416
     #error "You must enable USE_IMIN_PLUG or USE_IMAX_PLUG."
2416
     #error "You must enable USE_IMIN_PLUG or USE_IMAX_PLUG."
2417
   #endif
2417
   #endif
2418
-  #if LINEAR_AXES >= 5 && _AXIS_PLUG_UNUSED_TEST(J)
2418
+  #if HAS_J_AXIS && _AXIS_PLUG_UNUSED_TEST(J)
2419
     #error "You must enable USE_JMIN_PLUG or USE_JMAX_PLUG."
2419
     #error "You must enable USE_JMIN_PLUG or USE_JMAX_PLUG."
2420
   #endif
2420
   #endif
2421
-  #if LINEAR_AXES >= 6 && _AXIS_PLUG_UNUSED_TEST(K)
2421
+  #if HAS_K_AXIS && _AXIS_PLUG_UNUSED_TEST(K)
2422
     #error "You must enable USE_KMIN_PLUG or USE_KMAX_PLUG."
2422
     #error "You must enable USE_KMIN_PLUG or USE_KMAX_PLUG."
2423
   #endif
2423
   #endif
2424
 
2424
 
2432
       #error "Enable USE_YMIN_PLUG when homing Y to MIN."
2432
       #error "Enable USE_YMIN_PLUG when homing Y to MIN."
2433
     #elif Y_HOME_TO_MAX && DISABLED(USE_YMAX_PLUG)
2433
     #elif Y_HOME_TO_MAX && DISABLED(USE_YMAX_PLUG)
2434
       #error "Enable USE_YMAX_PLUG when homing Y to MAX."
2434
       #error "Enable USE_YMAX_PLUG when homing Y to MAX."
2435
-    #elif LINEAR_AXES >= 4 && I_HOME_TO_MIN && DISABLED(USE_IMIN_PLUG)
2435
+    #elif HAS_I_AXIS && I_HOME_TO_MIN && DISABLED(USE_IMIN_PLUG)
2436
       #error "Enable USE_IMIN_PLUG when homing I to MIN."
2436
       #error "Enable USE_IMIN_PLUG when homing I to MIN."
2437
-    #elif LINEAR_AXES >= 4 && I_HOME_TO_MAX && DISABLED(USE_IMAX_PLUG)
2437
+    #elif HAS_I_AXIS && I_HOME_TO_MAX && DISABLED(USE_IMAX_PLUG)
2438
       #error "Enable USE_IMAX_PLUG when homing I to MAX."
2438
       #error "Enable USE_IMAX_PLUG when homing I to MAX."
2439
-    #elif LINEAR_AXES >= 5 && J_HOME_TO_MIN && DISABLED(USE_JMIN_PLUG)
2439
+    #elif HAS_J_AXIS && J_HOME_TO_MIN && DISABLED(USE_JMIN_PLUG)
2440
       #error "Enable USE_JMIN_PLUG when homing J to MIN."
2440
       #error "Enable USE_JMIN_PLUG when homing J to MIN."
2441
-    #elif LINEAR_AXES >= 5 && J_HOME_TO_MAX && DISABLED(USE_JMAX_PLUG)
2441
+    #elif HAS_J_AXIS && J_HOME_TO_MAX && DISABLED(USE_JMAX_PLUG)
2442
       #error "Enable USE_JMAX_PLUG when homing J to MAX."
2442
       #error "Enable USE_JMAX_PLUG when homing J to MAX."
2443
-    #elif LINEAR_AXES >= 6 && K_HOME_TO_MIN && DISABLED(USE_KMIN_PLUG)
2443
+    #elif HAS_K_AXIS && K_HOME_TO_MIN && DISABLED(USE_KMIN_PLUG)
2444
       #error "Enable USE_KMIN_PLUG when homing K to MIN."
2444
       #error "Enable USE_KMIN_PLUG when homing K to MIN."
2445
-    #elif LINEAR_AXES >= 6 && K_HOME_TO_MAX && DISABLED(USE_KMAX_PLUG)
2445
+    #elif HAS_K_AXIS && K_HOME_TO_MAX && DISABLED(USE_KMAX_PLUG)
2446
       #error "Enable USE_KMAX_PLUG when homing K to MAX."
2446
       #error "Enable USE_KMAX_PLUG when homing K to MAX."
2447
     #endif
2447
     #endif
2448
   #endif
2448
   #endif
2967
   #error "TMC2208 or TMC2209 on E6 requires E6_HARDWARE_SERIAL or E6_SERIAL_(RX|TX)_PIN."
2967
   #error "TMC2208 or TMC2209 on E6 requires E6_HARDWARE_SERIAL or E6_SERIAL_(RX|TX)_PIN."
2968
 #elif INVALID_TMC_UART(E7)
2968
 #elif INVALID_TMC_UART(E7)
2969
   #error "TMC2208 or TMC2209 on E7 requires E7_HARDWARE_SERIAL or E7_SERIAL_(RX|TX)_PIN."
2969
   #error "TMC2208 or TMC2209 on E7 requires E7_HARDWARE_SERIAL or E7_SERIAL_(RX|TX)_PIN."
2970
-#elif LINEAR_AXES >= 4 && INVALID_TMC_UART(I)
2970
+#elif HAS_I_AXIS && INVALID_TMC_UART(I)
2971
   #error "TMC2208 or TMC2209 on I requires I_HARDWARE_SERIAL or I_SERIAL_(RX|TX)_PIN."
2971
   #error "TMC2208 or TMC2209 on I requires I_HARDWARE_SERIAL or I_SERIAL_(RX|TX)_PIN."
2972
-#elif LINEAR_AXES >= 5 && INVALID_TMC_UART(J)
2972
+#elif HAS_J_AXIS && INVALID_TMC_UART(J)
2973
   #error "TMC2208 or TMC2209 on J requires J_HARDWARE_SERIAL or J_SERIAL_(RX|TX)_PIN."
2973
   #error "TMC2208 or TMC2209 on J requires J_HARDWARE_SERIAL or J_SERIAL_(RX|TX)_PIN."
2974
-#elif LINEAR_AXES >= 6 && INVALID_TMC_UART(K)
2974
+#elif HAS_K_AXIS && INVALID_TMC_UART(K)
2975
   #error "TMC2208 or TMC2209 on K requires K_HARDWARE_SERIAL or K_SERIAL_(RX|TX)_PIN."
2975
   #error "TMC2208 or TMC2209 on K requires K_HARDWARE_SERIAL or K_SERIAL_(RX|TX)_PIN."
2976
 #endif
2976
 #endif
2977
 #undef INVALID_TMC_UART
2977
 #undef INVALID_TMC_UART
3057
   INVALID_TMC_MS(E6)
3057
   INVALID_TMC_MS(E6)
3058
 #elif !TMC_MICROSTEP_IS_VALID(E7)
3058
 #elif !TMC_MICROSTEP_IS_VALID(E7)
3059
   INVALID_TMC_MS(E7)
3059
   INVALID_TMC_MS(E7)
3060
-#elif LINEAR_AXES >= 4 && !TMC_MICROSTEP_IS_VALID(I)
3060
+#elif HAS_I_AXIS && !TMC_MICROSTEP_IS_VALID(I)
3061
   INVALID_TMC_MS(I)
3061
   INVALID_TMC_MS(I)
3062
-#elif LINEAR_AXES >= 5 && !TMC_MICROSTEP_IS_VALID(J)
3062
+#elif HAS_J_AXIS && !TMC_MICROSTEP_IS_VALID(J)
3063
   INVALID_TMC_MS(J)
3063
   INVALID_TMC_MS(J)
3064
-#elif LINEAR_AXES >= 6 && !TMC_MICROSTEP_IS_VALID(K)
3064
+#elif HAS_K_AXIS && !TMC_MICROSTEP_IS_VALID(K)
3065
   INVALID_TMC_MS(K)
3065
   INVALID_TMC_MS(K)
3066
 #endif
3066
 #endif
3067
 #undef INVALID_TMC_MS
3067
 #undef INVALID_TMC_MS
3083
   #define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
3083
   #define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
3084
   #define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
3084
   #define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
3085
   #define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
3085
   #define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
3086
-  #if LINEAR_AXES >= 4
3086
+  #if HAS_I_AXIS
3087
     #define I_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(I,TMC2209)
3087
     #define I_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(I,TMC2209)
3088
   #endif
3088
   #endif
3089
-  #if LINEAR_AXES >= 5
3089
+  #if HAS_J_AXIS
3090
     #define J_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(J,TMC2209)
3090
     #define J_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(J,TMC2209)
3091
   #endif
3091
   #endif
3092
-  #if LINEAR_AXES >= 6
3092
+  #if HAS_K_AXIS
3093
     #define K_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(K,TMC2209)
3093
     #define K_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(K,TMC2209)
3094
   #endif
3094
   #endif
3095
 
3095
 
3106
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) when homing to Z_MIN."
3106
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMIN (or ENDSTOPPULLUPS) when homing to Z_MIN."
3107
     #elif Z_SENSORLESS && Z_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_ZMAX)
3107
     #elif Z_SENSORLESS && Z_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_ZMAX)
3108
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) when homing to Z_MAX."
3108
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_ZMAX (or ENDSTOPPULLUPS) when homing to Z_MAX."
3109
-    #elif LINEAR_AXES >= 4 && I_SENSORLESS && I_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_IMIN)
3109
+    #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_IMIN)
3110
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) when homing to I_MIN."
3110
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMIN (or ENDSTOPPULLUPS) when homing to I_MIN."
3111
-    #elif LINEAR_AXES >= 4 && I_SENSORLESS && I_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_IMAX)
3111
+    #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_IMAX)
3112
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) when homing to I_MAX."
3112
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_IMAX (or ENDSTOPPULLUPS) when homing to I_MAX."
3113
-    #elif LINEAR_AXES >= 5 && J_SENSORLESS && J_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_JMIN)
3113
+    #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_JMIN)
3114
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) when homing to J_MIN."
3114
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMIN (or ENDSTOPPULLUPS) when homing to J_MIN."
3115
-    #elif LINEAR_AXES >= 5 && J_SENSORLESS && J_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_JMAX)
3115
+    #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_JMAX)
3116
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) when homing to J_MAX."
3116
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_JMAX (or ENDSTOPPULLUPS) when homing to J_MAX."
3117
-    #elif LINEAR_AXES >= 6 && K_SENSORLESS && K_HOME_TO_MIN && DISABLED(ENDSTOPPULLUP_KMIN)
3117
+    #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && DISABLED(ENDSTOPPULLUP_KMIN)
3118
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) when homing to K_MIN."
3118
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMIN (or ENDSTOPPULLUPS) when homing to K_MIN."
3119
-    #elif LINEAR_AXES >= 6 && K_SENSORLESS && K_HOME_TO_MAX && DISABLED(ENDSTOPPULLUP_KMAX)
3119
+    #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && DISABLED(ENDSTOPPULLUP_KMAX)
3120
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) when homing to K_MAX."
3120
       #error "SENSORLESS_HOMING requires ENDSTOPPULLUP_KMAX (or ENDSTOPPULLUPS) when homing to K_MAX."
3121
     #endif
3121
     #endif
3122
   #endif
3122
   #endif
3162
       #else
3162
       #else
3163
         #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MAX."
3163
         #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to Z_MAX."
3164
       #endif
3164
       #endif
3165
-    #elif LINEAR_AXES >= 4 && I_SENSORLESS && I_HOME_TO_MIN && I_MIN_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
3165
+    #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MIN) && I_MIN_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
3166
       #if I_ENDSTOP_INVERTING
3166
       #if I_ENDSTOP_INVERTING
3167
         #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = true when homing to I_MIN."
3167
         #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = true when homing to I_MIN."
3168
       #else
3168
       #else
3169
         #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to I_MIN."
3169
         #error "SENSORLESS_HOMING requires I_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to I_MIN."
3170
       #endif
3170
       #endif
3171
-    #elif LINEAR_AXES >= 4 && I_SENSORLESS && I_HOME_TO_MAX && I_MAX_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
3171
+    #elif ALL(HAS_I_AXIS, I_SENSORLESS, I_HOME_TO_MAX) && I_MAX_ENDSTOP_INVERTING != I_ENDSTOP_INVERTING
3172
       #if I_ENDSTOP_INVERTING
3172
       #if I_ENDSTOP_INVERTING
3173
         #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = true when homing to I_MAX."
3173
         #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = true when homing to I_MAX."
3174
       #else
3174
       #else
3175
         #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to I_MAX."
3175
         #error "SENSORLESS_HOMING requires I_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to I_MAX."
3176
       #endif
3176
       #endif
3177
-    #elif LINEAR_AXES >= 5 && J_SENSORLESS && J_HOME_TO_MIN && J_MIN_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
3177
+    #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MIN) && J_MIN_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
3178
       #if J_ENDSTOP_INVERTING
3178
       #if J_ENDSTOP_INVERTING
3179
         #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = true when homing to J_MIN."
3179
         #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = true when homing to J_MIN."
3180
       #else
3180
       #else
3181
         #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to J_MIN."
3181
         #error "SENSORLESS_HOMING requires J_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to J_MIN."
3182
       #endif
3182
       #endif
3183
-    #elif LINEAR_AXES >= 5 && J_SENSORLESS && J_HOME_TO_MAX && J_MAX_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
3183
+    #elif ALL(HAS_J_AXIS, J_SENSORLESS, J_HOME_TO_MAX) && J_MAX_ENDSTOP_INVERTING != J_ENDSTOP_INVERTING
3184
       #if J_ENDSTOP_INVERTING
3184
       #if J_ENDSTOP_INVERTING
3185
         #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = true when homing to J_MAX."
3185
         #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = true when homing to J_MAX."
3186
       #else
3186
       #else
3187
         #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to J_MAX."
3187
         #error "SENSORLESS_HOMING requires J_MAX_ENDSTOP_INVERTING = false when homing TMC2209 to J_MAX."
3188
       #endif
3188
       #endif
3189
-    #elif LINEAR_AXES >= 6 && K_SENSORLESS && K_HOME_TO_MIN && K_MIN_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
3189
+    #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MIN) && K_MIN_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
3190
       #if K_ENDSTOP_INVERTING
3190
       #if K_ENDSTOP_INVERTING
3191
         #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = true when homing to K_MIN."
3191
         #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = true when homing to K_MIN."
3192
       #else
3192
       #else
3193
         #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to K_MIN."
3193
         #error "SENSORLESS_HOMING requires K_MIN_ENDSTOP_INVERTING = false when homing TMC2209 to K_MIN."
3194
       #endif
3194
       #endif
3195
-    #elif LINEAR_AXES >= 6 && K_SENSORLESS && K_HOME_TO_MAX && K_MAX_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
3195
+    #elif ALL(HAS_K_AXIS, K_SENSORLESS, K_HOME_TO_MAX) && K_MAX_ENDSTOP_INVERTING != K_ENDSTOP_INVERTING
3196
       #if K_ENDSTOP_INVERTING
3196
       #if K_ENDSTOP_INVERTING
3197
         #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = true when homing to K_MAX."
3197
         #error "SENSORLESS_HOMING requires K_MAX_ENDSTOP_INVERTING = true when homing to K_MAX."
3198
       #else
3198
       #else
3316
 /**
3316
 /**
3317
  * L64XX requirement
3317
  * L64XX requirement
3318
  */
3318
  */
3319
-#if HAS_L64XX && LINEAR_AXES >= 4
3319
+#if HAS_L64XX && HAS_I_AXIS
3320
   #error "L64XX requires LINEAR_AXES 3. Homing with L64XX is not yet implemented for LINEAR_AXES > 3."
3320
   #error "L64XX requires LINEAR_AXES 3. Homing with L64XX is not yet implemented for LINEAR_AXES > 3."
3321
 #endif
3321
 #endif
3322
 
3322
 
3791
 #if _BAD_DRIVER(Z)
3791
 #if _BAD_DRIVER(Z)
3792
   #error "Z_DRIVER_TYPE is not recognized."
3792
   #error "Z_DRIVER_TYPE is not recognized."
3793
 #endif
3793
 #endif
3794
-#if LINEAR_AXES >= 4
3794
+#if HAS_I_AXIS
3795
   #if _BAD_DRIVER(I)
3795
   #if _BAD_DRIVER(I)
3796
     #error "I_DRIVER_TYPE is not recognized."
3796
     #error "I_DRIVER_TYPE is not recognized."
3797
   #endif
3797
   #endif
3798
 #endif
3798
 #endif
3799
-#if LINEAR_AXES >= 5
3799
+#if HAS_J_AXIS
3800
   #if _BAD_DRIVER(J)
3800
   #if _BAD_DRIVER(J)
3801
     #error "J_DRIVER_TYPE is not recognized."
3801
     #error "J_DRIVER_TYPE is not recognized."
3802
   #endif
3802
   #endif
3803
 #endif
3803
 #endif
3804
-#if LINEAR_AXES >= 6
3804
+#if HAS_K_AXIS
3805
   #if _BAD_DRIVER(K)
3805
   #if _BAD_DRIVER(K)
3806
     #error "K_DRIVER_TYPE is not recognized."
3806
     #error "K_DRIVER_TYPE is not recognized."
3807
   #endif
3807
   #endif

+ 3
- 3
Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp View File

45
   #if PIN_EXISTS(MT_DET_2)
45
   #if PIN_EXISTS(MT_DET_2)
46
     bool mt_det2_sta;
46
     bool mt_det2_sta;
47
   #endif
47
   #endif
48
-  #if HAS_X_MIN || HAS_X_MAX
48
+  #if X_HOME_DIR
49
     bool endstopx1_sta;
49
     bool endstopx1_sta;
50
   #else
50
   #else
51
     constexpr static bool endstopx1_sta = true;
51
     constexpr static bool endstopx1_sta = true;
55
   #else
55
   #else
56
     constexpr static bool endstopx2_sta = true;
56
     constexpr static bool endstopx2_sta = true;
57
   #endif
57
   #endif
58
-  #if HAS_Y_MIN || HAS_Y_MAX
58
+  #if HAS_Y_AXIS && Y_HOME_DIR
59
     bool endstopy1_sta;
59
     bool endstopy1_sta;
60
   #else
60
   #else
61
     constexpr static bool endstopy1_sta = true;
61
     constexpr static bool endstopy1_sta = true;
65
   #else
65
   #else
66
     constexpr static bool endstopy2_sta = true;
66
     constexpr static bool endstopy2_sta = true;
67
   #endif
67
   #endif
68
-  #if HAS_Z_MIN || HAS_Z_MAX
68
+  #if HAS_Z_AXIS && Z_HOME_DIR
69
     bool endstopz1_sta;
69
     bool endstopz1_sta;
70
   #else
70
   #else
71
     constexpr static bool endstopz1_sta = true;
71
     constexpr static bool endstopz1_sta = true;

+ 8
- 9
Marlin/src/lcd/extui/nextion/nextion_tft.cpp View File

430
     break;
430
     break;
431
 
431
 
432
   case 36: // Endstop Info
432
   case 36: // Endstop Info
433
-    #if HAS_X_MIN
433
+    #if X_HOME_TO_MIN
434
       SEND_VALasTXT("x1", READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
434
       SEND_VALasTXT("x1", READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
435
-    #endif
436
-    #if HAS_X_MAX
435
+    #elif X_HOME_TO_MAX
437
       SEND_VALasTXT("x2", READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
436
       SEND_VALasTXT("x2", READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
438
     #endif
437
     #endif
439
-    #if HAS_Y_MIN
438
+    #if Y_HOME_TO_MIN
440
       SEND_VALasTXT("y1", READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
439
       SEND_VALasTXT("y1", READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
440
+    #elif Y_HOME_TO_MAX
441
+      SEND_VALasTXT("y2", READ(X_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
441
     #endif
442
     #endif
442
-    #if HAS_Z_MIN
443
+    #if Z_HOME_TO_MIN
443
       SEND_VALasTXT("z1", READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
444
       SEND_VALasTXT("z1", READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
444
-    #endif
445
-    #if HAS_Z_MAX
445
+    #elif Z_HOME_TO_MAX
446
       SEND_VALasTXT("z2", READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
446
       SEND_VALasTXT("z2", READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
447
     #endif
447
     #endif
448
     #if HAS_Z2_MIN
448
     #if HAS_Z2_MIN
449
       SEND_VALasTXT("z2", READ(Z2_MIN_PIN) != Z2_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
449
       SEND_VALasTXT("z2", READ(Z2_MIN_PIN) != Z2_MIN_ENDSTOP_INVERTING ? "triggered" : "open");
450
-    #endif
451
-    #if HAS_Z2_MAX
450
+    #elif HAS_Z2_MAX
452
       SEND_VALasTXT("z2", READ(Z2_MAX_PIN) != Z2_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
451
       SEND_VALasTXT("z2", READ(Z2_MAX_PIN) != Z2_MAX_ENDSTOP_INVERTING ? "triggered" : "open");
453
     #endif
452
     #endif
454
     #if HAS_BED_PROBE
453
     #if HAS_BED_PROBE

+ 3
- 3
Marlin/src/lcd/menu/menu_backlash.cpp View File

51
   #if HAS_Z_AXIS && _CAN_CALI(C)
51
   #if HAS_Z_AXIS && _CAN_CALI(C)
52
     EDIT_BACKLASH_DISTANCE(C);
52
     EDIT_BACKLASH_DISTANCE(C);
53
   #endif
53
   #endif
54
-  #if LINEAR_AXES >= 4 && _CAN_CALI(I)
54
+  #if HAS_I_AXIS && _CAN_CALI(I)
55
     EDIT_BACKLASH_DISTANCE(I);
55
     EDIT_BACKLASH_DISTANCE(I);
56
   #endif
56
   #endif
57
-  #if LINEAR_AXES >= 5 && _CAN_CALI(J)
57
+  #if HAS_J_AXIS && _CAN_CALI(J)
58
     EDIT_BACKLASH_DISTANCE(J);
58
     EDIT_BACKLASH_DISTANCE(J);
59
   #endif
59
   #endif
60
-  #if LINEAR_AXES >= 6 && _CAN_CALI(K)
60
+  #if HAS_K_AXIS && _CAN_CALI(K)
61
     EDIT_BACKLASH_DISTANCE(K);
61
     EDIT_BACKLASH_DISTANCE(K);
62
   #endif
62
   #endif
63
 
63
 

+ 12
- 12
Marlin/src/lcd/menu/menu_motion.cpp View File

97
 #if HAS_Z_AXIS
97
 #if HAS_Z_AXIS
98
   void lcd_move_z() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Z), Z_AXIS); }
98
   void lcd_move_z() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Z), Z_AXIS); }
99
 #endif
99
 #endif
100
-#if LINEAR_AXES >= 4
100
+#if HAS_I_AXIS
101
   void lcd_move_i() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_I), I_AXIS); }
101
   void lcd_move_i() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_I), I_AXIS); }
102
 #endif
102
 #endif
103
-#if LINEAR_AXES >= 5
103
+#if HAS_J_AXIS
104
   void lcd_move_j() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_J), J_AXIS); }
104
   void lcd_move_j() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_J), J_AXIS); }
105
 #endif
105
 #endif
106
-#if LINEAR_AXES >= 6
106
+#if HAS_K_AXIS
107
   void lcd_move_k() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_K), K_AXIS); }
107
   void lcd_move_k() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_K), K_AXIS); }
108
 #endif
108
 #endif
109
 
109
 
254
     #if HAS_Z_AXIS
254
     #if HAS_Z_AXIS
255
       SUBMENU(MSG_MOVE_Z, []{ _menu_move_distance(Z_AXIS, lcd_move_z); });
255
       SUBMENU(MSG_MOVE_Z, []{ _menu_move_distance(Z_AXIS, lcd_move_z); });
256
     #endif
256
     #endif
257
-    #if LINEAR_AXES >= 4
257
+    #if HAS_I_AXIS
258
       SUBMENU(MSG_MOVE_I, []{ _menu_move_distance(I_AXIS, lcd_move_i); });
258
       SUBMENU(MSG_MOVE_I, []{ _menu_move_distance(I_AXIS, lcd_move_i); });
259
     #endif
259
     #endif
260
-    #if LINEAR_AXES >= 5
260
+    #if HAS_J_AXIS
261
       SUBMENU(MSG_MOVE_J, []{ _menu_move_distance(J_AXIS, lcd_move_j); });
261
       SUBMENU(MSG_MOVE_J, []{ _menu_move_distance(J_AXIS, lcd_move_j); });
262
     #endif
262
     #endif
263
-    #if LINEAR_AXES >= 6
263
+    #if HAS_K_AXIS
264
       SUBMENU(MSG_MOVE_K, []{ _menu_move_distance(K_AXIS, lcd_move_k); });
264
       SUBMENU(MSG_MOVE_K, []{ _menu_move_distance(K_AXIS, lcd_move_k); });
265
     #endif
265
     #endif
266
   }
266
   }
345
     #if HAS_Z_AXIS
345
     #if HAS_Z_AXIS
346
       GCODES_ITEM_N(Z_AXIS, MSG_AUTO_HOME_A, PSTR("G28Z"));
346
       GCODES_ITEM_N(Z_AXIS, MSG_AUTO_HOME_A, PSTR("G28Z"));
347
     #endif
347
     #endif
348
-    #if LINEAR_AXES >= 4
348
+    #if HAS_I_AXIS
349
       GCODES_ITEM_N(I_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS4_STR));
349
       GCODES_ITEM_N(I_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS4_STR));
350
     #endif
350
     #endif
351
-    #if LINEAR_AXES >= 5
351
+    #if HAS_J_AXIS
352
       GCODES_ITEM_N(J_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS5_STR));
352
       GCODES_ITEM_N(J_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS5_STR));
353
     #endif
353
     #endif
354
-    #if LINEAR_AXES >= 6
354
+    #if HAS_K_AXIS
355
       GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS6_STR));
355
       GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS6_STR));
356
     #endif
356
     #endif
357
 
357
 
398
       #if HAS_Z_AXIS
398
       #if HAS_Z_AXIS
399
         GCODES_ITEM_N(Z_AXIS, MSG_AUTO_HOME_A, PSTR("G28Z"));
399
         GCODES_ITEM_N(Z_AXIS, MSG_AUTO_HOME_A, PSTR("G28Z"));
400
       #endif
400
       #endif
401
-      #if LINEAR_AXES >= 4
401
+      #if HAS_I_AXIS
402
         GCODES_ITEM_N(I_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS4_STR));
402
         GCODES_ITEM_N(I_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS4_STR));
403
       #endif
403
       #endif
404
-      #if LINEAR_AXES >= 5
404
+      #if HAS_J_AXIS
405
         GCODES_ITEM_N(J_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS5_STR));
405
         GCODES_ITEM_N(J_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS5_STR));
406
       #endif
406
       #endif
407
-      #if LINEAR_AXES >= 6
407
+      #if HAS_K_AXIS
408
         GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS6_STR));
408
         GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" AXIS6_STR));
409
       #endif
409
       #endif
410
     #endif
410
     #endif

+ 3
- 3
Marlin/src/libs/L64XX/L64XX_Marlin.cpp View File

497
       } break;
497
       } break;
498
     #endif
498
     #endif
499
 
499
 
500
-    #if LINEAR_AXES >= 4
500
+    #if HAS_I_AXIS
501
       case AXIS4_NAME: {
501
       case AXIS4_NAME: {
502
         position_min = I_center - displacement;
502
         position_min = I_center - displacement;
503
         position_max = I_center + displacement;
503
         position_max = I_center + displacement;
509
       } break;
509
       } break;
510
     #endif
510
     #endif
511
 
511
 
512
-    #if LINEAR_AXES >= 5
512
+    #if HAS_J_AXIS
513
       case AXIS5_NAME: {
513
       case AXIS5_NAME: {
514
         position_min = J_center - displacement;
514
         position_min = J_center - displacement;
515
         position_max = J_center + displacement;
515
         position_max = J_center + displacement;
521
       } break;
521
       } break;
522
     #endif
522
     #endif
523
 
523
 
524
-    #if LINEAR_AXES >= 6
524
+    #if HAS_K_AXIS
525
       case AXIS6_NAME: {
525
       case AXIS6_NAME: {
526
         position_min = K_center - displacement;
526
         position_min = K_center - displacement;
527
         position_max = K_center + displacement;
527
         position_max = K_center + displacement;

+ 3
- 3
Marlin/src/module/endstops.cpp View File

1059
     }
1059
     }
1060
   #endif
1060
   #endif
1061
 
1061
 
1062
-  #if LINEAR_AXES >= 4
1062
+  #if HAS_I_AXIS
1063
     if (stepper.axis_is_moving(I_AXIS)) {
1063
     if (stepper.axis_is_moving(I_AXIS)) {
1064
       if (stepper.motor_direction(I_AXIS_HEAD)) { // -direction
1064
       if (stepper.motor_direction(I_AXIS_HEAD)) { // -direction
1065
         #if HAS_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN)
1065
         #if HAS_I_MIN || (I_SPI_SENSORLESS && I_HOME_TO_MIN)
1074
     }
1074
     }
1075
   #endif
1075
   #endif
1076
 
1076
 
1077
-  #if LINEAR_AXES >= 5
1077
+  #if HAS_J_AXIS
1078
     if (stepper.axis_is_moving(J_AXIS)) {
1078
     if (stepper.axis_is_moving(J_AXIS)) {
1079
       if (stepper.motor_direction(J_AXIS_HEAD)) { // -direction
1079
       if (stepper.motor_direction(J_AXIS_HEAD)) { // -direction
1080
         #if HAS_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN)
1080
         #if HAS_J_MIN || (J_SPI_SENSORLESS && J_HOME_TO_MIN)
1089
     }
1089
     }
1090
   #endif
1090
   #endif
1091
 
1091
 
1092
-  #if LINEAR_AXES >= 6
1092
+  #if HAS_K_AXIS
1093
     if (stepper.axis_is_moving(K_AXIS)) {
1093
     if (stepper.axis_is_moving(K_AXIS)) {
1094
       if (stepper.motor_direction(K_AXIS_HEAD)) { // -direction
1094
       if (stepper.motor_direction(K_AXIS_HEAD)) { // -direction
1095
         #if HAS_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN)
1095
         #if HAS_K_MIN || (K_SPI_SENSORLESS && K_HOME_TO_MIN)

+ 15
- 15
Marlin/src/module/motion.cpp View File

603
   }
603
   }
604
 #endif
604
 #endif
605
 
605
 
606
-#if LINEAR_AXES >= 4
606
+#if HAS_I_AXIS
607
   void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s/*=0.0*/) {
607
   void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s/*=0.0*/) {
608
     do_blocking_move_to_xyz_i(current_position, ri, fr_mm_s);
608
     do_blocking_move_to_xyz_i(current_position, ri, fr_mm_s);
609
   }
609
   }
615
   }
615
   }
616
 #endif
616
 #endif
617
 
617
 
618
-#if LINEAR_AXES >= 5
618
+#if HAS_J_AXIS
619
   void do_blocking_move_to_j(const_float_t rj, const_feedRate_t fr_mm_s/*=0.0*/) {
619
   void do_blocking_move_to_j(const_float_t rj, const_feedRate_t fr_mm_s/*=0.0*/) {
620
     do_blocking_move_to_xyzi_j(current_position, rj, fr_mm_s);
620
     do_blocking_move_to_xyzi_j(current_position, rj, fr_mm_s);
621
   }
621
   }
627
   }
627
   }
628
 #endif
628
 #endif
629
 
629
 
630
-#if LINEAR_AXES >= 6
630
+#if HAS_K_AXIS
631
   void do_blocking_move_to_k(const_float_t rk, const_feedRate_t fr_mm_s/*=0.0*/) {
631
   void do_blocking_move_to_k(const_float_t rk, const_feedRate_t fr_mm_s/*=0.0*/) {
632
     do_blocking_move_to_xyzij_k(current_position, rk, fr_mm_s);
632
     do_blocking_move_to_xyzij_k(current_position, rk, fr_mm_s);
633
   }
633
   }
839
         #endif
839
         #endif
840
       }
840
       }
841
     #endif
841
     #endif
842
-    #if LINEAR_AXES >= 4
842
+    #if HAS_I_AXIS
843
       if (axis_was_homed(I_AXIS)) {
843
       if (axis_was_homed(I_AXIS)) {
844
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_I)
844
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_I)
845
           NOLESS(target.i, soft_endstop.min.i);
845
           NOLESS(target.i, soft_endstop.min.i);
849
         #endif
849
         #endif
850
       }
850
       }
851
     #endif
851
     #endif
852
-    #if LINEAR_AXES >= 5
852
+    #if HAS_J_AXIS
853
       if (axis_was_homed(J_AXIS)) {
853
       if (axis_was_homed(J_AXIS)) {
854
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_J)
854
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_J)
855
           NOLESS(target.j, soft_endstop.min.j);
855
           NOLESS(target.j, soft_endstop.min.j);
859
         #endif
859
         #endif
860
       }
860
       }
861
     #endif
861
     #endif
862
-    #if LINEAR_AXES >= 6
862
+    #if HAS_K_AXIS
863
       if (axis_was_homed(K_AXIS)) {
863
       if (axis_was_homed(K_AXIS)) {
864
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_K)
864
         #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_K)
865
           NOLESS(target.k, soft_endstop.min.k);
865
           NOLESS(target.k, soft_endstop.min.k);
1417
           #if HAS_Z_AXIS
1417
           #if HAS_Z_AXIS
1418
             case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = true; break;
1418
             case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = true; break;
1419
           #endif
1419
           #endif
1420
-          #if LINEAR_AXES >= 4
1420
+          #if HAS_I_AXIS
1421
             case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = true; break;
1421
             case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = true; break;
1422
           #endif
1422
           #endif
1423
-          #if LINEAR_AXES >= 5
1423
+          #if HAS_J_AXIS
1424
             case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = true; break;
1424
             case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = true; break;
1425
           #endif
1425
           #endif
1426
-          #if LINEAR_AXES >= 6
1426
+          #if HAS_K_AXIS
1427
             case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = true; break;
1427
             case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = true; break;
1428
           #endif
1428
           #endif
1429
           default: break;
1429
           default: break;
1494
           #if HAS_Z_AXIS
1494
           #if HAS_Z_AXIS
1495
             case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break;
1495
             case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break;
1496
           #endif
1496
           #endif
1497
-          #if LINEAR_AXES >= 4
1497
+          #if HAS_I_AXIS
1498
             case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break;
1498
             case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break;
1499
           #endif
1499
           #endif
1500
-          #if LINEAR_AXES >= 5
1500
+          #if HAS_J_AXIS
1501
             case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break;
1501
             case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break;
1502
           #endif
1502
           #endif
1503
-          #if LINEAR_AXES >= 6
1503
+          #if HAS_K_AXIS
1504
             case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break;
1504
             case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break;
1505
           #endif
1505
           #endif
1506
           default: break;
1506
           default: break;
1821
           case X_AXIS: es = X_ENDSTOP; break;
1821
           case X_AXIS: es = X_ENDSTOP; break;
1822
           case Y_AXIS: es = Y_ENDSTOP; break;
1822
           case Y_AXIS: es = Y_ENDSTOP; break;
1823
           case Z_AXIS: es = Z_ENDSTOP; break;
1823
           case Z_AXIS: es = Z_ENDSTOP; break;
1824
-          #if LINEAR_AXES >= 4
1824
+          #if HAS_I_AXIS
1825
             case I_AXIS: es = I_ENDSTOP; break;
1825
             case I_AXIS: es = I_ENDSTOP; break;
1826
           #endif
1826
           #endif
1827
-          #if LINEAR_AXES >= 5
1827
+          #if HAS_J_AXIS
1828
             case J_AXIS: es = J_ENDSTOP; break;
1828
             case J_AXIS: es = J_ENDSTOP; break;
1829
           #endif
1829
           #endif
1830
-          #if LINEAR_AXES >= 6
1830
+          #if HAS_K_AXIS
1831
             case K_AXIS: es = K_ENDSTOP; break;
1831
             case K_AXIS: es = K_ENDSTOP; break;
1832
           #endif
1832
           #endif
1833
         }
1833
         }

+ 9
- 9
Marlin/src/module/motion.h View File

180
               TERN_(MAX_SOFTWARE_ENDSTOP_Z, amax = max.z);
180
               TERN_(MAX_SOFTWARE_ENDSTOP_Z, amax = max.z);
181
               break;
181
               break;
182
           #endif
182
           #endif
183
-          #if LINEAR_AXES >= 4
183
+          #if HAS_I_AXIS
184
             case I_AXIS:
184
             case I_AXIS:
185
               TERN_(MIN_SOFTWARE_ENDSTOP_I, amin = min.i);
185
               TERN_(MIN_SOFTWARE_ENDSTOP_I, amin = min.i);
186
               TERN_(MIN_SOFTWARE_ENDSTOP_I, amax = max.i);
186
               TERN_(MIN_SOFTWARE_ENDSTOP_I, amax = max.i);
187
               break;
187
               break;
188
           #endif
188
           #endif
189
-          #if LINEAR_AXES >= 5
189
+          #if HAS_J_AXIS
190
             case J_AXIS:
190
             case J_AXIS:
191
               TERN_(MIN_SOFTWARE_ENDSTOP_J, amin = min.j);
191
               TERN_(MIN_SOFTWARE_ENDSTOP_J, amin = min.j);
192
               TERN_(MIN_SOFTWARE_ENDSTOP_J, amax = max.j);
192
               TERN_(MIN_SOFTWARE_ENDSTOP_J, amax = max.j);
193
               break;
193
               break;
194
           #endif
194
           #endif
195
-          #if LINEAR_AXES >= 6
195
+          #if HAS_K_AXIS
196
             case K_AXIS:
196
             case K_AXIS:
197
               TERN_(MIN_SOFTWARE_ENDSTOP_K, amin = min.k);
197
               TERN_(MIN_SOFTWARE_ENDSTOP_K, amin = min.k);
198
               TERN_(MIN_SOFTWARE_ENDSTOP_K, amax = max.k);
198
               TERN_(MIN_SOFTWARE_ENDSTOP_K, amax = max.k);
333
 #if HAS_Z_AXIS
333
 #if HAS_Z_AXIS
334
   void do_blocking_move_to_z(const_float_t rz, const_feedRate_t fr_mm_s=0.0f);
334
   void do_blocking_move_to_z(const_float_t rz, const_feedRate_t fr_mm_s=0.0f);
335
 #endif
335
 #endif
336
-#if LINEAR_AXES >= 4
336
+#if HAS_I_AXIS
337
   void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s=0.0f);
337
   void do_blocking_move_to_i(const_float_t ri, const_feedRate_t fr_mm_s=0.0f);
338
   void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const_float_t i, const_feedRate_t fr_mm_s=0.0f);
338
   void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const_float_t i, const_feedRate_t fr_mm_s=0.0f);
339
 #endif
339
 #endif
340
-#if LINEAR_AXES >= 5
340
+#if HAS_J_AXIS
341
   void do_blocking_move_to_j(const_float_t rj, const_feedRate_t fr_mm_s=0.0f);
341
   void do_blocking_move_to_j(const_float_t rj, const_feedRate_t fr_mm_s=0.0f);
342
   void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const_float_t j, const_feedRate_t fr_mm_s=0.0f);
342
   void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const_float_t j, const_feedRate_t fr_mm_s=0.0f);
343
 #endif
343
 #endif
344
-#if LINEAR_AXES >= 6
344
+#if HAS_K_AXIS
345
   void do_blocking_move_to_k(const_float_t rk, const_feedRate_t fr_mm_s=0.0f);
345
   void do_blocking_move_to_k(const_float_t rk, const_feedRate_t fr_mm_s=0.0f);
346
   void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const_float_t k, const_feedRate_t fr_mm_s=0.0f);
346
   void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const_float_t k, const_feedRate_t fr_mm_s=0.0f);
347
 #endif
347
 #endif
476
   #define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS)
476
   #define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS)
477
   #define RAW_Z_POSITION(POS)     LOGICAL_TO_NATIVE(POS, Z_AXIS)
477
   #define RAW_Z_POSITION(POS)     LOGICAL_TO_NATIVE(POS, Z_AXIS)
478
 #endif
478
 #endif
479
-#if LINEAR_AXES >= 4
479
+#if HAS_I_AXIS
480
   #define LOGICAL_I_POSITION(POS) NATIVE_TO_LOGICAL(POS, I_AXIS)
480
   #define LOGICAL_I_POSITION(POS) NATIVE_TO_LOGICAL(POS, I_AXIS)
481
   #define RAW_I_POSITION(POS)     LOGICAL_TO_NATIVE(POS, I_AXIS)
481
   #define RAW_I_POSITION(POS)     LOGICAL_TO_NATIVE(POS, I_AXIS)
482
 #endif
482
 #endif
483
-#if LINEAR_AXES >= 5
483
+#if HAS_J_AXIS
484
   #define LOGICAL_J_POSITION(POS) NATIVE_TO_LOGICAL(POS, J_AXIS)
484
   #define LOGICAL_J_POSITION(POS) NATIVE_TO_LOGICAL(POS, J_AXIS)
485
   #define RAW_J_POSITION(POS)     LOGICAL_TO_NATIVE(POS, J_AXIS)
485
   #define RAW_J_POSITION(POS)     LOGICAL_TO_NATIVE(POS, J_AXIS)
486
 #endif
486
 #endif
487
-#if LINEAR_AXES >= 6
487
+#if HAS_K_AXIS
488
   #define LOGICAL_K_POSITION(POS) NATIVE_TO_LOGICAL(POS, K_AXIS)
488
   #define LOGICAL_K_POSITION(POS) NATIVE_TO_LOGICAL(POS, K_AXIS)
489
   #define RAW_K_POSITION(POS)     LOGICAL_TO_NATIVE(POS, K_AXIS)
489
   #define RAW_K_POSITION(POS)     LOGICAL_TO_NATIVE(POS, K_AXIS)
490
 #endif
490
 #endif

+ 16
- 16
Marlin/src/module/planner.cpp View File

1866
       " A:", target.a, " (", da, " steps)"
1866
       " A:", target.a, " (", da, " steps)"
1867
       " B:", target.b, " (", db, " steps)"
1867
       " B:", target.b, " (", db, " steps)"
1868
       " C:", target.c, " (", dc, " steps)"
1868
       " C:", target.c, " (", dc, " steps)"
1869
-      #if LINEAR_AXES >= 4
1869
+      #if HAS_I_AXIS
1870
         " " AXIS4_STR ":", target.i, " (", di, " steps)"
1870
         " " AXIS4_STR ":", target.i, " (", di, " steps)"
1871
       #endif
1871
       #endif
1872
-      #if LINEAR_AXES >= 5
1872
+      #if HAS_J_AXIS
1873
         " " AXIS5_STR ":", target.j, " (", dj, " steps)"
1873
         " " AXIS5_STR ":", target.j, " (", dj, " steps)"
1874
       #endif
1874
       #endif
1875
-      #if LINEAR_AXES >= 6
1875
+      #if HAS_K_AXIS
1876
         " " AXIS6_STR ":", target.k, " (", dk, " steps)"
1876
         " " AXIS6_STR ":", target.k, " (", dk, " steps)"
1877
       #endif
1877
       #endif
1878
       #if HAS_EXTRUDERS
1878
       #if HAS_EXTRUDERS
1939
       if (db + dc < 0) SBI(dm, B_AXIS);           // Motor B direction
1939
       if (db + dc < 0) SBI(dm, B_AXIS);           // Motor B direction
1940
       if (CORESIGN(db - dc) < 0) SBI(dm, C_AXIS); // Motor C direction
1940
       if (CORESIGN(db - dc) < 0) SBI(dm, C_AXIS); // Motor C direction
1941
     #endif
1941
     #endif
1942
-    #if LINEAR_AXES >= 4
1942
+    #if HAS_I_AXIS
1943
       if (di < 0) SBI(dm, I_AXIS);
1943
       if (di < 0) SBI(dm, I_AXIS);
1944
     #endif
1944
     #endif
1945
-    #if LINEAR_AXES >= 5
1945
+    #if HAS_J_AXIS
1946
       if (dj < 0) SBI(dm, J_AXIS);
1946
       if (dj < 0) SBI(dm, J_AXIS);
1947
     #endif
1947
     #endif
1948
-    #if LINEAR_AXES >= 6
1948
+    #if HAS_K_AXIS
1949
       if (dk < 0) SBI(dm, K_AXIS);
1949
       if (dk < 0) SBI(dm, K_AXIS);
1950
     #endif
1950
     #endif
1951
   #elif ENABLED(MARKFORGED_XY)
1951
   #elif ENABLED(MARKFORGED_XY)
2041
       steps_dist_mm.b      = (db + dc) * mm_per_step[B_AXIS];
2041
       steps_dist_mm.b      = (db + dc) * mm_per_step[B_AXIS];
2042
       steps_dist_mm.c      = CORESIGN(db - dc) * mm_per_step[C_AXIS];
2042
       steps_dist_mm.c      = CORESIGN(db - dc) * mm_per_step[C_AXIS];
2043
     #endif
2043
     #endif
2044
-    #if LINEAR_AXES >= 4
2044
+    #if HAS_I_AXIS
2045
       steps_dist_mm.i = di * mm_per_step[I_AXIS];
2045
       steps_dist_mm.i = di * mm_per_step[I_AXIS];
2046
     #endif
2046
     #endif
2047
-    #if LINEAR_AXES >= 5
2047
+    #if HAS_J_AXIS
2048
       steps_dist_mm.j = dj * mm_per_step[J_AXIS];
2048
       steps_dist_mm.j = dj * mm_per_step[J_AXIS];
2049
     #endif
2049
     #endif
2050
-    #if LINEAR_AXES >= 6
2050
+    #if HAS_K_AXIS
2051
       steps_dist_mm.k = dk * mm_per_step[K_AXIS];
2051
       steps_dist_mm.k = dk * mm_per_step[K_AXIS];
2052
     #endif
2052
     #endif
2053
   #elif ENABLED(MARKFORGED_XY)
2053
   #elif ENABLED(MARKFORGED_XY)
2104
           )
2104
           )
2105
         #elif ENABLED(FOAMCUTTER_XYUV)
2105
         #elif ENABLED(FOAMCUTTER_XYUV)
2106
           // Return the largest distance move from either X/Y or I/J plane
2106
           // Return the largest distance move from either X/Y or I/J plane
2107
-          #if LINEAR_AXES >= 5
2107
+          #if HAS_J_AXIS
2108
             _MAX(sq(steps_dist_mm.x) + sq(steps_dist_mm.y), sq(steps_dist_mm.i) + sq(steps_dist_mm.j))
2108
             _MAX(sq(steps_dist_mm.x) + sq(steps_dist_mm.y), sq(steps_dist_mm.i) + sq(steps_dist_mm.j))
2109
           #else
2109
           #else
2110
             sq(steps_dist_mm.x) + sq(steps_dist_mm.y)
2110
             sq(steps_dist_mm.x) + sq(steps_dist_mm.y)
2197
     );
2197
     );
2198
   #endif
2198
   #endif
2199
   #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX)
2199
   #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX)
2200
-    #if LINEAR_AXES >= 4
2200
+    #if HAS_I_AXIS
2201
       if (block->steps.i) stepper.enable_axis(I_AXIS);
2201
       if (block->steps.i) stepper.enable_axis(I_AXIS);
2202
     #endif
2202
     #endif
2203
-    #if LINEAR_AXES >= 5
2203
+    #if HAS_J_AXIS
2204
       if (block->steps.j) stepper.enable_axis(J_AXIS);
2204
       if (block->steps.j) stepper.enable_axis(J_AXIS);
2205
     #endif
2205
     #endif
2206
-    #if LINEAR_AXES >= 6
2206
+    #if HAS_K_AXIS
2207
       if (block->steps.k) stepper.enable_axis(K_AXIS);
2207
       if (block->steps.k) stepper.enable_axis(K_AXIS);
2208
     #endif
2208
     #endif
2209
   #endif
2209
   #endif
2949
       SERIAL_ECHOPGM(" (", position.z, "->", target.z);
2949
       SERIAL_ECHOPGM(" (", position.z, "->", target.z);
2950
       SERIAL_CHAR(')');
2950
       SERIAL_CHAR(')');
2951
     #endif
2951
     #endif
2952
-    #if LINEAR_AXES >= 4
2952
+    #if HAS_I_AXIS
2953
       SERIAL_ECHOPGM_P(SP_I_LBL, abce.i);
2953
       SERIAL_ECHOPGM_P(SP_I_LBL, abce.i);
2954
       SERIAL_ECHOPGM(" (", position.i, "->", target.i);
2954
       SERIAL_ECHOPGM(" (", position.i, "->", target.i);
2955
       SERIAL_CHAR(')');
2955
       SERIAL_CHAR(')');
2956
     #endif
2956
     #endif
2957
-    #if LINEAR_AXES >= 5
2957
+    #if HAS_J_AXIS
2958
       SERIAL_ECHOPGM_P(SP_J_LBL, abce.j);
2958
       SERIAL_ECHOPGM_P(SP_J_LBL, abce.j);
2959
       SERIAL_ECHOPGM(" (", position.j, "->", target.j);
2959
       SERIAL_ECHOPGM(" (", position.j, "->", target.j);
2960
       SERIAL_CHAR(')');
2960
       SERIAL_CHAR(')');
2961
     #endif
2961
     #endif
2962
-    #if LINEAR_AXES >= 6
2962
+    #if HAS_K_AXIS
2963
       SERIAL_ECHOPGM_P(SP_K_LBL, abce.k);
2963
       SERIAL_ECHOPGM_P(SP_K_LBL, abce.k);
2964
       SERIAL_ECHOPGM(" (", position.k, "->", target.k);
2964
       SERIAL_ECHOPGM(" (", position.k, "->", target.k);
2965
       SERIAL_CHAR(')');
2965
       SERIAL_CHAR(')');

+ 3
- 3
Marlin/src/module/settings.cpp View File

2712
     #if HAS_Z_AXIS && !defined(DEFAULT_ZJERK)
2712
     #if HAS_Z_AXIS && !defined(DEFAULT_ZJERK)
2713
       #define DEFAULT_ZJERK 0
2713
       #define DEFAULT_ZJERK 0
2714
     #endif
2714
     #endif
2715
-    #if LINEAR_AXES >= 4 && !defined(DEFAULT_IJERK)
2715
+    #if HAS_I_AXIS && !defined(DEFAULT_IJERK)
2716
       #define DEFAULT_IJERK 0
2716
       #define DEFAULT_IJERK 0
2717
     #endif
2717
     #endif
2718
-    #if LINEAR_AXES >= 5 && !defined(DEFAULT_JJERK)
2718
+    #if HAS_J_AXIS && !defined(DEFAULT_JJERK)
2719
       #define DEFAULT_JJERK 0
2719
       #define DEFAULT_JJERK 0
2720
     #endif
2720
     #endif
2721
-    #if LINEAR_AXES >= 6 && !defined(DEFAULT_KJERK)
2721
+    #if HAS_K_AXIS && !defined(DEFAULT_KJERK)
2722
       #define DEFAULT_KJERK 0
2722
       #define DEFAULT_KJERK 0
2723
     #endif
2723
     #endif
2724
     planner.max_jerk.set(
2724
     planner.max_jerk.set(

+ 8
- 8
Marlin/src/module/stepper.cpp View File

435
   #define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
435
   #define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
436
 #endif
436
 #endif
437
 
437
 
438
-#if LINEAR_AXES >= 4
438
+#if HAS_I_AXIS
439
   #define I_APPLY_DIR(v,Q) I_DIR_WRITE(v)
439
   #define I_APPLY_DIR(v,Q) I_DIR_WRITE(v)
440
   #define I_APPLY_STEP(v,Q) I_STEP_WRITE(v)
440
   #define I_APPLY_STEP(v,Q) I_STEP_WRITE(v)
441
 #endif
441
 #endif
442
-#if LINEAR_AXES >= 5
442
+#if HAS_J_AXIS
443
   #define J_APPLY_DIR(v,Q) J_DIR_WRITE(v)
443
   #define J_APPLY_DIR(v,Q) J_DIR_WRITE(v)
444
   #define J_APPLY_STEP(v,Q) J_STEP_WRITE(v)
444
   #define J_APPLY_STEP(v,Q) J_STEP_WRITE(v)
445
 #endif
445
 #endif
446
-#if LINEAR_AXES >= 6
446
+#if HAS_K_AXIS
447
   #define K_APPLY_DIR(v,Q) K_DIR_WRITE(v)
447
   #define K_APPLY_DIR(v,Q) K_DIR_WRITE(v)
448
   #define K_APPLY_STEP(v,Q) K_STEP_WRITE(v)
448
   #define K_APPLY_STEP(v,Q) K_STEP_WRITE(v)
449
 #endif
449
 #endif
1688
     const bool is_page = IS_PAGE(current_block);
1688
     const bool is_page = IS_PAGE(current_block);
1689
 
1689
 
1690
     #if ENABLED(DIRECT_STEPPING)
1690
     #if ENABLED(DIRECT_STEPPING)
1691
-      // TODO (DerAndere): Add support for LINEAR_AXES >= 4
1691
+      // TODO (DerAndere): Add support for HAS_I_AXIS
1692
       if (is_page) {
1692
       if (is_page) {
1693
 
1693
 
1694
         #if STEPPER_PAGE_FORMAT == SP_4x4D_128
1694
         #if STEPPER_PAGE_FORMAT == SP_4x4D_128
1929
     // If current block is finished, reset pointer and finalize state
1929
     // If current block is finished, reset pointer and finalize state
1930
     if (step_events_completed >= step_event_count) {
1930
     if (step_events_completed >= step_event_count) {
1931
       #if ENABLED(DIRECT_STEPPING)
1931
       #if ENABLED(DIRECT_STEPPING)
1932
-        // TODO (DerAndere): Add support for LINEAR_AXES >= 4
1932
+        // TODO (DerAndere): Add support for HAS_I_AXIS
1933
         #if STEPPER_PAGE_FORMAT == SP_4x4D_128
1933
         #if STEPPER_PAGE_FORMAT == SP_4x4D_128
1934
           #define PAGE_SEGMENT_UPDATE_POS(AXIS) \
1934
           #define PAGE_SEGMENT_UPDATE_POS(AXIS) \
1935
             count_position[_AXIS(AXIS)] += page_step_state.bd[_AXIS(AXIS)] - 128 * 7;
1935
             count_position[_AXIS(AXIS)] += page_step_state.bd[_AXIS(AXIS)] - 128 * 7;
3184
 
3184
 
3185
       } break;
3185
       } break;
3186
 
3186
 
3187
-      #if LINEAR_AXES >= 4
3187
+      #if HAS_I_AXIS
3188
         case I_AXIS: BABYSTEP_AXIS(I, 0, direction); break;
3188
         case I_AXIS: BABYSTEP_AXIS(I, 0, direction); break;
3189
       #endif
3189
       #endif
3190
-      #if LINEAR_AXES >= 5
3190
+      #if HAS_J_AXIS
3191
         case J_AXIS: BABYSTEP_AXIS(J, 0, direction); break;
3191
         case J_AXIS: BABYSTEP_AXIS(J, 0, direction); break;
3192
       #endif
3192
       #endif
3193
-      #if LINEAR_AXES >= 6
3193
+      #if HAS_K_AXIS
3194
         case K_AXIS: BABYSTEP_AXIS(K, 0, direction); break;
3194
         case K_AXIS: BABYSTEP_AXIS(K, 0, direction); break;
3195
       #endif
3195
       #endif
3196
 
3196
 

+ 6
- 6
Marlin/src/module/stepper/indirection.h View File

206
 #endif
206
 #endif
207
 
207
 
208
 // I Stepper
208
 // I Stepper
209
-#if LINEAR_AXES >= 4
209
+#if HAS_I_AXIS
210
   #ifndef I_ENABLE_INIT
210
   #ifndef I_ENABLE_INIT
211
     #define I_ENABLE_INIT() SET_OUTPUT(I_ENABLE_PIN)
211
     #define I_ENABLE_INIT() SET_OUTPUT(I_ENABLE_PIN)
212
     #define I_ENABLE_WRITE(STATE) WRITE(I_ENABLE_PIN,STATE)
212
     #define I_ENABLE_WRITE(STATE) WRITE(I_ENABLE_PIN,STATE)
225
 #endif
225
 #endif
226
 
226
 
227
 // J Stepper
227
 // J Stepper
228
-#if LINEAR_AXES >= 5
228
+#if HAS_J_AXIS
229
   #ifndef J_ENABLE_INIT
229
   #ifndef J_ENABLE_INIT
230
     #define J_ENABLE_INIT() SET_OUTPUT(J_ENABLE_PIN)
230
     #define J_ENABLE_INIT() SET_OUTPUT(J_ENABLE_PIN)
231
     #define J_ENABLE_WRITE(STATE) WRITE(J_ENABLE_PIN,STATE)
231
     #define J_ENABLE_WRITE(STATE) WRITE(J_ENABLE_PIN,STATE)
244
 #endif
244
 #endif
245
 
245
 
246
 // K Stepper
246
 // K Stepper
247
-#if LINEAR_AXES >= 6
247
+#if HAS_K_AXIS
248
   #ifndef K_ENABLE_INIT
248
   #ifndef K_ENABLE_INIT
249
     #define K_ENABLE_INIT() SET_OUTPUT(K_ENABLE_PIN)
249
     #define K_ENABLE_INIT() SET_OUTPUT(K_ENABLE_PIN)
250
     #define K_ENABLE_WRITE(STATE) WRITE(K_ENABLE_PIN,STATE)
250
     #define K_ENABLE_WRITE(STATE) WRITE(K_ENABLE_PIN,STATE)
895
   #define Z_RESET()
895
   #define Z_RESET()
896
 #endif
896
 #endif
897
 
897
 
898
-#if LINEAR_AXES >= 4
898
+#if HAS_I_AXIS
899
   #define  ENABLE_AXIS_I() if (SHOULD_ENABLE(i))  {  ENABLE_STEPPER_I(); AFTER_CHANGE(i, true); }
899
   #define  ENABLE_AXIS_I() if (SHOULD_ENABLE(i))  {  ENABLE_STEPPER_I(); AFTER_CHANGE(i, true); }
900
   #define DISABLE_AXIS_I() if (SHOULD_DISABLE(i)) { DISABLE_STEPPER_I(); AFTER_CHANGE(i, false); set_axis_untrusted(I_AXIS); }
900
   #define DISABLE_AXIS_I() if (SHOULD_DISABLE(i)) { DISABLE_STEPPER_I(); AFTER_CHANGE(i, false); set_axis_untrusted(I_AXIS); }
901
 #else
901
 #else
902
   #define  ENABLE_AXIS_I() NOOP
902
   #define  ENABLE_AXIS_I() NOOP
903
   #define DISABLE_AXIS_I() NOOP
903
   #define DISABLE_AXIS_I() NOOP
904
 #endif
904
 #endif
905
-#if LINEAR_AXES >= 5
905
+#if HAS_J_AXIS
906
   #define  ENABLE_AXIS_J() if (SHOULD_ENABLE(j))  {  ENABLE_STEPPER_J(); AFTER_CHANGE(j, true); }
906
   #define  ENABLE_AXIS_J() if (SHOULD_ENABLE(j))  {  ENABLE_STEPPER_J(); AFTER_CHANGE(j, true); }
907
   #define DISABLE_AXIS_J() if (SHOULD_DISABLE(j)) { DISABLE_STEPPER_J(); AFTER_CHANGE(j, false); set_axis_untrusted(J_AXIS); }
907
   #define DISABLE_AXIS_J() if (SHOULD_DISABLE(j)) { DISABLE_STEPPER_J(); AFTER_CHANGE(j, false); set_axis_untrusted(J_AXIS); }
908
 #else
908
 #else
909
   #define  ENABLE_AXIS_J() NOOP
909
   #define  ENABLE_AXIS_J() NOOP
910
   #define DISABLE_AXIS_J() NOOP
910
   #define DISABLE_AXIS_J() NOOP
911
 #endif
911
 #endif
912
-#if LINEAR_AXES >= 6
912
+#if HAS_K_AXIS
913
   #define  ENABLE_AXIS_K() if (SHOULD_ENABLE(k))  {  ENABLE_STEPPER_K(); AFTER_CHANGE(k, true); }
913
   #define  ENABLE_AXIS_K() if (SHOULD_ENABLE(k))  {  ENABLE_STEPPER_K(); AFTER_CHANGE(k, true); }
914
   #define DISABLE_AXIS_K() if (SHOULD_DISABLE(k)) { DISABLE_STEPPER_K(); AFTER_CHANGE(k, false); set_axis_untrusted(K_AXIS); }
914
   #define DISABLE_AXIS_K() if (SHOULD_DISABLE(k)) { DISABLE_STEPPER_K(); AFTER_CHANGE(k, false); set_axis_untrusted(K_AXIS); }
915
 #else
915
 #else

+ 3
- 3
Marlin/src/module/stepper/trinamic.h View File

83
 #if HAS_Z_AXIS && !defined(CHOPPER_TIMING_Z)
83
 #if HAS_Z_AXIS && !defined(CHOPPER_TIMING_Z)
84
   #define CHOPPER_TIMING_Z CHOPPER_TIMING
84
   #define CHOPPER_TIMING_Z CHOPPER_TIMING
85
 #endif
85
 #endif
86
-#if LINEAR_AXES >= 4 && !defined(CHOPPER_TIMING_I)
86
+#if HAS_I_AXIS && !defined(CHOPPER_TIMING_I)
87
   #define CHOPPER_TIMING_I CHOPPER_TIMING
87
   #define CHOPPER_TIMING_I CHOPPER_TIMING
88
 #endif
88
 #endif
89
-#if LINEAR_AXES >= 5 && !defined(CHOPPER_TIMING_J)
89
+#if HAS_J_AXIS && !defined(CHOPPER_TIMING_J)
90
   #define CHOPPER_TIMING_J CHOPPER_TIMING
90
   #define CHOPPER_TIMING_J CHOPPER_TIMING
91
 #endif
91
 #endif
92
-#if LINEAR_AXES >= 6 && !defined(CHOPPER_TIMING_K)
92
+#if HAS_K_AXIS && !defined(CHOPPER_TIMING_K)
93
   #define CHOPPER_TIMING_K CHOPPER_TIMING
93
   #define CHOPPER_TIMING_K CHOPPER_TIMING
94
 #endif
94
 #endif
95
 #if HAS_EXTRUDERS && !defined(CHOPPER_TIMING_E)
95
 #if HAS_EXTRUDERS && !defined(CHOPPER_TIMING_E)

+ 1
- 1
Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h View File

228
 
228
 
229
 #define PS_ON_PIN                          P2_12  // (12)
229
 #define PS_ON_PIN                          P2_12  // (12)
230
 
230
 
231
-#if !defined(TEMP_0_CS_PIN) && DISABLED(USE_ZMAX_PLUG)
231
+#if !defined(TEMP_0_CS_PIN) && !(HAS_Z_AXIS && Z_HOME_DIR)
232
   #define TEMP_0_CS_PIN                    P1_28
232
   #define TEMP_0_CS_PIN                    P1_28
233
 #endif
233
 #endif
234
 
234
 

+ 8
- 8
Marlin/src/pins/pins_postprocess.h View File

477
   #endif
477
   #endif
478
 #endif
478
 #endif
479
 
479
 
480
-#if LINEAR_AXES >= 4
480
+#if HAS_I_AXIS
481
   #ifdef I_STOP_PIN
481
   #ifdef I_STOP_PIN
482
     #if I_HOME_TO_MIN
482
     #if I_HOME_TO_MIN
483
       #define I_MIN_PIN I_STOP_PIN
483
       #define I_MIN_PIN I_STOP_PIN
500
   #undef I_MAX_PIN
500
   #undef I_MAX_PIN
501
 #endif
501
 #endif
502
 
502
 
503
-#if LINEAR_AXES >= 5
503
+#if HAS_J_AXIS
504
   #ifdef J_STOP_PIN
504
   #ifdef J_STOP_PIN
505
     #if J_HOME_TO_MIN
505
     #if J_HOME_TO_MIN
506
       #define J_MIN_PIN J_STOP_PIN
506
       #define J_MIN_PIN J_STOP_PIN
523
   #undef J_MAX_PIN
523
   #undef J_MAX_PIN
524
 #endif
524
 #endif
525
 
525
 
526
-#if LINEAR_AXES >= 6
526
+#if HAS_K_AXIS
527
   #ifdef K_STOP_PIN
527
   #ifdef K_STOP_PIN
528
     #if K_HOME_TO_MIN
528
     #if K_HOME_TO_MIN
529
       #define K_MIN_PIN K_STOP_PIN
529
       #define K_MIN_PIN K_STOP_PIN
1027
 #endif
1027
 #endif
1028
 
1028
 
1029
 // The I axis, if any, should be the next open extruder port
1029
 // The I axis, if any, should be the next open extruder port
1030
-#if LINEAR_AXES >= 4 && !defined(I_DIAG_PIN) && !defined(I_STEP_PIN) && !PIN_EXISTS(I_CS_PIN)
1030
+#if HAS_I_AXIS && !defined(I_DIAG_PIN) && !defined(I_STEP_PIN) && !PIN_EXISTS(I_CS_PIN)
1031
   #define J_E_INDEX INCREMENT(I_E_INDEX)
1031
   #define J_E_INDEX INCREMENT(I_E_INDEX)
1032
 #else
1032
 #else
1033
   #define J_E_INDEX I_E_INDEX
1033
   #define J_E_INDEX I_E_INDEX
1034
 #endif
1034
 #endif
1035
-#if LINEAR_AXES >= 4
1035
+#if HAS_I_AXIS
1036
   #ifndef I_STEP_PIN
1036
   #ifndef I_STEP_PIN
1037
     #define I_STEP_PIN   _EPIN(I_E_INDEX, STEP)
1037
     #define I_STEP_PIN   _EPIN(I_E_INDEX, STEP)
1038
     #define I_DIR_PIN    _EPIN(I_E_INDEX, DIR)
1038
     #define I_DIR_PIN    _EPIN(I_E_INDEX, DIR)
1112
 #endif
1112
 #endif
1113
 
1113
 
1114
 // The J axis, if any, should be the next open extruder port
1114
 // The J axis, if any, should be the next open extruder port
1115
-#if LINEAR_AXES >= 5 && !defined(J_DIAG_PIN) && !defined(J_STEP_PIN) && !PIN_EXISTS(J_CS_PIN)
1115
+#if HAS_J_AXIS && !defined(J_DIAG_PIN) && !defined(J_STEP_PIN) && !PIN_EXISTS(J_CS_PIN)
1116
   #define K_E_INDEX INCREMENT(J_E_INDEX)
1116
   #define K_E_INDEX INCREMENT(J_E_INDEX)
1117
 #else
1117
 #else
1118
   #define K_E_INDEX J_E_INDEX
1118
   #define K_E_INDEX J_E_INDEX
1119
 #endif
1119
 #endif
1120
-#if LINEAR_AXES >= 5
1120
+#if HAS_J_AXIS
1121
   #ifndef J_STEP_PIN
1121
   #ifndef J_STEP_PIN
1122
     #define J_STEP_PIN   _EPIN(J_E_INDEX, STEP)
1122
     #define J_STEP_PIN   _EPIN(J_E_INDEX, STEP)
1123
     #define J_DIR_PIN    _EPIN(J_E_INDEX, DIR)
1123
     #define J_DIR_PIN    _EPIN(J_E_INDEX, DIR)
1197
 #endif
1197
 #endif
1198
 
1198
 
1199
 // The K axis, if any, should be the next open extruder port
1199
 // The K axis, if any, should be the next open extruder port
1200
-#if LINEAR_AXES >= 6
1200
+#if HAS_K_AXIS
1201
   #ifndef K_STEP_PIN
1201
   #ifndef K_STEP_PIN
1202
     #define K_STEP_PIN   _EPIN(K_E_INDEX, STEP)
1202
     #define K_STEP_PIN   _EPIN(K_E_INDEX, STEP)
1203
     #define K_DIR_PIN    _EPIN(K_E_INDEX, DIR)
1203
     #define K_DIR_PIN    _EPIN(K_E_INDEX, DIR)

+ 5
- 5
Marlin/src/pins/rambo/pins_EINSY_RETRO.h View File

55
 
55
 
56
   #define X_MIN_PIN                           12  // X-
56
   #define X_MIN_PIN                           12  // X-
57
   #define Y_MIN_PIN                           11  // Y-
57
   #define Y_MIN_PIN                           11  // Y-
58
-  #define Z_MIN_PIN                           10  // Z-
59
   #define X_MAX_PIN                           81  // X+
58
   #define X_MAX_PIN                           81  // X+
60
   #define Y_MAX_PIN                           57  // Y+
59
   #define Y_MAX_PIN                           57  // Y+
61
 
60
 
78
   #endif
77
   #endif
79
 
78
 
80
   #if ENABLED(BLTOUCH)
79
   #if ENABLED(BLTOUCH)
81
-    #define Z_MIN_PIN                         11  // Y-MIN
82
-    #define SERVO0_PIN                        10  // Z-MIN
83
-  #else
84
-    #define Z_MIN_PIN                         10
80
+    #define Z_MIN_PIN                         11  // Y-
81
+    #define SERVO0_PIN                        10  // Z-
85
   #endif
82
   #endif
86
 
83
 
87
 #endif
84
 #endif
88
 
85
 
89
 #define Z_MAX_PIN                              7
86
 #define Z_MAX_PIN                              7
87
+#ifndef Z_MIN_PIN                              7
88
+  #define Z_MIN_PIN                           10  // Z-
89
+#endif
90
 
90
 
91
 //
91
 //
92
 // Z Probe (when not Z_MIN_PIN)
92
 // Z Probe (when not Z_MIN_PIN)

+ 0
- 4
Marlin/src/pins/sam/pins_RURAMPS4D_11.h View File

117
 //#define E3_MS2_PIN         ?
117
 //#define E3_MS2_PIN         ?
118
 //#define E3_MS3_PIN         ?
118
 //#define E3_MS3_PIN         ?
119
 
119
 
120
-#if USES_Z_MIN_PROBE_PIN
121
-  #define Z_MIN_PROBE_PIN                     49
122
-#endif
123
-
124
 #ifndef FIL_RUNOUT_PIN
120
 #ifndef FIL_RUNOUT_PIN
125
   #define FIL_RUNOUT_PIN               Y_MIN_PIN
121
   #define FIL_RUNOUT_PIN               Y_MIN_PIN
126
 #endif
122
 #endif

+ 1
- 8
Marlin/src/pins/sam/pins_RURAMPS4D_13.h View File

54
 #define Z_MAX_PIN                             43
54
 #define Z_MAX_PIN                             43
55
 
55
 
56
 //
56
 //
57
-// Z Probe (when not Z_MIN_PIN)
58
-//
59
-#ifndef Z_MIN_PROBE_PIN
60
-  #define Z_MIN_PROBE_PIN                     49
61
-#endif
62
-
63
-//
64
 // Steppers
57
 // Steppers
65
 //
58
 //
66
 #define X_STEP_PIN                            37  // Support Extension Board
59
 #define X_STEP_PIN                            37  // Support Extension Board
105
   #define E2_CS_PIN                           61
98
   #define E2_CS_PIN                           61
106
 #endif
99
 #endif
107
 
100
 
108
-#if USES_Z_MIN_PROBE_PIN
101
+#ifndef Z_MIN_PROBE_PIN
109
   #define Z_MIN_PROBE_PIN                     49
102
   #define Z_MIN_PROBE_PIN                     49
110
 #endif
103
 #endif
111
 
104
 

+ 3
- 3
Marlin/src/pins/sensitive_pins.h View File

155
 
155
 
156
 #endif
156
 #endif
157
 
157
 
158
-#if LINEAR_AXES >= 4
158
+#if HAS_I_AXIS
159
 
159
 
160
   #if PIN_EXISTS(I_MIN)
160
   #if PIN_EXISTS(I_MIN)
161
     #define _I_MIN I_MIN_PIN,
161
     #define _I_MIN I_MIN_PIN,
201
 
201
 
202
 #endif
202
 #endif
203
 
203
 
204
-#if LINEAR_AXES >= 5
204
+#if HAS_J_AXIS
205
 
205
 
206
   #if PIN_EXISTS(J_MIN)
206
   #if PIN_EXISTS(J_MIN)
207
     #define _J_MIN J_MIN_PIN,
207
     #define _J_MIN J_MIN_PIN,
247
 
247
 
248
 #endif
248
 #endif
249
 
249
 
250
-#if LINEAR_AXES >= 6
250
+#if HAS_K_AXIS
251
 
251
 
252
   #if PIN_EXISTS(K_MIN)
252
   #if PIN_EXISTS(K_MIN)
253
     #define _K_MIN K_MIN_PIN,
253
     #define _K_MIN K_MIN_PIN,

+ 1
- 2
Marlin/src/pins/stm32f7/pins_REMRAM_V1.h View File

44
   #define X_MAX_PIN                           59
44
   #define X_MAX_PIN                           59
45
   #define Y_MIN_PIN                           60
45
   #define Y_MIN_PIN                           60
46
   #define Y_MAX_PIN                           61
46
   #define Y_MAX_PIN                           61
47
-  #define Z_MIN_PIN                           62
48
   #define Z_MAX_PIN                           63
47
   #define Z_MAX_PIN                           63
49
 #else
48
 #else
50
   #define X_STOP_PIN                          36
49
   #define X_STOP_PIN                          36
51
   #define Y_STOP_PIN                          39
50
   #define Y_STOP_PIN                          39
52
-  #define Z_MIN_PIN                           62
53
   #define Z_MAX_PIN                           42
51
   #define Z_MAX_PIN                           42
54
 #endif
52
 #endif
53
+#define Z_MIN_PIN                             62
55
 
54
 
56
 //
55
 //
57
 // Z Probe (when not Z_MIN_PIN)
56
 // Z Probe (when not Z_MIN_PIN)

Loading…
Cancel
Save