Browse Source

Merge pull request #529 from PavelSindler/M221_fix

Fix of calculate_extrusion_multipliers().
PavelSindler 6 years ago
parent
commit
366268412b
2 changed files with 9 additions and 6 deletions
  1. 1 1
      Firmware/ConfigurationStore.cpp
  2. 8 5
      Firmware/Marlin_main.cpp

+ 1 - 1
Firmware/ConfigurationStore.cpp

@@ -378,8 +378,8 @@ bool Config_RetrieveSettings(uint16_t offset, uint8_t level)
 			EEPROM_READ_VAR(i, extruder_advance_k);
 			EEPROM_READ_VAR(i, advance_ed_ratio);
 		}
-		calculate_volumetric_multipliers();
 #endif //LIN_ADVANCE
+    calculate_extruder_multipliers();
 
 		// Call updatePID (similar to when we have processed M301)
 		updatePID();

+ 8 - 5
Firmware/Marlin_main.cpp

@@ -7021,11 +7021,14 @@ void save_statistics(unsigned long _total_filament_used, unsigned long _total_pr
 }
 
 float calculate_extruder_multiplier(float diameter) {
-  bool  enabled = volumetric_enabled && diameter > 0;
-  float area    = enabled ? (M_PI * pow(diameter * .5, 2)) : 0;
-	return (extrudemultiply == 100) ? 
-    (enabled ? (1.f / area) : 1.f) :
-    (enabled ? ((float(extrudemultiply) * 0.01f) / area) : 1.f);
+  float out = 1.f;
+  if (volumetric_enabled && diameter > 0.f) {
+    float area = M_PI * diameter * diameter * 0.25;
+    out = 1.f / area;
+  }
+  if (extrudemultiply != 100)
+    out *= float(extrudemultiply) * 0.01f;
+  return out;
 }
 
 void calculate_extruder_multipliers() {