From e2540f6fcb45437c7e016bf102accbf5cc022c39 Mon Sep 17 00:00:00 2001 From: vovodroid Date: Fri, 14 Jun 2024 08:52:43 +0300 Subject: [PATCH 1/3] Follow up to "Fix step oversampling with NONLINEAR_EXTRUSION (#27171)": do not demand ADAPTIVE_STEP_SMOOTHING for NONLINEAR_EXTRUSION, restore original comment. --- Marlin/Configuration_adv.h | 1 + Marlin/src/inc/SanityCheck.h | 4 +--- Marlin/src/module/stepper.cpp | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 794a59ac13ac..6cac4e5d498b 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2329,6 +2329,7 @@ * * Control extrusion rate based on instantaneous extruder velocity. Can be used to correct for * underextrusion at high extruder speeds that are otherwise well-behaved (i.e., not skipping). + * For better results also enable ADAPTIVE_STEP_SMOOTHING. */ //#define NONLINEAR_EXTRUSION diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 1482899bea0c..a8b463c5d82c 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -837,9 +837,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L * Nonlinear Extrusion requirements */ #if ENABLED(NONLINEAR_EXTRUSION) - #if DISABLED(ADAPTIVE_STEP_SMOOTHING) - #error "ADAPTIVE_STEP_SMOOTHING is required for NONLINEAR_EXTRUSION." - #elif HAS_MULTI_EXTRUDER + #if HAS_MULTI_EXTRUDER #error "NONLINEAR_EXTRUSION doesn't currently support multi-extruder setups." #elif DISABLED(CPU_32_BIT) #error "NONLINEAR_EXTRUSION requires a 32-bit CPU." diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 47b9f715dff6..6c05ae951617 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2694,8 +2694,7 @@ hal_timer_t Stepper::block_phase_isr() { set_axis_moved_for_current_block(); #if ENABLED(ADAPTIVE_STEP_SMOOTHING) - oversampling_factor = 0; - + oversampling_factor = 0; // Assume no axis smoothing (via oversampling) // Decide if axis smoothing is possible if (stepper.adaptive_step_smoothing_enabled) { uint32_t max_rate = current_block->nominal_rate; // Get the step event rate From e8d4c4d9ba422e6b652efc861a002e6eefedfee1 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sat, 15 Jun 2024 19:58:55 +0300 Subject: [PATCH 2/3] Remove confusing comment --- Marlin/src/module/stepper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 6c05ae951617..0a47129b3399 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2694,7 +2694,7 @@ hal_timer_t Stepper::block_phase_isr() { set_axis_moved_for_current_block(); #if ENABLED(ADAPTIVE_STEP_SMOOTHING) - oversampling_factor = 0; // Assume no axis smoothing (via oversampling) + oversampling_factor = 0; // Decide if axis smoothing is possible if (stepper.adaptive_step_smoothing_enabled) { uint32_t max_rate = current_block->nominal_rate; // Get the step event rate From 4d0ae772c4baaa7ac7f0274dc4c907f83e0896b3 Mon Sep 17 00:00:00 2001 From: vovodroid Date: Sun, 16 Jun 2024 17:44:58 +0300 Subject: [PATCH 3/3] Restore empty line --- Marlin/src/module/stepper.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 0a47129b3399..47b9f715dff6 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -2695,6 +2695,7 @@ hal_timer_t Stepper::block_phase_isr() { #if ENABLED(ADAPTIVE_STEP_SMOOTHING) oversampling_factor = 0; + // Decide if axis smoothing is possible if (stepper.adaptive_step_smoothing_enabled) { uint32_t max_rate = current_block->nominal_rate; // Get the step event rate