From a4458fb57b6ea78569c3b9cb49e6e468545d59ba Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Tue, 11 Feb 2020 18:33:40 -0500 Subject: [PATCH 1/8] Removed duplicate #defines cleaned up display routine --- Firmware/ultralcd.cpp | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index af6399f3..7321d70e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7436,52 +7436,39 @@ static void lcd_belttest_v() lcd_belttest(); menu_back_if_clicked(); } -void lcd_belttest_print(const char* msg, uint16_t X, uint16_t Y) -{ - lcd_clear(); - lcd_printf_P( - _N( - "%S:\n" - "%S\n" - "X:%d\n" - "Y:%d" - ), - _i("Belt status"), - msg, - X,Y - ); -} + void lcd_belttest() { bool _result = true; - #ifdef TMC2130 // Belttest requires high power mode. Enable it. - FORCE_HIGH_POWER_START; - #endif + // Belttest requires high power mode. Enable it. + FORCE_HIGH_POWER_START; uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); - lcd_belttest_print(_i("Checking X..."), X, Y); + lcd_puts_at_P(0,0,_i("Checking X...")); KEEPALIVE_STATE(IN_HANDLER); _result = lcd_selfcheck_axis_sg(X_AXIS); X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); + lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d "),X); // Trailing space for done/error spacing if !_result if (_result){ - lcd_belttest_print(_i("Checking Y..."), X, Y); + lcd_printf_P(_i("Done")); + lcd_puts_at_P(0,2,_i("Checking Y...")); _result = lcd_selfcheck_axis_sg(Y_AXIS); Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); + lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %d "),Y); } - if (!_result) { - lcd_belttest_print(_i("Error"), X, Y); + if (!_result) { // If error on X, error appears after X measurement, else done or error after Y measurement. + lcd_printf_P(_i("Error")); } else { - lcd_belttest_print(_i("Done"), X, Y); + lcd_printf_P(_i("Done")); } - #ifdef TMC2130 - FORCE_HIGH_POWER_END; - #endif + lcd_puts_at_P(19,3,char(2)); // Checkmark + FORCE_HIGH_POWER_END; KEEPALIVE_STATE(NOT_BUSY); _delay(3000); From 278bb032d797843dc84ba0b4332b8fc65a5d3b37 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Tue, 11 Feb 2020 18:37:26 -0500 Subject: [PATCH 2/8] Change to raise_z_above() --- Firmware/ultralcd.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7321d70e..3dbb6831 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7797,9 +7797,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { enable_endstops(true); if (axis == X_AXIS) { //there is collision between cables and PSU cover in X axis if Z coordinate is too low - - current_position[Z_AXIS] += 17; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + raise_z_above(17,true); tmc2130_home_enter(Z_AXIS_MASK); st_synchronize(); tmc2130_home_exit(); From 5abee3d3e51acaabe2ec25f1ab717c3a835c3590 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Tue, 11 Feb 2020 19:44:26 -0500 Subject: [PATCH 3/8] Better display handling --- Firmware/ultralcd.cpp | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3dbb6831..ed1b91d4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7439,39 +7439,37 @@ static void lcd_belttest_v() void lcd_belttest() { - bool _result = true; - + lcd_clear(); // Belttest requires high power mode. Enable it. FORCE_HIGH_POWER_START; uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); - lcd_puts_at_P(0,0,_i("Checking X...")); - + lcd_puts_at_P(0,0,_i("Checking X axis ")); // share message with selftest + lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d "),X); KEEPALIVE_STATE(IN_HANDLER); - _result = lcd_selfcheck_axis_sg(X_AXIS); - X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); - lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d "),X); // Trailing space for done/error spacing if !_result - if (_result){ - lcd_printf_P(_i("Done")); - lcd_puts_at_P(0,2,_i("Checking Y...")); - _result = lcd_selfcheck_axis_sg(Y_AXIS); - Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); + // N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen + // that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status. + if (lcd_selfcheck_axis_sg(X_AXIS)){ + X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); + lcd_printf_P(PSTR("-> %d"),X); // Show new X value next to old one. + lcd_puts_at_P(0,2,_i("Checking Y axis ")); lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %d "),Y); + if (lcd_selfcheck_axis_sg(Y_AXIS)) + { + Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); + lcd_printf_P(PSTR("-> %d"),Y); + lcd_set_custom_characters_nextpage(); + lcd_set_cursor(19, 3); + lcd_print(char(2)); + lcd_wait_for_click_delay(10); + } } - - if (!_result) { // If error on X, error appears after X measurement, else done or error after Y measurement. - lcd_printf_P(_i("Error")); - } else { - lcd_printf_P(_i("Done")); - } - - lcd_puts_at_P(19,3,char(2)); // Checkmark + FORCE_HIGH_POWER_END; - KEEPALIVE_STATE(NOT_BUSY); - _delay(3000); + lcd_set_custom_characters(); // restore status screen chars. } #endif //TMC2130 From e06beb61c30785fb93f314120fb91ad155795b9c Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Fri, 21 Feb 2020 18:14:13 -0500 Subject: [PATCH 4/8] Ditch charswitch, show ... for measuring --- Firmware/ultralcd.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ed1b91d4..2ecf7ddc 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7446,30 +7446,28 @@ void lcd_belttest() uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); lcd_puts_at_P(0,0,_i("Checking X axis ")); // share message with selftest - lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d "),X); + lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d -> ..."),X); KEEPALIVE_STATE(IN_HANDLER); // N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen // that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status. if (lcd_selfcheck_axis_sg(X_AXIS)){ X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); - lcd_printf_P(PSTR("-> %d"),X); // Show new X value next to old one. + lcd_set_cursor(9,1), lcd_printf_P(PSTR("%d"),X); // Show new X value next to old one. lcd_puts_at_P(0,2,_i("Checking Y axis ")); - lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %d "),Y); + lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %d -> ..."),Y); if (lcd_selfcheck_axis_sg(Y_AXIS)) { Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); - lcd_printf_P(PSTR("-> %d"),Y); - lcd_set_custom_characters_nextpage(); + lcd_set_cursor(9,3),lcd_printf_P(PSTR("%d"),Y); lcd_set_cursor(19, 3); - lcd_print(char(2)); + lcd_print(LCD_STR_UPLEVEL); lcd_wait_for_click_delay(10); } } FORCE_HIGH_POWER_END; KEEPALIVE_STATE(NOT_BUSY); - lcd_set_custom_characters(); // restore status screen chars. } #endif //TMC2130 From 0c383e20b3d159b02ed99e445fccc15a14f62344 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Tue, 31 Mar 2020 17:33:08 -0400 Subject: [PATCH 5/8] Pull in changes from #5 --- Firmware/ultralcd.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c7c84d7f..9982061c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7832,7 +7832,7 @@ bool lcd_selftest() static void reset_crash_det(unsigned char axis) { current_position[axis] += 10; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET)) tmc2130_sg_stop_on_crash = true; } @@ -7853,17 +7853,15 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { tmc2130_home_exit(); enable_endstops(true); - if (axis == X_AXIS) { //there is collision between cables and PSU cover in X axis if Z coordinate is too low - raise_z_above(17,true); - tmc2130_home_enter(Z_AXIS_MASK); - st_synchronize(); - tmc2130_home_exit(); - } + + raise_z_above(MESH_HOME_Z_SEARCH); + st_synchronize(); + tmc2130_home_enter(1 << axis); // first axis length measurement begin current_position[axis] -= (axis_length + margin); - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); @@ -7873,11 +7871,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position_init = st_get_position_mm(axis); current_position[axis] += 2 * margin; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); current_position[axis] += axis_length; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); @@ -7893,11 +7891,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position[axis] -= margin; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); current_position[axis] -= (axis_length + margin); - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); st_synchronize(); @@ -7905,6 +7903,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { measured_axis_length[1] = abs(current_position_final - current_position_init); + tmc2130_home_exit(); //end of second measurement, now check for possible errors: @@ -7923,6 +7922,8 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position[axis] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); reset_crash_det(axis); + enable_endstops(true); + endstops_hit_on_purpose(); return false; } } @@ -7941,12 +7942,13 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position[axis] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); reset_crash_det(axis); - + endstops_hit_on_purpose(); return false; } current_position[axis] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); reset_crash_det(axis); + endstops_hit_on_purpose(); return true; } #endif //TMC2130 From b449e248a15c07f7b790e062412209da404f0dea Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Tue, 31 Mar 2020 17:48:56 -0400 Subject: [PATCH 6/8] Fix printf()s --- Firmware/ultralcd.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9982061c..ec67e415 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7476,21 +7476,21 @@ void lcd_belttest() uint16_t X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); uint16_t Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); - lcd_puts_at_P(0,0,_i("Checking X axis ")); // share message with selftest - lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %d -> ..."),X); + lcd_printf_P(_i("Checking X axis ")); // share message with selftest + lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %u -> ..."),X); KEEPALIVE_STATE(IN_HANDLER); // N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen // that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status. if (lcd_selfcheck_axis_sg(X_AXIS)){ X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)); - lcd_set_cursor(9,1), lcd_printf_P(PSTR("%d"),X); // Show new X value next to old one. + lcd_set_cursor(10,1), lcd_printf_P(PSTR("%u"),X); // Show new X value next to old one. lcd_puts_at_P(0,2,_i("Checking Y axis ")); - lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %d -> ..."),Y); + lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %u -> ..."),Y); if (lcd_selfcheck_axis_sg(Y_AXIS)) { Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); - lcd_set_cursor(9,3),lcd_printf_P(PSTR("%d"),Y); + lcd_set_cursor(10,3),lcd_printf_P(PSTR("%u"),Y); lcd_set_cursor(19, 3); lcd_print(LCD_STR_UPLEVEL); lcd_wait_for_click_delay(10); From 85a4c44d83bff1253e86e2bd62be578ceabffd56 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Thu, 16 Apr 2020 07:29:59 -0400 Subject: [PATCH 7/8] revert feedrates --- Firmware/ultralcd.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ec67e415..07c19ad5 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7832,7 +7832,7 @@ bool lcd_selftest() static void reset_crash_det(unsigned char axis) { current_position[axis] += 10; - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET)) tmc2130_sg_stop_on_crash = true; } @@ -7861,7 +7861,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { // first axis length measurement begin current_position[axis] -= (axis_length + margin); - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); @@ -7871,11 +7871,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position_init = st_get_position_mm(axis); current_position[axis] += 2 * margin; - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); current_position[axis] += axis_length; - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(hmanual_feedrate[0] / 60, active_extruder); st_synchronize(); @@ -7891,11 +7891,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position[axis] -= margin; - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); current_position[axis] -= (axis_length + margin); - plan_buffer_line_curposXYZE(homing_feedrate[axis] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); From dce453fd4a9f41c097e15cabebf1a65aba495837 Mon Sep 17 00:00:00 2001 From: vintagepc <53943260+vintagepc@users.noreply.github.com> Date: Thu, 16 Apr 2020 07:31:54 -0400 Subject: [PATCH 8/8] typo --- Firmware/ultralcd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 07c19ad5..ad19c66b 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7875,7 +7875,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { st_synchronize(); current_position[axis] += axis_length; - plan_buffer_line_curposXYZE(hmanual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); @@ -7891,11 +7891,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) { current_position[axis] -= margin; - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize(); current_position[axis] -= (axis_length + margin); - plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); + plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder); st_synchronize();