diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 822ca06749836..0b8fb13164591 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1680,15 +1680,15 @@ // Disable axis steppers immediately when they're not being stepped. // WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -//#define DISABLE_I false -//#define DISABLE_J false -//#define DISABLE_K false -//#define DISABLE_U false -//#define DISABLE_V false -//#define DISABLE_W false +//#define DISABLE_X +//#define DISABLE_Y +//#define DISABLE_Z +//#define DISABLE_I +//#define DISABLE_J +//#define DISABLE_K +//#define DISABLE_U +//#define DISABLE_V +//#define DISABLE_W // Turn off the display blinking that warns about possible accuracy reduction //#define DISABLE_REDUCED_ACCURACY_WARNING diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index c257ab8b4f174..bafe6d3264e27 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1104,17 +1104,17 @@ // Add a Duplicate option for well-separated conjoined nozzles //#define MULTI_NOZZLE_DUPLICATION -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_I_STEP_PIN false -#define INVERT_J_STEP_PIN false -#define INVERT_K_STEP_PIN false -#define INVERT_U_STEP_PIN false -#define INVERT_V_STEP_PIN false -#define INVERT_W_STEP_PIN false -#define INVERT_E_STEP_PIN false +// By default stepper drivers require an active-HIGH signal but some high-power drivers require an active-LOW signal to step. +#define STEP_STATE_X HIGH +#define STEP_STATE_Y HIGH +#define STEP_STATE_Z HIGH +#define STEP_STATE_I HIGH +#define STEP_STATE_J HIGH +#define STEP_STATE_K HIGH +#define STEP_STATE_U HIGH +#define STEP_STATE_V HIGH +#define STEP_STATE_W HIGH +#define STEP_STATE_E HIGH /** * Idle Stepper Shutdown diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index ed892ac8132a4..3b704e4f653ec 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -448,7 +448,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) { 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_E, stepper.disable_e_steppers()); + TERN_(DISABLE_INACTIVE_EXTRUDER, stepper.disable_e_steppers()); TERN_(AUTO_BED_LEVELING_UBL, bedlevel.steppers_were_disabled()); } diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index f1fae85b5ca4f..bae345b496250 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -44,7 +44,7 @@ struct IF { typedef L type; }; #define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V) #define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) } #define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) } -#define NUM_AXIS_ARGS(T...) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w) #define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) #define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) @@ -57,7 +57,7 @@ struct IF { typedef L type; }; #define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V) #define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) } #define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) } -#define LOGICAL_AXIS_ARGS(T...) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) +#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w) #define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w) #define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V) #define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W) @@ -96,14 +96,14 @@ struct Flags { bits_t b; typename IF<(N>8), N16, N8>::type flag; }; - void reset() { b = 0; } - void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } - void set(const int n) { b |= (bits_t)_BV(n); } - void clear(const int n) { b &= ~(bits_t)_BV(n); } - bool test(const int n) const { return TEST(b, n); } - bool operator[](const int n) { return test(n); } - bool operator[](const int n) const { return test(n); } - int size() const { return sizeof(b); } + void reset() { b = 0; } + void set(const int n, const bool onoff) { onoff ? set(n) : clear(n); } + void set(const int n) { b |= (bits_t)_BV(n); } + void clear(const int n) { b &= ~(bits_t)_BV(n); } + bool test(const int n) const { return TEST(b, n); } + bool operator[](const int n) { return test(n); } + bool operator[](const int n) const { return test(n); } + int size() const { return sizeof(b); } }; // Specialization for a single bool flag @@ -129,14 +129,14 @@ typedef struct AxisFlags { struct Flags flags; struct { bool LOGICAL_AXIS_LIST(e:1, x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); }; }; - void reset() { flags.reset(); } - void set(const int n) { flags.set(n); } - void set(const int n, const bool onoff) { flags.set(n, onoff); } - void clear(const int n) { flags.clear(n); } - bool test(const int n) const { return flags.test(n); } - bool operator[](const int n) { return flags[n]; } - bool operator[](const int n) const { return flags[n]; } - int size() const { return sizeof(flags); } + void reset() { flags.reset(); } + void set(const int n) { flags.set(n); } + void set(const int n, const bool onoff) { flags.set(n, onoff); } + void clear(const int n) { flags.clear(n); } + bool test(const int n) const { return flags.test(n); } + bool operator[](const int n) { return flags[n]; } + bool operator[](const int n) const { return flags[n]; } + int size() const { return sizeof(flags); } } axis_flags_t; // @@ -188,9 +188,9 @@ typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t; // Loop over axes // #define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS) -#define LOOP_NUM_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, NUM_AXES) -#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, LOGICAL_AXES) -#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, DISTINCT_AXES) +#define LOOP_NUM_AXES(VAR) LOOP_S_L_N(VAR, 0, NUM_AXES) +#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, 0, LOGICAL_AXES) +#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, 0, DISTINCT_AXES) #define LOOP_DISTINCT_E(VAR) LOOP_L_N(VAR, DISTINCT_E) // diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 0b6548a3e3fae..6f0f27cb9d0d9 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -86,7 +86,7 @@ NUM_AXIS_LIST( TERN0(X_SENSORLESS, tmc_enable_stallguard(stepperX)), TERN0(Y_SENSORLESS, tmc_enable_stallguard(stepperY)), - false, false, false, false + false, false, false, false, false, false, false ) , TERN0(X2_SENSORLESS, tmc_enable_stallguard(stepperX2)) , TERN0(Y2_SENSORLESS, tmc_enable_stallguard(stepperY2)) diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp index b12e68060537f..b055f0e207346 100644 --- a/Marlin/src/gcode/geometry/M206_M428.cpp +++ b/Marlin/src/gcode/geometry/M206_M428.cpp @@ -33,9 +33,7 @@ /** * M206: Set Additional Homing Offset (X Y Z). SCARA aliases T=X, P=Y * - * *** @thinkyhead: I recommend deprecating M206 for SCARA in favor of M665. - * *** M206 for SCARA will remain enabled in 1.1.x for compatibility. - * *** In the 2.0 release, it will simply be disabled by default. + * *** TODO: Deprecate M206 for SCARA in favor of M665. */ void GcodeSuite::M206() { if (!parser.seen_any()) return M206_report(); diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 920ad15c6cc6b..bddc0554f569e 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -758,39 +758,31 @@ #define HAS_X_AXIS 1 #if NUM_AXES >= XY #define HAS_Y_AXIS 1 - #if NUM_AXES >= XYZ - #define HAS_Z_AXIS 1 - #ifdef Z4_DRIVER_TYPE - #define NUM_Z_STEPPERS 4 - #elif defined(Z3_DRIVER_TYPE) - #define NUM_Z_STEPPERS 3 - #elif defined(Z2_DRIVER_TYPE) - #define NUM_Z_STEPPERS 2 - #else - #define NUM_Z_STEPPERS 1 - #endif - #if NUM_AXES >= 4 - #define HAS_I_AXIS 1 - #if NUM_AXES >= 5 - #define HAS_J_AXIS 1 - #if NUM_AXES >= 6 - #define HAS_K_AXIS 1 - #if NUM_AXES >= 7 - #define HAS_U_AXIS 1 - #if NUM_AXES >= 8 - #define HAS_V_AXIS 1 - #if NUM_AXES >= 9 - #define HAS_W_AXIS 1 - #endif - #endif - #endif - #endif - #endif - #endif - #endif +#endif +#if NUM_AXES >= XYZ + #define HAS_Z_AXIS 1 +#endif +#if NUM_AXES >= 4 + #define HAS_I_AXIS 1 +#endif +#if NUM_AXES >= 5 + #define HAS_J_AXIS 1 +#endif +#if NUM_AXES >= 6 + #define HAS_K_AXIS 1 +#endif +#if NUM_AXES >= 7 + #define HAS_U_AXIS 1 +#endif +#if NUM_AXES >= 8 + #define HAS_V_AXIS 1 +#endif +#if NUM_AXES >= 9 + #define HAS_W_AXIS 1 #endif #if !HAS_Y_AXIS + #undef AVOID_OBSTACLES #undef ENDSTOPPULLUP_YMIN #undef ENDSTOPPULLUP_YMAX #undef Y_MIN_ENDSTOP_INVERTING @@ -807,7 +799,17 @@ #undef MAX_SOFTWARE_ENDSTOP_Y #endif -#if !HAS_Z_AXIS +#if HAS_Z_AXIS + #ifdef Z4_DRIVER_TYPE + #define NUM_Z_STEPPERS 4 + #elif defined(Z3_DRIVER_TYPE) + #define NUM_Z_STEPPERS 3 + #elif defined(Z2_DRIVER_TYPE) + #define NUM_Z_STEPPERS 2 + #else + #define NUM_Z_STEPPERS 1 + #endif +#else #undef ENDSTOPPULLUP_ZMIN #undef ENDSTOPPULLUP_ZMAX #undef Z_MIN_ENDSTOP_INVERTING @@ -822,6 +824,7 @@ #undef Z_MIN_POS #undef Z_MAX_POS #undef MANUAL_Z_HOME_POS + #undef Z_SAFE_HOMING #undef MIN_SOFTWARE_ENDSTOP_Z #undef MAX_SOFTWARE_ENDSTOP_Z #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 436b6194da27c..ff2e54e393da5 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -88,51 +88,108 @@ // Some options are disallowed without required axes #if !HAS_Y_AXIS - #undef SAFE_BED_LEVELING_START_Y #undef ARC_SUPPORT + #undef CALIBRATION_MEASURE_YMAX + #undef CALIBRATION_MEASURE_YMIN + #undef DISABLE_INACTIVE_Y + #undef HOME_Y_BEFORE_X #undef INPUT_SHAPING_Y - #undef SHAPING_FREQ_Y + #undef QUICK_HOME + #undef SAFE_BED_LEVELING_START_Y #undef SHAPING_BUFFER_Y + #undef SHAPING_FREQ_Y + #undef STEALTHCHOP_Y + #undef STEP_STATE_Y #endif + #if !HAS_Z_AXIS + #undef CALIBRATION_MEASURE_ZMAX + #undef CALIBRATION_MEASURE_ZMIN + #undef CNC_WORKSPACE_PLANES + #undef DISABLE_INACTIVE_Z + #undef ENABLE_LEVELING_FADE_HEIGHT + #undef HOME_Z_FIRST + #undef HOMING_Z_WITH_PROBE + #undef NUM_Z_STEPPERS #undef SAFE_BED_LEVELING_START_Z + #undef STEALTHCHOP_Z + #undef STEP_STATE_Z + #undef Z_IDLE_HEIGHT + #undef Z_PROBE_SLED + #undef Z_SAFE_HOMING #endif + #if !HAS_I_AXIS + #undef CALIBRATION_MEASURE_IMAX + #undef CALIBRATION_MEASURE_IMIN + #undef DISABLE_INACTIVE_I #undef SAFE_BED_LEVELING_START_I + #undef STEALTHCHOP_I + #undef STEP_STATE_I #endif + #if !HAS_J_AXIS + #undef CALIBRATION_MEASURE_JMAX + #undef CALIBRATION_MEASURE_JMIN + #undef DISABLE_INACTIVE_J #undef SAFE_BED_LEVELING_START_J + #undef STEALTHCHOP_J + #undef STEP_STATE_J #endif + #if !HAS_K_AXIS + #undef CALIBRATION_MEASURE_KMAX + #undef CALIBRATION_MEASURE_KMIN + #undef DISABLE_INACTIVE_K #undef SAFE_BED_LEVELING_START_K + #undef STEALTHCHOP_K + #undef STEP_STATE_K #endif + #if !HAS_U_AXIS + #undef CALIBRATION_MEASURE_UMAX + #undef CALIBRATION_MEASURE_UMIN + #undef DISABLE_INACTIVE_U #undef SAFE_BED_LEVELING_START_U + #undef STEALTHCHOP_U + #undef STEP_STATE_U #endif + #if !HAS_V_AXIS + #undef CALIBRATION_MEASURE_VMAX + #undef CALIBRATION_MEASURE_VMIN + #undef DISABLE_INACTIVE_V #undef SAFE_BED_LEVELING_START_V + #undef STEALTHCHOP_V + #undef STEP_STATE_V #endif + #if !HAS_W_AXIS + #undef CALIBRATION_MEASURE_WMAX + #undef CALIBRATION_MEASURE_WMIN + #undef DISABLE_INACTIVE_W #undef SAFE_BED_LEVELING_START_W + #undef STEALTHCHOP_W + #undef STEP_STATE_W #endif // Disallowed with no extruders #if !HAS_EXTRUDERS #define NO_VOLUMETRICS - #undef FWRETRACT - #undef PIDTEMP - #undef AUTOTEMP - #undef PID_EXTRUSION_SCALING - #undef LIN_ADVANCE #undef ADVANCED_PAUSE_FEATURE - #undef FILAMENT_LOAD_UNLOAD_GCODES + #undef AUTOTEMP #undef EXTRUDER_RUNOUT_PREVENT - #undef THERMAL_PROTECTION_PERIOD - #undef WATCH_TEMP_PERIOD - #undef SHOW_TEMP_ADC_VALUES + #undef FILAMENT_LOAD_UNLOAD_GCODES + #undef FWRETRACT #undef LCD_SHOW_E_TOTAL + #undef LIN_ADVANCE #undef MANUAL_E_MOVES_RELATIVE + #undef PID_EXTRUSION_SCALING + #undef PIDTEMP + #undef SHOW_TEMP_ADC_VALUES #undef STEALTHCHOP_E + #undef THERMAL_PROTECTION_PERIOD + #undef WATCH_TEMP_PERIOD #endif #if HOTENDS <= 7 @@ -1043,53 +1100,6 @@ #endif #endif -// Remove unused STEALTHCHOP flags -#if NUM_AXES < 9 - #undef STEALTHCHOP_W - #undef CALIBRATION_MEASURE_WMIN - #undef CALIBRATION_MEASURE_WMAX - #if NUM_AXES < 8 - #undef STEALTHCHOP_V - #undef CALIBRATION_MEASURE_VMIN - #undef CALIBRATION_MEASURE_VMAX - #if NUM_AXES < 7 - #undef STEALTHCHOP_U - #undef CALIBRATION_MEASURE_UMIN - #undef CALIBRATION_MEASURE_UMAX - #if NUM_AXES < 6 - #undef STEALTHCHOP_K - #undef CALIBRATION_MEASURE_KMIN - #undef CALIBRATION_MEASURE_KMAX - #if NUM_AXES < 5 - #undef STEALTHCHOP_J - #undef CALIBRATION_MEASURE_JMIN - #undef CALIBRATION_MEASURE_JMAX - #if NUM_AXES < 4 - #undef STEALTHCHOP_I - #undef CALIBRATION_MEASURE_IMIN - #undef CALIBRATION_MEASURE_IMAX - #if NUM_AXES < 3 - #undef STEALTHCHOP_Z - #undef Z_IDLE_HEIGHT - #undef Z_PROBE_SLED - #undef Z_SAFE_HOMING - #undef HOME_Z_FIRST - #undef HOMING_Z_WITH_PROBE - #undef ENABLE_LEVELING_FADE_HEIGHT - #undef NUM_Z_STEPPERS - #undef CNC_WORKSPACE_PLANES - #if NUM_AXES < 2 - #undef STEALTHCHOP_Y - #undef QUICK_HOME - #endif - #endif - #endif - #endif - #endif - #endif - #endif -#endif - #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) @@ -1185,10 +1195,6 @@ #define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #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_E) - #define HAS_DISABLE_INACTIVE_AXIS 1 -#endif - // Fan Kickstart #if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER) #define FAN_KICKSTART_POWER 180 diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 5c149cee89e12..249aa5c30e63f 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1308,9 +1308,6 @@ /** * Set defaults for missing (newer) options */ -#if !defined(DISABLE_INACTIVE_X) && ENABLED(DISABLE_X) - #define DISABLE_INACTIVE_X 1 -#endif #if HAS_Y_AXIS #if PIN_EXISTS(Y_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(Y)) @@ -1338,11 +1335,6 @@ #if PIN_EXISTS(Y2_MS1) #define HAS_Y2_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_Y) && ENABLED(DISABLE_Y) - #define DISABLE_INACTIVE_Y 1 - #endif -#else - #undef DISABLE_INACTIVE_Y #endif #if HAS_Z_AXIS @@ -1358,11 +1350,6 @@ #if PIN_EXISTS(Z_MS1) #define HAS_Z_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_Z) && ENABLED(DISABLE_Z) - #define DISABLE_INACTIVE_Z 1 - #endif -#else - #undef DISABLE_INACTIVE_Z #endif #if NUM_Z_STEPPERS >= 2 @@ -1423,11 +1410,6 @@ #if PIN_EXISTS(I_MS1) #define HAS_I_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_I) && ENABLED(DISABLE_I) - #define DISABLE_INACTIVE_I 1 - #endif -#else - #undef DISABLE_INACTIVE_I #endif #if HAS_J_AXIS @@ -1443,11 +1425,6 @@ #if PIN_EXISTS(J_MS1) #define HAS_J_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_J) && ENABLED(DISABLE_J) - #define DISABLE_INACTIVE_J 1 - #endif -#else - #undef DISABLE_INACTIVE_J #endif #if HAS_K_AXIS @@ -1463,11 +1440,6 @@ #if PIN_EXISTS(K_MS1) #define HAS_K_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_K) && ENABLED(DISABLE_K) - #define DISABLE_INACTIVE_K 1 - #endif -#else - #undef DISABLE_INACTIVE_K #endif #if HAS_U_AXIS @@ -1483,11 +1455,6 @@ #if PIN_EXISTS(U_MS1) #define HAS_U_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_U) && ENABLED(DISABLE_U) - #define DISABLE_INACTIVE_U 1 - #endif -#else - #undef DISABLE_INACTIVE_U #endif #if HAS_V_AXIS @@ -1503,11 +1470,6 @@ #if PIN_EXISTS(V_MS1) #define HAS_V_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_V) && ENABLED(DISABLE_V) - #define DISABLE_INACTIVE_V 1 - #endif -#else - #undef DISABLE_INACTIVE_V #endif #if HAS_W_AXIS @@ -1523,11 +1485,43 @@ #if PIN_EXISTS(W_MS1) #define HAS_W_MS_PINS 1 #endif - #if !defined(DISABLE_INACTIVE_W) && ENABLED(DISABLE_W) - #define DISABLE_INACTIVE_W 1 - #endif -#else - #undef DISABLE_INACTIVE_W +#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 @@ -1651,11 +1645,6 @@ #endif #endif - #if !defined(DISABLE_INACTIVE_E) && ENABLED(DISABLE_E) - #define DISABLE_INACTIVE_E 1 - #endif -#else - #undef DISABLE_INACTIVE_E #endif // HAS_EXTRUDERS /** diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d011fb18f0267..11d27d6eaf9c7 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -672,6 +672,10 @@ #error "EXPERIMENTAL_SCURVE is no longer needed and should be removed." #elif defined(BABYSTEP_ZPROBE_GFX_OVERLAY) #error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY." +#elif defined(DISABLE_INACTIVE_E) + #error "DISABLE_INACTIVE_E is now set with DISABLE_INACTIVE_EXTRUDER." +#elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN) + #error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH." #endif // L64xx stepper drivers have been removed diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 721dcb63ffbe3..091c531abb92d 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -524,7 +524,9 @@ void MarlinUI::draw_status_screen() { const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive()); - static u8g_uint_t progress_bar_solid_width = 0; + #if HAS_PRINT_PROGRESS + static u8g_uint_t progress_bar_solid_width = 0; + #endif // At the first page, generate new display values if (first_page) { diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp index 0c6315d438706..86b5e6eb4cc6f 100644 --- a/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp +++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp @@ -269,7 +269,7 @@ #if HAS_Y_AXIS WRITE(Y_DIR_PIN, HIGH); #endif - #if HAS_Y_AXIS + #if HAS_Z_AXIS WRITE(Z_DIR_PIN, HIGH); #endif #if HAS_EXTRUDERS diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index ff5449d230ddc..25db52437f919 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1320,7 +1320,7 @@ void Planner::recalculate(TERN_(HINTS_SAFE_EXIT_SPEED, const_float_t safe_exit_s */ void Planner::check_axes_activity() { - #if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_U, DISABLE_V, DISABLE_W, DISABLE_E) + #if HAS_DISABLE_AXIS xyze_bool_t axis_active = { false }; #endif @@ -1360,7 +1360,7 @@ void Planner::check_axes_activity() { TERN_(HAS_HEATER_2, tail_e_to_p_pressure = block->e_to_p_pressure); #endif - #if ANY(DISABLE_X, DISABLE_Y, DISABLE_Z, DISABLE_I, DISABLE_J, DISABLE_K, DISABLE_E) + #if HAS_DISABLE_AXIS for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { block_t * const bnext = &block_buffer[b]; LOGICAL_AXIS_CODE( @@ -1492,7 +1492,7 @@ void Planner::check_axes_activity() { thermalManager.setTargetHotend(t, active_extruder); } -#endif +#endif // AUTOTEMP #if DISABLED(NO_VOLUMETRICS) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index f9de7498d72d1..0750fd82aa743 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1664,7 +1664,7 @@ void Stepper::pulse_phase_isr() { do { #define _APPLY_STEP(AXIS, INV, ALWAYS) AXIS ##_APPLY_STEP(INV, ALWAYS) - #define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN + #define _STEP_STATE(AXIS) STEP_STATE_## AXIS // Determine if a pulse is needed using Bresenham #define PULSE_PREP(AXIS) do{ \ @@ -1714,14 +1714,14 @@ void Stepper::pulse_phase_isr() { #define PULSE_START(AXIS) do{ \ if (step_needed[_AXIS(AXIS)]) { \ count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ - _APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), 0); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), 0); \ } \ }while(0) // Stop an active pulse if needed #define PULSE_STOP(AXIS) do { \ if (step_needed[_AXIS(AXIS)]) { \ - _APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), 0); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), 0); \ } \ }while(0) @@ -1933,7 +1933,7 @@ void Stepper::pulse_phase_isr() { #if ENABLED(MIXING_EXTRUDER) if (step_needed.e) { count_position[E_AXIS] += count_direction[E_AXIS]; - E_STEP_WRITE(mixer.get_next_stepper(), !INVERT_E_STEP_PIN); + E_STEP_WRITE(mixer.get_next_stepper(), STEP_STATE_E); } #elif HAS_E0_STEP PULSE_START(E); @@ -1977,7 +1977,7 @@ void Stepper::pulse_phase_isr() { #endif #if ENABLED(MIXING_EXTRUDER) - if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), INVERT_E_STEP_PIN); + if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), !STEP_STATE_E); #elif HAS_E0_STEP PULSE_STOP(E); #endif @@ -2638,7 +2638,7 @@ uint32_t Stepper::block_phase_isr() { la_delta_error -= advance_divisor; // Set the STEP pulse ON - E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), !INVERT_E_STEP_PIN); + E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), STEP_STATE_E); } TERN_(I2S_STEPPER_STREAM, i2s_push_sample()); @@ -2652,7 +2652,7 @@ uint32_t Stepper::block_phase_isr() { #endif // Set the STEP pulse OFF - E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), INVERT_E_STEP_PIN); + E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), !STEP_STATE_E); } } @@ -2906,7 +2906,7 @@ void Stepper::init() { #define AXIS_INIT(AXIS, PIN) \ _STEP_INIT(AXIS); \ - _WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \ + _WRITE_STEP(AXIS, !_STEP_STATE(PIN)); \ _DISABLE_AXIS(AXIS) #define E_AXIS_INIT(NUM) AXIS_INIT(E## NUM, E) @@ -2915,7 +2915,7 @@ void Stepper::init() { #if HAS_X_STEP #if HAS_X2_STEPPER X2_STEP_INIT(); - X2_STEP_WRITE(INVERT_X_STEP_PIN); + X2_STEP_WRITE(!STEP_STATE_X); #endif AXIS_INIT(X, X); #endif @@ -2923,7 +2923,7 @@ void Stepper::init() { #if HAS_Y_STEP #if HAS_DUAL_Y_STEPPERS Y2_STEP_INIT(); - Y2_STEP_WRITE(INVERT_Y_STEP_PIN); + Y2_STEP_WRITE(!STEP_STATE_Y); #endif AXIS_INIT(Y, Y); #endif @@ -2931,15 +2931,15 @@ void Stepper::init() { #if HAS_Z_STEP #if NUM_Z_STEPPERS >= 2 Z2_STEP_INIT(); - Z2_STEP_WRITE(INVERT_Z_STEP_PIN); + Z2_STEP_WRITE(!STEP_STATE_Z); #endif #if NUM_Z_STEPPERS >= 3 Z3_STEP_INIT(); - Z3_STEP_WRITE(INVERT_Z_STEP_PIN); + Z3_STEP_WRITE(!STEP_STATE_Z); #endif #if NUM_Z_STEPPERS >= 4 Z4_STEP_INIT(); - Z4_STEP_WRITE(INVERT_Z_STEP_PIN); + Z4_STEP_WRITE(!STEP_STATE_Z); #endif AXIS_INIT(Z, Z); #endif @@ -3338,19 +3338,19 @@ void Stepper::report_positions() { #if DISABLED(DELTA) - #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ - const uint8_t old_dir = _READ_DIR(AXIS); \ - _ENABLE_AXIS(AXIS); \ - DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \ - DIR_WAIT_AFTER(); \ - _SAVE_START(); \ - _APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), true); \ - _PULSE_WAIT(); \ - _APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), true); \ - EXTRA_DIR_WAIT_BEFORE(); \ - _APPLY_DIR(AXIS, old_dir); \ - EXTRA_DIR_WAIT_AFTER(); \ + #define BABYSTEP_AXIS(AXIS, INV, DIR) do{ \ + const uint8_t old_dir = _READ_DIR(AXIS); \ + _ENABLE_AXIS(AXIS); \ + DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \ + DIR_WAIT_AFTER(); \ + _SAVE_START(); \ + _APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \ + _PULSE_WAIT(); \ + _APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \ + EXTRA_DIR_WAIT_BEFORE(); \ + _APPLY_DIR(AXIS, old_dir); \ + EXTRA_DIR_WAIT_AFTER(); \ }while(0) #endif @@ -3365,11 +3365,11 @@ void Stepper::report_positions() { _APPLY_DIR(B, _INVERT_DIR(B)^DIR^INV^ALT); \ DIR_WAIT_AFTER(); \ _SAVE_START(); \ - _APPLY_STEP(A, !_INVERT_STEP_PIN(A), true); \ - _APPLY_STEP(B, !_INVERT_STEP_PIN(B), true); \ + _APPLY_STEP(A, _STEP_STATE(A), true); \ + _APPLY_STEP(B, _STEP_STATE(B), true); \ _PULSE_WAIT(); \ - _APPLY_STEP(A, _INVERT_STEP_PIN(A), true); \ - _APPLY_STEP(B, _INVERT_STEP_PIN(B), true); \ + _APPLY_STEP(A, !_STEP_STATE(A), true); \ + _APPLY_STEP(B, !_STEP_STATE(B), true); \ EXTRA_DIR_WAIT_BEFORE(); \ _APPLY_DIR(A, old_dir.a); _APPLY_DIR(B, old_dir.b); \ EXTRA_DIR_WAIT_AFTER(); \ @@ -3466,58 +3466,58 @@ void Stepper::report_positions() { _SAVE_START(); - X_STEP_WRITE(!INVERT_X_STEP_PIN); + X_STEP_WRITE(STEP_STATE_X); #ifdef Y_STEP_WRITE - Y_STEP_WRITE(!INVERT_Y_STEP_PIN); + Y_STEP_WRITE(STEP_STATE_Y); #endif #ifdef Z_STEP_WRITE - Z_STEP_WRITE(!INVERT_Z_STEP_PIN); + Z_STEP_WRITE(STEP_STATE_Z); #endif #ifdef I_STEP_WRITE - I_STEP_WRITE(!INVERT_I_STEP_PIN); + I_STEP_WRITE(STEP_STATE_I); #endif #ifdef J_STEP_WRITE - J_STEP_WRITE(!INVERT_J_STEP_PIN); + J_STEP_WRITE(STEP_STATE_J); #endif #ifdef K_STEP_WRITE - K_STEP_WRITE(!INVERT_K_STEP_PIN); + K_STEP_WRITE(STEP_STATE_K); #endif #ifdef U_STEP_WRITE - U_STEP_WRITE(!INVERT_U_STEP_PIN); + U_STEP_WRITE(STEP_STATE_U); #endif #ifdef V_STEP_WRITE - V_STEP_WRITE(!INVERT_V_STEP_PIN); + V_STEP_WRITE(STEP_STATE_V); #endif #ifdef W_STEP_WRITE - W_STEP_WRITE(!INVERT_W_STEP_PIN); + W_STEP_WRITE(STEP_STATE_W); #endif _PULSE_WAIT(); - X_STEP_WRITE(INVERT_X_STEP_PIN); + X_STEP_WRITE(!STEP_STATE_X); #ifdef Y_STEP_WRITE - Y_STEP_WRITE(INVERT_Y_STEP_PIN); + Y_STEP_WRITE(!STEP_STATE_Y); #endif #ifdef Z_STEP_WRITE - Z_STEP_WRITE(INVERT_Z_STEP_PIN); + Z_STEP_WRITE(!STEP_STATE_Z); #endif #ifdef I_STEP_WRITE - I_STEP_WRITE(INVERT_I_STEP_PIN); + I_STEP_WRITE(!STEP_STATE_I); #endif #ifdef J_STEP_WRITE - J_STEP_WRITE(INVERT_J_STEP_PIN); + J_STEP_WRITE(!STEP_STATE_J); #endif #ifdef K_STEP_WRITE - K_STEP_WRITE(INVERT_K_STEP_PIN); + K_STEP_WRITE(!STEP_STATE_K); #endif #ifdef U_STEP_WRITE - U_STEP_WRITE(INVERT_U_STEP_PIN); + U_STEP_WRITE(!STEP_STATE_U); #endif #ifdef V_STEP_WRITE - V_STEP_WRITE(INVERT_V_STEP_PIN); + V_STEP_WRITE(!STEP_STATE_V); #endif #ifdef W_STEP_WRITE - W_STEP_WRITE(INVERT_W_STEP_PIN); + W_STEP_WRITE(!STEP_STATE_W); #endif // Restore direction bits diff --git a/buildroot/tests/mega2560 b/buildroot/tests/mega2560 index 7cac8b13b0157..bd855f1df1119 100755 --- a/buildroot/tests/mega2560 +++ b/buildroot/tests/mega2560 @@ -53,7 +53,6 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI SHOW_CUS opt_disable SEGMENT_LEVELED_MOVES exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE | Sled Probe | Skew | JP-Kana | Babystep offsets ..." "$3" - # # 5 runout sensors with distinct states # @@ -126,7 +125,7 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping #opt_set MOTHERBOARD BOARD_RIGIDBOARD_V2 #opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT #exec_test $1 $2 "Stuff" "$3" -# # +# # G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING # #restore_configs @@ -177,9 +176,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping #opt_enable LCM1602 #exec_test $1 $2 "Stuff" "$3" -# # -# # Test Laser features with 12864 LCD -# # +# +# Test Laser features with 12864 LCD +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 0 LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 TEMP_SENSOR_1 0 SERIAL_PORT_2 2 \ # DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400 }' \ @@ -191,9 +190,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # LASER_FEATURE LASER_SAFETY_TIMEOUT_MS LASER_COOLANT_FLOW_METER AIR_EVACUATION AIR_EVACUATION_PIN AIR_ASSIST AIR_ASSIST_PIN LASER_SYNCHRONOUS_M106_M107 # exec_test $1 $2 "MEGA2560 RAMPS | Laser Options | 12864 | Meatpack | Fan Sync | SERIAL_PORT_2 " "$3" -# # -# # Test Laser features with 44780 LCD -# # +# +# Test Laser features with 44780 LCD +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 0 LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 TEMP_SENSOR_1 0 \ # DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400 }' \ @@ -205,9 +204,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # LASER_FEATURE LASER_SAFETY_TIMEOUT_MS LASER_COOLANT_FLOW_METER AIR_EVACUATION AIR_EVACUATION_PIN AIR_ASSIST AIR_ASSIST_PIN # exec_test $1 $2 "MEGA2560 RAMPS | Laser Feature | Air Evacuation | Air Assist | Cooler | Laser Safety Timeout | Flowmeter | 44780 LCD " "$3" -# # -# # Test redundant temperature sensors + MAX TC + Backlight Timeout -# # +# +# Test redundant temperature sensors + MAX TC + Backlight Timeout +# # restore_configs # opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 1 \ # TEMP_SENSOR_0 -2 TEMP_SENSOR_REDUNDANT -2 \ @@ -218,9 +217,9 @@ exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Input Shaping # opt_disable PIDTEMP # exec_test $1 $2 "MEGA2560 RAMPS | Redundant temperature sensor | 2x MAX6675 | BL Timeout" "$3" -# # -# # Polargraph Config -# # +# +# Polargraph Config +# # use_example_configs Polargraph # exec_test $1 $2 "RUMBA | POLARGRAPH | RRD LCD" "$3"