Move flow_percentage to Planner
This commit is contained in:
parent
8dc2838d98
commit
bf7af95db3
8 changed files with 19 additions and 16 deletions
|
@ -166,8 +166,7 @@ static const float homing_feedrate_mm_s[] PROGMEM = {
|
||||||
FORCE_INLINE float homing_feedrate(const AxisEnum a) { return pgm_read_float(&homing_feedrate_mm_s[a]); }
|
FORCE_INLINE float homing_feedrate(const AxisEnum a) { return pgm_read_float(&homing_feedrate_mm_s[a]); }
|
||||||
|
|
||||||
static float saved_feedrate_mm_s;
|
static float saved_feedrate_mm_s;
|
||||||
int16_t feedrate_percentage = 100, saved_feedrate_percentage,
|
int16_t feedrate_percentage = 100, saved_feedrate_percentage;
|
||||||
flow_percentage[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(100);
|
|
||||||
|
|
||||||
// Initialized by settings.load()
|
// Initialized by settings.load()
|
||||||
bool volumetric_enabled;
|
bool volumetric_enabled;
|
||||||
|
|
|
@ -187,7 +187,6 @@ extern int16_t feedrate_percentage;
|
||||||
#define MMS_SCALED(MM_S) ((MM_S)*feedrate_percentage*0.01)
|
#define MMS_SCALED(MM_S) ((MM_S)*feedrate_percentage*0.01)
|
||||||
|
|
||||||
extern bool volumetric_enabled;
|
extern bool volumetric_enabled;
|
||||||
extern int16_t flow_percentage[EXTRUDERS]; // Extrusion factor for each extruder
|
|
||||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||||
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
FWRetract fwretract; // Single instance
|
FWRetract fwretract; // Single instance
|
||||||
|
|
||||||
#include "../module/motion.h"
|
#include "../module/motion.h"
|
||||||
|
#include "../module/planner.h"
|
||||||
|
|
||||||
bool FWRetract::autoretract_enabled, // M209 S - Autoretract switch
|
bool FWRetract::autoretract_enabled, // M209 S - Autoretract switch
|
||||||
FWRetract::retracted[EXTRUDERS] = { false }; // Which extruders are currently retracted
|
FWRetract::retracted[EXTRUDERS] = { false }; // Which extruders are currently retracted
|
||||||
|
@ -108,10 +109,10 @@ void FWRetract::retract(const bool retracting
|
||||||
const bool has_zhop = retract_zlift > 0.01; // Is there a hop set?
|
const bool has_zhop = retract_zlift > 0.01; // Is there a hop set?
|
||||||
|
|
||||||
const float old_feedrate_mm_s = feedrate_mm_s;
|
const float old_feedrate_mm_s = feedrate_mm_s;
|
||||||
const int16_t old_flow = flow_percentage[active_extruder];
|
const int16_t old_flow = planner.flow_percentage[active_extruder];
|
||||||
|
|
||||||
// Don't apply flow multiplication to retract/recover
|
// Don't apply flow multiplication to retract/recover
|
||||||
flow_percentage[active_extruder] = 100;
|
planner.flow_percentage[active_extruder] = 100;
|
||||||
|
|
||||||
// The current position will be the destination for E and Z moves
|
// The current position will be the destination for E and Z moves
|
||||||
set_destination_to_current();
|
set_destination_to_current();
|
||||||
|
@ -155,7 +156,7 @@ void FWRetract::retract(const bool retracting
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore flow and feedrate
|
// Restore flow and feedrate
|
||||||
flow_percentage[active_extruder] = old_flow;
|
planner.flow_percentage[active_extruder] = old_flow;
|
||||||
feedrate_mm_s = old_feedrate_mm_s;
|
feedrate_mm_s = old_feedrate_mm_s;
|
||||||
|
|
||||||
// The active extruder is now retracted or recovered
|
// The active extruder is now retracted or recovered
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../gcode.h"
|
#include "../gcode.h"
|
||||||
#include "../../Marlin.h"
|
#include "../../module/planner.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M221: Set extrusion percentage (M221 T0 S95)
|
* M221: Set extrusion percentage (M221 T0 S95)
|
||||||
|
@ -29,5 +29,5 @@
|
||||||
void GcodeSuite::M221() {
|
void GcodeSuite::M221() {
|
||||||
if (get_target_extruder_from_command()) return;
|
if (get_target_extruder_from_command()) return;
|
||||||
if (parser.seenval('S'))
|
if (parser.seenval('S'))
|
||||||
flow_percentage[target_extruder] = parser.value_int();
|
planner.flow_percentage[target_extruder] = parser.value_int();
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,5 +45,5 @@ void gcode_M405() {
|
||||||
//SERIAL_PROTOCOLPGM("Filament dia (measured mm):");
|
//SERIAL_PROTOCOLPGM("Filament dia (measured mm):");
|
||||||
//SERIAL_PROTOCOL(filament_width_meas);
|
//SERIAL_PROTOCOL(filament_width_meas);
|
||||||
//SERIAL_PROTOCOLPGM("Extrusion ratio(%):");
|
//SERIAL_PROTOCOLPGM("Extrusion ratio(%):");
|
||||||
//SERIAL_PROTOCOL(flow_percentage[active_extruder]);
|
//SERIAL_PROTOCOL(planner.flow_percentage[active_extruder]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1224,17 +1224,17 @@ void kill_screen(const char* lcd_msg) {
|
||||||
// Flow [1-5]:
|
// Flow [1-5]:
|
||||||
//
|
//
|
||||||
#if EXTRUDERS == 1
|
#if EXTRUDERS == 1
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW, &flow_percentage[0], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW, &planner.flow_percentage[0], 10, 999);
|
||||||
#else // EXTRUDERS > 1
|
#else // EXTRUDERS > 1
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW, &flow_percentage[active_extruder], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &flow_percentage[0], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &planner.flow_percentage[0], 10, 999);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &flow_percentage[1], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &planner.flow_percentage[1], 10, 999);
|
||||||
#if EXTRUDERS > 2
|
#if EXTRUDERS > 2
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &flow_percentage[2], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &planner.flow_percentage[2], 10, 999);
|
||||||
#if EXTRUDERS > 3
|
#if EXTRUDERS > 3
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N4, &flow_percentage[3], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N4, &planner.flow_percentage[3], 10, 999);
|
||||||
#if EXTRUDERS > 4
|
#if EXTRUDERS > 4
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N5, &flow_percentage[4], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N5, &planner.flow_percentage[4], 10, 999);
|
||||||
#endif // EXTRUDERS > 4
|
#endif // EXTRUDERS > 4
|
||||||
#endif // EXTRUDERS > 3
|
#endif // EXTRUDERS > 3
|
||||||
#endif // EXTRUDERS > 2
|
#endif // EXTRUDERS > 2
|
||||||
|
|
|
@ -92,6 +92,8 @@ float Planner::max_feedrate_mm_s[XYZE_N], // Max speeds in mm per second
|
||||||
uint8_t Planner::last_extruder = 0; // Respond to extruder change
|
uint8_t Planner::last_extruder = 0; // Respond to extruder change
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int16_t Planner::flow_percentage[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(100); // Extrusion factor for each extruder
|
||||||
|
|
||||||
uint32_t Planner::max_acceleration_steps_per_s2[XYZE_N],
|
uint32_t Planner::max_acceleration_steps_per_s2[XYZE_N],
|
||||||
Planner::max_acceleration_mm_per_s2[XYZE_N]; // Use M201 to override by software
|
Planner::max_acceleration_mm_per_s2[XYZE_N]; // Use M201 to override by software
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,8 @@ class Planner {
|
||||||
static uint8_t last_extruder; // Respond to extruder change
|
static uint8_t last_extruder; // Respond to extruder change
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int16_t flow_percentage[EXTRUDERS]; // Extrusion factor for each extruder
|
||||||
|
|
||||||
static float max_feedrate_mm_s[XYZE_N], // Max speeds in mm per second
|
static float max_feedrate_mm_s[XYZE_N], // Max speeds in mm per second
|
||||||
axis_steps_per_mm[XYZE_N],
|
axis_steps_per_mm[XYZE_N],
|
||||||
steps_to_mm[XYZE_N];
|
steps_to_mm[XYZE_N];
|
||||||
|
|
Reference in a new issue