Move flow_percentage to Planner
This commit is contained in:
parent
8dc2838d98
commit
bf7af95db3
@ -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]); }
|
||||
|
||||
static float saved_feedrate_mm_s;
|
||||
int16_t feedrate_percentage = 100, saved_feedrate_percentage,
|
||||
flow_percentage[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(100);
|
||||
int16_t feedrate_percentage = 100, saved_feedrate_percentage;
|
||||
|
||||
// Initialized by settings.load()
|
||||
bool volumetric_enabled;
|
||||
|
@ -187,7 +187,6 @@ extern int16_t feedrate_percentage;
|
||||
#define MMS_SCALED(MM_S) ((MM_S)*feedrate_percentage*0.01)
|
||||
|
||||
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 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
|
||||
|
||||
#include "../module/motion.h"
|
||||
#include "../module/planner.h"
|
||||
|
||||
bool FWRetract::autoretract_enabled, // M209 S - Autoretract switch
|
||||
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 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
|
||||
flow_percentage[active_extruder] = 100;
|
||||
planner.flow_percentage[active_extruder] = 100;
|
||||
|
||||
// The current position will be the destination for E and Z moves
|
||||
set_destination_to_current();
|
||||
@ -155,7 +156,7 @@ void FWRetract::retract(const bool retracting
|
||||
}
|
||||
|
||||
// Restore flow and feedrate
|
||||
flow_percentage[active_extruder] = old_flow;
|
||||
planner.flow_percentage[active_extruder] = old_flow;
|
||||
feedrate_mm_s = old_feedrate_mm_s;
|
||||
|
||||
// The active extruder is now retracted or recovered
|
||||
|
@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
#include "../gcode.h"
|
||||
#include "../../Marlin.h"
|
||||
#include "../../module/planner.h"
|
||||
|
||||
/**
|
||||
* M221: Set extrusion percentage (M221 T0 S95)
|
||||
@ -29,5 +29,5 @@
|
||||
void GcodeSuite::M221() {
|
||||
if (get_target_extruder_from_command()) return;
|
||||
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_PROTOCOL(filament_width_meas);
|
||||
//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]:
|
||||
//
|
||||
#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
|
||||
MENU_ITEM_EDIT(int3, MSG_FLOW, &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_N2, &flow_percentage[1], 10, 999);
|
||||
MENU_ITEM_EDIT(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999);
|
||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &planner.flow_percentage[0], 10, 999);
|
||||
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &planner.flow_percentage[1], 10, 999);
|
||||
#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
|
||||
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
|
||||
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 > 3
|
||||
#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
|
||||
#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],
|
||||
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
|
||||
#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
|
||||
axis_steps_per_mm[XYZE_N],
|
||||
steps_to_mm[XYZE_N];
|
||||
|
Loading…
Reference in New Issue
Block a user