From ac7c0621617bd9e9f8c111dd72f1f24ac6de81c0 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 24 Sep 2018 16:35:33 +0200 Subject: [PATCH] Use cs.max_jerk from ConfigurationStore. --- Firmware/ConfigurationStore.cpp | 8 ++++---- Firmware/ConfigurationStore.h | 2 +- Firmware/Marlin_main.cpp | 14 +++++++------- Firmware/planner.cpp | 13 +++++-------- Firmware/planner.h | 3 --- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index 086c43e18..356c7b835 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -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, 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.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] #else //TMC2130 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_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.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] #endif //TMC2130 ); @@ -232,8 +232,8 @@ bool Config_RetrieveSettings(uint16_t offset) EEPROM_READ_VAR(i,cs); - if (max_jerk[X_AXIS] > DEFAULT_XJERK) max_jerk[X_AXIS] = DEFAULT_XJERK; - if (max_jerk[Y_AXIS] > DEFAULT_YJERK) max_jerk[Y_AXIS] = DEFAULT_YJERK; + if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK; + if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK; calculate_extruder_multipliers(); diff --git a/Firmware/ConfigurationStore.h b/Firmware/ConfigurationStore.h index 7a656276b..8abab432e 100644 --- a/Firmware/ConfigurationStore.h +++ b/Firmware/ConfigurationStore.h @@ -15,7 +15,7 @@ typedef struct float minimumfeedrate; float mintravelfeedrate; unsigned long minsegmenttime; - float max_jerk[4]; + float max_jerk[4]; //!< Jerk is a maximum immediate velocity change. float add_homing[3]; float zprobe_zoffset; float Kp; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 24f76f96c..be4b5a8ef 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5700,7 +5700,7 @@ Sigma_Exit: float value = code_value(); if(value < 20.0) { 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; axis_steps_per_sqr_second[i] *= factor; } @@ -5964,12 +5964,12 @@ Sigma_Exit: if(code_seen('S')) cs.minimumfeedrate = code_value(); if(code_seen('T')) cs.mintravelfeedrate = 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('Y')) max_jerk[Y_AXIS] = code_value(); - if(code_seen('Z')) max_jerk[Z_AXIS] = code_value(); - if(code_seen('E')) max_jerk[E_AXIS] = code_value(); - if (max_jerk[X_AXIS] > DEFAULT_XJERK) max_jerk[X_AXIS] = DEFAULT_XJERK; - if (max_jerk[Y_AXIS] > DEFAULT_YJERK) max_jerk[Y_AXIS] = DEFAULT_YJERK; + if(code_seen('X')) cs.max_jerk[X_AXIS] = cs.max_jerk[Y_AXIS] = code_value(); + if(code_seen('Y')) cs.max_jerk[Y_AXIS] = code_value(); + if(code_seen('Z')) cs.max_jerk[Z_AXIS] = code_value(); + if(code_seen('E')) cs.max_jerk[E_AXIS] = code_value(); + if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK; + if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK; } break; case 206: // M206 additional homing offset diff --git a/Firmware/planner.cpp b/Firmware/planner.cpp index fdbf64761..05f9ba705 100644 --- a/Firmware/planner.cpp +++ b/Firmware/planner.cpp @@ -80,9 +80,6 @@ float* max_feedrate = cs.max_feedrate_normal; // 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 = 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]; #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; for (uint8_t axis = 0; axis < 4; ++ 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. if (limited) { // Spare one division by a following gymnastics: // Instead of jerk *= safe_speed / block->nominal_speed, // multiply max_jerk[axis] by the divisor. jerk *= safe_speed; - float mjerk = max_jerk[axis] * block->nominal_speed; + float mjerk = cs.max_jerk[axis] * block->nominal_speed; if (jerk > mjerk) { safe_speed *= mjerk / jerk; limited = true; } } else { - safe_speed = max_jerk[axis]; + safe_speed = cs.max_jerk[axis]; limited = true; } } @@ -1108,8 +1105,8 @@ Having the real displacement of the head, we can calculate the total movement le (v_entry - v_exit) : // axis reversal max(- v_exit, v_entry)); - if (jerk > max_jerk[axis]) { - v_factor *= max_jerk[axis] / jerk; + if (jerk > cs.max_jerk[axis]) { + v_factor *= cs.max_jerk[axis] / jerk; limited = true; } } diff --git a/Firmware/planner.h b/Firmware/planner.h index d64386ab4..892c62a40 100644 --- a/Firmware/planner.h +++ b/Firmware/planner.h @@ -166,9 +166,6 @@ extern float* max_feedrate; // 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; - -// Jerk is a maximum immediate velocity change. -extern float max_jerk[NUM_AXIS]; extern unsigned long axis_steps_per_sqr_second[NUM_AXIS]; extern long position[NUM_AXIS];