externint16_tflow_percentage[EXTRUDERS];// Extrusion factor for each extruder
externfloatfilament_size[EXTRUDERS];// cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
externfloatvolumetric_multiplier[EXTRUDERS];// reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
@ -91,6 +91,12 @@ float Planner::max_feedrate_mm_s[XYZE_N], // Max speeds in mm per second
uint8_tPlanner::last_extruder=0;// Respond to extruder change
uint8_tPlanner::last_extruder=0;// Respond to extruder change
#endif
#endif
int16_tPlanner::flow_percentage[EXTRUDERS]=ARRAY_BY_EXTRUDERS1(100);// Extrusion factor for each extruder
floatPlanner::e_factor[EXTRUDERS],// The flow percentage and volumetric multiplier combine to scale E movement
Planner::filament_size[EXTRUDERS],// diameter of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder
Planner::volumetric_multiplier[EXTRUDERS];// Reciprocal of cross-sectional area of filament (in mm^2). Pre-calculated to reduce computation in the planner
position[E_AXIS]=target[E_AXIS];// Behave as if the move really took place, but ignore E part
if(thermalManager.tooColdToExtrude(extruder)){
de=0;// no difference
position[E_AXIS]=target[E_AXIS];// Behave as if the move really took place, but ignore E part
#if ENABLED(LIN_ADVANCE)
de=0;// no difference
position_float[E_AXIS]=e;
#if ENABLED(LIN_ADVANCE)
de_float=0;
position_float[E_AXIS]=e;
#endif
de_float=0;
SERIAL_ECHO_START();
#endif
SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP);
SERIAL_ECHO_START();
}
SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP);
}
#endif // PREVENT_COLD_EXTRUSION
#if ENABLED(PREVENT_LENGTHY_EXTRUDE)
#if ENABLED(PREVENT_LENGTHY_EXTRUDE)
if(labs(de)>(int32_t)axis_steps_per_mm[E_AXIS_N]*(EXTRUDE_MAXLENGTH)){// It's not important to get max. extrusion length in a precision < 1mm, so save some cycles and cast to int
if(labs(de*e_factor[extruder])>(int32_t)axis_steps_per_mm[E_AXIS_N]*(EXTRUDE_MAXLENGTH)){// It's not important to get max. extrusion length in a precision < 1mm, so save some cycles and cast to int
position[E_AXIS]=target[E_AXIS];// Behave as if the move really took place, but ignore E part
position[E_AXIS]=target[E_AXIS];// Behave as if the move really took place, but ignore E part
staticuint8_tlast_extruder;// Respond to extruder change
staticuint8_tlast_extruder;// Respond to extruder change
#endif
#endif
staticint16_tflow_percentage[EXTRUDERS];// Extrusion factor for each extruder
staticfloate_factor[EXTRUDERS],// The flow percentage and volumetric multiplier combine to scale E movement
filament_size[EXTRUDERS],// diameter of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder
volumetric_multiplier[EXTRUDERS];// Reciprocal of cross-sectional area of filament (in mm^2). Pre-calculated to reduce computation in the planner
// May be auto-adjusted by a filament width sensor
staticfloatmax_feedrate_mm_s[XYZE_N],// Max speeds in mm per second
staticfloatmax_feedrate_mm_s[XYZE_N],// Max speeds in mm per second