Browse Source

Define max_e_jerk as array always

Scott Lahteine 5 years ago
parent
commit
90e1035e9b
2 changed files with 10 additions and 22 deletions
  1. 6
    14
      Marlin/src/module/planner.cpp
  2. 4
    8
      Marlin/src/module/planner.h

+ 6
- 14
Marlin/src/module/planner.cpp View File

@@ -130,13 +130,13 @@ planner_settings_t Planner::settings;           // Initialized by settings.load(
130 130
 
131 131
 uint32_t Planner::max_acceleration_steps_per_s2[XYZE_N]; // (steps/s^2) Derived from mm_per_s2
132 132
 
133
-float Planner::steps_to_mm[XYZE_N];           // (mm) Millimeters per step
133
+float Planner::steps_to_mm[XYZE_N];             // (mm) Millimeters per step
134 134
 
135 135
 #if HAS_JUNCTION_DEVIATION
136
-  float Planner::junction_deviation_mm;       // (mm) M205 J
136
+  float Planner::junction_deviation_mm;         // (mm) M205 J
137 137
   #if ENABLED(LIN_ADVANCE)
138
-    float Planner::max_e_jerk               // Calculated from junction_deviation_mm
139
-      TERN_(DISTINCT_E_FACTORS, [EXTRUDERS]);
138
+    float Planner::max_e_jerk                   // Calculated from junction_deviation_mm
139
+      [TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
140 140
   #endif
141 141
 #endif
142 142
 
@@ -2139,15 +2139,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
2139 2139
 
2140 2140
     #if ENABLED(LIN_ADVANCE)
2141 2141
 
2142
-      #if HAS_JUNCTION_DEVIATION
2143
-        #if ENABLED(DISTINCT_E_FACTORS)
2144
-          #define MAX_E_JERK max_e_jerk[extruder]
2145
-        #else
2146
-          #define MAX_E_JERK max_e_jerk
2147
-        #endif
2148
-      #else
2149
-        #define MAX_E_JERK max_jerk.e
2150
-      #endif
2142
+      #define MAX_E_JERK(N) TERN(HAS_JUNCTION_DEVIATION, max_e_jerk[E_AXIS_N(N)], max_jerk.e)
2151 2143
 
2152 2144
       /**
2153 2145
        *
@@ -2179,7 +2171,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
2179 2171
         if (block->e_D_ratio > 3.0f)
2180 2172
           block->use_advance_lead = false;
2181 2173
         else {
2182
-          const uint32_t max_accel_steps_per_s2 = MAX_E_JERK / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
2174
+          const uint32_t max_accel_steps_per_s2 = MAX_E_JERK(extruder) / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
2183 2175
           if (TERN0(LA_DEBUG, accel > max_accel_steps_per_s2))
2184 2176
             SERIAL_ECHOLNPGM("Acceleration limited.");
2185 2177
           NOMORE(accel, max_accel_steps_per_s2);

+ 4
- 8
Marlin/src/module/planner.h View File

@@ -317,7 +317,7 @@ class Planner {
317 317
       static float junction_deviation_mm;       // (mm) M205 J
318 318
       #if ENABLED(LIN_ADVANCE)
319 319
         static float max_e_jerk                 // Calculated from junction_deviation_mm
320
-          TERN_(DISTINCT_E_FACTORS, [EXTRUDERS]);
320
+          [TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
321 321
       #endif
322 322
     #endif
323 323
 
@@ -840,13 +840,9 @@ class Planner {
840 840
 
841 841
     #if HAS_LINEAR_E_JERK
842 842
       FORCE_INLINE static void recalculate_max_e_jerk() {
843
-        #define GET_MAX_E_JERK(N) SQRT(junction_deviation_mm * (N) * SQRT(0.5) / (1.0f - SQRT(0.5)))
844
-        #if ENABLED(DISTINCT_E_FACTORS)
845
-          LOOP_L_N(i, EXTRUDERS)
846
-            max_e_jerk[i] = GET_MAX_E_JERK(settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]);
847
-        #else
848
-          max_e_jerk = GET_MAX_E_JERK(settings.max_acceleration_mm_per_s2[E_AXIS]);
849
-        #endif
843
+        const float prop = junction_deviation_mm * SQRT(0.5) / (1.0f - SQRT(0.5));
844
+        LOOP_L_N(i, EXTRUDERS)
845
+          max_e_jerk[E_AXIS_N(i)] = SQRT(prop * settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]);
850 846
       }
851 847
     #endif
852 848
 

Loading…
Cancel
Save