Move flow_percentage to Planner

2.0.x
Scott Lahteine 7 years ago
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…
Cancel
Save