소스 검색

Add HAS_HOTEND, etc.

Scott Lahteine 4 년 전
부모
커밋
15f6f53638
38개의 변경된 파일569개의 추가작업 그리고 271개의 파일을 삭제
  1. 1
    1
      Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
  2. 3
    3
      Marlin/src/feature/powerloss.cpp
  3. 1
    1
      Marlin/src/feature/powerloss.h
  4. 2
    2
      Marlin/src/gcode/bedlevel/abl/G29.cpp
  5. 3
    3
      Marlin/src/gcode/calibrate/G28.cpp
  6. 1
    1
      Marlin/src/gcode/calibrate/G33.cpp
  7. 3
    3
      Marlin/src/gcode/calibrate/G34_M422.cpp
  8. 4
    4
      Marlin/src/gcode/calibrate/G425.cpp
  9. 8
    4
      Marlin/src/inc/Conditionals_LCD.h
  10. 457
    163
      Marlin/src/inc/Conditionals_post.h
  11. 2
    2
      Marlin/src/inc/SanityCheck.h
  12. 8
    8
      Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
  13. 3
    3
      Marlin/src/lcd/dogm/dogm_Statusscreen.h
  14. 5
    5
      Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
  15. 2
    2
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/advanced_settings_menu.cpp
  16. 2
    2
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/bio_advanced_settings.cpp
  17. 2
    2
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/change_filament_screen.cpp
  18. 1
    1
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/nozzle_offsets_screen.cpp
  19. 1
    1
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/nudge_nozzle_screen.cpp
  20. 1
    1
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.cpp
  21. 1
    1
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.h
  22. 1
    1
      Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/temperature_screen.cpp
  23. 4
    4
      Marlin/src/lcd/extui/ui_api.cpp
  24. 1
    1
      Marlin/src/lcd/menu/menu.h
  25. 3
    3
      Marlin/src/lcd/menu/menu_advanced.cpp
  26. 6
    6
      Marlin/src/lcd/menu/menu_temperature.cpp
  27. 1
    1
      Marlin/src/lcd/menu/menu_tune.cpp
  28. 1
    1
      Marlin/src/module/configuration_store.cpp
  29. 27
    27
      Marlin/src/module/temperature.cpp
  30. 3
    3
      Marlin/src/module/temperature.h
  31. 1
    1
      Marlin/src/pins/linux/pins_RAMPS_LINUX.h
  32. 1
    1
      Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h
  33. 1
    1
      Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
  34. 1
    1
      Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h
  35. 1
    1
      Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
  36. 1
    1
      Marlin/src/pins/ramps/pins_RAMPS.h
  37. 2
    2
      Marlin/src/pins/ramps/pins_TRIGORILLA_14.h
  38. 3
    3
      Marlin/src/pins/sensitive_pins.h

+ 1
- 1
Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp 파일 보기

@@ -38,7 +38,7 @@
38 38
   #include "../../../gcode/gcode.h"
39 39
   #include "../../../libs/least_squares_fit.h"
40 40
 
41
-  #if HOTENDS > 1
41
+  #if HAS_MULTI_HOTEND
42 42
     #include "../../../module/tool_change.h"
43 43
   #endif
44 44
 

+ 3
- 3
Marlin/src/feature/powerloss.cpp 파일 보기

