Use cs.max_jerk from ConfigurationStore.
This commit is contained in:
parent
bb66bfe6a7
commit
ac7c062161
5 changed files with 17 additions and 23 deletions
|
@ -103,7 +103,7 @@ void Config_PrintSettings(uint8_t level)
|
||||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
||||||
echomagic, echomagic, max_acceleration_units_per_sq_second_silent[X_AXIS], max_acceleration_units_per_sq_second_silent[Y_AXIS], max_acceleration_units_per_sq_second_silent[Z_AXIS], max_acceleration_units_per_sq_second_silent[E_AXIS],
|
echomagic, echomagic, max_acceleration_units_per_sq_second_silent[X_AXIS], max_acceleration_units_per_sq_second_silent[Y_AXIS], max_acceleration_units_per_sq_second_silent[Z_AXIS], max_acceleration_units_per_sq_second_silent[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, max_jerk[X_AXIS], max_jerk[Y_AXIS], max_jerk[Z_AXIS], max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, add_homing[X_AXIS], add_homing[Y_AXIS], add_homing[Z_AXIS]
|
echomagic, echomagic, add_homing[X_AXIS], add_homing[Y_AXIS], add_homing[Z_AXIS]
|
||||||
#else //TMC2130
|
#else //TMC2130
|
||||||
printf_P(PSTR(
|
printf_P(PSTR(
|
||||||
|
@ -118,7 +118,7 @@ void Config_PrintSettings(uint8_t level)
|
||||||
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
||||||
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, max_jerk[X_AXIS], max_jerk[Y_AXIS], max_jerk[Z_AXIS], max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, add_homing[X_AXIS], add_homing[Y_AXIS], add_homing[Z_AXIS]
|
echomagic, echomagic, add_homing[X_AXIS], add_homing[Y_AXIS], add_homing[Z_AXIS]
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
);
|
);
|
||||||
|
@ -232,8 +232,8 @@ bool Config_RetrieveSettings(uint16_t offset)
|
||||||
EEPROM_READ_VAR(i,cs);
|
EEPROM_READ_VAR(i,cs);
|
||||||
|
|
||||||
|
|
||||||
if (max_jerk[X_AXIS] > DEFAULT_XJERK) max_jerk[X_AXIS] = DEFAULT_XJERK;
|
if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK;
|
||||||
if (max_jerk[Y_AXIS] > DEFAULT_YJERK) max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
||||||
calculate_extruder_multipliers();
|
calculate_extruder_multipliers();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ typedef struct
|
||||||
float minimumfeedrate;
|
float minimumfeedrate;
|
||||||
float mintravelfeedrate;
|
float mintravelfeedrate;
|
||||||
unsigned long minsegmenttime;
|
unsigned long minsegmenttime;
|
||||||
float max_jerk[4];
|
float max_jerk[4]; //!< Jerk is a maximum immediate velocity change.
|
||||||
float add_homing[3];
|
float add_homing[3];
|
||||||
float zprobe_zoffset;
|
float zprobe_zoffset;
|
||||||
float Kp;
|
float Kp;
|
||||||
|
|
|
@ -5700,7 +5700,7 @@ Sigma_Exit:
|
||||||
float value = code_value();
|
float value = code_value();
|
||||||
if(value < 20.0) {
|
if(value < 20.0) {
|
||||||
float factor = cs.axis_steps_per_unit[i] / value; // increase e constants if M92 E14 is given for netfab.
|
float factor = cs.axis_steps_per_unit[i] / value; // increase e constants if M92 E14 is given for netfab.
|
||||||
max_jerk[E_AXIS] *= factor;
|
cs.max_jerk[E_AXIS] *= factor;
|
||||||
max_feedrate[i] *= factor;
|
max_feedrate[i] *= factor;
|
||||||
axis_steps_per_sqr_second[i] *= factor;
|
axis_steps_per_sqr_second[i] *= factor;
|
||||||
}
|
}
|
||||||
|
@ -5964,12 +5964,12 @@ Sigma_Exit:
|
||||||
if(code_seen('S')) cs.minimumfeedrate = code_value();
|
if(code_seen('S')) cs.minimumfeedrate = code_value();
|
||||||
if(code_seen('T')) cs.mintravelfeedrate = code_value();
|
if(code_seen('T')) cs.mintravelfeedrate = code_value();
|
||||||
if(code_seen('B')) cs.minsegmenttime = code_value() ;
|
if(code_seen('B')) cs.minsegmenttime = code_value() ;
|
||||||
if(code_seen('X')) max_jerk[X_AXIS] = max_jerk[Y_AXIS] = code_value();
|
if(code_seen('X')) cs.max_jerk[X_AXIS] = cs.max_jerk[Y_AXIS] = code_value();
|
||||||
if(code_seen('Y')) max_jerk[Y_AXIS] = code_value();
|
if(code_seen('Y')) cs.max_jerk[Y_AXIS] = code_value();
|
||||||
if(code_seen('Z')) max_jerk[Z_AXIS] = code_value();
|
if(code_seen('Z')) cs.max_jerk[Z_AXIS] = code_value();
|
||||||
if(code_seen('E')) max_jerk[E_AXIS] = code_value();
|
if(code_seen('E')) cs.max_jerk[E_AXIS] = code_value();
|
||||||
if (max_jerk[X_AXIS] > DEFAULT_XJERK) max_jerk[X_AXIS] = DEFAULT_XJERK;
|
if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK;
|
||||||
if (max_jerk[Y_AXIS] > DEFAULT_YJERK) max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 206: // M206 additional homing offset
|
case 206: // M206 additional homing offset
|
||||||
|
|
|
@ -80,9 +80,6 @@ float* max_feedrate = cs.max_feedrate_normal;
|
||||||
// Use M201 to override by software
|
// Use M201 to override by software
|
||||||
unsigned long max_acceleration_units_per_sq_second_silent[NUM_AXIS];
|
unsigned long max_acceleration_units_per_sq_second_silent[NUM_AXIS];
|
||||||
unsigned long* max_acceleration_units_per_sq_second = cs.max_acceleration_units_per_sq_second_normal;
|
unsigned long* max_acceleration_units_per_sq_second = cs.max_acceleration_units_per_sq_second_normal;
|
||||||
|
|
||||||
// Jerk is a maximum immediate velocity change.
|
|
||||||
float max_jerk[NUM_AXIS];
|
|
||||||
unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
@ -1042,20 +1039,20 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
bool limited = false;
|
bool limited = false;
|
||||||
for (uint8_t axis = 0; axis < 4; ++ axis) {
|
for (uint8_t axis = 0; axis < 4; ++ axis) {
|
||||||
float jerk = fabs(current_speed[axis]);
|
float jerk = fabs(current_speed[axis]);
|
||||||
if (jerk > max_jerk[axis]) {
|
if (jerk > cs.max_jerk[axis]) {
|
||||||
// The actual jerk is lower, if it has been limited by the XY jerk.
|
// The actual jerk is lower, if it has been limited by the XY jerk.
|
||||||
if (limited) {
|
if (limited) {
|
||||||
// Spare one division by a following gymnastics:
|
// Spare one division by a following gymnastics:
|
||||||
// Instead of jerk *= safe_speed / block->nominal_speed,
|
// Instead of jerk *= safe_speed / block->nominal_speed,
|
||||||
// multiply max_jerk[axis] by the divisor.
|
// multiply max_jerk[axis] by the divisor.
|
||||||
jerk *= safe_speed;
|
jerk *= safe_speed;
|
||||||
float mjerk = max_jerk[axis] * block->nominal_speed;
|
float mjerk = cs.max_jerk[axis] * block->nominal_speed;
|
||||||
if (jerk > mjerk) {
|
if (jerk > mjerk) {
|
||||||
safe_speed *= mjerk / jerk;
|
safe_speed *= mjerk / jerk;
|
||||||
limited = true;
|
limited = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
safe_speed = max_jerk[axis];
|
safe_speed = cs.max_jerk[axis];
|
||||||
limited = true;
|
limited = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1108,8 +1105,8 @@ Having the real displacement of the head, we can calculate the total movement le
|
||||||
(v_entry - v_exit) :
|
(v_entry - v_exit) :
|
||||||
// axis reversal
|
// axis reversal
|
||||||
max(- v_exit, v_entry));
|
max(- v_exit, v_entry));
|
||||||
if (jerk > max_jerk[axis]) {
|
if (jerk > cs.max_jerk[axis]) {
|
||||||
v_factor *= max_jerk[axis] / jerk;
|
v_factor *= cs.max_jerk[axis] / jerk;
|
||||||
limited = true;
|
limited = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,9 +166,6 @@ extern float* max_feedrate;
|
||||||
// Use M201 to override by software
|
// Use M201 to override by software
|
||||||
extern unsigned long max_acceleration_units_per_sq_second_silent[NUM_AXIS];
|
extern unsigned long max_acceleration_units_per_sq_second_silent[NUM_AXIS];
|
||||||
extern unsigned long* max_acceleration_units_per_sq_second;
|
extern unsigned long* max_acceleration_units_per_sq_second;
|
||||||
|
|
||||||
// Jerk is a maximum immediate velocity change.
|
|
||||||
extern float max_jerk[NUM_AXIS];
|
|
||||||
extern unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
extern unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
||||||
|
|
||||||
extern long position[NUM_AXIS];
|
extern long position[NUM_AXIS];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue