Allow SERIAL_ECHOPAIR to take up to 12 pairs (#13311)
This commit is contained in:
@ -382,8 +382,8 @@ void MarlinSettings::postprocess() {
|
||||
#if ENABLED(EEPROM_CHITCHAT)
|
||||
#define CHITCHAT_ECHO(V) SERIAL_ECHO(V)
|
||||
#define CHITCHAT_ECHOLNPGM(STR) SERIAL_ECHOLNPGM(STR)
|
||||
#define CHITCHAT_ECHOPAIR(STR,V) SERIAL_ECHOPAIR(STR,V)
|
||||
#define CHITCHAT_ECHOLNPAIR(STR,V) SERIAL_ECHOLNPAIR(STR,V)
|
||||
#define CHITCHAT_ECHOPAIR(...) SERIAL_ECHOPAIR(__VA_ARGS__)
|
||||
#define CHITCHAT_ECHOLNPAIR(...) SERIAL_ECHOLNPAIR(__VA_ARGS__)
|
||||
#define CHITCHAT_ECHO_START() SERIAL_ECHO_START()
|
||||
#define CHITCHAT_ERROR_START() SERIAL_ERROR_START()
|
||||
#define CHITCHAT_ERROR_MSG(STR) SERIAL_ERROR_MSG(STR)
|
||||
@ -392,8 +392,8 @@ void MarlinSettings::postprocess() {
|
||||
#else
|
||||
#define CHITCHAT_ECHO(V) NOOP
|
||||
#define CHITCHAT_ECHOLNPGM(STR) NOOP
|
||||
#define CHITCHAT_ECHOPAIR(STR,V) NOOP
|
||||
#define CHITCHAT_ECHOLNPAIR(STR,V) NOOP
|
||||
#define CHITCHAT_ECHOPAIR(...) NOOP
|
||||
#define CHITCHAT_ECHOLNPAIR(...) NOOP
|
||||
#define CHITCHAT_ECHO_START() NOOP
|
||||
#define CHITCHAT_ERROR_START() NOOP
|
||||
#define CHITCHAT_ERROR_MSG(STR) NOOP
|
||||
@ -1104,9 +1104,7 @@ void MarlinSettings::postprocess() {
|
||||
|
||||
// Report storage size
|
||||
CHITCHAT_ECHO_START();
|
||||
CHITCHAT_ECHOPAIR("Settings Stored (", eeprom_size);
|
||||
CHITCHAT_ECHOPAIR(" bytes; crc ", (uint32_t)final_crc);
|
||||
CHITCHAT_ECHOLNPGM(")");
|
||||
CHITCHAT_ECHOLNPAIR("Settings Stored (", eeprom_size, " bytes; crc ", (uint32_t)final_crc, ")");
|
||||
|
||||
eeprom_error |= size_error(eeprom_size);
|
||||
}
|
||||
@ -1144,9 +1142,7 @@ void MarlinSettings::postprocess() {
|
||||
stored_ver[1] = '\0';
|
||||
}
|
||||
CHITCHAT_ECHO_START();
|
||||
CHITCHAT_ECHOPGM("EEPROM version mismatch ");
|
||||
CHITCHAT_ECHOPAIR("(EEPROM=", stored_ver);
|
||||
CHITCHAT_ECHOLNPGM(" Marlin=" EEPROM_VERSION ")");
|
||||
CHITCHAT_ECHOLNPAIR("EEPROM version mismatch (EEPROM=", stored_ver, " Marlin=" EEPROM_VERSION ")");
|
||||
eeprom_error = true;
|
||||
}
|
||||
else {
|
||||
@ -1812,24 +1808,17 @@ void MarlinSettings::postprocess() {
|
||||
eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET));
|
||||
if (eeprom_error) {
|
||||
CHITCHAT_ECHO_START();
|
||||
CHITCHAT_ECHOPAIR("Index: ", int(eeprom_index - (EEPROM_OFFSET)));
|
||||
CHITCHAT_ECHOLNPAIR(" Size: ", datasize());
|
||||
CHITCHAT_ECHOLNPAIR("Index: ", int(eeprom_index - (EEPROM_OFFSET)), " Size: ", datasize());
|
||||
}
|
||||
else if (working_crc != stored_crc) {
|
||||
eeprom_error = true;
|
||||
CHITCHAT_ERROR_START();
|
||||
CHITCHAT_ECHOPGM("EEPROM CRC mismatch - (stored) ");
|
||||
CHITCHAT_ECHO(stored_crc);
|
||||
CHITCHAT_ECHOPGM(" != ");
|
||||
CHITCHAT_ECHO(working_crc);
|
||||
CHITCHAT_ECHOLNPGM(" (calculated)!");
|
||||
CHITCHAT_ECHOLNPAIR("EEPROM CRC mismatch - (stored) ", stored_crc, " != ", working_crc, " (calculated)!");
|
||||
}
|
||||
else if (!validating) {
|
||||
CHITCHAT_ECHO_START();
|
||||
CHITCHAT_ECHO(version);
|
||||
CHITCHAT_ECHOPAIR(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET));
|
||||
CHITCHAT_ECHOPAIR(" bytes; crc ", (uint32_t)working_crc);
|
||||
CHITCHAT_ECHOLNPGM(")");
|
||||
CHITCHAT_ECHOLNPAIR(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET), " bytes; crc ", (uint32_t)working_crc, ")");
|
||||
}
|
||||
|
||||
if (!validating && !eeprom_error) postprocess();
|
||||
@ -1857,8 +1846,7 @@ void MarlinSettings::postprocess() {
|
||||
|
||||
if (ubl.storage_slot >= 0) {
|
||||
load_mesh(ubl.storage_slot);
|
||||
CHITCHAT_ECHOPAIR("Mesh ", ubl.storage_slot);
|
||||
CHITCHAT_ECHOLNPGM(" loaded from storage.");
|
||||
CHITCHAT_ECHOLNPAIR("Mesh ", ubl.storage_slot, " loaded from storage.");
|
||||
}
|
||||
else {
|
||||
ubl.reset();
|
||||
@ -1924,9 +1912,7 @@ void MarlinSettings::postprocess() {
|
||||
const int16_t a = calc_num_meshes();
|
||||
if (!WITHIN(slot, 0, a - 1)) {
|
||||
ubl_invalid_slot(a);
|
||||
CHITCHAT_ECHOPAIR("E2END=", persistentStore.capacity() - 1);
|
||||
CHITCHAT_ECHOPAIR(" meshes_end=", meshes_end);
|
||||
CHITCHAT_ECHOLNPAIR(" slot=", slot);
|
||||
CHITCHAT_ECHOLNPAIR("E2END=", persistentStore.capacity() - 1, " meshes_end=", meshes_end, " slot=", slot);
|
||||
CHITCHAT_EOL();
|
||||
return;
|
||||
}
|
||||
@ -2314,7 +2300,7 @@ void MarlinSettings::reset() {
|
||||
#define CONFIG_ECHO_HEADING(STR) do{ if (!forReplay) { CONFIG_ECHO_START(); SERIAL_ECHOLNPGM(STR); } }while(0)
|
||||
|
||||
#if HAS_TRINAMIC
|
||||
void say_M906() { SERIAL_ECHOPGM(" M906"); }
|
||||
inline void say_M906(const bool forReplay) { CONFIG_ECHO_START(); SERIAL_ECHOPGM(" M906"); }
|
||||
#if HAS_STEALTHCHOP
|
||||
void say_M569(const char * const etc=NULL) {
|
||||
SERIAL_ECHOPGM(" M569 S1");
|
||||
@ -2326,15 +2312,15 @@ void MarlinSettings::reset() {
|
||||
}
|
||||
#endif
|
||||
#if ENABLED(HYBRID_THRESHOLD)
|
||||
void say_M913() { SERIAL_ECHOPGM(" M913"); }
|
||||
inline void say_M913() { SERIAL_ECHOPGM(" M913"); }
|
||||
#endif
|
||||
#if USE_SENSORLESS
|
||||
void say_M914() { SERIAL_ECHOPGM(" M914"); }
|
||||
inline void say_M914() { SERIAL_ECHOPGM(" M914"); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void say_M603() { SERIAL_ECHOPGM(" M603 "); }
|
||||
inline void say_M603(const bool forReplay) { CONFIG_ECHO_START(); SERIAL_ECHOPGM(" M603 "); }
|
||||
#endif
|
||||
|
||||
inline void say_units(const bool colon) {
|
||||
@ -2403,28 +2389,22 @@ void MarlinSettings::reset() {
|
||||
}
|
||||
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 D", LINEAR_UNIT(planner.filament_size[0]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 D", LINEAR_UNIT(planner.filament_size[0]));
|
||||
#if EXTRUDERS > 1
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 T1 D", LINEAR_UNIT(planner.filament_size[1]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 T1 D", LINEAR_UNIT(planner.filament_size[1]));
|
||||
#if EXTRUDERS > 2
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 T2 D", LINEAR_UNIT(planner.filament_size[2]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 T2 D", LINEAR_UNIT(planner.filament_size[2]));
|
||||
#if EXTRUDERS > 3
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 T3 D", LINEAR_UNIT(planner.filament_size[3]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 T3 D", LINEAR_UNIT(planner.filament_size[3]));
|
||||
#if EXTRUDERS > 4
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 T4 D", LINEAR_UNIT(planner.filament_size[4]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 T4 D", LINEAR_UNIT(planner.filament_size[4]));
|
||||
#if EXTRUDERS > 5
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M200 T5 D", LINEAR_UNIT(planner.filament_size[5]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M200 T5 D", LINEAR_UNIT(planner.filament_size[5]));
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
@ -2441,43 +2421,50 @@ void MarlinSettings::reset() {
|
||||
|
||||
CONFIG_ECHO_HEADING("Maximum feedrates (units/s):");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M203 X", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Z_AXIS]));
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS]));
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M203 X", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[X_AXIS])
|
||||
, " Y", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Y_AXIS])
|
||||
, " Z", LINEAR_UNIT(planner.settings.max_feedrate_mm_s[Z_AXIS])
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
, " E", VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS])
|
||||
#endif
|
||||
);
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
CONFIG_ECHO_START();
|
||||
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
||||
SERIAL_ECHOPAIR(" M203 T", (int)i);
|
||||
SERIAL_ECHOLNPAIR(" E", VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS_N(i)]));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M203 T", (int)i
|
||||
, " E", VOLUMETRIC_UNIT(planner.settings.max_feedrate_mm_s[E_AXIS_N(i)])
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
CONFIG_ECHO_HEADING("Maximum Acceleration (units/s2):");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M201 X", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Z_AXIS]));
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS]));
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M201 X", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[X_AXIS])
|
||||
, " Y", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Y_AXIS])
|
||||
, " Z", LINEAR_UNIT(planner.settings.max_acceleration_mm_per_s2[Z_AXIS])
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
, " E", VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS])
|
||||
#endif
|
||||
);
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
CONFIG_ECHO_START();
|
||||
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
||||
SERIAL_ECHOPAIR(" M201 T", (int)i);
|
||||
SERIAL_ECHOLNPAIR(" E", VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]));
|
||||
}
|
||||
for (uint8_t i = 0; i < E_STEPPERS; i++)
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M201 T", (int)i
|
||||
, " E", VOLUMETRIC_UNIT(planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(i)])
|
||||
);
|
||||
#endif
|
||||
|
||||
CONFIG_ECHO_HEADING("Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M204 P", LINEAR_UNIT(planner.settings.acceleration));
|
||||
SERIAL_ECHOPAIR(" R", LINEAR_UNIT(planner.settings.retract_acceleration));
|
||||
SERIAL_ECHOLNPAIR(" T", LINEAR_UNIT(planner.settings.travel_acceleration));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M204 P", LINEAR_UNIT(planner.settings.acceleration)
|
||||
, " R", LINEAR_UNIT(planner.settings.retract_acceleration)
|
||||
, " T", LINEAR_UNIT(planner.settings.travel_acceleration)
|
||||
);
|
||||
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START();
|
||||
@ -2494,39 +2481,42 @@ void MarlinSettings::reset() {
|
||||
SERIAL_EOL();
|
||||
}
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M205 B", LINEAR_UNIT(planner.settings.min_segment_time_us));
|
||||
SERIAL_ECHOPAIR(" S", LINEAR_UNIT(planner.settings.min_feedrate_mm_s));
|
||||
SERIAL_ECHOPAIR(" T", LINEAR_UNIT(planner.settings.min_travel_feedrate_mm_s));
|
||||
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
SERIAL_ECHOPAIR(" J", LINEAR_UNIT(planner.junction_deviation_mm));
|
||||
#endif
|
||||
#if HAS_CLASSIC_JERK
|
||||
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(planner.max_jerk[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS]));
|
||||
#if DISABLED(JUNCTION_DEVIATION) || DISABLED(LIN_ADVANCE)
|
||||
SERIAL_ECHOPAIR(" E", LINEAR_UNIT(planner.max_jerk[E_AXIS]));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M205 B", LINEAR_UNIT(planner.settings.min_segment_time_us)
|
||||
, " S", LINEAR_UNIT(planner.settings.min_feedrate_mm_s)
|
||||
, " T", LINEAR_UNIT(planner.settings.min_travel_feedrate_mm_s)
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
, " J", LINEAR_UNIT(planner.junction_deviation_mm)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
SERIAL_EOL();
|
||||
#if HAS_CLASSIC_JERK
|
||||
, " X", LINEAR_UNIT(planner.max_jerk[X_AXIS])
|
||||
, " Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS])
|
||||
, " Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS])
|
||||
#if DISABLED(JUNCTION_DEVIATION) || DISABLED(LIN_ADVANCE)
|
||||
, " E", LINEAR_UNIT(planner.max_jerk[E_AXIS])
|
||||
#endif
|
||||
#endif
|
||||
);
|
||||
|
||||
#if HAS_M206_COMMAND
|
||||
CONFIG_ECHO_HEADING("Home offset:");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M206 X", LINEAR_UNIT(home_offset[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(home_offset[Y_AXIS]));
|
||||
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(home_offset[Z_AXIS]));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M206 X", LINEAR_UNIT(home_offset[X_AXIS])
|
||||
, " Y", LINEAR_UNIT(home_offset[Y_AXIS])
|
||||
, " Z", LINEAR_UNIT(home_offset[Z_AXIS])
|
||||
);
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND_OFFSET
|
||||
CONFIG_ECHO_HEADING("Hotend offsets:");
|
||||
CONFIG_ECHO_START();
|
||||
for (uint8_t e = 1; e < HOTENDS; e++) {
|
||||
SERIAL_ECHOPAIR(" M218 T", (int)e);
|
||||
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
|
||||
SERIAL_ECHOPAIR(
|
||||
" M218 T", (int)e
|
||||
, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e])
|
||||
, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e])
|
||||
);
|
||||
SERIAL_ECHOLNPAIR_F(" Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]), 3);
|
||||
}
|
||||
#endif
|
||||
@ -2555,11 +2545,12 @@ void MarlinSettings::reset() {
|
||||
#endif
|
||||
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M420 S", planner.leveling_active ? 1 : 0);
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M420 S", planner.leveling_active ? 1 : 0
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
, " Z", LINEAR_UNIT(planner.z_fade_height)
|
||||
#endif
|
||||
);
|
||||
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
|
||||
@ -2567,8 +2558,7 @@ void MarlinSettings::reset() {
|
||||
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
|
||||
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" G29 S3 X", (int)px + 1);
|
||||
SERIAL_ECHOPAIR(" Y", (int)py + 1);
|
||||
SERIAL_ECHOPAIR(" G29 S3 X", (int)px + 1, " Y", (int)py + 1);
|
||||
SERIAL_ECHOLNPAIR_F(" Z", LINEAR_UNIT(mbl.z_values[px][py]), 5);
|
||||
}
|
||||
}
|
||||
@ -2580,8 +2570,7 @@ void MarlinSettings::reset() {
|
||||
SERIAL_EOL();
|
||||
ubl.report_state();
|
||||
SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.storage_slot);
|
||||
SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
|
||||
SERIAL_ECHOLNPGM(" meshes.\n");
|
||||
SERIAL_ECHOLNPAIR("EEPROM can hold ", calc_num_meshes(), " meshes.\n");
|
||||
}
|
||||
|
||||
//ubl.report_current_mesh(); // This is too verbose for large meshes. A better (more terse)
|
||||
@ -2592,8 +2581,7 @@ void MarlinSettings::reset() {
|
||||
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
|
||||
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" G29 W I", (int)px);
|
||||
SERIAL_ECHOPAIR(" J", (int)py);
|
||||
SERIAL_ECHOPAIR(" G29 W I", (int)px, " J", (int)py);
|
||||
SERIAL_ECHOLNPAIR_F(" Z", LINEAR_UNIT(z_values[px][py]), 5);
|
||||
}
|
||||
}
|
||||
@ -2619,10 +2607,7 @@ void MarlinSettings::reset() {
|
||||
case Z_PROBE_SERVO_NR:
|
||||
#endif
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M281 P", int(i));
|
||||
SERIAL_ECHOPAIR(" L", servo_angles[i][0]);
|
||||
SERIAL_ECHOPAIR(" U", servo_angles[i][1]);
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(" M281 P", int(i), " L", servo_angles[i][0], " U", servo_angles[i][1]);
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@ -2633,33 +2618,37 @@ void MarlinSettings::reset() {
|
||||
|
||||
CONFIG_ECHO_HEADING("SCARA settings: S<seg-per-sec> P<theta-psi-offset> T<theta-offset>");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M665 S", delta_segments_per_second);
|
||||
SERIAL_ECHOPAIR(" P", scara_home_offset[A_AXIS]);
|
||||
SERIAL_ECHOPAIR(" T", scara_home_offset[B_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(scara_home_offset[Z_AXIS]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M665 S", delta_segments_per_second
|
||||
, " P", scara_home_offset[A_AXIS]
|
||||
, " T", scara_home_offset[B_AXIS]
|
||||
, " Z", LINEAR_UNIT(scara_home_offset[Z_AXIS])
|
||||
);
|
||||
|
||||
#elif ENABLED(DELTA)
|
||||
|
||||
CONFIG_ECHO_HEADING("Endstop adjustment:");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M666 X", LINEAR_UNIT(delta_endstop_adj[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(delta_endstop_adj[Y_AXIS]));
|
||||
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(delta_endstop_adj[Z_AXIS]));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M666 X", LINEAR_UNIT(delta_endstop_adj[X_AXIS])
|
||||
, " Y", LINEAR_UNIT(delta_endstop_adj[Y_AXIS])
|
||||
, " Z", LINEAR_UNIT(delta_endstop_adj[Z_AXIS])
|
||||
);
|
||||
|
||||
CONFIG_ECHO_HEADING("Delta settings: L<diagonal_rod> R<radius> H<height> S<segments_per_s> B<calibration radius> XYZ<tower angle corrections>");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M665 L", LINEAR_UNIT(delta_diagonal_rod));
|
||||
SERIAL_ECHOPAIR(" R", LINEAR_UNIT(delta_radius));
|
||||
SERIAL_ECHOPAIR(" H", LINEAR_UNIT(delta_height));
|
||||
SERIAL_ECHOPAIR(" S", delta_segments_per_second);
|
||||
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(delta_calibration_radius));
|
||||
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(delta_tower_angle_trim[A_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(delta_tower_angle_trim[B_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(delta_tower_angle_trim[C_AXIS]));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M665 L", LINEAR_UNIT(delta_diagonal_rod)
|
||||
, " R", LINEAR_UNIT(delta_radius)
|
||||
, " H", LINEAR_UNIT(delta_height)
|
||||
, " S", delta_segments_per_second
|
||||
, " B", LINEAR_UNIT(delta_calibration_radius)
|
||||
, " X", LINEAR_UNIT(delta_tower_angle_trim[A_AXIS])
|
||||
, " Y", LINEAR_UNIT(delta_tower_angle_trim[B_AXIS])
|
||||
, " Z", LINEAR_UNIT(delta_tower_angle_trim[C_AXIS])
|
||||
);
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || Z_MULTI_ENDSTOPS
|
||||
|
||||
CONFIG_ECHO_HEADING("Endstop adjustment:");
|
||||
CONFIG_ECHO_START();
|
||||
@ -2686,10 +2675,12 @@ void MarlinSettings::reset() {
|
||||
CONFIG_ECHO_HEADING("Material heatup parameters:");
|
||||
for (uint8_t i = 0; i < COUNT(ui.preheat_hotend_temp); i++) {
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M145 S", (int)i);
|
||||
SERIAL_ECHOPAIR(" H", TEMP_UNIT(ui.preheat_hotend_temp[i]));
|
||||
SERIAL_ECHOPAIR(" B", TEMP_UNIT(ui.preheat_bed_temp[i]));
|
||||
SERIAL_ECHOLNPAIR(" F", int(ui.preheat_fan_speed[i]));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M145 S", (int)i
|
||||
, " H", TEMP_UNIT(ui.preheat_hotend_temp[i])
|
||||
, " B", TEMP_UNIT(ui.preheat_bed_temp[i])
|
||||
, " F", int(ui.preheat_fan_speed[i])
|
||||
);
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -2702,10 +2693,12 @@ void MarlinSettings::reset() {
|
||||
if (forReplay) {
|
||||
HOTEND_LOOP() {
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M301 E", e);
|
||||
SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, e));
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, e)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, e)));
|
||||
SERIAL_ECHOPAIR(
|
||||
" M301 E", e
|
||||
, " P", PID_PARAM(Kp, e)
|
||||
, " I", unscalePID_i(PID_PARAM(Ki, e))
|
||||
, " D", unscalePID_d(PID_PARAM(Kd, e))
|
||||
);
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, e));
|
||||
if (e == 0) SERIAL_ECHOPAIR(" L", thermalManager.lpq_len);
|
||||
@ -2718,23 +2711,25 @@ void MarlinSettings::reset() {
|
||||
// !forReplay || HOTENDS == 1
|
||||
{
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
|
||||
SERIAL_ECHOPAIR(" L", thermalManager.lpq_len);
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M301 P", PID_PARAM(Kp, 0) // for compatibility with hosts, only echo values for E0
|
||||
, " I", unscalePID_i(PID_PARAM(Ki, 0))
|
||||
, " D", unscalePID_d(PID_PARAM(Kd, 0))
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
, " C", PID_PARAM(Kc, 0)
|
||||
, " L", thermalManager.lpq_len
|
||||
#endif
|
||||
);
|
||||
}
|
||||
#endif // PIDTEMP
|
||||
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M304 P", thermalManager.bed_pid.Kp);
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(thermalManager.bed_pid.Ki));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(thermalManager.bed_pid.Kd));
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M304 P", thermalManager.bed_pid.Kp
|
||||
, " I", unscalePID_i(thermalManager.bed_pid.Ki)
|
||||
, " D", unscalePID_d(thermalManager.bed_pid.Kd)
|
||||
);
|
||||
#endif
|
||||
|
||||
#endif // PIDTEMP || PIDTEMPBED
|
||||
@ -2755,16 +2750,20 @@ void MarlinSettings::reset() {
|
||||
|
||||
CONFIG_ECHO_HEADING("Retract: S<length> F<units/m> Z<lift>");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M207 S", LINEAR_UNIT(fwretract.settings.retract_length));
|
||||
SERIAL_ECHOPAIR(" W", LINEAR_UNIT(fwretract.settings.swap_retract_length));
|
||||
SERIAL_ECHOPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(fwretract.settings.retract_feedrate_mm_s)));
|
||||
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(fwretract.settings.retract_zraise));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M207 S", LINEAR_UNIT(fwretract.settings.retract_length)
|
||||
, " W", LINEAR_UNIT(fwretract.settings.swap_retract_length)
|
||||
, " F", MMS_TO_MMM(LINEAR_UNIT(fwretract.settings.retract_feedrate_mm_s))
|
||||
, " Z", LINEAR_UNIT(fwretract.settings.retract_zraise)
|
||||
);
|
||||
|
||||
CONFIG_ECHO_HEADING("Recover: S<length> F<units/m>");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M208 S", LINEAR_UNIT(fwretract.settings.retract_recover_length));
|
||||
SERIAL_ECHOPAIR(" W", LINEAR_UNIT(fwretract.settings.swap_retract_recover_length));
|
||||
SERIAL_ECHOLNPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(fwretract.settings.retract_recover_feedrate_mm_s)));
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M208 S", LINEAR_UNIT(fwretract.settings.retract_recover_length)
|
||||
, " W", LINEAR_UNIT(fwretract.settings.swap_retract_recover_length)
|
||||
, " F", MMS_TO_MMM(LINEAR_UNIT(fwretract.settings.retract_recover_feedrate_mm_s))
|
||||
);
|
||||
|
||||
#if ENABLED(FWRETRACT_AUTORETRACT)
|
||||
|
||||
@ -2810,67 +2809,65 @@ void MarlinSettings::reset() {
|
||||
* TMC stepper driver current
|
||||
*/
|
||||
CONFIG_ECHO_HEADING("Stepper driver current:");
|
||||
CONFIG_ECHO_START();
|
||||
|
||||
#if AXIS_IS_TMC(X) || AXIS_IS_TMC(Y) || AXIS_IS_TMC(Z)
|
||||
say_M906();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X)
|
||||
SERIAL_ECHOPAIR(" X", stepperX.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Y)
|
||||
SERIAL_ECHOPAIR(" Y", stepperY.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z)
|
||||
SERIAL_ECHOPAIR(" Z", stepperZ.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X) || AXIS_IS_TMC(Y) || AXIS_IS_TMC(Z)
|
||||
SERIAL_EOL();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(
|
||||
#if AXIS_IS_TMC(X)
|
||||
" X", stepperX.getMilliamps(),
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Y)
|
||||
" Y", stepperY.getMilliamps(),
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z)
|
||||
" Z", stepperZ.getMilliamps()
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(X2) || AXIS_IS_TMC(Y2) || AXIS_IS_TMC(Z2)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOPGM(" I1");
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X2)
|
||||
SERIAL_ECHOPAIR(" X", stepperX2.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Y2)
|
||||
SERIAL_ECHOPAIR(" Y", stepperY2.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z2)
|
||||
SERIAL_ECHOPAIR(" Z", stepperZ2.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X2) || AXIS_IS_TMC(Y2) || AXIS_IS_TMC(Z2)
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
#if AXIS_IS_TMC(X2)
|
||||
" X", stepperX2.getMilliamps(),
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Y2)
|
||||
" Y", stepperY2.getMilliamps(),
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z2)
|
||||
" Z", stepperZ2.getMilliamps()
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Z3)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.getMilliamps());
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(E0)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T0 E", stepperE0.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E1)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T1 E", stepperE1.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E2)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T2 E", stepperE2.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E3)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T3 E", stepperE3.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E4)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T4 E", stepperE4.getMilliamps());
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
say_M906();
|
||||
say_M906(forReplay);
|
||||
SERIAL_ECHOLNPAIR(" T5 E", stepperE5.getMilliamps());
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
@ -2916,8 +2913,7 @@ void MarlinSettings::reset() {
|
||||
|
||||
#if AXIS_HAS_STEALTHCHOP(Z3)
|
||||
say_M913();
|
||||
SERIAL_ECHOPGM(" I2");
|
||||
SERIAL_ECHOLNPAIR(" Z", TMC_GET_PWMTHRS(Z, Z3));
|
||||
SERIAL_ECHOLNPAIR(" I2 Z", TMC_GET_PWMTHRS(Z, Z3));
|
||||
#endif
|
||||
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
@ -2988,8 +2984,7 @@ void MarlinSettings::reset() {
|
||||
|
||||
#if HAS_Z3_SENSORLESS
|
||||
say_M914();
|
||||
SERIAL_ECHOPGM(" I2");
|
||||
SERIAL_ECHOLNPAIR(" Z", stepperZ3.sgt());
|
||||
SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.sgt());
|
||||
#endif
|
||||
|
||||
#endif // USE_SENSORLESS
|
||||
@ -3080,20 +3075,19 @@ void MarlinSettings::reset() {
|
||||
#if EXTRUDERS < 2
|
||||
SERIAL_ECHOLNPAIR(" M900 K", planner.extruder_advance_K[0]);
|
||||
#else
|
||||
LOOP_L_N(i, EXTRUDERS) {
|
||||
SERIAL_ECHOPAIR(" M900 T", int(i));
|
||||
SERIAL_ECHOLNPAIR(" K", planner.extruder_advance_K[i]);
|
||||
}
|
||||
LOOP_L_N(i, EXTRUDERS)
|
||||
SERIAL_ECHOLNPAIR(" M900 T", int(i), " K", planner.extruder_advance_K[i]);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_MOTOR_CURRENT_PWM
|
||||
CONFIG_ECHO_HEADING("Stepper motor currents:");
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" M907 X", stepper.motor_current_setting[0]);
|
||||
SERIAL_ECHOPAIR(" Z", stepper.motor_current_setting[1]);
|
||||
SERIAL_ECHOPAIR(" E", stepper.motor_current_setting[2]);
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" M907 X", stepper.motor_current_setting[0]
|
||||
, " Z", stepper.motor_current_setting[1]
|
||||
, " E", stepper.motor_current_setting[2]
|
||||
);
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -3101,39 +3095,21 @@ void MarlinSettings::reset() {
|
||||
*/
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
CONFIG_ECHO_HEADING("Filament load/unload lengths:");
|
||||
CONFIG_ECHO_START();
|
||||
#if EXTRUDERS == 1
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("L", LINEAR_UNIT(fc_settings[0].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[0].unload_length));
|
||||
say_M603(forReplay);
|
||||
SERIAL_ECHOLNPAIR("L", LINEAR_UNIT(fc_settings[0].load_length), " U", LINEAR_UNIT(fc_settings[0].unload_length));
|
||||
#else
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T0 L", LINEAR_UNIT(fc_settings[0].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[0].unload_length));
|
||||
CONFIG_ECHO_START();
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T1 L", LINEAR_UNIT(fc_settings[1].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[1].unload_length));
|
||||
#define _ECHO_603(N) do{ say_M603(forReplay); SERIAL_ECHOLNPAIR("T" STRINGIFY(N) " L", LINEAR_UNIT(fc_settings[N].load_length), " U", LINEAR_UNIT(fc_settings[N].unload_length)); }while(0)
|
||||
_ECHO_603(0);
|
||||
_ECHO_603(1);
|
||||
#if EXTRUDERS > 2
|
||||
CONFIG_ECHO_START();
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T2 L", LINEAR_UNIT(fc_settings[2].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[2].unload_length));
|
||||
_ECHO_603(2);
|
||||
#if EXTRUDERS > 3
|
||||
CONFIG_ECHO_START();
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T3 L", LINEAR_UNIT(fc_settings[3].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[3].unload_length));
|
||||
_ECHO_603(3);
|
||||
#if EXTRUDERS > 4
|
||||
CONFIG_ECHO_START();
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T4 L", LINEAR_UNIT(fc_settings[4].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[4].unload_length));
|
||||
_ECHO_603(4);
|
||||
#if EXTRUDERS > 5
|
||||
CONFIG_ECHO_START();
|
||||
say_M603();
|
||||
SERIAL_ECHOPAIR("T5 L", LINEAR_UNIT(fc_settings[5].load_length));
|
||||
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(fc_settings[5].unload_length));
|
||||
_ECHO_603(5);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
|
@ -185,51 +185,32 @@ void PrintCounter::showStats() {
|
||||
char buffer[21];
|
||||
|
||||
SERIAL_ECHOPGM(MSG_STATS);
|
||||
SERIAL_ECHOLNPAIR(
|
||||
"Prints: ", data.totalPrints,
|
||||
", Finished: ", data.finishedPrints,
|
||||
", Failed: ", data.totalPrints - data.finishedPrints
|
||||
- ((isRunning() || isPaused()) ? 1 : 0) // Remove 1 from failures with an active counter
|
||||
);
|
||||
|
||||
SERIAL_ECHOPGM("Prints: ");
|
||||
SERIAL_ECHO(data.totalPrints);
|
||||
|
||||
SERIAL_ECHOPGM(", Finished: ");
|
||||
SERIAL_ECHO(data.finishedPrints);
|
||||
|
||||
SERIAL_ECHOPGM(", Failed: "); // Note: Removes 1 from failures with an active counter
|
||||
SERIAL_ECHO(data.totalPrints - data.finishedPrints
|
||||
- ((isRunning() || isPaused()) ? 1 : 0));
|
||||
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOPGM(MSG_STATS);
|
||||
|
||||
duration_t elapsed = data.printTime;
|
||||
elapsed.toString(buffer);
|
||||
|
||||
SERIAL_ECHOPGM("Total time: ");
|
||||
SERIAL_ECHO(buffer);
|
||||
|
||||
SERIAL_ECHOPAIR("Total time: ", buffer);
|
||||
#if ENABLED(DEBUG_PRINTCOUNTER)
|
||||
SERIAL_ECHOPGM(" (");
|
||||
SERIAL_ECHO(data.printTime);
|
||||
SERIAL_ECHOPAIR(" (", data.printTime);
|
||||
SERIAL_CHAR(')');
|
||||
#endif
|
||||
|
||||
elapsed = data.longestPrint;
|
||||
elapsed.toString(buffer);
|
||||
|
||||
SERIAL_ECHOPGM(", Longest job: ");
|
||||
SERIAL_ECHO(buffer);
|
||||
|
||||
SERIAL_ECHOPAIR(", Longest job: ", buffer);
|
||||
#if ENABLED(DEBUG_PRINTCOUNTER)
|
||||
SERIAL_ECHOPGM(" (");
|
||||
SERIAL_ECHO(data.longestPrint);
|
||||
SERIAL_ECHOPAIR(" (", data.longestPrint);
|
||||
SERIAL_CHAR(')');
|
||||
#endif
|
||||
|
||||
SERIAL_EOL();
|
||||
SERIAL_ECHOPGM(MSG_STATS);
|
||||
|
||||
SERIAL_ECHOPGM("Filament used: ");
|
||||
SERIAL_ECHO(data.filamentUsed / 1000);
|
||||
SERIAL_ECHOPAIR("\n" MSG_STATS "Filament used: ", data.filamentUsed / 1000);
|
||||
SERIAL_CHAR('m');
|
||||
|
||||
SERIAL_EOL();
|
||||
|
||||
#if SERVICE_INTERVAL_1 > 0
|
||||
|
@ -83,11 +83,7 @@ float zprobe_zoffset; // Initialized by settings.load()
|
||||
*/
|
||||
static void dock_sled(bool stow) {
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR("dock_sled(", stow);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL();
|
||||
}
|
||||
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("dock_sled(", stow, ")");
|
||||
#endif
|
||||
|
||||
// Dock sled a bit closer to ensure proper capturing
|
||||
@ -317,11 +313,7 @@ float zprobe_zoffset; // Initialized by settings.load()
|
||||
bltouch_command(deploy ? BLTOUCH_DEPLOY : BLTOUCH_STOW);
|
||||
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR("set_bltouch_deployed(", deploy);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL();
|
||||
}
|
||||
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("set_bltouch_deployed(", deploy, ")");
|
||||
#endif
|
||||
|
||||
return false;
|
||||
@ -334,11 +326,7 @@ float zprobe_zoffset; // Initialized by settings.load()
|
||||
*/
|
||||
inline void do_probe_raise(const float z_raise) {
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR("do_probe_raise(", z_raise);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL();
|
||||
}
|
||||
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("do_probe_raise(", z_raise, ")");
|
||||
#endif
|
||||
|
||||
float z_dest = z_raise;
|
||||
@ -707,10 +695,7 @@ static float run_z_probe() {
|
||||
const float z2 = current_position[Z_AXIS];
|
||||
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR("2nd Probe Z:", z2);
|
||||
SERIAL_ECHOLNPAIR(" Discrepancy:", first_probe_z - z2);
|
||||
}
|
||||
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("2nd Probe Z:", z2, " Discrepancy:", first_probe_z - z2);
|
||||
#endif
|
||||
|
||||
// Return a weighted average of the fast and slow probes
|
||||
@ -742,12 +727,14 @@ static float run_z_probe() {
|
||||
float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/) {
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR(">>> probe_pt(", LOGICAL_X_POSITION(rx));
|
||||
SERIAL_ECHOPAIR(", ", LOGICAL_Y_POSITION(ry));
|
||||
SERIAL_ECHOPAIR(", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_STOW ? "stow" : "none");
|
||||
SERIAL_ECHOPAIR(", ", int(verbose_level));
|
||||
SERIAL_ECHOPAIR(", ", probe_relative ? "probe" : "nozzle");
|
||||
SERIAL_ECHOLNPGM("_relative)");
|
||||
SERIAL_ECHOLNPAIR(
|
||||
">>> probe_pt(", LOGICAL_X_POSITION(rx),
|
||||
", ", LOGICAL_Y_POSITION(ry),
|
||||
", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_STOW ? "stow" : "none",
|
||||
", ", int(verbose_level),
|
||||
", ", probe_relative ? "probe" : "nozzle",
|
||||
"_relative)"
|
||||
);
|
||||
DEBUG_POS("", current_position);
|
||||
}
|
||||
#endif
|
||||
|
@ -45,8 +45,7 @@ void scara_set_axis_is_at_home(const AxisEnum axis) {
|
||||
float homeposition[XYZ];
|
||||
LOOP_XYZ(i) homeposition[i] = base_home_pos((AxisEnum)i);
|
||||
|
||||
// SERIAL_ECHOPAIR("homeposition X:", homeposition[X_AXIS]);
|
||||
// SERIAL_ECHOLNPAIR(" Y:", homeposition[Y_AXIS]);
|
||||
// SERIAL_ECHOLNPAIR("homeposition X:", homeposition[X_AXIS], " Y:", homeposition[Y_AXIS]);
|
||||
|
||||
/**
|
||||
* Get Home position SCARA arm angles using inverse kinematics,
|
||||
@ -55,8 +54,7 @@ void scara_set_axis_is_at_home(const AxisEnum axis) {
|
||||
inverse_kinematics(homeposition);
|
||||
forward_kinematics_SCARA(delta[A_AXIS], delta[B_AXIS]);
|
||||
|
||||
// SERIAL_ECHOPAIR("Cartesian X:", cartes[X_AXIS]);
|
||||
// SERIAL_ECHOLNPAIR(" Y:", cartes[Y_AXIS]);
|
||||
// SERIAL_ECHOLNPAIR("Cartesian X:", cartes[X_AXIS], " Y:", cartes[Y_AXIS]);
|
||||
|
||||
current_position[axis] = cartes[axis];
|
||||
|
||||
@ -80,14 +78,15 @@ void forward_kinematics_SCARA(const float &a, const float &b) {
|
||||
cartes[Y_AXIS] = a_sin + b_sin + SCARA_OFFSET_Y; //theta+phi
|
||||
|
||||
/*
|
||||
SERIAL_ECHOPAIR("SCARA FK Angle a=", a);
|
||||
SERIAL_ECHOPAIR(" b=", b);
|
||||
SERIAL_ECHOPAIR(" a_sin=", a_sin);
|
||||
SERIAL_ECHOPAIR(" a_cos=", a_cos);
|
||||
SERIAL_ECHOPAIR(" b_sin=", b_sin);
|
||||
SERIAL_ECHOLNPAIR(" b_cos=", b_cos);
|
||||
SERIAL_ECHOPAIR(" cartes[X_AXIS]=", cartes[X_AXIS]);
|
||||
SERIAL_ECHOLNPAIR(" cartes[Y_AXIS]=", cartes[Y_AXIS]);
|
||||
SERIAL_ECHOLNPAIR(
|
||||
"SCARA FK Angle a=", a,
|
||||
" b=", b,
|
||||
" a_sin=", a_sin,
|
||||
" a_cos=", a_cos,
|
||||
" b_sin=", b_sin,
|
||||
" b_cos=", b_cos
|
||||
);
|
||||
SERIAL_ECHOLNPAIR(" cartes (X,Y) = "(cartes[X_AXIS], ", ", cartes[Y_AXIS], ")");
|
||||
//*/
|
||||
}
|
||||
|
||||
@ -132,18 +131,12 @@ void inverse_kinematics(const float (&raw)[XYZ]) {
|
||||
/*
|
||||
DEBUG_POS("SCARA IK", raw);
|
||||
DEBUG_POS("SCARA IK", delta);
|
||||
SERIAL_ECHOPAIR(" SCARA (x,y) ", sx);
|
||||
SERIAL_ECHOPAIR(",", sy);
|
||||
SERIAL_ECHOPAIR(" C2=", C2);
|
||||
SERIAL_ECHOPAIR(" S2=", S2);
|
||||
SERIAL_ECHOPAIR(" Theta=", THETA);
|
||||
SERIAL_ECHOLNPAIR(" Phi=", PHI);
|
||||
SERIAL_ECHOLNPAIR(" SCARA (x,y) ", sx, ",", sy, " C2=", C2, " S2=", S2, " Theta=", THETA, " Phi=", PHI);
|
||||
//*/
|
||||
}
|
||||
|
||||
void scara_report_positions() {
|
||||
SERIAL_ECHOPAIR("SCARA Theta:", planner.get_axis_position_degrees(A_AXIS));
|
||||
SERIAL_ECHOLNPAIR(" Psi+Theta:", planner.get_axis_position_degrees(B_AXIS));
|
||||
SERIAL_ECHOLNPAIR("SCARA Theta:", planner.get_axis_position_degrees(A_AXIS), " Psi+Theta:", planner.get_axis_position_degrees(B_AXIS));
|
||||
SERIAL_EOL();
|
||||
}
|
||||
|
||||
|
@ -456,37 +456,26 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS];
|
||||
bias = constrain(bias, 20, max_pow - 20);
|
||||
d = (bias > max_pow >> 1) ? max_pow - 1 - bias : bias;
|
||||
|
||||
SERIAL_ECHOPAIR(MSG_BIAS, bias);
|
||||
SERIAL_ECHOPAIR(MSG_D, d);
|
||||
SERIAL_ECHOPAIR(MSG_T_MIN, min);
|
||||
SERIAL_ECHOPAIR(MSG_T_MAX, max);
|
||||
SERIAL_ECHOPAIR(MSG_BIAS, bias, MSG_D, d, MSG_T_MIN, min, MSG_T_MAX, max);
|
||||
if (cycles > 2) {
|
||||
float Ku = (4.0f * d) / (float(M_PI) * (max - min) * 0.5f),
|
||||
Tu = ((float)(t_low + t_high) * 0.001f);
|
||||
SERIAL_ECHOPAIR(MSG_KU, Ku);
|
||||
SERIAL_ECHOPAIR(MSG_TU, Tu);
|
||||
tune_pid.Kp = 0.6f * Ku;
|
||||
tune_pid.Ki = 2 * tune_pid.Kp / Tu;
|
||||
tune_pid.Kd = tune_pid.Kp * Tu * 0.125f;
|
||||
SERIAL_ECHOPAIR(MSG_KU, Ku, MSG_TU, Tu);
|
||||
SERIAL_ECHOLNPGM("\n" MSG_CLASSIC_PID);
|
||||
SERIAL_ECHOPAIR(MSG_KP, tune_pid.Kp);
|
||||
SERIAL_ECHOPAIR(MSG_KI, tune_pid.Ki);
|
||||
SERIAL_ECHOLNPAIR(MSG_KD, tune_pid.Kd);
|
||||
SERIAL_ECHOLNPAIR(MSG_KP, tune_pid.Kp, MSG_KI, tune_pid.Ki, MSG_KD, tune_pid.Kd);
|
||||
/**
|
||||
tune_pid.Kp = 0.33*Ku;
|
||||
tune_pid.Ki = tune_pid.Kp/Tu;
|
||||
tune_pid.Kd = tune_pid.Kp*Tu/3;
|
||||
SERIAL_ECHOLNPGM(" Some overshoot");
|
||||
SERIAL_ECHOPAIR(" Kp: ", tune_pid.Kp);
|
||||
SERIAL_ECHOPAIR(" Ki: ", tune_pid.Ki);
|
||||
SERIAL_ECHOPAIR(" Kd: ", tune_pid.Kd);
|
||||
SERIAL_ECHOLNPAIR(" Kp: ", tune_pid.Kp, " Ki: ", tune_pid.Ki, " Kd: ", tune_pid.Kd, " No overshoot");
|
||||
tune_pid.Kp = 0.2*Ku;
|
||||
tune_pid.Ki = 2*tune_pid.Kp/Tu;
|
||||
tune_pid.Kd = tune_pid.Kp*Tu/3;
|
||||
SERIAL_ECHOLNPGM(" No overshoot");
|
||||
SERIAL_ECHOPAIR(" Kp: ", tune_pid.Kp);
|
||||
SERIAL_ECHOPAIR(" Ki: ", tune_pid.Ki);
|
||||
SERIAL_ECHOPAIR(" Kd: ", tune_pid.Kd);
|
||||
SERIAL_ECHOPAIR(" Kp: ", tune_pid.Kp, " Ki: ", tune_pid.Ki, " Kd: ", tune_pid.Kd);
|
||||
*/
|
||||
}
|
||||
}
|
||||
@ -807,16 +796,20 @@ float Temperature::get_pid_output(const int8_t e) {
|
||||
|
||||
#if ENABLED(PID_DEBUG)
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG, HOTEND_INDEX);
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_INPUT, current_temperature[HOTEND_INDEX]);
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_OUTPUT, pid_output);
|
||||
SERIAL_ECHOPAIR(
|
||||
MSG_PID_DEBUG, HOTEND_INDEX,
|
||||
MSG_PID_DEBUG_INPUT, current_temperature[HOTEND_INDEX],
|
||||
MSG_PID_DEBUG_OUTPUT, pid_output
|
||||
);
|
||||
#if DISABLED(PID_OPENLOOP)
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_PTERM, work_pid[HOTEND_INDEX].Kp);
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_ITERM, work_pid[HOTEND_INDEX].Ki);
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_DTERM, work_pid[HOTEND_INDEX].Kd);
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_CTERM, work_pid[HOTEND_INDEX].Kc);
|
||||
#endif
|
||||
SERIAL_ECHOPAIR(
|
||||
MSG_PID_DEBUG_PTERM, work_pid[HOTEND_INDEX].Kp,
|
||||
MSG_PID_DEBUG_ITERM, work_pid[HOTEND_INDEX].Ki,
|
||||
MSG_PID_DEBUG_DTERM, work_pid[HOTEND_INDEX].Kd
|
||||
#if ENABLED(PID_EXTRUSION_SCALING),
|
||||
MSG_PID_DEBUG_CTERM, work_pid[HOTEND_INDEX].Kc
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
SERIAL_EOL();
|
||||
#endif // PID_DEBUG
|
||||
@ -869,13 +862,14 @@ float Temperature::get_pid_output(const int8_t e) {
|
||||
|
||||
#if ENABLED(PID_BED_DEBUG)
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPAIR(" PID_BED_DEBUG : Input ", current_temperature_bed);
|
||||
SERIAL_ECHOPAIR(" Output ", pid_output);
|
||||
#if DISABLED(PID_OPENLOOP)
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_PTERM, work_pid.Kp);
|
||||
SERIAL_ECHOPAIR(MSG_PID_DEBUG_ITERM, work_pid.Ki);
|
||||
SERIAL_ECHOLNPAIR(MSG_PID_DEBUG_DTERM, work_pid.Kd);
|
||||
#endif
|
||||
SERIAL_ECHOLNPAIR(
|
||||
" PID_BED_DEBUG : Input ", current_temperature_bed, " Output ", pid_output,
|
||||
#if DISABLED(PID_OPENLOOP)
|
||||
MSG_PID_DEBUG_PTERM, work_pid.Kp,
|
||||
MSG_PID_DEBUG_ITERM, work_pid.Ki,
|
||||
MSG_PID_DEBUG_DTERM, work_pid.Kd,
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
return pid_output;
|
||||
@ -1622,10 +1616,7 @@ void Temperature::init() {
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM("Thermal Thermal Runaway Running. Heater ID: ");
|
||||
if (heater_id < 0) SERIAL_ECHOPGM("bed"); else SERIAL_ECHO(heater_id);
|
||||
SERIAL_ECHOPAIR(" ; State:", *state);
|
||||
SERIAL_ECHOPAIR(" ; Timer:", *timer);
|
||||
SERIAL_ECHOPAIR(" ; Temperature:", current);
|
||||
SERIAL_ECHOPAIR(" ; Target Temp:", target);
|
||||
SERIAL_ECHOPAIR(" ; State:", *state, " ; Timer:", *timer, " ; Temperature:", current, " ; Target Temp:", target);
|
||||
if (heater_id >= 0)
|
||||
SERIAL_ECHOPAIR(" ; Idle Timeout:", heater_idle_timeout_exceeded[heater_id]);
|
||||
else
|
||||
|
@ -804,12 +804,8 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
|
||||
#endif
|
||||
|
||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPAIR("Offset Tool XY by { ", xdiff);
|
||||
SERIAL_ECHOPAIR(", ", ydiff);
|
||||
SERIAL_ECHOPAIR(", ", zdiff);
|
||||
SERIAL_ECHOLNPGM(" }");
|
||||
}
|
||||
if (DEBUGGING(LEVELING))
|
||||
SERIAL_ECHOLNPAIR("Offset Tool XY by { ", xdiff, ", ", ydiff, ", ", zdiff, " }");
|
||||
#endif
|
||||
|
||||
// The newly-selected extruder XY is actually at...
|
||||
|
Reference in New Issue
Block a user