@@ -366,11 +366,11 @@ void PrintJobRecovery::resume() {
366 366
   #endif
367 367
 
368 368
   // Restore all hotend temperatures
369
-  #if HOTENDS
369
+  #if HAS_HOTEND
370 370
     HOTEND_LOOP() {
371 371
       const int16_t et = info.target_temperature[e];
372 372
       if (et) {
373
-        #if HOTENDS > 1
373
+        #if HAS_MULTI_HOTEND
374 374
           sprintf_P(cmd, PSTR("T%i"), e);
375 375
           gcode.process_subcommands_now(cmd);
376 376
         #endif
@@ -517,7 +517,7 @@ void PrintJobRecovery::resume() {
517 517
           DEBUG_ECHOLNPAIR("active_extruder: ", int(info.active_extruder));
518 518
         #endif
519 519
 
520
-        #if HOTENDS
520
+        #if HAS_HOTEND
521 521
           DEBUG_ECHOPGM("target_temperature: ");
522 522
           HOTEND_LOOP() {
523 523
             DEBUG_ECHO(info.target_temperature[e]);

+ 1
- 1
Marlin/src/feature/powerloss.h 파일 보기

@@ -68,7 +68,7 @@ typedef struct {
68 68
     #endif
69 69
   #endif
70 70
 
71
-  #if HOTENDS
71
+  #if HAS_HOTEND
72 72
     int16_t target_temperature[HOTENDS];
73 73
   #endif
74 74
 

+ 2
- 2
Marlin/src/gcode/bedlevel/abl/G29.cpp 파일 보기

@@ -60,7 +60,7 @@
60 60
   #include "../../../lcd/extui/ui_api.h"
61 61
 #endif
62 62
 
63
-#if HOTENDS > 1
63
+#if HAS_MULTI_HOTEND
64 64
   #include "../../../module/tool_change.h"
65 65
 #endif
66 66
 
@@ -283,7 +283,7 @@ G29_TYPE GcodeSuite::G29() {
283 283
    */
284 284
   if (!g29_in_progress) {
285 285
 
286
-    #if HOTENDS > 1
286
+    #if HAS_MULTI_HOTEND
287 287
       if (active_extruder != 0) tool_change(0);
288 288
     #endif
289 289
 

+ 3
- 3
Marlin/src/gcode/calibrate/G28.cpp 파일 보기

@@ -27,7 +27,7 @@
27 27
 #include "../../module/stepper.h"
28 28
 #include "../../module/endstops.h"
29 29
 
30
-#if HOTENDS > 1
30
+#if HAS_MULTI_HOTEND
31 31
   #include "../../module/tool_change.h"
32 32
 #endif
33 33
 
@@ -285,7 +285,7 @@ void GcodeSuite::G28() {
285 285
   #endif
286 286
 
287 287
   // Always home with tool 0 active
288
-  #if HOTENDS > 1
288
+  #if HAS_MULTI_HOTEND
289 289
     #if DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)
290 290
       const uint8_t old_tool_index = active_extruder;
291 291
     #endif
@@ -474,7 +474,7 @@ void GcodeSuite::G28() {
474 474
   restore_feedrate_and_scaling();
475 475
 
476 476
   // Restore the active tool after homing
477
-  #if HOTENDS > 1 && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE))
477
+  #if HAS_MULTI_HOTEND && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE))
478 478
     tool_change(old_tool_index, NONE(PARKING_EXTRUDER, DUAL_X_CARRIAGE));   // Do move if one of these
479 479
   #endif
480 480
 

+ 1
- 1
Marlin/src/gcode/calibrate/G33.cpp 파일 보기

@@ -35,7 +35,7 @@
35 35
   #include "../../module/probe.h"
36 36
 #endif
37 37
 
38
-#if HOTENDS > 1
38
+#if HAS_MULTI_HOTEND
39 39
   #include "../../module/tool_change.h"
40 40
 #endif
41 41
 

+ 3
- 3
Marlin/src/gcode/calibrate/G34_M422.cpp 파일 보기

@@ -32,7 +32,7 @@
32 32
 #include "../../module/motion.h"
33 33
 #include "../../module/probe.h"
34 34
 
35
-#if HOTENDS > 1
35
+#if HAS_MULTI_HOTEND
36 36
   #include "../../module/tool_change.h"
37 37
 #endif
38 38
 
@@ -124,7 +124,7 @@ void GcodeSuite::G34() {
124 124
     #endif
125 125
 
126 126
     // Always home with tool 0 active
127
-    #if HOTENDS > 1
127
+    #if HAS_MULTI_HOTEND
128 128
       const uint8_t old_tool_index = active_extruder;
129 129
       tool_change(0, true);
130 130
     #endif
@@ -386,7 +386,7 @@ void GcodeSuite::G34() {
386 386
     #endif
387 387
 
388 388
     // Restore the active tool after homing
389
-    #if HOTENDS > 1
389
+    #if HAS_MULTI_HOTEND
390 390
       tool_change(old_tool_index, DISABLED(PARKING_EXTRUDER)); // Fetch previous tool for parking extruder
391 391
     #endif
392 392
 

+ 4
- 4
Marlin/src/gcode/calibrate/G425.cpp 파일 보기

@@ -126,7 +126,7 @@ inline void park_above_object(measurements_t &m, const float uncertainty) {
126 126
   calibration_move();
127 127
 }
128 128
 
129
-#if HOTENDS > 1
129
+#if HAS_MULTI_HOTEND
130 130
   inline void set_nozzle(measurements_t &m, const uint8_t extruder) {
131 131
     if (extruder != active_extruder) {
132 132
       park_above_object(m, CALIBRATION_MEASUREMENT_UNKNOWN);
@@ -505,7 +505,7 @@ inline void calibrate_toolhead(measurements_t &m, const float uncertainty, const
505 505
   TEMPORARY_BACKLASH_CORRECTION(all_on);
506 506
   TEMPORARY_BACKLASH_SMOOTHING(0.0f);
507 507
 
508
-  #if HOTENDS > 1
508
+  #if HAS_MULTI_HOTEND
509 509
     set_nozzle(m, extruder);
510 510
   #else
511 511
     UNUSED(extruder);
@@ -548,7 +548,7 @@ inline void calibrate_all_toolheads(measurements_t &m, const float uncertainty)
548 548
     normalize_hotend_offsets();
549 549
   #endif
550 550
 
551
-  #if HOTENDS > 1
551
+  #if HAS_MULTI_HOTEND
552 552
     set_nozzle(m, 0);
553 553
   #endif
554 554
 }
@@ -582,7 +582,7 @@ inline void calibrate_all() {
582 582
   #endif
583 583
 
584 584
   // Cycle the toolheads so the servos settle into their "natural" positions
585
-  #if HOTENDS > 1
585
+  #if HAS_MULTI_HOTEND
586 586
     HOTEND_LOOP() set_nozzle(m, e);
587 587
   #endif
588 588
 

+ 8
- 4
Marlin/src/inc/Conditionals_LCD.h 파일 보기

@@ -466,6 +466,14 @@
466 466
   #define E_MANUAL EXTRUDERS
467 467
 #endif
468 468
 
469
+#if HOTENDS
470
+  #define HAS_HOTEND 1
471
+  #if HOTENDS > 1
472
+    #define HAS_MULTI_HOTEND 1
473
+    #define HAS_HOTEND_OFFSET 1
474
+  #endif
475
+#endif
476
+
469 477
 // Helper macros for extruder and hotend arrays
470 478
 #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
471 479
 #define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
@@ -481,10 +489,6 @@
481 489
   #define SWITCHING_NOZZLE_TWO_SERVOS 1
482 490
 #endif
483 491
 
484
-#if HOTENDS > 1
485
-  #define HAS_HOTEND_OFFSET 1
486
-#endif
487
-
488 492
 /**
489 493
  * Default hotend offsets, if not defined
490 494
  */

+ 457
- 163
Marlin/src/inc/Conditionals_post.h 파일 보기

@@ -386,7 +386,7 @@
386 386
 #endif
387 387
 
388 388
 #if !defined(PSU_POWERUP_DELAY) && ENABLED(PSU_CONTROL)
389
-  #define PSU_POWERUP_DELAY 100
389
+  #define PSU_POWERUP_DELAY 250
390 390
 #endif
391 391
 
392 392
 /**
@@ -1255,94 +1255,238 @@
1255 1255
  */
1256 1256
 
1257 1257
 // Steppers
1258
-#define HAS_X_ENABLE      (PIN_EXISTS(X_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X)))
1259
-#define HAS_X_DIR         (PIN_EXISTS(X_DIR))
1260
-#define HAS_X_STEP        (PIN_EXISTS(X_STEP))
1261
-#define HAS_X_MICROSTEPS  (PIN_EXISTS(X_MS1))
1262
-
1263
-#define HAS_X2_ENABLE     (PIN_EXISTS(X2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X2)))
1264
-#define HAS_X2_DIR        (PIN_EXISTS(X2_DIR))
1265
-#define HAS_X2_STEP       (PIN_EXISTS(X2_STEP))
1266
-#define HAS_X2_MICROSTEPS (PIN_EXISTS(X2_MS1))
1267
-
1268
-#define HAS_Y_ENABLE      (PIN_EXISTS(Y_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y)))
1269
-#define HAS_Y_DIR         (PIN_EXISTS(Y_DIR))
1270
-#define HAS_Y_STEP        (PIN_EXISTS(Y_STEP))
1271
-#define HAS_Y_MICROSTEPS  (PIN_EXISTS(Y_MS1))
1272
-
1273
-#define HAS_Y2_ENABLE     (PIN_EXISTS(Y2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y2)))
1274
-#define HAS_Y2_DIR        (PIN_EXISTS(Y2_DIR))
1275
-#define HAS_Y2_STEP       (PIN_EXISTS(Y2_STEP))
1276
-#define HAS_Y2_MICROSTEPS (PIN_EXISTS(Y2_MS1))
1277
-
1278
-#define HAS_Z_ENABLE      (PIN_EXISTS(Z_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z)))
1279
-#define HAS_Z_DIR         (PIN_EXISTS(Z_DIR))
1280
-#define HAS_Z_STEP        (PIN_EXISTS(Z_STEP))
1281
-#define HAS_Z_MICROSTEPS  (PIN_EXISTS(Z_MS1))
1282
-
1283
-#define HAS_Z2_ENABLE     (PIN_EXISTS(Z2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z2)))
1284
-#define HAS_Z2_DIR        (PIN_EXISTS(Z2_DIR))
1285
-#define HAS_Z2_STEP       (PIN_EXISTS(Z2_STEP))
1286
-#define HAS_Z2_MICROSTEPS (PIN_EXISTS(Z2_MS1))
1287
-
1288
-#define HAS_Z3_ENABLE     (PIN_EXISTS(Z3_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z3)))
1289
-#define HAS_Z3_DIR        (PIN_EXISTS(Z3_DIR))
1290
-#define HAS_Z3_STEP       (PIN_EXISTS(Z3_STEP))
1291
-#define HAS_Z3_MICROSTEPS (PIN_EXISTS(Z3_MS1))
1292
-
1293
-#define HAS_Z4_ENABLE     (PIN_EXISTS(Z4_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z4)))
1294
-#define HAS_Z4_DIR        (PIN_EXISTS(Z4_DIR))
1295
-#define HAS_Z4_STEP       (PIN_EXISTS(Z4_STEP))
1296
-#define HAS_Z4_MICROSTEPS (PIN_EXISTS(Z4_MS1))
1258
+#if PIN_EXISTS(X_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X))
1259
+  #define HAS_X_ENABLE 1
1260
+#endif
1261
+#if PIN_EXISTS(X_DIR)
1262
+  #define HAS_X_DIR 1
1263
+#endif
1264
+#if PIN_EXISTS(X_STEP)
1265
+  #define HAS_X_STEP 1
1266
+#endif
1267
+#if PIN_EXISTS(X_MS1)
1268
+  #define HAS_X_MICROSTEPS 1
1269
+#endif
1270
+
1271
+#if PIN_EXISTS(X2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(X2))
1272
+  #define HAS_X2_ENABLE 1
1273
+#endif
1274
+#if PIN_EXISTS(X2_DIR)
1275
+  #define HAS_X2_DIR 1
1276
+#endif
1277
+#if PIN_EXISTS(X2_STEP)
1278
+  #define HAS_X2_STEP 1
1279
+#endif
1280
+#if PIN_EXISTS(X2_MS1)
1281
+  #define HAS_X2_MICROSTEPS 1
1282
+#endif
1283
+
1284
+#if PIN_EXISTS(Y_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y))
1285
+  #define HAS_Y_ENABLE 1
1286
+#endif
1287
+#if PIN_EXISTS(Y_DIR)
1288
+  #define HAS_Y_DIR 1
1289
+#endif
1290
+#if PIN_EXISTS(Y_STEP)
1291
+  #define HAS_Y_STEP 1
1292
+#endif
1293
+#if PIN_EXISTS(Y_MS1)
1294
+  #define HAS_Y_MICROSTEPS 1
1295
+#endif
1296
+
1297
+#if PIN_EXISTS(Y2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y2))
1298
+  #define HAS_Y2_ENABLE 1
1299
+#endif
1300
+#if PIN_EXISTS(Y2_DIR)
1301
+  #define HAS_Y2_DIR 1
1302
+#endif
1303
+#if PIN_EXISTS(Y2_STEP)
1304
+  #define HAS_Y2_STEP 1
1305
+#endif
1306
+#if PIN_EXISTS(Y2_MS1)
1307
+  #define HAS_Y2_MICROSTEPS 1
1308
+#endif
1309
+
1310
+#if PIN_EXISTS(Z_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z))
1311
+  #define HAS_Z_ENABLE 1
1312
+#endif
1313
+#if PIN_EXISTS(Z_DIR)
1314
+  #define HAS_Z_DIR 1
1315
+#endif
1316
+#if PIN_EXISTS(Z_STEP)
1317
+  #define HAS_Z_STEP 1
1318
+#endif
1319
+#if PIN_EXISTS(Z_MS1)
1320
+  #define HAS_Z_MICROSTEPS 1
1321
+#endif
1322
+
1323
+#if PIN_EXISTS(Z2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z2))
1324
+  #define HAS_Z2_ENABLE 1
1325
+#endif
1326
+#if PIN_EXISTS(Z2_DIR)
1327
+  #define HAS_Z2_DIR 1
1328
+#endif
1329
+#if PIN_EXISTS(Z2_STEP)
1330
+  #define HAS_Z2_STEP 1
1331
+#endif
1332
+#if PIN_EXISTS(Z2_MS1)
1333
+  #define HAS_Z2_MICROSTEPS 1
1334
+#endif
1335
+
1336
+#if PIN_EXISTS(Z3_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z3))
1337
+  #define HAS_Z3_ENABLE 1
1338
+#endif
1339
+#if PIN_EXISTS(Z3_DIR)
1340
+  #define HAS_Z3_DIR 1
1341
+#endif
1342
+#if PIN_EXISTS(Z3_STEP)
1343
+  #define HAS_Z3_STEP 1
1344
+#endif
1345
+#if PIN_EXISTS(Z3_MS1)
1346
+  #define HAS_Z3_MICROSTEPS 1
1347
+#endif
1348
+
1349
+#if PIN_EXISTS(Z4_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Z4))
1350
+  #define HAS_Z4_ENABLE 1
1351
+#endif
1352
+#if PIN_EXISTS(Z4_DIR)
1353
+  #define HAS_Z4_DIR 1
1354
+#endif
1355
+#if PIN_EXISTS(Z4_STEP)
1356
+  #define HAS_Z4_STEP 1
1357
+#endif
1358
+#if PIN_EXISTS(Z4_MS1)
1359
+  #define HAS_Z4_MICROSTEPS 1
1360
+#endif
1297 1361
 
1298 1362
 // Extruder steppers and solenoids
1299
-#define HAS_E0_ENABLE     (PIN_EXISTS(E0_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E0)))
1300
-#define HAS_E0_DIR        (PIN_EXISTS(E0_DIR))
1301
-#define HAS_E0_STEP       (PIN_EXISTS(E0_STEP))
1302
-#define HAS_E0_MICROSTEPS (PIN_EXISTS(E0_MS1))
1303
-#define HAS_SOLENOID_0    (PIN_EXISTS(SOL0))
1304
-
1305
-#define HAS_E1_ENABLE     (PIN_EXISTS(E1_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E1)))
1306
-#define HAS_E1_DIR        (PIN_EXISTS(E1_DIR))
1307
-#define HAS_E1_STEP       (PIN_EXISTS(E1_STEP))
1308
-#define HAS_E1_MICROSTEPS (PIN_EXISTS(E1_MS1))
1309
-#define HAS_SOLENOID_1    (PIN_EXISTS(SOL1))
1310
-
1311
-#define HAS_E2_ENABLE     (PIN_EXISTS(E2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E2)))
1312
-#define HAS_E2_DIR        (PIN_EXISTS(E2_DIR))
1313
-#define HAS_E2_STEP       (PIN_EXISTS(E2_STEP))
1314
-#define HAS_E2_MICROSTEPS (PIN_EXISTS(E2_MS1))
1315
-#define HAS_SOLENOID_2    (PIN_EXISTS(SOL2))
1316
-
1317
-#define HAS_E3_ENABLE     (PIN_EXISTS(E3_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E3)))
1318
-#define HAS_E3_DIR        (PIN_EXISTS(E3_DIR))
1319
-#define HAS_E3_STEP       (PIN_EXISTS(E3_STEP))
1320
-#define HAS_E3_MICROSTEPS (PIN_EXISTS(E3_MS1))
1321
-#define HAS_SOLENOID_3    (PIN_EXISTS(SOL3))
1322
-
1323
-#define HAS_E4_ENABLE     (PIN_EXISTS(E4_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E4)))
1324
-#define HAS_E4_DIR        (PIN_EXISTS(E4_DIR))
1325
-#define HAS_E4_STEP       (PIN_EXISTS(E4_STEP))
1326
-#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
1327
-#define HAS_SOLENOID_4    (PIN_EXISTS(SOL4))
1328
-
1329
-#define HAS_E5_ENABLE     (PIN_EXISTS(E5_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E5)))
1330
-#define HAS_E5_DIR        (PIN_EXISTS(E5_DIR))
1331
-#define HAS_E5_STEP       (PIN_EXISTS(E5_STEP))
1332
-#define HAS_E5_MICROSTEPS (PIN_EXISTS(E5_MS1))
1333
-#define HAS_SOLENOID_5    (PIN_EXISTS(SOL5))
1334
-
1335
-#define HAS_E6_ENABLE     (PIN_EXISTS(E6_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E6)))
1336
-#define HAS_E6_DIR        (PIN_EXISTS(E6_DIR))
1337
-#define HAS_E6_STEP       (PIN_EXISTS(E6_STEP))
1338
-#define HAS_E6_MICROSTEPS (PIN_EXISTS(E6_MS1))
1339
-#define HAS_SOLENOID_6    (PIN_EXISTS(SOL6))
1340
-
1341
-#define HAS_E7_ENABLE     (PIN_EXISTS(E7_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E7)))
1342
-#define HAS_E7_DIR        (PIN_EXISTS(E7_DIR))
1343
-#define HAS_E7_STEP       (PIN_EXISTS(E7_STEP))
1344
-#define HAS_E7_MICROSTEPS (PIN_EXISTS(E7_MS1))
1345
-#define HAS_SOLENOID_7    (PIN_EXISTS(SOL7))
1363
+#if PIN_EXISTS(E0_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E0))
1364
+  #define HAS_E0_ENABLE 1
1365
+#endif
1366
+#if PIN_EXISTS(E0_DIR)
1367
+  #define HAS_E0_DIR 1
1368
+#endif
1369
+#if PIN_EXISTS(E0_STEP)
1370
+  #define HAS_E0_STEP 1
1371
+#endif
1372
+#if PIN_EXISTS(E0_MS1)
1373
+  #define HAS_E0_MICROSTEPS 1
1374
+#endif
1375
+#if PIN_EXISTS(SOL0)
1376
+  #define HAS_SOLENOID_0 1
1377
+#endif
1378
+
1379
+#if PIN_EXISTS(E1_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E1))
1380
+  #define HAS_E1_ENABLE 1
1381
+#endif
1382
+#if PIN_EXISTS(E1_DIR)
1383
+  #define HAS_E1_DIR 1
1384
+#endif
1385
+#if PIN_EXISTS(E1_STEP)
1386
+  #define HAS_E1_STEP 1
1387
+#endif
1388
+#if PIN_EXISTS(E1_MS1)
1389
+  #define HAS_E1_MICROSTEPS 1
1390
+#endif
1391
+#if PIN_EXISTS(SOL1)
1392
+  #define HAS_SOLENOID_1 1
1393
+#endif
1394
+
1395
+#if PIN_EXISTS(E2_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E2))
1396
+  #define HAS_E2_ENABLE 1
1397
+#endif
1398
+#if PIN_EXISTS(E2_DIR)
1399
+  #define HAS_E2_DIR 1
1400
+#endif
1401
+#if PIN_EXISTS(E2_STEP)
1402
+  #define HAS_E2_STEP 1
1403
+#endif
1404
+#if PIN_EXISTS(E2_MS1)
1405
+  #define HAS_E2_MICROSTEPS 1
1406
+#endif
1407
+#if PIN_EXISTS(SOL2)
1408
+  #define HAS_SOLENOID_2 1
1409
+#endif
1410
+
1411
+#if PIN_EXISTS(E3_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E3))
1412
+  #define HAS_E3_ENABLE 1
1413
+#endif
1414
+#if PIN_EXISTS(E3_DIR)
1415
+  #define HAS_E3_DIR 1
1416
+#endif
1417
+#if PIN_EXISTS(E3_STEP)
1418
+  #define HAS_E3_STEP 1
1419
+#endif
1420
+#if PIN_EXISTS(E3_MS1)
1421
+  #define HAS_E3_MICROSTEPS 1
1422
+#endif
1423
+#if PIN_EXISTS(SOL3)
1424
+  #define HAS_SOLENOID_3 1
1425
+#endif
1426
+
1427
+#if PIN_EXISTS(E4_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E4))
1428
+  #define HAS_E4_ENABLE 1
1429
+#endif
1430
+#if PIN_EXISTS(E4_DIR)
1431
+  #define HAS_E4_DIR 1
1432
+#endif
1433
+#if PIN_EXISTS(E4_STEP)
1434
+  #define HAS_E4_STEP 1
1435
+#endif
1436
+#if PIN_EXISTS(E4_MS1)
1437
+  #define HAS_E4_MICROSTEPS 1
1438
+#endif
1439
+#if PIN_EXISTS(SOL4)
1440
+  #define HAS_SOLENOID_4 1
1441
+#endif
1442
+
1443
+#if PIN_EXISTS(E5_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E5))
1444
+  #define HAS_E5_ENABLE 1
1445
+#endif
1446
+#if PIN_EXISTS(E5_DIR)
1447
+  #define HAS_E5_DIR 1
1448
+#endif
1449
+#if PIN_EXISTS(E5_STEP)
1450
+  #define HAS_E5_STEP 1
1451
+#endif
1452
+#if PIN_EXISTS(E5_MS1)
1453
+  #define HAS_E5_MICROSTEPS 1
1454
+#endif
1455
+#if PIN_EXISTS(SOL5)
1456
+  #define HAS_SOLENOID_5 1
1457
+#endif
1458
+
1459
+#if PIN_EXISTS(E6_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E6))
1460
+  #define HAS_E6_ENABLE 1
1461
+#endif
1462
+#if PIN_EXISTS(E6_DIR)
1463
+  #define HAS_E6_DIR 1
1464
+#endif
1465
+#if PIN_EXISTS(E6_STEP)
1466
+  #define HAS_E6_STEP 1
1467
+#endif
1468
+#if PIN_EXISTS(E6_MS1)
1469
+  #define HAS_E6_MICROSTEPS 1
1470
+#endif
1471
+#if PIN_EXISTS(SOL6)
1472
+  #define HAS_SOLENOID_6 1
1473
+#endif
1474
+
1475
+#if PIN_EXISTS(E7_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E7))
1476
+  #define HAS_E7_ENABLE 1
1477
+#endif
1478
+#if PIN_EXISTS(E7_DIR)
1479
+  #define HAS_E7_DIR 1
1480
+#endif
1481
+#if PIN_EXISTS(E7_STEP)
1482
+  #define HAS_E7_STEP 1
1483
+#endif
1484
+#if PIN_EXISTS(E7_MS1)
1485
+  #define HAS_E7_MICROSTEPS 1
1486
+#endif
1487
+#if PIN_EXISTS(SOL7)
1488
+  #define HAS_SOLENOID_7 1
1489
+#endif
1346 1490
 
1347 1491
 // Trinamic Stepper Drivers
1348 1492
 #if HAS_TRINAMIC_CONFIG
@@ -1405,62 +1549,146 @@
1405 1549
 #define IS_Z4_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPER_DRIVERS >= 4 && Z4_USE_ENDSTOP == _##A##M##_)
1406 1550
 
1407 1551
 #define _HAS_STOP(A,M) (PIN_EXISTS(A##_##M) && !IS_PROBE_PIN(A,M) && !IS_X2_ENDSTOP(A,M) && !IS_Y2_ENDSTOP(A,M) && !IS_Z2_ENDSTOP(A,M) && !IS_Z3_ENDSTOP(A,M) && !IS_Z4_ENDSTOP(A,M))
1408
-#define HAS_X_MIN _HAS_STOP(X,MIN)
1409
-#define HAS_X_MAX _HAS_STOP(X,MAX)
1410
-#define HAS_Y_MIN _HAS_STOP(Y,MIN)
1411
-#define HAS_Y_MAX _HAS_STOP(Y,MAX)
1412
-#define HAS_Z_MIN _HAS_STOP(Z,MIN)
1413
-#define HAS_Z_MAX _HAS_STOP(Z,MAX)
1414
-#define HAS_X2_MIN (PIN_EXISTS(X2_MIN))
1415
-#define HAS_X2_MAX (PIN_EXISTS(X2_MAX))
1416
-#define HAS_Y2_MIN (PIN_EXISTS(Y2_MIN))
1417
-#define HAS_Y2_MAX (PIN_EXISTS(Y2_MAX))
1418
-#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
1419
-#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
1420
-#define HAS_Z3_MIN (PIN_EXISTS(Z3_MIN))
1421
-#define HAS_Z3_MAX (PIN_EXISTS(Z3_MAX))
1422
-#define HAS_Z4_MIN (PIN_EXISTS(Z4_MIN))
1423
-#define HAS_Z4_MAX (PIN_EXISTS(Z4_MAX))
1424
-#define HAS_Z_MIN_PROBE_PIN (HAS_CUSTOM_PROBE_PIN && PIN_EXISTS(Z_MIN_PROBE))
1552
+#if _HAS_STOP(X,MIN)
1553
+  #define HAS_X_MIN 1
1554
+#endif
1555
+#if _HAS_STOP(X,MAX)
1556
+  #define HAS_X_MAX 1
1557
+#endif
1558
+#if _HAS_STOP(Y,MIN)
1559
+  #define HAS_Y_MIN 1
1560
+#endif
1561
+#if _HAS_STOP(Y,MAX)
1562
+  #define HAS_Y_MAX 1
1563
+#endif
1564
+#if _HAS_STOP(Z,MIN)
1565
+  #define HAS_Z_MIN 1
1566
+#endif
1567
+#if _HAS_STOP(Z,MAX)
1568
+  #define HAS_Z_MAX 1
1569
+#endif
1570
+#if PIN_EXISTS(X2_MIN)
1571
+  #define HAS_X2_MIN 1
1572
+#endif
1573
+#if PIN_EXISTS(X2_MAX)
1574
+  #define HAS_X2_MAX 1
1575
+#endif
1576
+#if PIN_EXISTS(Y2_MIN)
1577
+  #define HAS_Y2_MIN 1
1578
+#endif
1579
+#if PIN_EXISTS(Y2_MAX)
1580
+  #define HAS_Y2_MAX 1
1581
+#endif
1582
+#if PIN_EXISTS(Z2_MIN)
1583
+  #define HAS_Z2_MIN 1
1584
+#endif
1585
+#if PIN_EXISTS(Z2_MAX)
1586
+  #define HAS_Z2_MAX 1
1587
+#endif
1588
+#if PIN_EXISTS(Z3_MIN)
1589
+  #define HAS_Z3_MIN 1
1590
+#endif
1591
+#if PIN_EXISTS(Z3_MAX)
1592
+  #define HAS_Z3_MAX 1
1593
+#endif
1594
+#if PIN_EXISTS(Z4_MIN)
1595
+  #define HAS_Z4_MIN 1
1596
+#endif
1597
+#if PIN_EXISTS(Z4_MAX)
1598
+  #define HAS_Z4_MAX 1
1599
+#endif
1600
+#if HAS_CUSTOM_PROBE_PIN && PIN_EXISTS(Z_MIN_PROBE)
1601
+  #define HAS_Z_MIN_PROBE_PIN 1
1602
+#endif
1425 1603
 
1426 1604
 //
1427 1605
 // ADC Temp Sensors (Thermistor or Thermocouple with amplifier ADC interface)
1428 1606
 //
1429 1607
 #define HAS_ADC_TEST(P) (PIN_EXISTS(TEMP_##P) && TEMP_SENSOR_##P != 0 && DISABLED(HEATER_##P##_USES_MAX6675))
1430
-#define HAS_TEMP_ADC_0        HAS_ADC_TEST(0)
1431
-#define HAS_TEMP_ADC_1        HAS_ADC_TEST(1)
1432
-#define HAS_TEMP_ADC_2        HAS_ADC_TEST(2)
1433
-#define HAS_TEMP_ADC_3        HAS_ADC_TEST(3)
1434
-#define HAS_TEMP_ADC_4        HAS_ADC_TEST(4)
1435
-#define HAS_TEMP_ADC_5        HAS_ADC_TEST(5)
1436
-#define HAS_TEMP_ADC_6        HAS_ADC_TEST(6)
1437
-#define HAS_TEMP_ADC_7        HAS_ADC_TEST(7)
1438
-#define HAS_TEMP_ADC_BED      HAS_ADC_TEST(BED)
1439
-#define HAS_TEMP_ADC_PROBE    HAS_ADC_TEST(PROBE)
1440
-#define HAS_TEMP_ADC_CHAMBER  HAS_ADC_TEST(CHAMBER)
1441
-
1442
-#define HAS_TEMP_HOTEND   ((HAS_TEMP_ADC_0 || ENABLED(HEATER_0_USES_MAX6675)) && HOTENDS)
1608
+#if HAS_ADC_TEST(0)
1609
+  #define HAS_TEMP_ADC_0 1
1610
+#endif
1611
+#if HAS_ADC_TEST(1)
1612
+  #define HAS_TEMP_ADC_1 1
1613
+#endif
1614
+#if HAS_ADC_TEST(2)
1615
+  #define HAS_TEMP_ADC_2 1
1616
+#endif
1617
+#if HAS_ADC_TEST(3)
1618
+  #define HAS_TEMP_ADC_3 1
1619
+#endif
1620
+#if HAS_ADC_TEST(4)
1621
+  #define HAS_TEMP_ADC_4 1
1622
+#endif
1623
+#if HAS_ADC_TEST(5)
1624
+  #define HAS_TEMP_ADC_5 1
1625
+#endif
1626
+#if HAS_ADC_TEST(6)
1627
+  #define HAS_TEMP_ADC_6 1
1628
+#endif
1629
+#if HAS_ADC_TEST(7)
1630
+  #define HAS_TEMP_ADC_7 1
1631
+#endif
1632
+#if HAS_ADC_TEST(BED)
1633
+  #define HAS_TEMP_ADC_BED 1
1634
+#endif
1635
+#if HAS_ADC_TEST(PROBE)
1636
+  #define HAS_TEMP_ADC_PROBE 1
1637
+#endif
1638
+#if HAS_ADC_TEST(CHAMBER)
1639
+  #define HAS_TEMP_ADC_CHAMBER 1
1640
+#endif
1641
+
1642
+#if HOTENDS && (HAS_TEMP_ADC_0 || ENABLED(HEATER_0_USES_MAX6675))
1643
+  #define HAS_TEMP_HOTEND 1
1644
+#endif
1443 1645
 #define HAS_TEMP_BED        HAS_TEMP_ADC_BED
1444 1646
 #define HAS_TEMP_PROBE      HAS_TEMP_ADC_PROBE
1445 1647
 #define HAS_TEMP_CHAMBER    HAS_TEMP_ADC_CHAMBER
1446 1648
 
1447 1649
 #if ENABLED(JOYSTICK)
1448
-  #define HAS_JOY_ADC_X  PIN_EXISTS(JOY_X)
1449
-  #define HAS_JOY_ADC_Y  PIN_EXISTS(JOY_Y)
1450
-  #define HAS_JOY_ADC_Z  PIN_EXISTS(JOY_Z)
1451
-  #define HAS_JOY_ADC_EN PIN_EXISTS(JOY_EN)
1650
+  #if PIN_EXISTS(JOY_X)
1651
+    #define HAS_JOY_ADC_X 1
1652
+#endif
1653
+  #if PIN_EXISTS(JOY_Y)
1654
+    #define HAS_JOY_ADC_Y 1
1655
+#endif
1656
+  #if PIN_EXISTS(JOY_Z)
1657
+    #define HAS_JOY_ADC_Z 1
1658
+#endif
1659
+  #if PIN_EXISTS(JOY_EN)
1660
+    #define HAS_JOY_ADC_EN 1
1661
+#endif
1452 1662
 #endif
1453 1663
 
1454 1664
 // Heaters
1455
-#define HAS_HEATER_0    (PIN_EXISTS(HEATER_0))
1456
-#define HAS_HEATER_1    (PIN_EXISTS(HEATER_1))
1457
-#define HAS_HEATER_2    (PIN_EXISTS(HEATER_2))
1458
-#define HAS_HEATER_3    (PIN_EXISTS(HEATER_3))
1459
-#define HAS_HEATER_4    (PIN_EXISTS(HEATER_4))
1460
-#define HAS_HEATER_5    (PIN_EXISTS(HEATER_5))
1461
-#define HAS_HEATER_6    (PIN_EXISTS(HEATER_6))
1462
-#define HAS_HEATER_7    (PIN_EXISTS(HEATER_7))
1463
-#define HAS_HEATER_BED  (PIN_EXISTS(HEATER_BED))
1665
+#if PIN_EXISTS(HEATER_0)
1666
+  #define HAS_HEATER_0 1
1667
+#endif
1668
+#if PIN_EXISTS(HEATER_1)
1669
+  #define HAS_HEATER_1 1
1670
+#endif
1671
+#if PIN_EXISTS(HEATER_2)
1672
+  #define HAS_HEATER_2 1
1673
+#endif
1674
+#if PIN_EXISTS(HEATER_3)
1675
+  #define HAS_HEATER_3 1
1676
+#endif
1677
+#if PIN_EXISTS(HEATER_4)
1678
+  #define HAS_HEATER_4 1
1679
+#endif
1680
+#if PIN_EXISTS(HEATER_5)
1681
+  #define HAS_HEATER_5 1
1682
+#endif
1683
+#if PIN_EXISTS(HEATER_6)
1684
+  #define HAS_HEATER_6 1
1685
+#endif
1686
+#if PIN_EXISTS(HEATER_7)
1687
+  #define HAS_HEATER_7 1
1688
+#endif
1689
+#if PIN_EXISTS(HEATER_BED)
1690
+  #define HAS_HEATER_BED 1
1691
+#endif
1464 1692
 
1465 1693
 // Shorthand for common combinations
1466 1694
 #if HAS_TEMP_BED && HAS_HEATER_BED
@@ -1507,15 +1735,33 @@
1507 1735
 #endif
1508 1736
 
1509 1737
 // Auto fans
1510
-#define HAS_AUTO_FAN_0 (HOTENDS > 0 && PIN_EXISTS(E0_AUTO_FAN))
1511
-#define HAS_AUTO_FAN_1 (HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN))
1512
-#define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN))
1513
-#define HAS_AUTO_FAN_3 (HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN))
1514
-#define HAS_AUTO_FAN_4 (HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN))
1515
-#define HAS_AUTO_FAN_5 (HOTENDS > 5 && PIN_EXISTS(E5_AUTO_FAN))
1516
-#define HAS_AUTO_FAN_6 (HOTENDS > 6 && PIN_EXISTS(E6_AUTO_FAN))
1517
-#define HAS_AUTO_FAN_7 (HOTENDS > 7 && PIN_EXISTS(E7_AUTO_FAN))
1518
-#define HAS_AUTO_CHAMBER_FAN (HAS_TEMP_CHAMBER && PIN_EXISTS(CHAMBER_AUTO_FAN))
1738
+#if HAS_HOTEND && PIN_EXISTS(E0_AUTO_FAN)
1739
+  #define HAS_AUTO_FAN_0 1
1740
+#endif
1741
+#if HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN)
1742
+  #define HAS_AUTO_FAN_1 1
1743
+#endif
1744
+#if HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN)
1745
+  #define HAS_AUTO_FAN_2 1
1746
+#endif
1747
+#if HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN)
1748
+  #define HAS_AUTO_FAN_3 1
1749
+#endif
1750
+#if HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN)
1751
+  #define HAS_AUTO_FAN_4 1
1752
+#endif
1753
+#if HOTENDS > 5 && PIN_EXISTS(E5_AUTO_FAN)
1754
+  #define HAS_AUTO_FAN_5 1
1755
+#endif
1756
+#if HOTENDS > 6 && PIN_EXISTS(E6_AUTO_FAN)
1757
+  #define HAS_AUTO_FAN_6 1
1758
+#endif
1759
+#if HOTENDS > 7 && PIN_EXISTS(E7_AUTO_FAN)
1760
+  #define HAS_AUTO_FAN_7 1
1761
+#endif
1762
+#if HAS_TEMP_CHAMBER && PIN_EXISTS(CHAMBER_AUTO_FAN)
1763
+  #define HAS_AUTO_CHAMBER_FAN 1
1764
+#endif
1519 1765
 
1520 1766
 #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 || HAS_AUTO_FAN_4 || HAS_AUTO_FAN_5 || HAS_AUTO_FAN_6 || HAS_AUTO_FAN_7 || HAS_AUTO_CHAMBER_FAN)
1521 1767
 #define _FANOVERLAP(A,B) (A##_AUTO_FAN_PIN == E##B##_AUTO_FAN_PIN)
@@ -1535,24 +1781,52 @@
1535 1781
 // Other fans
1536 1782
 #define HAS_FAN0 (PIN_EXISTS(FAN))
1537 1783
 #define _HAS_FAN(P) (PIN_EXISTS(FAN##P) && CONTROLLER_FAN_PIN != FAN##P##_PIN && E0_AUTO_FAN_PIN != FAN##P##_PIN && E1_AUTO_FAN_PIN != FAN##P##_PIN && E2_AUTO_FAN_PIN != FAN##P##_PIN && E3_AUTO_FAN_PIN != FAN##P##_PIN && E4_AUTO_FAN_PIN != FAN##P##_PIN && E5_AUTO_FAN_PIN != FAN##P##_PIN && E6_AUTO_FAN_PIN != FAN##P##_PIN && E7_AUTO_FAN_PIN != FAN##P##_PIN)
1538
-#define HAS_FAN1 _HAS_FAN(1)
1539
-#define HAS_FAN2 _HAS_FAN(2)
1540
-#define HAS_FAN3 _HAS_FAN(3)
1541
-#define HAS_FAN4 _HAS_FAN(4)
1542
-#define HAS_FAN5 _HAS_FAN(5)
1543
-#define HAS_FAN6 _HAS_FAN(6)
1544
-#define HAS_FAN7 _HAS_FAN(7)
1545
-#define HAS_CONTROLLER_FAN (PIN_EXISTS(CONTROLLER_FAN))
1784
+#if _HAS_FAN(1)
1785
+  #define HAS_FAN1 1
1786
+#endif
1787
+#if _HAS_FAN(2)
1788
+  #define HAS_FAN2 1
1789
+#endif
1790
+#if _HAS_FAN(3)
1791
+  #define HAS_FAN3 1
1792
+#endif
1793
+#if _HAS_FAN(4)
1794
+  #define HAS_FAN4 1
1795
+#endif
1796
+#if _HAS_FAN(5)
1797
+  #define HAS_FAN5 1
1798
+#endif
1799
+#if _HAS_FAN(6)
1800
+  #define HAS_FAN6 1
1801
+#endif
1802
+#if _HAS_FAN(7)
1803
+  #define HAS_FAN7 1
1804
+#endif
1805
+#if PIN_EXISTS(CONTROLLER_FAN)
1806
+  #define HAS_CONTROLLER_FAN 1
1807
+#endif
1546 1808
 
1547 1809
 // Servos
1548
-#define HAS_SERVO_0 (PIN_EXISTS(SERVO0) && NUM_SERVOS > 0)
1549
-#define HAS_SERVO_1 (PIN_EXISTS(SERVO1) && NUM_SERVOS > 1)
1550
-#define HAS_SERVO_2 (PIN_EXISTS(SERVO2) && NUM_SERVOS > 2)
1551
-#define HAS_SERVO_3 (PIN_EXISTS(SERVO3) && NUM_SERVOS > 3)
1552
-#define HAS_SERVOS  (NUM_SERVOS > 0)
1810
+#if PIN_EXISTS(SERVO0) && NUM_SERVOS > 0
1811
+  #define HAS_SERVO_0 1
1812
+#endif
1813
+#if PIN_EXISTS(SERVO1) && NUM_SERVOS > 1
1814
+  #define HAS_SERVO_1 1
1815
+#endif
1816
+#if PIN_EXISTS(SERVO2) && NUM_SERVOS > 2
1817
+  #define HAS_SERVO_2 1
1818
+#endif
1819
+#if PIN_EXISTS(SERVO3) && NUM_SERVOS > 3
1820
+  #define HAS_SERVO_3 1
1821
+#endif
1822
+#if NUM_SERVOS > 0
1823
+  #define HAS_SERVOS 1
1824
+#endif
1553 1825
 
1554 1826
 // Sensors
1555
-#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
1827
+#if PIN_EXISTS(FILWIDTH)
1828
+  #define HAS_FILAMENT_WIDTH_SENSOR 1
1829
+#endif
1556 1830
 
1557 1831
 // User Interface
1558 1832
 #if PIN_EXISTS(HOME)
@@ -1638,14 +1912,30 @@
1638 1912
     #endif
1639 1913
   #endif
1640 1914
 
1641
-  #define HAS_MICROSTEP1 defined(MICROSTEP1)
1642
-  #define HAS_MICROSTEP2 defined(MICROSTEP2)
1643
-  #define HAS_MICROSTEP4 defined(MICROSTEP4)
1644
-  #define HAS_MICROSTEP8 defined(MICROSTEP8)
1645
-  #define HAS_MICROSTEP16 defined(MICROSTEP16)
1646
-  #define HAS_MICROSTEP32 defined(MICROSTEP32)
1647
-  #define HAS_MICROSTEP64 defined(MICROSTEP64)
1648
-  #define HAS_MICROSTEP128 defined(MICROSTEP128)
1915
+  #ifdef MICROSTEP1
1916
+    #define HAS_MICROSTEP1 1
1917
+  #endif
1918
+  #ifdef MICROSTEP2
1919
+    #define HAS_MICROSTEP2 1
1920
+  #endif
1921
+  #ifdef MICROSTEP4
1922
+    #define HAS_MICROSTEP4 1
1923
+  #endif
1924
+  #ifdef MICROSTEP8
1925
+    #define HAS_MICROSTEP8 1
1926
+  #endif
1927
+  #ifdef MICROSTEP16
1928
+    #define HAS_MICROSTEP16 1
1929
+  #endif
1930
+  #ifdef MICROSTEP32
1931
+    #define HAS_MICROSTEP32 1
1932
+  #endif
1933
+  #ifdef MICROSTEP64
1934
+    #define HAS_MICROSTEP64 1
1935
+  #endif
1936
+  #ifdef MICROSTEP128
1937
+    #define HAS_MICROSTEP128 1
1938
+  #endif
1649 1939
 
1650 1940
 #endif // HAS_MICROSTEPS
1651 1941
 
@@ -1896,8 +2186,12 @@
1896 2186
   #undef NO_FAN_SLOWING_IN_PID_TUNING
1897 2187
 #endif
1898 2188
 
1899
-#define QUIET_PROBING (HAS_BED_PROBE && (EITHER(PROBING_HEATERS_OFF, PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0))
1900
-#define HEATER_IDLE_HANDLER EITHER(ADVANCED_PAUSE_FEATURE, PROBING_HEATERS_OFF)
2189
+#if HAS_BED_PROBE && (EITHER(PROBING_HEATERS_OFF, PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0)
2190
+  #define QUIET_PROBING 1
2191
+#endif
2192
+#if EITHER(ADVANCED_PAUSE_FEATURE, PROBING_HEATERS_OFF)
2193
+  #define HEATER_IDLE_HANDLER 1
2194
+#endif
1901 2195
 
1902 2196
 #if ENABLED(ADVANCED_PAUSE_FEATURE) && !defined(FILAMENT_CHANGE_SLOW_LOAD_LENGTH)
1903 2197
   #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0

+ 2
- 2
Marlin/src/inc/SanityCheck.h 파일 보기

@@ -1591,11 +1591,11 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
1591 1591
   #error "MAX6675_SS_PIN (required for TEMP_SENSOR_0) not defined for this board."
1592 1592
 #elif HOTENDS && !HAS_TEMP_HOTEND
1593 1593
   #error "TEMP_0_PIN (required for TEMP_SENSOR_0) not defined for this board."
1594
-#elif (HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)) && !HAS_HEATER_1
1594
+#elif (HAS_MULTI_HOTEND || ENABLED(HEATERS_PARALLEL)) && !HAS_HEATER_1
1595 1595
   #error "HEATER_1_PIN not defined for this board."
1596 1596
 #endif
1597 1597
 
1598
-#if HOTENDS > 1
1598
+#if HAS_MULTI_HOTEND
1599 1599
   #if ENABLED(HEATER_1_USES_MAX6675) && !PIN_EXISTS(MAX6675_SS2)
1600 1600
     #error "MAX6675_SS2_PIN (required for TEMP_SENSOR_1) not defined for this board."
1601 1601
   #elif TEMP_SENSOR_1 == 0

+ 8
- 8
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp 파일 보기

@@ -745,7 +745,7 @@ void MarlinUI::draw_status_screen() {
745 745
       //
746 746
       // Hotend 1 or Bed Temperature
747 747
       //
748
-      #if HOTENDS > 1
748
+      #if HAS_MULTI_HOTEND
749 749
         lcd_moveto(8, 0);
750 750
         _draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
751 751
       #elif HAS_HEATED_BED
@@ -763,7 +763,7 @@ void MarlinUI::draw_status_screen() {
763 763
       //
764 764
       // Hotend 1 or Bed Temperature
765 765
       //
766
-      #if HOTENDS > 1
766
+      #if HAS_MULTI_HOTEND
767 767
         lcd_moveto(10, 0);
768 768
         _draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
769 769
       #elif HAS_HEATED_BED
@@ -791,7 +791,7 @@ void MarlinUI::draw_status_screen() {
791 791
         // If the first line has two extruder temps,
792 792
         // show more temperatures on the next line
793 793
 
794
-        #if HOTENDS > 2 || (HOTENDS > 1 && HAS_HEATED_BED)
794
+        #if HOTENDS > 2 || (HAS_MULTI_HOTEND && HAS_HEATED_BED)
795 795
 
796 796
           #if HOTENDS > 2
797 797
             _draw_heater_status(H_E2, LCD_STR_THERMOMETER[0], blink);
@@ -924,7 +924,7 @@ void MarlinUI::draw_status_screen() {
924 924
     lcd_moveto(LCD_WIDTH - 9, 0);
925 925
     _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink);
926 926
 
927
-    #if HAS_LEVELING && (HOTENDS > 1 || !HAS_HEATED_BED)
927
+    #if HAS_LEVELING && (HAS_MULTI_HOTEND || !HAS_HEATED_BED)
928 928
       lcd_put_wchar(LCD_WIDTH - 1, 0, planner.leveling_active || blink ? '_' : ' ');
929 929
     #endif
930 930
 
@@ -934,7 +934,7 @@ void MarlinUI::draw_status_screen() {
934 934
     // Hotend 1 or Bed Temperature
935 935
     //
936 936
     lcd_moveto(0, 1);
937
-    #if HOTENDS > 1
937
+    #if HAS_MULTI_HOTEND
938 938
       _draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
939 939
     #elif HAS_HEATED_BED
940 940
       _draw_bed_status(blink);
@@ -952,7 +952,7 @@ void MarlinUI::draw_status_screen() {
952 952
     lcd_moveto(0, 2);
953 953
     #if HOTENDS > 2
954 954
       _draw_heater_status(H_E2, LCD_STR_THERMOMETER[0], blink);
955
-    #elif HOTENDS > 1 && HAS_HEATED_BED
955
+    #elif HAS_MULTI_HOTEND && HAS_HEATED_BED
956 956
       _draw_bed_status(blink);
957 957
     #elif HAS_PRINT_PROGRESS
958 958
       #define DREW_PRINT_PROGRESS
@@ -1077,7 +1077,7 @@ void MarlinUI::draw_status_screen() {
1077 1077
         if (thermalManager.degTargetBed() > 0) leds |= LED_A;
1078 1078
       #endif
1079 1079
 
1080
-      #if HOTENDS
1080
+      #if HAS_HOTEND
1081 1081
         if (thermalManager.degTargetHotend(0) > 0) leds |= LED_B;
1082 1082
       #endif
1083 1083
 
@@ -1110,7 +1110,7 @@ void MarlinUI::draw_status_screen() {
1110 1110
         ) leds |= LED_C;
1111 1111
       #endif // FAN_COUNT > 0
1112 1112
 
1113
-      #if HOTENDS > 1
1113
+      #if HAS_MULTI_HOTEND
1114 1114
         if (thermalManager.degTargetHotend(1) > 0) leds |= LED_C;
1115 1115
       #endif
1116 1116
 

+ 3
- 3
Marlin/src/lcd/dogm/dogm_Statusscreen.h 파일 보기

@@ -278,7 +278,7 @@
278 278
     //
279 279
     // Status Screen Hotends bitmaps
280 280
     //
281
-    #if HOTENDS
281
+    #if HAS_HOTEND
282 282
 
283 283
       #define STATUS_HOTEND1_WIDTH  16
284 284
 
@@ -1343,7 +1343,7 @@
1343 1343
     #undef STATUS_LOGO_WIDTH
1344 1344
   #endif
1345 1345
 
1346
-  #if (HOTENDS > 1 && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN)
1346
+  #if (HAS_MULTI_HOTEND && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN)
1347 1347
     #define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
1348 1348
     #if STATUS_HOTEND1_WIDTH
1349 1349
       #if HOTENDS > 2
@@ -1474,7 +1474,7 @@
1474 1474
 
1475 1475
     constexpr uint8_t status_hotend_x[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_X, STATUS_HOTEND2_X, STATUS_HOTEND3_X, STATUS_HOTEND4_X, STATUS_HOTEND5_X, STATUS_HOTEND6_X);
1476 1476
     #define STATUS_HOTEND_X(N) status_hotend_x[N]
1477
-  #elif HOTENDS > 1
1477
+  #elif HAS_MULTI_HOTEND
1478 1478
     #define STATUS_HOTEND_X(N) ((N) ? STATUS_HOTEND2_X : STATUS_HOTEND1_X)
1479 1479
   #else
1480 1480
     #define STATUS_HOTEND_X(N) STATUS_HOTEND1_X

+ 5
- 5
Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp 파일 보기

@@ -431,7 +431,7 @@ void ST7920_Lite_Status_Screen::draw_static_elements() {
431 431
 
432 432
   // Draw the static icons in GDRAM
433 433
   draw_gdram_icon(0, 0, nozzle_icon);
434
-  #if HOTENDS > 1
434
+  #if HAS_MULTI_HOTEND
435 435
     draw_gdram_icon(0, 1, nozzle_icon);
436 436
     draw_gdram_icon(0, 2, bed_icon);
437 437
   #else
@@ -584,7 +584,7 @@ void ST7920_Lite_Status_Screen::draw_extruder_2_temp(const int16_t temp, const i
584 584
 #if HAS_HEATED_BED
585 585
   void ST7920_Lite_Status_Screen::draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate) {
586 586
     const bool show_target = target && FAR(temp, target);
587
-    draw_temps(HOTENDS > 1 ? 2 : 1, temp, target, show_target, display_state.bed_show_target != show_target || forceUpdate);
587
+    draw_temps(HAS_MULTI_HOTEND ? 2 : 1, temp, target, show_target, display_state.bed_show_target != show_target || forceUpdate);
588 588
     display_state.bed_show_target = show_target;
589 589
   }
590 590
 #endif
@@ -704,7 +704,7 @@ bool ST7920_Lite_Status_Screen::indicators_changed() {
704 704
   const uint16_t   feedrate_perc     = feedrate_percentage;
705 705
   const uint16_t   fs                = thermalManager.scaledFanSpeed(0);
706 706
   const int16_t    extruder_1_target = thermalManager.degTargetHotend(0);
707
-  #if HOTENDS > 1
707
+  #if HAS_MULTI_HOTEND
708 708
     const int16_t  extruder_2_target = thermalManager.degTargetHotend(1);
709 709
   #endif
710 710
   #if HAS_HEATED_BED
@@ -731,7 +731,7 @@ void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) {
731 731
     const uint16_t   feedrate_perc     = feedrate_percentage;
732 732
     const int16_t    extruder_1_temp   = thermalManager.degHotend(0),
733 733
                      extruder_1_target = thermalManager.degTargetHotend(0);
734
-    #if HOTENDS > 1
734
+    #if HAS_MULTI_HOTEND
735 735
       const int16_t  extruder_2_temp   = thermalManager.degHotend(1),
736 736
                      extruder_2_target = thermalManager.degTargetHotend(1);
737 737
     #endif
@@ -741,7 +741,7 @@ void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) {
741 741
     #endif
742 742
 
743 743
     draw_extruder_1_temp(extruder_1_temp, extruder_1_target, forceUpdate);
744
-    #if HOTENDS > 1
744
+    #if HAS_MULTI_HOTEND
745 745
       draw_extruder_2_temp(extruder_2_temp, extruder_2_target, forceUpdate);
746 746
     #endif
747 747
     #if HAS_HEATED_BED

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/advanced_settings_menu.cpp 파일 보기

@@ -115,7 +115,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
115 115
       )
116 116
       .tag(14).button( TMC_HOMING_THRS_POS,    GET_TEXT_F(MSG_TMC_HOMING_THRS))
117 117
       .enabled(
118
-        #if HOTENDS > 1
118
+        #if HAS_MULTI_HOTEND
119 119
           1
120 120
         #endif
121 121
       )
@@ -157,7 +157,7 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) {
157 157
     case 2:  GOTO_SCREEN(ZOffsetScreen);              break;
158 158
     #endif
159 159
     case 3:  GOTO_SCREEN(StepsScreen);                break;
160
-    #if HOTENDS > 1
160
+    #if HAS_MULTI_HOTEND
161 161
     case 4:  GOTO_SCREEN(NozzleOffsetScreen);         break;
162 162
     #endif
163 163
     case 5:  GOTO_SCREEN(MaxVelocityScreen);          break;

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/bio_advanced_settings.cpp 파일 보기

@@ -58,7 +58,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
58 58
       .tag(4) .button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_HOMING_THRS))
59 59
       .tag(5) .button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
60 60
       .enabled(
61
-        #if HOTENDS > 1
61
+        #if HAS_MULTI_HOTEND
62 62
           1
63 63
         #endif
64 64
       )
@@ -105,7 +105,7 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) {
105 105
     case 4: GOTO_SCREEN(StepperBumpSensitivityScreen);     break;
106 106
     #endif
107 107
     case 5: GOTO_SCREEN(EndstopStatesScreen);              break;
108
-    #if HOTENDS > 1
108
+    #if HAS_MULTI_HOTEND
109 109
     case 6: GOTO_SCREEN(NozzleOffsetScreen);               break;
110 110
     #endif
111 111
 

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/change_filament_screen.cpp 파일 보기

@@ -172,8 +172,8 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
172 172
     const bool tog3  = screen_data.ChangeFilamentScreen.t_tag == 3;
173 173
     const bool tog4  = screen_data.ChangeFilamentScreen.t_tag == 4;
174 174
     const bool tog10 = screen_data.ChangeFilamentScreen.e_tag == 10;
175
-    #if HOTENDS > 1
176
-    const bool tog11 = screen_data.ChangeFilamentScreen.e_tag == 11;
175
+    #if HAS_MULTI_HOTEND
176
+      const bool tog11 = screen_data.ChangeFilamentScreen.e_tag == 11;
177 177
     #endif
178 178
 
179 179
     #ifdef TOUCH_UI_PORTRAIT

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/nozzle_offsets_screen.cpp 파일 보기

@@ -22,7 +22,7 @@
22 22
 
23 23
 #include "../config.h"
24 24
 
25
-#if ENABLED(TOUCH_UI_FTDI_EVE) && HOTENDS > 1
25
+#if ENABLED(TOUCH_UI_FTDI_EVE) && HAS_MULTI_HOTEND
26 26
 
27 27
 #include "screens.h"
28 28
 

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/nudge_nozzle_screen.cpp 파일 보기

@@ -72,7 +72,7 @@ void NudgeNozzleScreen::onRedraw(draw_mode_t what) {
72 72
         w.text_field(0, GET_TEXT_F(MSG_ZPROBE_ZOFFSET), str);
73 73
       #endif
74 74
 
75
-      #if HOTENDS > 1
75
+      #if HAS_MULTI_HOTEND
76 76
         format_position(str, getNozzleOffset_mm(X, E1), getNozzleOffset_mm(Y, E1), getNozzleOffset_mm(Z, E1));
77 77
         w.text_field(0, GET_TEXT_F(MSG_OFFSETS_MENU), str);
78 78
       #endif

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.cpp 파일 보기

@@ -68,7 +68,7 @@ SCREEN_TABLE {
68 68
 #if HAS_BED_PROBE
69 69
   DECL_SCREEN(ZOffsetScreen),
70 70
 #endif
71
-#if HOTENDS > 1
71
+#if HAS_MULTI_HOTEND
72 72
   DECL_SCREEN(NozzleOffsetScreen),
73 73
 #endif
74 74
 #if ENABLED(BACKLASH_GCODE)

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.h 파일 보기

@@ -514,7 +514,7 @@ class StepsScreen : public BaseNumericAdjustmentScreen, public CachedScreen<STEP
514 514
   };
515 515
 #endif
516 516
 
517
-#if HOTENDS > 1
517
+#if HAS_MULTI_HOTEND
518 518
   class NozzleOffsetScreen : public BaseNumericAdjustmentScreen, public CachedScreen<NOZZLE_OFFSET_SCREEN_CACHE> {
519 519
     public:
520 520
       static void onEntry();

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/temperature_screen.cpp 파일 보기

@@ -78,7 +78,7 @@ bool TemperatureScreen::onTouchHeld(uint8_t tag) {
78 78
       case  2: UI_DECREMENT(TargetTemp_celsius, E0); break;
79 79
       case  3: UI_INCREMENT(TargetTemp_celsius, E0); break;
80 80
     #endif
81
-    #if HOTENDS > 1
81
+    #if HAS_MULTI_HOTEND
82 82
       case  4: UI_DECREMENT(TargetTemp_celsius, E1); break;
83 83
       case  5: UI_INCREMENT(TargetTemp_celsius, E1); break;
84 84
     #endif

+ 4
- 4
Marlin/src/lcd/extui/ui_api.cpp 파일 보기

@@ -192,7 +192,7 @@ namespace ExtUI {
192 192
           case CHAMBER: return; // Chamber has no idle timer
193 193
         #endif
194 194
         default:
195
-          #if HOTENDS
195
+          #if HAS_HOTEND
196 196
             thermalManager.reset_hotend_idle_timer(heater - H0);
197 197
           #endif
198 198
           break;
@@ -258,7 +258,7 @@ namespace ExtUI {
258 258
           case CHAMBER: return false; // Chamber has no idle timer
259 259
         #endif
260 260
         default:
261
-          #if HOTENDS
261
+          #if HAS_HOTEND
262 262
             return thermalManager.hotend_idle[heater - H0].timed_out;
263 263
           #else
264 264
             return false;
@@ -985,7 +985,7 @@ namespace ExtUI {
985 985
       else
986 986
     #endif
987 987
       {
988
-        #if HOTENDS
988
+        #if HAS_HOTEND
989 989
           static constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
990 990
           const int16_t e = heater - H0;
991 991
           thermalManager.setTargetHotend(LROUND(constrain(value, 0, heater_maxtemp[e] - 15)), e);
@@ -997,7 +997,7 @@ namespace ExtUI {
997 997
     #ifdef TOUCH_UI_LCD_TEMP_SCALING
998 998
       value *= TOUCH_UI_LCD_TEMP_SCALING;
999 999
     #endif
1000
-    #if HOTENDS
1000
+    #if HAS_HOTEND
1001 1001
       constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
1002 1002
       const int16_t e = extruder - E0;
1003 1003
       enableHeater(extruder);

+ 1
- 1
Marlin/src/lcd/menu/menu.h 파일 보기

@@ -29,7 +29,7 @@
29 29
 
30 30
 extern int8_t encoderLine, encoderTopLine, screen_items;
31 31
 
32
-#if HOTENDS
32
+#if HAS_HOTEND
33 33
   constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
34 34
 #endif
35 35
 

+ 3
- 3
Marlin/src/lcd/menu/menu_advanced.cpp 파일 보기

@@ -233,9 +233,9 @@ void menu_cancelobject();
233 233
   #define DEFINE_PIDTEMP_FUNCS(N) _DEFINE_PIDTEMP_BASE_FUNCS(N);
234 234
 #endif
235 235
 
236
-#if HOTENDS
236
+#if HAS_HOTEND
237 237
   DEFINE_PIDTEMP_FUNCS(0);
238
-  #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
238
+  #if HAS_MULTI_HOTEND && ENABLED(PID_PARAMS_PER_HOTEND)
239 239
     REPEAT_S(1, HOTENDS, DEFINE_PIDTEMP_FUNCS)
240 240
   #endif
241 241
 #endif
@@ -308,7 +308,7 @@ void menu_cancelobject();
308 308
     #endif
309 309
 
310 310
     PID_EDIT_MENU_ITEMS(0);
311
-    #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
311
+    #if HAS_MULTI_HOTEND && ENABLED(PID_PARAMS_PER_HOTEND)
312 312
       REPEAT_S(1, HOTENDS, PID_EDIT_MENU_ITEMS)
313 313
     #endif
314 314
 

+ 6
- 6
Marlin/src/lcd/menu/menu_temperature.cpp 파일 보기

@@ -48,7 +48,7 @@ uint8_t MarlinUI::preheat_fan_speed[2];
48 48
 //
49 49
 
50 50
 void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb, const uint8_t fan) {
51
-  #if HOTENDS
51
+  #if HAS_HOTEND
52 52
     if (temph > 0) thermalManager.setTargetHotend(_MIN(heater_maxtemp[endnum] - 15, temph), endnum);
53 53
   #endif
54 54
   #if HAS_HEATED_BED
@@ -107,7 +107,7 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
107 107
       #else
108 108
         ACTION_ITEM(MSG_PREHEAT_1, []{ _preheat_end(0, 0); });
109 109
       #endif
110
-    #elif HOTENDS > 1
110
+    #elif HAS_MULTI_HOTEND
111 111
       #if HAS_HEATED_BED
112 112
         _PREHEAT_ITEMS(1,0);
113 113
       #endif
@@ -118,7 +118,7 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
118 118
         #endif
119 119
         HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], e);
120 120
       });
121
-    #endif // HOTENDS > 1
121
+    #endif // HAS_MULTI_HOTEND
122 122
     #if HAS_HEATED_BED
123 123
       ACTION_ITEM(MSG_PREHEAT_1_BEDONLY, []{ _preheat_bed(0); });
124 124
     #endif
@@ -135,7 +135,7 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
135 135
       #else
136 136
         ACTION_ITEM(MSG_PREHEAT_2, []{ _preheat_end(1, 0); });
137 137
       #endif
138
-    #elif HOTENDS > 1
138
+    #elif HAS_MULTI_HOTEND
139 139
       #if HAS_HEATED_BED
140 140
         _PREHEAT_ITEMS(2,0);
141 141
       #endif
@@ -146,7 +146,7 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
146 146
         #endif
147 147
         HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], e);
148 148
       });
149
-    #endif // HOTENDS > 1
149
+    #endif // HAS_MULTI_HOTEND
150 150
     #if HAS_HEATED_BED
151 151
       ACTION_ITEM(MSG_PREHEAT_2_BEDONLY, []{ _preheat_bed(1); });
152 152
     #endif
@@ -171,7 +171,7 @@ void menu_temperature() {
171 171
   //
172 172
   #if HOTENDS == 1
173 173
     EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, []{ thermalManager.start_watching_hotend(0); });
174
-  #elif HOTENDS > 1
174
+  #elif HAS_MULTI_HOTEND
175 175
     HOTEND_LOOP()
176 176
       EDIT_ITEM_FAST_N(int3, e, MSG_NOZZLE_N, &thermalManager.temp_hotend[e].target, 0, heater_maxtemp[e] - 15, []{ thermalManager.start_watching_hotend(MenuItemBase::itemIndex); });
177 177
   #endif

+ 1
- 1
Marlin/src/lcd/menu/menu_tune.cpp 파일 보기

@@ -127,7 +127,7 @@ void menu_tune() {
127 127
   //
128 128
   #if HOTENDS == 1
129 129
     EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, []{ thermalManager.start_watching_hotend(0); });
130
-  #elif HOTENDS > 1
130
+  #elif HAS_MULTI_HOTEND
131 131
     HOTEND_LOOP()
132 132
       EDIT_ITEM_FAST_N(int3, e, MSG_NOZZLE_N, &thermalManager.temp_hotend[e].target, 0, heater_maxtemp[e] - 15, []{ thermalManager.start_watching_hotend(MenuItemBase::itemIndex); });
133 133
   #endif

+ 1
- 1
Marlin/src/module/configuration_store.cpp 파일 보기

@@ -3194,7 +3194,7 @@ void MarlinSettings::reset() {
3194 3194
         HOTEND_LOOP() {
3195 3195
           CONFIG_ECHO_START();
3196 3196
           SERIAL_ECHOPAIR_P(
3197
-            #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
3197
+            #if HAS_MULTI_HOTEND && ENABLED(PID_PARAMS_PER_HOTEND)
3198 3198
               PSTR("  M301 E"), e,
3199 3199
               SP_P_STR
3200 3200
             #else

+ 27
- 27
Marlin/src/module/temperature.cpp 파일 보기

@@ -140,7 +140,7 @@ const char str_t_thermal_runaway[] PROGMEM = STR_T_THERMAL_RUNAWAY,
140 140
   bool Temperature::adaptive_fan_slowing = true;
141 141
 #endif
142 142
 
143
-#if HOTENDS
143
+#if HAS_HOTEND
144 144
   hotend_info_t Temperature::temp_hotend[HOTEND_TEMPS]; // = { 0 }
145 145
 #endif
146 146
 
@@ -298,7 +298,7 @@ volatile bool Temperature::raw_temps_ready = false;
298 298
 
299 299
 #define TEMPDIR(N) ((HEATER_##N##_RAW_LO_TEMP) < (HEATER_##N##_RAW_HI_TEMP) ? 1 : -1)
300 300
 
301
-#if HOTENDS
301
+#if HAS_HOTEND
302 302
   // Init mintemp and maxtemp with extreme values to prevent false errors during startup
303 303
   constexpr temp_range_t sensor_heater_0 { HEATER_0_RAW_LO_TEMP, HEATER_0_RAW_HI_TEMP, 0, 16383 },
304 304
                          sensor_heater_1 { HEATER_1_RAW_LO_TEMP, HEATER_1_RAW_HI_TEMP, 0, 16383 },
@@ -655,7 +655,7 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
655 655
     #endif
656 656
     default:
657 657
       return (0
658
-        #if HOTENDS
658
+        #if HAS_HOTEND
659 659
           + temp_hotend[heater_id].soft_pwm_amount
660 660
         #endif
661 661
       );
@@ -672,7 +672,7 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
672 672
     #define _EFAN(B,A) _EFANOVERLAP(A,B) ? B :
673 673
     static const uint8_t fanBit[] PROGMEM = {
674 674
       0
675
-      #if HOTENDS > 1
675
+      #if HAS_MULTI_HOTEND
676 676
         #define _NEXT_FAN(N) , REPEAT2(N,_EFAN,N) N
677 677
         RREPEAT_S(1, HOTENDS, _NEXT_FAN)
678 678
       #endif
@@ -821,7 +821,7 @@ void Temperature::min_temp_error(const heater_ind_t heater) {
821 821
   _temp_error(heater, PSTR(STR_T_MINTEMP), GET_TEXT(MSG_ERR_MINTEMP));
822 822
 }
823 823
 
824
-#if HOTENDS
824
+#if HAS_HOTEND
825 825
   #if ENABLED(PID_DEBUG)
826 826
     extern bool pid_debug_flag;
827 827
   #endif
@@ -1036,7 +1036,7 @@ void Temperature::manage_heater() {
1036 1036
 
1037 1037
   millis_t ms = millis();
1038 1038
 
1039
-  #if HOTENDS
1039
+  #if HAS_HOTEND
1040 1040
 
1041 1041
     HOTEND_LOOP() {
1042 1042
       #if ENABLED(THERMAL_PROTECTION_HOTENDS)
@@ -1384,7 +1384,7 @@ void Temperature::manage_heater() {
1384 1384
   }
1385 1385
 #endif
1386 1386
 
1387
-#if HOTENDS
1387
+#if HAS_HOTEND
1388 1388
   // Derived from RepRap FiveD extruder::getTemperature()
1389 1389
   // For hot end temperature measurement.
1390 1390
   float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) {
@@ -1575,7 +1575,7 @@ void Temperature::updateTemperaturesFromRawValues() {
1575 1575
   #if ENABLED(HEATER_1_USES_MAX6675)
1576 1576
     temp_hotend[1].raw = READ_MAX6675(1);
1577 1577
   #endif
1578
-  #if HOTENDS
1578
+  #if HAS_HOTEND
1579 1579
     HOTEND_LOOP() temp_hotend[e].celsius = analog_to_celsius_hotend(temp_hotend[e].raw, e);
1580 1580
   #endif
1581 1581
   #if HAS_HEATED_BED
@@ -1836,7 +1836,7 @@ void Temperature::init() {
1836 1836
   // Wait for temperature measurement to settle
1837 1837
   delay(250);
1838 1838
 
1839
-  #if HOTENDS
1839
+  #if HAS_HOTEND
1840 1840
 
1841 1841
     #define _TEMP_MIN_E(NR) do{ \
1842 1842
       temp_range[NR].mintemp = HEATER_ ##NR## _MINTEMP; \
@@ -1855,7 +1855,7 @@ void Temperature::init() {
1855 1855
     #ifdef HEATER_0_MAXTEMP
1856 1856
       _TEMP_MAX_E(0);
1857 1857
     #endif
1858
-    #if HOTENDS > 1
1858
+    #if HAS_MULTI_HOTEND
1859 1859
       #ifdef HEATER_1_MINTEMP
1860 1860
         _TEMP_MIN_E(1);
1861 1861
       #endif
@@ -1910,7 +1910,7 @@ void Temperature::init() {
1910 1910
           #endif // HOTENDS > 4
1911 1911
         #endif // HOTENDS > 3
1912 1912
       #endif // HOTENDS > 2
1913
-    #endif // HOTENDS > 1
1913
+    #endif // HAS_MULTI_HOTEND
1914 1914
 
1915 1915
   #endif // HOTENDS
1916 1916
 
@@ -2070,7 +2070,7 @@ void Temperature::disable_all_heaters() {
2070 2070
     planner.autotemp_enabled = false;
2071 2071
   #endif
2072 2072
 
2073
-  #if HOTENDS
2073
+  #if HAS_HOTEND
2074 2074
     HOTEND_LOOP() setTargetHotend(0, e);
2075 2075
   #endif
2076 2076
 
@@ -2113,7 +2113,7 @@ void Temperature::disable_all_heaters() {
2113 2113
 #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
2114 2114
 
2115 2115
   bool Temperature::over_autostart_threshold() {
2116
-    #if HOTENDS
2116
+    #if HAS_HOTEND
2117 2117
       HOTEND_LOOP() if (degTargetHotend(e) > (EXTRUDE_MINTEMP) / 2) return true;
2118 2118
     #endif
2119 2119
     #if HAS_HEATED_BED
@@ -2358,7 +2358,7 @@ void Temperature::readings_ready() {
2358 2358
     filwidth.reading_ready();
2359 2359
   #endif
2360 2360
 
2361
-  #if HOTENDS
2361
+  #if HAS_HOTEND
2362 2362
     HOTEND_LOOP() temp_hotend[e].reset();
2363 2363
     #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
2364 2364
       temp_hotend[1].reset();
@@ -2387,7 +2387,7 @@ void Temperature::readings_ready() {
2387 2387
     joystick.z.reset();
2388 2388
   #endif
2389 2389
 
2390
-  #if HOTENDS
2390
+  #if HAS_HOTEND
2391 2391
 
2392 2392
     static constexpr int8_t temp_dir[] = {
2393 2393
       #if ENABLED(HEATER_0_USES_MAX6675)
@@ -2395,7 +2395,7 @@ void Temperature::readings_ready() {
2395 2395
       #else
2396 2396
         TEMPDIR(0)
2397 2397
       #endif
2398
-      #if HOTENDS > 1
2398
+      #if HAS_MULTI_HOTEND
2399 2399
         #define _TEMPDIR(N) , TEMPDIR(N)
2400 2400
         #if ENABLED(HEATER_1_USES_MAX6675)
2401 2401
           , 0
@@ -2405,7 +2405,7 @@ void Temperature::readings_ready() {
2405 2405
         #if HOTENDS > 2
2406 2406
           REPEAT_S(2, HOTENDS, _TEMPDIR)
2407 2407
         #endif // HOTENDS > 2
2408
-      #endif // HOTENDS > 1
2408
+      #endif // HAS_MULTI_HOTEND
2409 2409
     };
2410 2410
 
2411 2411
     LOOP_L_N(e, COUNT(temp_dir)) {
@@ -2531,7 +2531,7 @@ void Temperature::tick() {
2531 2531
     static bool ADCKey_pressed = false;
2532 2532
   #endif
2533 2533
 
2534
-  #if HOTENDS
2534
+  #if HAS_HOTEND
2535 2535
     static SoftPWM soft_pwm_hotend[HOTENDS];
2536 2536
   #endif
2537 2537
 
@@ -2565,7 +2565,7 @@ void Temperature::tick() {
2565 2565
     if (pwm_count_tmp >= 127) {
2566 2566
       pwm_count_tmp -= 127;
2567 2567
 
2568
-      #if HOTENDS
2568
+      #if HAS_HOTEND
2569 2569
         #define _PWM_MOD_E(N) _PWM_MOD(N,soft_pwm_hotend[N],temp_hotend[N]);
2570 2570
         REPEAT(HOTENDS, _PWM_MOD_E);
2571 2571
       #endif
@@ -2612,7 +2612,7 @@ void Temperature::tick() {
2612 2612
     }
2613 2613
     else {
2614 2614
       #define _PWM_LOW(N,S) do{ if (S.count <= pwm_count_tmp) WRITE_HEATER_##N(LOW); }while(0)
2615
-      #if HOTENDS
2615
+      #if HAS_HOTEND
2616 2616
         #define _PWM_LOW_E(N) _PWM_LOW(N, soft_pwm_hotend[N]);
2617 2617
         REPEAT(HOTENDS, _PWM_LOW_E);
2618 2618
       #endif
@@ -2678,7 +2678,7 @@ void Temperature::tick() {
2678 2678
 
2679 2679
     if (slow_pwm_count == 0) {
2680 2680
 
2681
-      #if HOTENDS
2681
+      #if HAS_HOTEND
2682 2682
         #define _SLOW_PWM_E(N) _SLOW_PWM(N, soft_pwm_hotend[N], temp_hotend[N]);
2683 2683
         REPEAT(HOTENDS, _SLOW_PWM_E);
2684 2684
       #endif
@@ -2689,7 +2689,7 @@ void Temperature::tick() {
2689 2689
 
2690 2690
     } // slow_pwm_count == 0
2691 2691
 
2692
-    #if HOTENDS
2692
+    #if HAS_HOTEND
2693 2693
       #define _PWM_OFF_E(N) _PWM_OFF(N, soft_pwm_hotend[N]);
2694 2694
       REPEAT(HOTENDS, _PWM_OFF_E);
2695 2695
     #endif
@@ -2772,7 +2772,7 @@ void Temperature::tick() {
2772 2772
       slow_pwm_count++;
2773 2773
       slow_pwm_count &= 0x7F;
2774 2774
 
2775
-      #if HOTENDS
2775
+      #if HAS_HOTEND
2776 2776
         HOTEND_LOOP() soft_pwm_hotend[e].dec();
2777 2777
       #endif
2778 2778
       #if HAS_HEATED_BED
@@ -2990,7 +2990,7 @@ void Temperature::tick() {
2990 2990
     }
2991 2991
     SERIAL_CHAR(' ');
2992 2992
     SERIAL_CHAR(k);
2993
-    #if HOTENDS > 1
2993
+    #if HAS_MULTI_HOTEND
2994 2994
       if (e >= 0) SERIAL_CHAR('0' + e);
2995 2995
     #endif
2996 2996
     SERIAL_CHAR(':');
@@ -3052,7 +3052,7 @@ void Temperature::tick() {
3052 3052
         , H_PROBE
3053 3053
       );
3054 3054
     #endif // HAS_TEMP_PROBE
3055
-    #if HOTENDS > 1
3055
+    #if HAS_MULTI_HOTEND
3056 3056
       HOTEND_LOOP() print_heater_state(degHotend(e), degTargetHotend(e)
3057 3057
         #if ENABLED(SHOW_TEMP_ADC_VALUES)
3058 3058
           , rawHotendTemp(e)
@@ -3067,7 +3067,7 @@ void Temperature::tick() {
3067 3067
     #if HAS_HEATED_CHAMBER
3068 3068
       SERIAL_ECHOPAIR(" C@:", getHeaterPower(H_CHAMBER));
3069 3069
     #endif
3070
-    #if HOTENDS > 1
3070
+    #if HAS_MULTI_HOTEND
3071 3071
       HOTEND_LOOP() {
3072 3072
         SERIAL_ECHOPAIR(" @", e);
3073 3073
         SERIAL_CHAR(':');
@@ -3096,7 +3096,7 @@ void Temperature::tick() {
3096 3096
     void Temperature::set_heating_message(const uint8_t e) {
3097 3097
       const bool heating = isHeatingHotend(e);
3098 3098
       ui.status_printf_P(0,
3099
-        #if HOTENDS > 1
3099
+        #if HAS_MULTI_HOTEND
3100 3100
           PSTR("E%c " S_FMT), '1' + e
3101 3101
         #else
3102 3102
           PSTR("E " S_FMT)

+ 3
- 3
Marlin/src/module/temperature.h 파일 보기

@@ -317,12 +317,12 @@ class Temperature {
317 317
 
318 318
   public:
319 319
 
320
-    #if HOTENDS
321 320
       #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
322 321
         #define HOTEND_TEMPS (HOTENDS + 1)
323 322
       #else
324 323
         #define HOTEND_TEMPS HOTENDS
325 324
       #endif
325
+    #if HAS_HOTEND
326 326
       static hotend_info_t temp_hotend[HOTEND_TEMPS];
327 327
     #endif
328 328
     #if HAS_HEATED_BED
@@ -496,7 +496,7 @@ class Temperature {
496 496
       }
497 497
     #endif
498 498
 
499
-    #if HOTENDS
499
+    #if HAS_HOTEND
500 500
       static float analog_to_celsius_hotend(const int raw, const uint8_t e);
501 501
     #endif
502 502
 
@@ -624,7 +624,7 @@ class Temperature {
624 624
       static inline void start_watching_hotend(const uint8_t=0) {}
625 625
     #endif
626 626
 
627
-    #if HOTENDS
627
+    #if HAS_HOTEND
628 628
 
629 629
       static void setTargetHotend(const int16_t celsius, const uint8_t E_NAME) {
630 630
         const uint8_t ee = HOTEND_INDEX;

+ 1
- 1
Marlin/src/pins/linux/pins_RAMPS_LINUX.h 파일 보기

@@ -142,7 +142,7 @@
142 142
 // Augmentation for auto-assigning RAMPS plugs
143 143
 //
144 144
 #if NONE(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
145
-  #if HOTENDS > 1
145
+  #if HAS_MULTI_HOTEND
146 146
     #if TEMP_SENSOR_BED
147 147
       #define IS_RAMPS_EEB
148 148
     #else

+ 1
- 1
Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h 파일 보기

@@ -184,7 +184,7 @@
184 184
 // Augmentation for auto-assigning RAMPS plugs
185 185
 //
186 186
 #if NONE(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
187
-  #if HOTENDS > 1
187
+  #if HAS_MULTI_HOTEND
188 188
     #if TEMP_SENSOR_BED
189 189
       #define IS_RAMPS_EEB
190 190
     #else

+ 1
- 1
Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h 파일 보기

@@ -159,7 +159,7 @@
159 159
 #define HBP_PIN                               45  // L4
160 160
 #define EXTRA_FET_PIN                         44  // L5
161 161
 
162
-#if HOTENDS > 1
162
+#if HAS_MULTI_HOTEND
163 163
   #if TEMP_SENSOR_BED
164 164
     #define IS_EEB
165 165
   #else

+ 1
- 1
Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h 파일 보기

@@ -124,7 +124,7 @@
124 124
 // Augmentation for auto-assigning RAMPS plugs
125 125
 //
126 126
 #if NONE(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
127
-  #if HOTENDS > 1
127
+  #if HAS_MULTI_HOTEND
128 128
     #if TEMP_SENSOR_BED
129 129
       #define IS_RAMPS_EEB
130 130
     #else

+ 1
- 1
Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h 파일 보기

@@ -130,7 +130,7 @@
130 130
 // Augmentation for auto-assigning RAMPS plugs
131 131
 //
132 132
 #if NONE(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
133
-  #if HOTENDS > 1
133
+  #if HAS_MULTI_HOTEND
134 134
     #if TEMP_SENSOR_BED
135 135
       #define IS_RAMPS_EEB
136 136
     #else

+ 1
- 1
Marlin/src/pins/ramps/pins_RAMPS.h 파일 보기

@@ -180,7 +180,7 @@
180 180
 // Augmentation for auto-assigning RAMPS plugs
181 181
 //
182 182
 #if NONE(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
183
-  #if HOTENDS > 1
183
+  #if HAS_MULTI_HOTEND
184 184
     #if TEMP_SENSOR_BED
185 185
       #define IS_RAMPS_EEB
186 186
     #else

+ 2
- 2
Marlin/src/pins/ramps/pins_TRIGORILLA_14.h 파일 보기

@@ -59,7 +59,7 @@
59 59
 
60 60
 #define RAMPS_D10_PIN            TG_HEATER_0_PIN  // HEATER_0_PIN is always RAMPS_D10_PIN in pins_RAMPS.h
61 61
 
62
-#if HOTENDS > 1                                   // EEF and EEB
62
+#if HAS_MULTI_HOTEND                                   // EEF and EEB
63 63
   #define RAMPS_D9_PIN           TG_HEATER_1_PIN
64 64
   #if !TEMP_SENSOR_BED
65 65
     // EEF
@@ -79,7 +79,7 @@
79 79
   #define RAMPS_D8_PIN               TG_FAN0_PIN
80 80
 #endif
81 81
 
82
-#if HOTENDS > 1 || TEMP_SENSOR_BED                // EEF, EEB, EFB
82
+#if HAS_MULTI_HOTEND || TEMP_SENSOR_BED                // EEF, EEB, EFB
83 83
   #define FAN1_PIN                   TG_FAN1_PIN
84 84
 #endif
85 85
 #define FAN2_PIN                     TG_FAN2_PIN

+ 3
- 3
Marlin/src/pins/sensitive_pins.h 파일 보기

@@ -423,10 +423,10 @@
423 423
 #define _H6_PINS
424 424
 #define _H7_PINS
425 425
 
426
-#if HOTENDS
426
+#if HAS_HOTEND
427 427
   #undef _H0_PINS
428 428
   #define _H0_PINS HEATER_0_PIN, E0_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_0_PIN),
429
-  #if HOTENDS > 1
429
+  #if HAS_MULTI_HOTEND
430 430
     #undef _H1_PINS
431 431
     #define _H1_PINS HEATER_1_PIN, E1_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_1_PIN),
432 432
     #if HOTENDS > 2
@@ -453,7 +453,7 @@
453 453
         #endif // HOTENDS > 4
454 454
       #endif // HOTENDS > 3
455 455
     #endif // HOTENDS > 2
456
-  #endif // HOTENDS > 1
456
+  #endif // HAS_MULTI_HOTEND
457 457
 #endif // HOTENDS
458 458
 
459 459
 //

Loading…
취소
저장