Browse Source

MINIMUM_STEPPER_DIR_DELAY in LA (#15154)

Add missed MINIMUM_STEPPER_DIR_DELAY after dir change in LinearAdvance interrupt.
AnHardt 5 years ago
parent
commit
89a2161cac
1 changed files with 18 additions and 13 deletions
  1. 18
    13
      Marlin/src/module/stepper.cpp

+ 18
- 13
Marlin/src/module/stepper.cpp View File

@@ -1879,19 +1879,24 @@ uint32_t Stepper::stepper_block_phase_isr() {
1879 1879
     else
1880 1880
       interval = LA_ADV_NEVER;
1881 1881
 
1882
-      #if ENABLED(MIXING_EXTRUDER)
1883
-        // We don't know which steppers will be stepped because LA loop follows,
1884
-        // with potentially multiple steps. Set all.
1885
-        if (LA_steps >= 0)
1886
-          MIXER_STEPPER_LOOP(j) NORM_E_DIR(j);
1887
-        else
1888
-          MIXER_STEPPER_LOOP(j) REV_E_DIR(j);
1889
-      #else
1890
-        if (LA_steps >= 0)
1891
-          NORM_E_DIR(stepper_extruder);
1892
-        else
1893
-          REV_E_DIR(stepper_extruder);
1894
-      #endif
1882
+    #if ENABLED(MIXING_EXTRUDER)
1883
+      // We don't know which steppers will be stepped because LA loop follows,
1884
+      // with potentially multiple steps. Set all.
1885
+      if (LA_steps >= 0)
1886
+        MIXER_STEPPER_LOOP(j) NORM_E_DIR(j);
1887
+      else
1888
+        MIXER_STEPPER_LOOP(j) REV_E_DIR(j);
1889
+    #else
1890
+      if (LA_steps >= 0)
1891
+        NORM_E_DIR(stepper_extruder);
1892
+      else
1893
+        REV_E_DIR(stepper_extruder);
1894
+    #endif
1895
+
1896
+    // A small delay may be needed after changing direction
1897
+    #if MINIMUM_STEPPER_DIR_DELAY > 0
1898
+      DELAY_NS(MINIMUM_STEPPER_DIR_DELAY);
1899
+    #endif
1895 1900
 
1896 1901
     // Get the timer count and estimate the end of the pulse
1897 1902
     hal_timer_t pulse_end = HAL_timer_get_count(PULSE_TIMER_NUM) + hal_timer_t(MIN_PULSE_TICKS);

Loading…
Cancel
Save