Browse Source

🔧 Clarify axis disable / timeout (#25571)

Scott Lahteine 1 year ago
parent
commit
61f22f34d3

+ 2 - 2
Marlin/Configuration.h

@@ -1710,8 +1710,8 @@
 
 // @section extruder
 
-//#define DISABLE_E                 // Disable the extruder when not stepping
-#define DISABLE_INACTIVE_EXTRUDER   // Keep only the active extruder enabled
+//#define DISABLE_E               // Disable the extruder when not stepping
+#define DISABLE_OTHER_EXTRUDERS   // Keep only the active extruder enabled
 
 // @section motion
 

+ 13 - 12
Marlin/Configuration_adv.h

@@ -1146,19 +1146,20 @@
 
 /**
  * Idle Stepper Shutdown
- * Enable DISABLE_INACTIVE_* to shut down axis steppers after an idle period.
- * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout.
+ * Enable DISABLE_IDLE_* to shut down axis steppers after an idle period.
+ * The default timeout duration can be overridden with M18 and M84. Set to 0 for No Timeout.
  */
-#define DEFAULT_STEPPER_DEACTIVE_TIME 120
-#define DISABLE_INACTIVE_X
-#define DISABLE_INACTIVE_Y
-#define DISABLE_INACTIVE_Z  // Disable if the nozzle could fall onto your printed part!
-//#define DISABLE_INACTIVE_I
-//#define DISABLE_INACTIVE_J
-//#define DISABLE_INACTIVE_K
-//#define DISABLE_INACTIVE_U
-//#define DISABLE_INACTIVE_V
-//#define DISABLE_INACTIVE_W
+#define DEFAULT_STEPPER_TIMEOUT_SEC 120
+#define DISABLE_IDLE_X
+#define DISABLE_IDLE_Y
+#define DISABLE_IDLE_Z    // Disable if the nozzle could fall onto your printed part!
+//#define DISABLE_IDLE_I
+//#define DISABLE_IDLE_J
+//#define DISABLE_IDLE_K
+//#define DISABLE_IDLE_U
+//#define DISABLE_IDLE_V
+//#define DISABLE_IDLE_W
+#define DISABLE_IDLE_E    // Shut down all idle extruders
 
 // Default Minimum Feedrates for printing and travel moves
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // (mm/s. °/s for rotational-only moves) Minimum feedrate. Set with M205 S.

+ 6 - 6
Marlin/config.ini

@@ -127,7 +127,7 @@ busy_while_heating                       = on
 default_ejerk                            = 5.0
 default_keepalive_interval               = 2
 default_leveling_fade_height             = 0.0
-disable_inactive_extruder                = on
+disable_other_extruders                  = on
 display_charset_hd44780                  = JAPANESE
 eeprom_boot_silent                       = on
 eeprom_chitchat                          = on
@@ -176,12 +176,12 @@ auto_report_temperatures                 = on
 autotemp                                 = on
 autotemp_oldweight                       = 0.98
 bed_check_interval                       = 5000
-default_stepper_deactive_time            = 120
+default_stepper_timeout_sec              = 120
 default_volumetric_extruder_limit        = 0.00
-disable_inactive_extruder                = true
-disable_inactive_x                       = true
-disable_inactive_y                       = true
-disable_inactive_z                       = true
+disable_idle_x                           = on
+disable_idle_y                           = on
+disable_idle_z                           = on
+disable_idle_e                           = on
 e0_auto_fan_pin                          = -1
 encoder_100x_steps_per_sec               = 80
 encoder_10x_steps_per_sec                = 30

+ 11 - 11
Marlin/src/MarlinCore.cpp

@@ -429,7 +429,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
   if (has_blocks) gcode.reset_stepper_timeout(ms);      // Reset timeout for M18/M84, M85 max 'kill', and laser.
 
   // M18 / M84 : Handle steppers inactive time timeout
-  #if HAS_DISABLE_INACTIVE_AXIS
+  #if HAS_DISABLE_IDLE_AXES
     if (gcode.stepper_inactive_time) {
 
       static bool already_shutdown_steppers; // = false
@@ -439,16 +439,16 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
           already_shutdown_steppers = true;
 
           // Individual axes will be disabled if configured
-          TERN_(DISABLE_INACTIVE_X, stepper.disable_axis(X_AXIS));
-          TERN_(DISABLE_INACTIVE_Y, stepper.disable_axis(Y_AXIS));
-          TERN_(DISABLE_INACTIVE_Z, stepper.disable_axis(Z_AXIS));
-          TERN_(DISABLE_INACTIVE_I, stepper.disable_axis(I_AXIS));
-          TERN_(DISABLE_INACTIVE_J, stepper.disable_axis(J_AXIS));
-          TERN_(DISABLE_INACTIVE_K, stepper.disable_axis(K_AXIS));
-          TERN_(DISABLE_INACTIVE_U, stepper.disable_axis(U_AXIS));
-          TERN_(DISABLE_INACTIVE_V, stepper.disable_axis(V_AXIS));
-          TERN_(DISABLE_INACTIVE_W, stepper.disable_axis(W_AXIS));
-          TERN_(DISABLE_INACTIVE_EXTRUDER, stepper.disable_e_steppers());
+          TERN_(DISABLE_IDLE_X, stepper.disable_axis(X_AXIS));
+          TERN_(DISABLE_IDLE_Y, stepper.disable_axis(Y_AXIS));
+          TERN_(DISABLE_IDLE_Z, stepper.disable_axis(Z_AXIS));
+          TERN_(DISABLE_IDLE_I, stepper.disable_axis(I_AXIS));
+          TERN_(DISABLE_IDLE_J, stepper.disable_axis(J_AXIS));
+          TERN_(DISABLE_IDLE_K, stepper.disable_axis(K_AXIS));
+          TERN_(DISABLE_IDLE_U, stepper.disable_axis(U_AXIS));
+          TERN_(DISABLE_IDLE_V, stepper.disable_axis(V_AXIS));
+          TERN_(DISABLE_IDLE_W, stepper.disable_axis(W_AXIS));
+          TERN_(DISABLE_IDLE_E, stepper.disable_e_steppers());
 
           TERN_(AUTO_BED_LEVELING_UBL, bedlevel.steppers_were_disabled());
         }

+ 1 - 1
Marlin/src/gcode/control/M17_M18_M84.cpp

@@ -212,7 +212,7 @@ void try_to_disable(const stepper_flags_t to_disable) {
 void GcodeSuite::M18_M84() {
   if (parser.seenval('S')) {
     reset_stepper_timeout();
-    #if HAS_DISABLE_INACTIVE_AXIS
+    #if HAS_DISABLE_IDLE_AXES
       const millis_t ms = parser.value_millis_from_seconds();
       #if LASER_SAFETY_TIMEOUT_MS > 0
         if (ms && ms <= LASER_SAFETY_TIMEOUT_MS) {

+ 2 - 2
Marlin/src/gcode/gcode.cpp

@@ -75,8 +75,8 @@ GcodeSuite gcode;
 millis_t GcodeSuite::previous_move_ms = 0,
          GcodeSuite::max_inactive_time = 0;
 
-#if HAS_DISABLE_INACTIVE_AXIS
-  millis_t GcodeSuite::stepper_inactive_time = SEC_TO_MS(DEFAULT_STEPPER_DEACTIVE_TIME);
+#if HAS_DISABLE_IDLE_AXES
+  millis_t GcodeSuite::stepper_inactive_time = SEC_TO_MS(DEFAULT_STEPPER_TIMEOUT_SEC);
 #endif
 
 // Relative motion mode for each logical axis

+ 1 - 1
Marlin/src/gcode/gcode.h

@@ -403,7 +403,7 @@ public:
   }
   FORCE_INLINE static void reset_stepper_timeout(const millis_t ms=millis()) { previous_move_ms = ms; }
 
-  #if HAS_DISABLE_INACTIVE_AXIS
+  #if HAS_DISABLE_IDLE_AXES
     static millis_t stepper_inactive_time;
     FORCE_INLINE static bool stepper_inactive_timeout(const millis_t ms=millis()) {
       return ELAPSED(ms, previous_move_ms + stepper_inactive_time);

+ 11 - 2
Marlin/src/inc/Conditionals_LCD.h

@@ -624,7 +624,7 @@
   #undef PREVENT_LENGTHY_EXTRUDE
   #undef FILAMENT_RUNOUT_SENSOR
   #undef FILAMENT_RUNOUT_DISTANCE_MM
-  #undef DISABLE_INACTIVE_EXTRUDER
+  #undef DISABLE_OTHER_EXTRUDERS
 #endif
 
 #define E_OPTARG(N) OPTARG(HAS_MULTI_EXTRUDER, N)
@@ -678,7 +678,7 @@
 
 // No inactive extruders with SWITCHING_NOZZLE or Průša MMU1
 #if HAS_SWITCHING_NOZZLE || HAS_PRUSA_MMU1
-  #undef DISABLE_INACTIVE_EXTRUDER
+  #undef DISABLE_OTHER_EXTRUDERS
 #endif
 
 // Průša MMU1, MMU(S) 2.0 and EXTENDABLE_EMU_MMU2(S) force SINGLENOZZLE
@@ -934,6 +934,15 @@
   #undef MAX_SOFTWARE_ENDSTOP_W
 #endif
 
+#define _OR_HAS_DA(A) ENABLED(DISABLE_##A) ||
+#if MAP(_OR_HAS_DA, X, Y, Z, I, J, K, U, V, W) 0
+  #define HAS_DISABLE_MAIN_AXES 1
+#endif
+#if HAS_DISABLE_MAIN_AXES || ENABLED(DISABLE_E)
+  #define HAS_DISABLE_AXES 1
+#endif
+#undef _OR_HAS_DA
+
 #ifdef X2_DRIVER_TYPE
   #define HAS_X2_STEPPER 1
   // Dual X Carriage isn't known yet. TODO: Consider moving it to Configuration.h.

+ 46 - 8
Marlin/src/inc/Conditionals_adv.h

@@ -93,7 +93,7 @@
   #undef ARC_SUPPORT
   #undef CALIBRATION_MEASURE_YMAX
   #undef CALIBRATION_MEASURE_YMIN
-  #undef DISABLE_INACTIVE_Y
+  #undef DISABLE_IDLE_Y
   #undef HOME_Y_BEFORE_X
   #undef INPUT_SHAPING_Y
   #undef QUICK_HOME
@@ -108,7 +108,7 @@
   #undef CALIBRATION_MEASURE_ZMAX
   #undef CALIBRATION_MEASURE_ZMIN
   #undef CNC_WORKSPACE_PLANES
-  #undef DISABLE_INACTIVE_Z
+  #undef DISABLE_IDLE_Z
   #undef ENABLE_LEVELING_FADE_HEIGHT
   #undef HOME_Z_FIRST
   #undef HOMING_Z_WITH_PROBE
@@ -124,7 +124,7 @@
 #if !HAS_I_AXIS
   #undef CALIBRATION_MEASURE_IMAX
   #undef CALIBRATION_MEASURE_IMIN
-  #undef DISABLE_INACTIVE_I
+  #undef DISABLE_IDLE_I
   #undef SAFE_BED_LEVELING_START_I
   #undef STEALTHCHOP_I
   #undef STEP_STATE_I
@@ -133,7 +133,7 @@
 #if !HAS_J_AXIS
   #undef CALIBRATION_MEASURE_JMAX
   #undef CALIBRATION_MEASURE_JMIN
-  #undef DISABLE_INACTIVE_J
+  #undef DISABLE_IDLE_J
   #undef SAFE_BED_LEVELING_START_J
   #undef STEALTHCHOP_J
   #undef STEP_STATE_J
@@ -142,7 +142,7 @@
 #if !HAS_K_AXIS
   #undef CALIBRATION_MEASURE_KMAX
   #undef CALIBRATION_MEASURE_KMIN
-  #undef DISABLE_INACTIVE_K
+  #undef DISABLE_IDLE_K
   #undef SAFE_BED_LEVELING_START_K
   #undef STEALTHCHOP_K
   #undef STEP_STATE_K
@@ -151,7 +151,7 @@
 #if !HAS_U_AXIS
   #undef CALIBRATION_MEASURE_UMAX
   #undef CALIBRATION_MEASURE_UMIN
-  #undef DISABLE_INACTIVE_U
+  #undef DISABLE_IDLE_U
   #undef SAFE_BED_LEVELING_START_U
   #undef STEALTHCHOP_U
   #undef STEP_STATE_U
@@ -160,7 +160,7 @@
 #if !HAS_V_AXIS
   #undef CALIBRATION_MEASURE_VMAX
   #undef CALIBRATION_MEASURE_VMIN
-  #undef DISABLE_INACTIVE_V
+  #undef DISABLE_IDLE_V
   #undef SAFE_BED_LEVELING_START_V
   #undef STEALTHCHOP_V
   #undef STEP_STATE_V
@@ -169,7 +169,7 @@
 #if !HAS_W_AXIS
   #undef CALIBRATION_MEASURE_WMAX
   #undef CALIBRATION_MEASURE_WMIN
-  #undef DISABLE_INACTIVE_W
+  #undef DISABLE_IDLE_W
   #undef SAFE_BED_LEVELING_START_W
   #undef STEALTHCHOP_W
   #undef STEP_STATE_W
@@ -180,6 +180,7 @@
   #define NO_VOLUMETRICS
   #undef ADVANCED_PAUSE_FEATURE
   #undef AUTOTEMP
+  #undef DISABLE_IDLE_E
   #undef EXTRUDER_RUNOUT_PREVENT
   #undef FILAMENT_LOAD_UNLOAD_GCODES
   #undef FWRETRACT
@@ -194,6 +195,43 @@
   #undef WATCH_TEMP_PERIOD
 #endif
 
+#if ENABLED(DISABLE_X) && !defined(DISABLE_IDLE_X)
+  #define DISABLE_IDLE_X
+#endif
+#if ENABLED(DISABLE_Y) && !defined(DISABLE_IDLE_Y)
+  #define DISABLE_IDLE_Y
+#endif
+#if ENABLED(DISABLE_Z) && !defined(DISABLE_IDLE_Z)
+  #define DISABLE_IDLE_Z
+#endif
+#if ENABLED(DISABLE_I) && !defined(DISABLE_IDLE_I)
+  #define DISABLE_IDLE_I
+#endif
+#if ENABLED(DISABLE_J) && !defined(DISABLE_IDLE_J)
+  #define DISABLE_IDLE_J
+#endif
+#if ENABLED(DISABLE_K) && !defined(DISABLE_IDLE_K)
+  #define DISABLE_IDLE_K
+#endif
+#if ENABLED(DISABLE_U) && !defined(DISABLE_IDLE_U)
+  #define DISABLE_IDLE_U
+#endif
+#if ENABLED(DISABLE_V) && !defined(DISABLE_IDLE_V)
+  #define DISABLE_IDLE_V
+#endif
+#if ENABLED(DISABLE_W) && !defined(DISABLE_IDLE_W)
+  #define DISABLE_IDLE_W
+#endif
+#if ENABLED(DISABLE_E) && !defined(DISABLE_IDLE_E)
+  #define DISABLE_IDLE_E
+#endif
+
+#define _OR_HAS_DI(A) || BOTH(HAS_##A##_AXIS, DISABLE_IDLE_##A)
+#if BOTH(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W)
+  #define HAS_DISABLE_IDLE_AXES 1
+#endif
+#undef _OR_HAS_DI
+
 #if HOTENDS <= 7
   #undef E7_AUTO_FAN_PIN
   #if HOTENDS <= 6

+ 0 - 37
Marlin/src/inc/Conditionals_post.h

@@ -1487,43 +1487,6 @@
   #endif
 #endif
 
-#if !defined(DISABLE_INACTIVE_X) && ENABLED(DISABLE_X)
-  #define DISABLE_INACTIVE_X
-#endif
-#if !defined(DISABLE_INACTIVE_Y) && ENABLED(DISABLE_Y)
-  #define DISABLE_INACTIVE_Y
-#endif
-#if !defined(DISABLE_INACTIVE_Z) && ENABLED(DISABLE_Z)
-  #define DISABLE_INACTIVE_Z
-#endif
-#if !defined(DISABLE_INACTIVE_I) && ENABLED(DISABLE_I)
-  #define DISABLE_INACTIVE_I
-#endif
-#if !defined(DISABLE_INACTIVE_J) && ENABLED(DISABLE_J)
-  #define DISABLE_INACTIVE_J
-#endif
-#if !defined(DISABLE_INACTIVE_K) && ENABLED(DISABLE_K)
-  #define DISABLE_INACTIVE_K
-#endif
-#if !defined(DISABLE_INACTIVE_U) && ENABLED(DISABLE_U)
-  #define DISABLE_INACTIVE_U
-#endif
-#if !defined(DISABLE_INACTIVE_V) && ENABLED(DISABLE_V)
-  #define DISABLE_INACTIVE_V
-#endif
-#if !defined(DISABLE_INACTIVE_W) && ENABLED(DISABLE_W)
-  #define DISABLE_INACTIVE_W
-#endif
-#if !defined(DISABLE_INACTIVE_EXTRUDER) && ENABLED(DISABLE_E)
-  #define DISABLE_INACTIVE_EXTRUDER
-#endif
-#if ANY(DISABLE_INACTIVE_X, DISABLE_INACTIVE_Y, DISABLE_INACTIVE_Z, DISABLE_INACTIVE_I, DISABLE_INACTIVE_J, DISABLE_INACTIVE_K, DISABLE_INACTIVE_U, DISABLE_INACTIVE_V, DISABLE_INACTIVE_W, DISABLE_INACTIVE_EXTRUDER)
-  #define HAS_DISABLE_INACTIVE_AXIS 1
-#endif
-#if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W, DISABLE_E)
-  #define HAS_DISABLE_AXIS 1
-#endif
-
 // Extruder steppers and solenoids
 #if HAS_EXTRUDERS
 

Some files were not shown because too many files changed in this diff