Merge pull request #4936 from thinkyhead/rc_more_debug_homing
Put max_jerk vars in array, clean up jerk code
This commit is contained in:
		
						commit
						6abfc96165
					
				| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -5548,11 +5548,11 @@ inline void gcode_M92() { | ||||
|         float value = code_value_per_axis_unit(i); | ||||
|         if (value < 20.0) { | ||||
|           float factor = planner.axis_steps_per_mm[i] / value; // increase e constants if M92 E14 is given for netfab.
 | ||||
|           planner.max_e_jerk *= factor; | ||||
|           planner.max_feedrate_mm_s[i] *= factor; | ||||
|           planner.max_acceleration_steps_per_s2[i] *= factor; | ||||
|           planner.max_jerk[E_AXIS] *= factor; | ||||
|           planner.max_feedrate_mm_s[E_AXIS] *= factor; | ||||
|           planner.max_acceleration_steps_per_s2[E_AXIS] *= factor; | ||||
|         } | ||||
|         planner.axis_steps_per_mm[i] = value; | ||||
|         planner.axis_steps_per_mm[E_AXIS] = value; | ||||
|       } | ||||
|       else { | ||||
|         planner.axis_steps_per_mm[i] = code_value_per_axis_unit(i); | ||||
| @ -5788,9 +5788,10 @@ inline void gcode_M205() { | ||||
|   if (code_seen('S')) planner.min_feedrate_mm_s = code_value_linear_units(); | ||||
|   if (code_seen('T')) planner.min_travel_feedrate_mm_s = code_value_linear_units(); | ||||
|   if (code_seen('B')) planner.min_segment_time = code_value_millis(); | ||||
|   if (code_seen('X')) planner.max_xy_jerk = code_value_linear_units(); | ||||
|   if (code_seen('Z')) planner.max_z_jerk = code_value_axis_units(Z_AXIS); | ||||
|   if (code_seen('E')) planner.max_e_jerk = code_value_axis_units(E_AXIS); | ||||
|   if (code_seen('X')) planner.max_jerk[X_AXIS] = code_value_axis_units(X_AXIS); | ||||
|   if (code_seen('Y')) planner.max_jerk[Y_AXIS] = code_value_axis_units(Y_AXIS); | ||||
|   if (code_seen('Z')) planner.max_jerk[Z_AXIS] = code_value_axis_units(Z_AXIS); | ||||
|   if (code_seen('E')) planner.max_jerk[E_AXIS] = code_value_axis_units(E_AXIS); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -91,6 +91,8 @@ | ||||
|   #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." | ||||
| #elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) | ||||
|   #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." | ||||
| #elif defined(DEFAULT_XYJERK) | ||||
|   #error "DEFAULT_XYJERK is deprecated. Use DEFAULT_XJERK and DEFAULT_YJERK instead." | ||||
| #elif defined(XY_TRAVEL_SPEED) | ||||
|   #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead." | ||||
| #elif defined(PROBE_SERVO_DEACTIVATION_DELAY) | ||||
|  | ||||
| @ -36,7 +36,7 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #define EEPROM_VERSION "V25" | ||||
| #define EEPROM_VERSION "V26" | ||||
| 
 | ||||
| // Change EEPROM version if these are changed:
 | ||||
| #define EEPROM_OFFSET 100 | ||||
| @ -57,69 +57,70 @@ | ||||
|  *  166  M205 S    planner.min_feedrate_mm_s (float) | ||||
|  *  170  M205 T    planner.min_travel_feedrate_mm_s (float) | ||||
|  *  174  M205 B    planner.min_segment_time (ulong) | ||||
|  *  178  M205 X    planner.max_xy_jerk (float) | ||||
|  *  182  M205 Z    planner.max_z_jerk (float) | ||||
|  *  186  M205 E    planner.max_e_jerk (float) | ||||
|  *  190  M206 XYZ  home_offset (float x3) | ||||
|  *  178  M205 X    planner.max_jerk[X_AXIS] (float) | ||||
|  *  182  M205 Y    planner.max_jerk[Y_AXIS] (float) | ||||
|  *  186  M205 Z    planner.max_jerk[Z_AXIS] (float) | ||||
|  *  190  M205 E    planner.max_jerk[E_AXIS] (float) | ||||
|  *  194  M206 XYZ  home_offset (float x3) | ||||
|  * | ||||
|  * Mesh bed leveling: | ||||
|  *  202  M420 S    status (uint8) | ||||
|  *  203            z_offset (float) | ||||
|  *  207            mesh_num_x (uint8 as set in firmware) | ||||
|  *  208            mesh_num_y (uint8 as set in firmware) | ||||
|  *  209 G29 S3 XYZ z_values[][] (float x9, by default, up to float x 81) | ||||
|  *  206  M420 S    status (uint8) | ||||
|  *  207            z_offset (float) | ||||
|  *  211            mesh_num_x (uint8 as set in firmware) | ||||
|  *  212            mesh_num_y (uint8 as set in firmware) | ||||
|  *  213 G29 S3 XYZ z_values[][] (float x9, by default, up to float x 81) | ||||
|  * | ||||
|  * AUTO BED LEVELING | ||||
|  *  245  M851      zprobe_zoffset (float) | ||||
|  *  249  M851      zprobe_zoffset (float) | ||||
|  * | ||||
|  * DELTA: | ||||
|  *  249  M666 XYZ  endstop_adj (float x3) | ||||
|  *  261  M665 R    delta_radius (float) | ||||
|  *  265  M665 L    delta_diagonal_rod (float) | ||||
|  *  269  M665 S    delta_segments_per_second (float) | ||||
|  *  273  M665 A    delta_diagonal_rod_trim_tower_1 (float) | ||||
|  *  277  M665 B    delta_diagonal_rod_trim_tower_2 (float) | ||||
|  *  281  M665 C    delta_diagonal_rod_trim_tower_3 (float) | ||||
|  *  253  M666 XYZ  endstop_adj (float x3) | ||||
|  *  265  M665 R    delta_radius (float) | ||||
|  *  269  M665 L    delta_diagonal_rod (float) | ||||
|  *  273  M665 S    delta_segments_per_second (float) | ||||
|  *  277  M665 A    delta_diagonal_rod_trim_tower_1 (float) | ||||
|  *  281  M665 B    delta_diagonal_rod_trim_tower_2 (float) | ||||
|  *  285  M665 C    delta_diagonal_rod_trim_tower_3 (float) | ||||
|  * | ||||
|  * Z_DUAL_ENDSTOPS: | ||||
|  *  285  M666 Z    z_endstop_adj (float) | ||||
|  *  289  M666 Z    z_endstop_adj (float) | ||||
|  * | ||||
|  * ULTIPANEL: | ||||
|  *  289  M145 S0 H preheatHotendTemp1 (int) | ||||
|  *  291  M145 S0 B preheatBedTemp1 (int) | ||||
|  *  293  M145 S0 F preheatFanSpeed1 (int) | ||||
|  *  295  M145 S1 H preheatHotendTemp2 (int) | ||||
|  *  297  M145 S1 B preheatBedTemp2 (int) | ||||
|  *  299  M145 S1 F preheatFanSpeed2 (int) | ||||
|  *  293  M145 S0 H preheatHotendTemp1 (int) | ||||
|  *  295  M145 S0 B preheatBedTemp1 (int) | ||||
|  *  297  M145 S0 F preheatFanSpeed1 (int) | ||||
|  *  299  M145 S1 H preheatHotendTemp2 (int) | ||||
|  *  301  M145 S1 B preheatBedTemp2 (int) | ||||
|  *  303  M145 S1 F preheatFanSpeed2 (int) | ||||
|  * | ||||
|  * PIDTEMP: | ||||
|  *  301  M301 E0 PIDC  Kp[0], Ki[0], Kd[0], Kc[0] (float x4) | ||||
|  *  317  M301 E1 PIDC  Kp[1], Ki[1], Kd[1], Kc[1] (float x4) | ||||
|  *  333  M301 E2 PIDC  Kp[2], Ki[2], Kd[2], Kc[2] (float x4) | ||||
|  *  349  M301 E3 PIDC  Kp[3], Ki[3], Kd[3], Kc[3] (float x4) | ||||
|  *  365  M301 L        lpq_len (int) | ||||
|  *  305  M301 E0 PIDC  Kp[0], Ki[0], Kd[0], Kc[0] (float x4) | ||||
|  *  321  M301 E1 PIDC  Kp[1], Ki[1], Kd[1], Kc[1] (float x4) | ||||
|  *  337  M301 E2 PIDC  Kp[2], Ki[2], Kd[2], Kc[2] (float x4) | ||||
|  *  353  M301 E3 PIDC  Kp[3], Ki[3], Kd[3], Kc[3] (float x4) | ||||
|  *  369  M301 L        lpq_len (int) | ||||
|  * | ||||
|  * PIDTEMPBED: | ||||
|  *  367  M304 PID  thermalManager.bedKp, thermalManager.bedKi, thermalManager.bedKd (float x3) | ||||
|  *  371  M304 PID  thermalManager.bedKp, thermalManager.bedKi, thermalManager.bedKd (float x3) | ||||
|  * | ||||
|  * DOGLCD: | ||||
|  *  379  M250 C    lcd_contrast (int) | ||||
|  *  383  M250 C    lcd_contrast (int) | ||||
|  * | ||||
|  * FWRETRACT: | ||||
|  *  381  M209 S    autoretract_enabled (bool) | ||||
|  *  382  M207 S    retract_length (float) | ||||
|  *  386  M207 W    retract_length_swap (float) | ||||
|  *  390  M207 F    retract_feedrate_mm_s (float) | ||||
|  *  394  M207 Z    retract_zlift (float) | ||||
|  *  398  M208 S    retract_recover_length (float) | ||||
|  *  402  M208 W    retract_recover_length_swap (float) | ||||
|  *  406  M208 F    retract_recover_feedrate_mm_s (float) | ||||
|  *  385  M209 S    autoretract_enabled (bool) | ||||
|  *  386  M207 S    retract_length (float) | ||||
|  *  390  M207 W    retract_length_swap (float) | ||||
|  *  394  M207 F    retract_feedrate_mm_s (float) | ||||
|  *  399  M207 Z    retract_zlift (float) | ||||
|  *  402  M208 S    retract_recover_length (float) | ||||
|  *  406  M208 W    retract_recover_length_swap (float) | ||||
|  *  410  M208 F    retract_recover_feedrate_mm_s (float) | ||||
|  * | ||||
|  * Volumetric Extrusion: | ||||
|  *  410  M200 D    volumetric_enabled (bool) | ||||
|  *  411  M200 T D  filament_size (float x4) (T0..3) | ||||
|  *  414  M200 D    volumetric_enabled (bool) | ||||
|  *  415  M200 T D  filament_size (float x4) (T0..3) | ||||
|  * | ||||
|  *  427  This Slot is Available! | ||||
|  *  431  This Slot is Available! | ||||
|  * | ||||
|  */ | ||||
| #include "Marlin.h" | ||||
| @ -219,9 +220,7 @@ void Config_StoreSettings()  { | ||||
|   EEPROM_WRITE(planner.min_feedrate_mm_s); | ||||
|   EEPROM_WRITE(planner.min_travel_feedrate_mm_s); | ||||
|   EEPROM_WRITE(planner.min_segment_time); | ||||
|   EEPROM_WRITE(planner.max_xy_jerk); | ||||
|   EEPROM_WRITE(planner.max_z_jerk); | ||||
|   EEPROM_WRITE(planner.max_e_jerk); | ||||
|   EEPROM_WRITE(planner.max_jerk); | ||||
|   EEPROM_WRITE(home_offset); | ||||
| 
 | ||||
|   #if ENABLED(MESH_BED_LEVELING) | ||||
| @ -405,9 +404,7 @@ void Config_RetrieveSettings() { | ||||
|     EEPROM_READ(planner.min_feedrate_mm_s); | ||||
|     EEPROM_READ(planner.min_travel_feedrate_mm_s); | ||||
|     EEPROM_READ(planner.min_segment_time); | ||||
|     EEPROM_READ(planner.max_xy_jerk); | ||||
|     EEPROM_READ(planner.max_z_jerk); | ||||
|     EEPROM_READ(planner.max_e_jerk); | ||||
|     EEPROM_READ(planner.max_jerk); | ||||
|     EEPROM_READ(home_offset); | ||||
| 
 | ||||
|     uint8_t dummy_uint8 = 0, mesh_num_x = 0, mesh_num_y = 0; | ||||
| @ -576,9 +573,10 @@ void Config_ResetDefault() { | ||||
|   planner.min_feedrate_mm_s = DEFAULT_MINIMUMFEEDRATE; | ||||
|   planner.min_segment_time = DEFAULT_MINSEGMENTTIME; | ||||
|   planner.min_travel_feedrate_mm_s = DEFAULT_MINTRAVELFEEDRATE; | ||||
|   planner.max_xy_jerk = DEFAULT_XYJERK; | ||||
|   planner.max_z_jerk = DEFAULT_ZJERK; | ||||
|   planner.max_e_jerk = DEFAULT_EJERK; | ||||
|   planner.max_jerk[X_AXIS] = DEFAULT_XJERK; | ||||
|   planner.max_jerk[Y_AXIS] = DEFAULT_YJERK; | ||||
|   planner.max_jerk[Z_AXIS] = DEFAULT_ZJERK; | ||||
|   planner.max_jerk[E_AXIS] = DEFAULT_EJERK; | ||||
|   home_offset[X_AXIS] = home_offset[Y_AXIS] = home_offset[Z_AXIS] = 0; | ||||
| 
 | ||||
|   #if ENABLED(MESH_BED_LEVELING) | ||||
| @ -734,9 +732,10 @@ void Config_PrintSettings(bool forReplay) { | ||||
|   SERIAL_ECHOPAIR("  M205 S", planner.min_feedrate_mm_s); | ||||
|   SERIAL_ECHOPAIR(" T", planner.min_travel_feedrate_mm_s); | ||||
|   SERIAL_ECHOPAIR(" B", planner.min_segment_time); | ||||
|   SERIAL_ECHOPAIR(" X", planner.max_xy_jerk); | ||||
|   SERIAL_ECHOPAIR(" Z", planner.max_z_jerk); | ||||
|   SERIAL_ECHOPAIR(" E", planner.max_e_jerk); | ||||
|   SERIAL_ECHOPAIR(" X", planner.max_jerk[X_AXIS]); | ||||
|   SERIAL_ECHOPAIR(" Y", planner.max_jerk[Y_AXIS]); | ||||
|   SERIAL_ECHOPAIR(" Z", planner.max_jerk[Z_AXIS]); | ||||
|   SERIAL_ECHOPAIR(" E", planner.max_jerk[E_AXIS]); | ||||
|   SERIAL_EOL; | ||||
| 
 | ||||
|   CONFIG_ECHO_START; | ||||
|  | ||||
| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -481,7 +481,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.3 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -481,7 +481,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.3 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -490,7 +490,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -492,7 +492,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  2.0 | ||||
| 
 | ||||
|  | ||||
| @ -515,7 +515,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.5 | ||||
| #define DEFAULT_EJERK                 20.0 | ||||
| 
 | ||||
|  | ||||
| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.5 | ||||
| #define DEFAULT_EJERK                 20.0 | ||||
| 
 | ||||
|  | ||||
| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -496,7 +496,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                8.0 | ||||
| #define DEFAULT_XJERK                 8.0 | ||||
| #define DEFAULT_YJERK                 8.0 | ||||
| #define DEFAULT_ZJERK                 0.4 | ||||
| #define DEFAULT_EJERK                 5.0 | ||||
| 
 | ||||
|  | ||||
| @ -513,7 +513,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                5.0 | ||||
| #define DEFAULT_XJERK                 5.0 | ||||
| #define DEFAULT_YJERK                 5.0 | ||||
| #define DEFAULT_ZJERK                 0.4 | ||||
| #define DEFAULT_EJERK                 3.0 | ||||
| 
 | ||||
|  | ||||
| @ -519,7 +519,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                 8.0 | ||||
| #define DEFAULT_XJERK                  8.0 | ||||
| #define DEFAULT_YJERK                  8.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                 10.0 | ||||
| 
 | ||||
|  | ||||
| @ -490,7 +490,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                10.0 | ||||
| #define DEFAULT_XJERK                 10.0 | ||||
| #define DEFAULT_YJERK                 10.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -498,7 +498,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -541,7 +541,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                15.0 | ||||
| #define DEFAULT_XJERK                 15.0 | ||||
| #define DEFAULT_YJERK                 15.0 | ||||
| #define DEFAULT_ZJERK                 15.0 // Must be same as XY for delta
 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -541,7 +541,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                 20.0 // Must be same as XY for delta
 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -541,7 +541,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                 20.0 // Must be same as XY for delta
 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -537,7 +537,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                 20.0 // Must be same as XY for delta
 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -547,7 +547,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                 20.0 | ||||
| #define DEFAULT_EJERK                 20.0 | ||||
| 
 | ||||
|  | ||||
| @ -501,7 +501,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -494,7 +494,8 @@ | ||||
|  * When changing speed and direction, if the difference is less than the | ||||
|  * value set here, it may happen instantaneously. | ||||
|  */ | ||||
| #define DEFAULT_XYJERK                20.0 | ||||
| #define DEFAULT_XJERK                 20.0 | ||||
| #define DEFAULT_YJERK                 20.0 | ||||
| #define DEFAULT_ZJERK                  0.4 | ||||
| #define DEFAULT_EJERK                  5.0 | ||||
| 
 | ||||
|  | ||||
| @ -86,7 +86,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ves-jerk" | ||||
| #define MSG_VMAX                            "Vmax" | ||||
|  | ||||
| @ -88,7 +88,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Accel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -86,7 +86,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Accel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -98,7 +98,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "Vybrat" | ||||
| #define MSG_ACC                             "Zrychl" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -96,7 +96,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "Vælg" | ||||
| #define MSG_ACC                             "Accel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -95,7 +95,8 @@ | ||||
| #define MSG_PID_C                           "PID C" | ||||
| #define MSG_SELECT                          "Auswählen" | ||||
| #define MSG_ACC                             "A" | ||||
| #define MSG_VXY_JERK                        "V XY Jerk" | ||||
| #define MSG_VX_JERK                         "V X Jerk" | ||||
| #define MSG_VY_JERK                         "V Y Jerk" | ||||
| #define MSG_VZ_JERK                         "V Z Jerk" | ||||
| #define MSG_VE_JERK                         "V E Jerk" | ||||
| #define MSG_VMAX                            "V max " // space by purpose
 | ||||
|  | ||||
| @ -94,7 +94,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Επιτάχυνση" | ||||
| #define MSG_VXY_JERK                        "Vαντίδραση xy" | ||||
| #define MSG_VX_JERK                         "Vαντίδραση x" | ||||
| #define MSG_VY_JERK                         "Vαντίδραση y" | ||||
| #define MSG_VZ_JERK                         "Vαντίδραση z" | ||||
| #define MSG_VE_JERK                         "Vαντίδραση e" | ||||
| #define MSG_VMAX                            "Vμεγ " | ||||
|  | ||||
| @ -94,7 +94,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Επιτάχυνση" | ||||
| #define MSG_VXY_JERK                        "Vαντίδραση xy" | ||||
| #define MSG_VX_JERK                         "Vαντίδραση x" | ||||
| #define MSG_VY_JERK                         "Vαντίδραση y" | ||||
| #define MSG_VZ_JERK                         "Vαντίδραση z" | ||||
| #define MSG_VE_JERK                         "Vαντίδραση e" | ||||
| #define MSG_VMAX                            "V Μέγιστο" | ||||
|  | ||||
| @ -216,8 +216,11 @@ | ||||
| #ifndef MSG_ACC | ||||
|   #define MSG_ACC                             "Accel" | ||||
| #endif | ||||
| #ifndef MSG_VXY_JERK | ||||
|   #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #ifndef MSG_VX_JERK | ||||
|   #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #endif | ||||
| #ifndef MSG_VY_JERK | ||||
|   #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #endif | ||||
| #ifndef MSG_VZ_JERK | ||||
|   #define MSG_VZ_JERK                         "Vz-jerk" | ||||
|  | ||||
| @ -92,7 +92,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Aceleracion" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax" | ||||
|  | ||||
| @ -86,7 +86,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Azelerazioa" | ||||
| #define MSG_VXY_JERK                        "Vxy-astindua" | ||||
| #define MSG_VX_JERK                         "Vx-astindua" | ||||
| #define MSG_VY_JERK                         "Vy-astindua" | ||||
| #define MSG_VZ_JERK                         "Vz-astindua" | ||||
| #define MSG_VE_JERK                         "Ve-astindua" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Kiihtyv" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -94,7 +94,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "Selectionner" | ||||
| #define MSG_ACC                             "Acceleration" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax" | ||||
|  | ||||
| @ -95,7 +95,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "Escolla" | ||||
| #define MSG_ACC                             "Acel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -93,7 +93,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Accel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -102,7 +102,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "Seleziona" | ||||
| #define MSG_ACC                             "Accel" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -103,7 +103,8 @@ | ||||
| #define MSG_SELECT                          "\xbe\xdd\xc0\xb8"                                                 // "センタク" ("Select")
 | ||||
| #if LCD_WIDTH > 19 | ||||
|   #define MSG_ACC                           "\xb6\xbf\xb8\xc4\xde mm/s2"                                       // "カソクド mm/s2" ("Accel")
 | ||||
|   #define MSG_VXY_JERK                      "XY\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                          // "XYジク ヤクド mm/s" ("Vxy-jerk")
 | ||||
|   #define MSG_VX_JERK                       "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "XYジク ヤクド mm/s" ("Vx-jerk")
 | ||||
|   #define MSG_VY_JERK                       "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "XYジク ヤクド mm/s" ("Vy-jerk")
 | ||||
|   #define MSG_VZ_JERK                       "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Zジク ヤクド mm/s" ("Vz-jerk")
 | ||||
|   #define MSG_VE_JERK                       "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\x20\xd4\xb8\xc4\xde"         // "エクストルーダー ヤクド" ("Ve-jerk")
 | ||||
|   #define MSG_VMAX                          "\xbb\xb2\xc0\xde\xb2\xb5\xb8\xd8\xbf\xb8\xc4\xde "                // "サイダイオクリソクド " ("Vmax ")
 | ||||
| @ -112,7 +113,8 @@ | ||||
|   #define MSG_AMAX                          "\xbb\xb2\xc0\xde\xb2\xb6\xbf\xb8\xc4\xde "                        // "サイダイカソクド " ("Amax ")
 | ||||
| #else | ||||
|   #define MSG_ACC                           "\xb6\xbf\xb8\xc4\xde"                                             // "カソクド" ("Accel")
 | ||||
|   #define MSG_VXY_JERK                      "XY\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                               // "XYジク ヤクド" ("Vxy-jerk")
 | ||||
|   #define MSG_VX_JERK                       "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "XYジク ヤクド" ("Vx-jerk")
 | ||||
|   #define MSG_VY_JERK                       "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "XYジク ヤクド" ("Vy-jerk")
 | ||||
|   #define MSG_VZ_JERK                       "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "Zジク ヤクド" ("Vz-jerk")
 | ||||
|   #define MSG_VE_JERK                       "E\x20\xd4\xb8\xc4\xde"                                            // "E ヤクド" ("Ve-jerk")
 | ||||
|   #define MSG_VMAX                          "max\xb5\xb8\xd8\xbf\xb8\xc4\xde "                                 // "maxオクリソクド" ("Vmax ")
 | ||||
|  | ||||
| @ -100,7 +100,8 @@ | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_SELECT                          "センタク"                     // "Select"
 | ||||
| #define MSG_ACC                             "カソクド mm/s2"               // "Accel"
 | ||||
| #define MSG_VXY_JERK                        "XYジク ヤクド mm/s"            // "Vxy-jerk"
 | ||||
| #define MSG_VX_JERK                         "Xジク ヤクド mm/s"             // "Vx-jerk"
 | ||||
| #define MSG_VY_JERK                         "Yジク ヤクド mm/s"             // "Vy-jerk"
 | ||||
| #define MSG_VZ_JERK                         "Zジク ヤクド mm/s"             // "Vz-jerk"
 | ||||
| #define MSG_VE_JERK                         "エクストルーダー ヤクド"          // "Ve-jerk"
 | ||||
| #define MSG_VMAX                            "サイダイオクリソクド "            // "Vmax "
 | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Versn" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -90,7 +90,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Przyspieszenie" | ||||
| #define MSG_VXY_JERK                        "Zryw Vxy" | ||||
| #define MSG_VX_JERK                         "Zryw Vx" | ||||
| #define MSG_VY_JERK                         "Zryw Vy" | ||||
| #define MSG_VZ_JERK                         "Zryw Vz" | ||||
| #define MSG_VE_JERK                         "Zryw Ve" | ||||
| #define MSG_VMAX                            "Vmax " | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "jogo VXY" | ||||
| #define MSG_VX_JERK                         "jogo VX" | ||||
| #define MSG_VY_JERK                         "jogo VY" | ||||
| #define MSG_VZ_JERK                         "jogo VZ" | ||||
| #define MSG_VE_JERK                         "jogo VE" | ||||
| #define MSG_VMAX                            " Vmax " | ||||
|  | ||||
| @ -87,7 +87,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "jogo VXY" | ||||
| #define MSG_VX_JERK                         "jogo VX" | ||||
| #define MSG_VY_JERK                         "jogo VY" | ||||
| #define MSG_VZ_JERK                         "jogo VZ" | ||||
| #define MSG_VE_JERK                         "jogo VE" | ||||
| #define MSG_VMAX                            " Vmax " | ||||
|  | ||||
| @ -91,7 +91,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            " Vmax " | ||||
|  | ||||
| @ -91,7 +91,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "Vxy-jerk" | ||||
| #define MSG_VX_JERK                         "Vx-jerk" | ||||
| #define MSG_VY_JERK                         "Vy-jerk" | ||||
| #define MSG_VZ_JERK                         "Vz-jerk" | ||||
| #define MSG_VE_JERK                         "Ve-jerk" | ||||
| #define MSG_VMAX                            " Vmax " | ||||
|  | ||||
| @ -91,7 +91,8 @@ | ||||
| #define MSG_PID_D                           "PID-D" | ||||
| #define MSG_PID_C                           "PID-C" | ||||
| #define MSG_ACC                             "Acc" | ||||
| #define MSG_VXY_JERK                        "Vxy-рывок" | ||||
| #define MSG_VX_JERK                         "Vx-рывок" | ||||
| #define MSG_VY_JERK                         "Vy-рывок" | ||||
| #define MSG_VZ_JERK                         "Vz-рывок" | ||||
| #define MSG_VE_JERK                         "Ve-рывок" | ||||
| #define MSG_VMAX                            "Vмакс " | ||||
|  | ||||
| @ -93,9 +93,7 @@ float Planner::min_feedrate_mm_s, | ||||
|       Planner::acceleration,         // Normal acceleration mm/s^2  DEFAULT ACCELERATION for all printing moves. M204 SXXXX
 | ||||
|       Planner::retract_acceleration, // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX
 | ||||
|       Planner::travel_acceleration,  // Travel acceleration mm/s^2  DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
 | ||||
|       Planner::max_xy_jerk,          // The largest speed change requiring no acceleration
 | ||||
|       Planner::max_z_jerk, | ||||
|       Planner::max_e_jerk, | ||||
|       Planner::max_jerk[XYZE],       // The largest speed change requiring no acceleration
 | ||||
|       Planner::min_travel_feedrate_mm_s; | ||||
| 
 | ||||
| #if HAS_ABL | ||||
| @ -152,33 +150,31 @@ void Planner::init() { | ||||
|  * by the provided factors. | ||||
|  */ | ||||
| void Planner::calculate_trapezoid_for_block(block_t* block, float entry_factor, float exit_factor) { | ||||
|   unsigned long initial_rate = ceil(block->nominal_rate * entry_factor), | ||||
|   uint32_t initial_rate = ceil(block->nominal_rate * entry_factor), | ||||
|            final_rate = ceil(block->nominal_rate * exit_factor); // (steps per second)
 | ||||
| 
 | ||||
|   // Limit minimal step rate (Otherwise the timer will overflow.)
 | ||||
|   NOLESS(initial_rate, 120); | ||||
|   NOLESS(final_rate, 120); | ||||
| 
 | ||||
|   long accel = block->acceleration_steps_per_s2; | ||||
|   int32_t accelerate_steps = ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, accel)); | ||||
|   int32_t decelerate_steps = floor(estimate_acceleration_distance(block->nominal_rate, final_rate, -accel)); | ||||
| 
 | ||||
|   // Calculate the size of Plateau of Nominal Rate.
 | ||||
|   int32_t plateau_steps = block->step_event_count - accelerate_steps - decelerate_steps; | ||||
|   int32_t accel = block->acceleration_steps_per_s2, | ||||
|           accelerate_steps = ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, accel)), | ||||
|           decelerate_steps = floor(estimate_acceleration_distance(block->nominal_rate, final_rate, -accel)), | ||||
|           plateau_steps = block->step_event_count - accelerate_steps - decelerate_steps; | ||||
| 
 | ||||
|   // Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will
 | ||||
|   // have to use intersection_distance() to calculate when to abort accel and start braking
 | ||||
|   // in order to reach the final_rate exactly at the end of this block.
 | ||||
|   if (plateau_steps < 0) { | ||||
|     accelerate_steps = ceil(intersection_distance(initial_rate, final_rate, accel, block->step_event_count)); | ||||
|     accelerate_steps = max(accelerate_steps, 0); // Check limits due to numerical round-off
 | ||||
|     NOLESS(accelerate_steps, 0); // Check limits due to numerical round-off
 | ||||
|     accelerate_steps = min((uint32_t)accelerate_steps, block->step_event_count);//(We can cast here to unsigned, because the above line ensures that we are above zero)
 | ||||
|     plateau_steps = 0; | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(ADVANCE) | ||||
|     volatile long initial_advance = block->advance * sq(entry_factor); | ||||
|     volatile long final_advance = block->advance * sq(exit_factor); | ||||
|     volatile int32_t initial_advance = block->advance * sq(entry_factor), | ||||
|                        final_advance = block->advance * sq(exit_factor); | ||||
|   #endif // ADVANCE
 | ||||
| 
 | ||||
|   // block->accelerate_until = accelerate_steps;
 | ||||
| @ -268,7 +264,7 @@ void Planner::forward_pass_kernel(block_t* previous, block_t* current) { | ||||
|   // If nominal length is true, max junction speed is guaranteed to be reached. No need to recheck.
 | ||||
|   if (!previous->nominal_length_flag) { | ||||
|     if (previous->entry_speed < current->entry_speed) { | ||||
|       double entry_speed = min(current->entry_speed, | ||||
|       float entry_speed = min(current->entry_speed, | ||||
|                                max_allowable_speed(-previous->acceleration, previous->entry_speed, previous->millimeters)); | ||||
|       // Check for junction speed change
 | ||||
|       if (current->entry_speed != entry_speed) { | ||||
| @ -984,15 +980,13 @@ void Planner::buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, float fr_mm_s, co | ||||
|   #endif | ||||
| 
 | ||||
|   // Calculate and limit speed in mm/sec for each axis
 | ||||
|   float current_speed[NUM_AXIS]; | ||||
|   float speed_factor = 1.0; //factor <=1 do decrease speed
 | ||||
|   float current_speed[NUM_AXIS], speed_factor = 1.0; // factor <1 decreases speed
 | ||||
|   LOOP_XYZE(i) { | ||||
|     current_speed[i] = delta_mm[i] * inverse_mm_s; | ||||
|     float cs = fabs(current_speed[i]), mf = max_feedrate_mm_s[i]; | ||||
|     if (cs > mf) speed_factor = min(speed_factor, mf / cs); | ||||
|     float cs = fabs(current_speed[i] = delta_mm[i] * inverse_mm_s); | ||||
|     if (cs > max_feedrate_mm_s[i]) NOMORE(speed_factor, max_feedrate_mm_s[i] / cs); | ||||
|   } | ||||
| 
 | ||||
|   // Max segement time in us.
 | ||||
|   // Max segment time in µs.
 | ||||
|   #ifdef XY_FREQUENCY_LIMIT | ||||
| 
 | ||||
|     // Check and limit the xy direction change frequency
 | ||||
| @ -1026,7 +1020,7 @@ void Planner::buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, float fr_mm_s, co | ||||
|          min_xy_segment_time = min(max_x_segment_time, max_y_segment_time); | ||||
|     if (min_xy_segment_time < MAX_FREQ_TIME) { | ||||
|       float low_sf = speed_factor * min_xy_segment_time / (MAX_FREQ_TIME); | ||||
|       speed_factor = min(speed_factor, low_sf); | ||||
|       NOMORE(speed_factor, low_sf); | ||||
|     } | ||||
|   #endif // XY_FREQUENCY_LIMIT
 | ||||
| 
 | ||||
| @ -1093,45 +1087,40 @@ void Planner::buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, float fr_mm_s, co | ||||
|         if (cos_theta > -0.95) { | ||||
|           // Compute maximum junction velocity based on maximum acceleration and junction deviation
 | ||||
|           double sin_theta_d2 = sqrt(0.5 * (1.0 - cos_theta)); // Trig half angle identity. Always positive.
 | ||||
|           vmax_junction = min(vmax_junction, | ||||
|                               sqrt(block->acceleration * junction_deviation * sin_theta_d2 / (1.0 - sin_theta_d2))); | ||||
|           NOMORE(vmax_junction, sqrt(block->acceleration * junction_deviation * sin_theta_d2 / (1.0 - sin_theta_d2))); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   #endif | ||||
| 
 | ||||
|   // Start with a safe speed
 | ||||
|   float vmax_junction = max_xy_jerk * 0.5, | ||||
|         vmax_junction_factor = 1.0, | ||||
|         mz2 = max_z_jerk * 0.5, | ||||
|         me2 = max_e_jerk * 0.5, | ||||
|         csz = current_speed[Z_AXIS], | ||||
|         cse = current_speed[E_AXIS]; | ||||
|   if (fabs(csz) > mz2) vmax_junction = min(vmax_junction, mz2); | ||||
|   if (fabs(cse) > me2) vmax_junction = min(vmax_junction, me2); | ||||
|   vmax_junction = min(vmax_junction, block->nominal_speed); | ||||
|   float vmax_junction = max_jerk[X_AXIS] * 0.5, vmax_junction_factor = 1.0; | ||||
|   if (max_jerk[Y_AXIS] * 0.5 < fabs(current_speed[Y_AXIS])) NOMORE(vmax_junction, max_jerk[Y_AXIS] * 0.5); | ||||
|   if (max_jerk[Z_AXIS] * 0.5 < fabs(current_speed[Z_AXIS])) NOMORE(vmax_junction, max_jerk[Z_AXIS] * 0.5); | ||||
|   if (max_jerk[E_AXIS] * 0.5 < fabs(current_speed[E_AXIS])) NOMORE(vmax_junction, max_jerk[E_AXIS] * 0.5); | ||||
|   NOMORE(vmax_junction, block->nominal_speed); | ||||
|   float safe_speed = vmax_junction; | ||||
| 
 | ||||
|   if ((moves_queued > 1) && (previous_nominal_speed > 0.0001)) { | ||||
|     float dsx = current_speed[X_AXIS] - previous_speed[X_AXIS], | ||||
|           dsy = current_speed[Y_AXIS] - previous_speed[Y_AXIS], | ||||
|           dsz = fabs(csz - previous_speed[Z_AXIS]), | ||||
|           dse = fabs(cse - previous_speed[E_AXIS]), | ||||
|           jerk = HYPOT(dsx, dsy); | ||||
| 
 | ||||
|     //    if ((fabs(previous_speed[X_AXIS]) > 0.0001) || (fabs(previous_speed[Y_AXIS]) > 0.0001)) {
 | ||||
|   if (moves_queued > 1 && previous_nominal_speed > 0.0001) { | ||||
|     //if ((fabs(previous_speed[X_AXIS]) > 0.0001) || (fabs(previous_speed[Y_AXIS]) > 0.0001)) {
 | ||||
|         vmax_junction = block->nominal_speed; | ||||
|     //    }
 | ||||
|     if (jerk > max_xy_jerk) vmax_junction_factor = max_xy_jerk / jerk; | ||||
|     if (dsz > max_z_jerk) vmax_junction_factor = min(vmax_junction_factor, max_z_jerk / dsz); | ||||
|     if (dse > max_e_jerk) vmax_junction_factor = min(vmax_junction_factor, max_e_jerk / dse); | ||||
|     //}
 | ||||
| 
 | ||||
|     float dsx = fabs(current_speed[X_AXIS] - previous_speed[X_AXIS]), | ||||
|           dsy = fabs(current_speed[Y_AXIS] - previous_speed[Y_AXIS]), | ||||
|           dsz = fabs(current_speed[Z_AXIS] - previous_speed[Z_AXIS]), | ||||
|           dse = fabs(current_speed[E_AXIS] - previous_speed[E_AXIS]); | ||||
|     if (dsx > max_jerk[X_AXIS]) NOMORE(vmax_junction_factor, max_jerk[X_AXIS] / dsx); | ||||
|     if (dsy > max_jerk[Y_AXIS]) NOMORE(vmax_junction_factor, max_jerk[Y_AXIS] / dsy); | ||||
|     if (dsz > max_jerk[Z_AXIS]) NOMORE(vmax_junction_factor, max_jerk[Z_AXIS] / dsz); | ||||
|     if (dse > max_jerk[E_AXIS]) NOMORE(vmax_junction_factor, max_jerk[E_AXIS] / dse); | ||||
| 
 | ||||
|     vmax_junction = min(previous_nominal_speed, vmax_junction * vmax_junction_factor); // Limit speed to max previous speed
 | ||||
|   } | ||||
|   block->max_entry_speed = vmax_junction; | ||||
| 
 | ||||
|   // Initialize block entry speed. Compute based on deceleration to user-defined MINIMUM_PLANNER_SPEED.
 | ||||
|   double v_allowable = max_allowable_speed(-block->acceleration, MINIMUM_PLANNER_SPEED, block->millimeters); | ||||
|   float v_allowable = max_allowable_speed(-block->acceleration, MINIMUM_PLANNER_SPEED, block->millimeters); | ||||
|   block->entry_speed = min(vmax_junction, v_allowable); | ||||
| 
 | ||||
|   // Initialize planner efficiency flags
 | ||||
| @ -1173,7 +1162,7 @@ void Planner::buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, float fr_mm_s, co | ||||
|     } | ||||
|     else { | ||||
|       long acc_dist = estimate_acceleration_distance(0, block->nominal_rate, block->acceleration_steps_per_s2); | ||||
|       float advance = ((STEPS_PER_CUBIC_MM_E) * (EXTRUDER_ADVANCE_K)) * HYPOT(cse, EXTRUSION_AREA) * 256; | ||||
|       float advance = ((STEPS_PER_CUBIC_MM_E) * (EXTRUDER_ADVANCE_K)) * HYPOT(current_speed[E_AXIS], EXTRUSION_AREA) * 256; | ||||
|       block->advance = advance; | ||||
|       block->advance_rate = acc_dist ? advance / (float)acc_dist : 0; | ||||
|     } | ||||
|  | ||||
| @ -132,9 +132,7 @@ class Planner { | ||||
|     static float acceleration;         // Normal acceleration mm/s^2  DEFAULT ACCELERATION for all printing moves. M204 SXXXX
 | ||||
|     static float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX
 | ||||
|     static float travel_acceleration;  // Travel acceleration mm/s^2  DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
 | ||||
|     static float max_xy_jerk;          // The largest speed change requiring no acceleration
 | ||||
|     static float max_z_jerk; | ||||
|     static float max_e_jerk; | ||||
|     static float max_jerk[XYZE];       // The largest speed change requiring no acceleration
 | ||||
|     static float min_travel_feedrate_mm_s; | ||||
| 
 | ||||
|     #if HAS_ABL | ||||
|  | ||||
| @ -265,8 +265,8 @@ uint8_t Temperature::soft_pwm[HOTENDS]; | ||||
|           #endif | ||||
|         ; | ||||
| 
 | ||||
|         max = max(max, input); | ||||
|         min = min(min, input); | ||||
|         NOLESS(max, input); | ||||
|         NOMORE(min, input); | ||||
| 
 | ||||
|         #if HAS_AUTO_FAN | ||||
|           if (ELAPSED(ms, next_auto_fan_check_ms)) { | ||||
|  | ||||
| @ -1812,13 +1812,14 @@ void kill_screen(const char* lcd_msg) { | ||||
|       MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); | ||||
|     #endif | ||||
|     MENU_ITEM_EDIT(float5, MSG_ACC, &planner.acceleration, 10, 99000); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &planner.max_xy_jerk, 1, 990); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VX_JERK, &planner.max_jerk[X_AXIS], 1, 990); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VY_JERK, &planner.max_jerk[Y_AXIS], 1, 990); | ||||
|     #if ENABLED(DELTA) | ||||
|       MENU_ITEM_EDIT(float3, MSG_VZ_JERK, &planner.max_z_jerk, 1, 990); | ||||
|       MENU_ITEM_EDIT(float3, MSG_VZ_JERK, &planner.max_jerk[Y_AXIS], 1, 990); | ||||
|     #else | ||||
|       MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &planner.max_z_jerk, 0.1, 990); | ||||
|       MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &planner.max_jerk[Z_AXIS], 0.1, 990); | ||||
|     #endif | ||||
|     MENU_ITEM_EDIT(float3, MSG_VE_JERK, &planner.max_e_jerk, 1, 990); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VE_JERK, &planner.max_jerk[E_AXIS], 1, 990); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &planner.max_feedrate_mm_s[X_AXIS], 1, 999); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &planner.max_feedrate_mm_s[Y_AXIS], 1, 999); | ||||
|     MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &planner.max_feedrate_mm_s[Z_AXIS], 1, 999); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user