From 7164e66e4d757c900df3b4e504384d45e269b6ba Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 5 Mar 2018 17:14:20 +0100 Subject: [PATCH 1/7] Remove Rpi port menu item for MK25. --- Firmware/Configuration_prusa.h | 1 + Firmware/ultralcd.cpp | 2 ++ Firmware/variants/1_75mm_MK3-EINY03-E3Dv6full.h | 1 + Firmware/variants/1_75mm_MK3-EINY04-E3Dv6full.h | 1 + Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h | 1 + 5 files changed, 6 insertions(+) diff --git a/Firmware/Configuration_prusa.h b/Firmware/Configuration_prusa.h index 4538b226a..52ce678f9 100644 --- a/Firmware/Configuration_prusa.h +++ b/Firmware/Configuration_prusa.h @@ -17,6 +17,7 @@ // Electronics #define MOTHERBOARD BOARD_EINSY_0_4a +#define HAS_SECOND_SERIAL_PORT // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9cd4a932d..3d5738147 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3908,12 +3908,14 @@ static void lcd_settings_menu() else { MENU_ITEM(function, MSG_TEMP_CALIBRATION_ON, lcd_temp_calibration_set); } +#ifdef HAS_SECOND_SERIAL_PORT if (selectedSerialPort == 0) { MENU_ITEM(function, MSG_SECOND_SERIAL_OFF, lcd_second_serial_set); } else { MENU_ITEM(function, MSG_SECOND_SERIAL_ON, lcd_second_serial_set); } +#endif //HAS_SECOND_SERIAL if (!isPrintPaused && !homing_flag) { diff --git a/Firmware/variants/1_75mm_MK3-EINY03-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINY03-E3Dv6full.h index 41afcb87c..fccd58a94 100644 --- a/Firmware/variants/1_75mm_MK3-EINY03-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINY03-E3Dv6full.h @@ -17,6 +17,7 @@ // Electronics #define MOTHERBOARD BOARD_EINY_0_3a +#define HAS_SECOND_SERIAL_PORT // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) diff --git a/Firmware/variants/1_75mm_MK3-EINY04-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINY04-E3Dv6full.h index 251d01e7f..63deeddbc 100644 --- a/Firmware/variants/1_75mm_MK3-EINY04-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINY04-E3Dv6full.h @@ -17,6 +17,7 @@ // Electronics #define MOTHERBOARD BOARD_EINY_0_4a +#define HAS_SECOND_SERIAL_PORT // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) diff --git a/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h index dbc6cb756..be2663942 100644 --- a/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h @@ -17,6 +17,7 @@ // Electronics #define MOTHERBOARD BOARD_EINY_0_4a +#define HAS_SECOND_SERIAL_PORT // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) From fc3af0533a2f51cddb179531e4f57a1b1a5fd6ea Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 5 Mar 2018 21:31:31 +0100 Subject: [PATCH 2/7] Fix of calculate_extrusion_multipliers(). This is a fix of a bug made in the previous commit. --- Firmware/ConfigurationStore.cpp | 2 +- Firmware/Marlin_main.cpp | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index 253452fed..26cbc8228 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -378,8 +378,8 @@ bool Config_RetrieveSettings(uint16_t offset, uint8_t level) EEPROM_READ_VAR(i, extruder_advance_k); EEPROM_READ_VAR(i, advance_ed_ratio); } - calculate_volumetric_multipliers(); #endif //LIN_ADVANCE + calculate_extruder_multipliers(); // Call updatePID (similar to when we have processed M301) updatePID(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 198a28be0..60afe10a5 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7026,11 +7026,14 @@ void save_statistics(unsigned long _total_filament_used, unsigned long _total_pr } float calculate_extruder_multiplier(float diameter) { - bool enabled = volumetric_enabled && diameter > 0; - float area = enabled ? (M_PI * pow(diameter * .5, 2)) : 0; - return (extrudemultiply == 100) ? - (enabled ? (1.f / area) : 1.f) : - (enabled ? ((float(extrudemultiply) * 0.01f) / area) : 1.f); + float out = 1.f; + if (volumetric_enabled && diameter > 0.f) { + float area = M_PI * diameter * diameter * 0.25; + out = 1.f / area; + } + if (extrudemultiply != 100) + out *= float(extrudemultiply) * 0.01f; + return out; } void calculate_extruder_multipliers() { From fb4230f80d3308af568ce35566fa5278e6c38c02 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 7 Mar 2018 15:46:46 +0100 Subject: [PATCH 3/7] Fix of a regression bug, caused by pre-calculating the extrudemultiply for precission and performance: calculate_extruder_multipliers() has to be called after extrudemultiply is changed from the printer panel. --- Firmware/ultralcd.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9cd4a932d..2c9f7f1f6 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -90,6 +90,18 @@ union MenuData int rear2; } adjustBed; + struct TuneMenu + { + // editMenuParentState is used when an edit menu is entered, so it knows + // the return menu and encoder state. + struct EditMenuParentState editMenuParentState; + // To recognize, whether the menu has been just initialized. + int8_t status; + // Backup of extrudemultiply, to recognize, that the value has been changed and + // it needs to be applied. + int16_t extrudemultiply; + } tuneMenu; + // editMenuParentState is used when an edit menu is entered, so it knows // the return menu and encoder state. struct EditMenuParentState editMenuParentState; @@ -5443,6 +5455,16 @@ static void lcd_colorprint_change() { static void lcd_tune_menu() { + if (menuData.tuneMenu.status == 0) { + // Menu was entered. Mark the menu as entered and save the current extrudemultiply value. + menuData.tuneMenu.status = 1; + menuData.tuneMenu.extrudemultiply = extrudemultiply; + } else if (menuData.tuneMenu.extrudemultiply != extrudemultiply) { + // extrudemultiply has been changed from the child menu. Apply the new value. + menuData.tuneMenu.extrudemultiply = extrudemultiply; + calculate_extruder_multipliers(); + } + EEPROM_read(EEPROM_SILENT, (uint8_t*)&SilentModeMenu, sizeof(SilentModeMenu)); From abb9aa0a16d42eb55fe28deb338b611ead027efe Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 7 Mar 2018 20:42:15 +0100 Subject: [PATCH 4/7] not using homing currents in axis selftest --- Firmware/ultralcd.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 90242b317..0ddd61409 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6057,14 +6057,12 @@ static bool lcd_selfcheck_axis_sg(char axis) { } // first axis length measurement begin - - tmc2130_home_enter(X_AXIS_MASK << axis); + current_position[axis] -= (axis_length + margin); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); st_synchronize(); - tmc2130_home_exit(); tmc2130_sg_meassure_start(axis); @@ -6077,9 +6075,7 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position[axis] += axis_length; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); - tmc2130_home_enter(X_AXIS_MASK << axis); st_synchronize(); - tmc2130_home_exit(); uint16_t sg1 = tmc2130_sg_meassure_stop(); printf_P(PSTR("%c AXIS SG1=%d\n"), 'X'+axis, sg1); @@ -6096,12 +6092,10 @@ static bool lcd_selfcheck_axis_sg(char axis) { plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); st_synchronize(); - tmc2130_home_enter(X_AXIS_MASK << axis); current_position[axis] -= (axis_length + margin); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); st_synchronize(); - tmc2130_home_exit(); current_position_init = st_get_position_mm(axis); @@ -6109,7 +6103,7 @@ static bool lcd_selfcheck_axis_sg(char axis) { //end of second measurement, now check for possible errors: - + for(int i = 0; i < 2; i++){ //check if measured axis length corresponds to expected length SERIAL_ECHOPGM("Measured axis length:"); MYSERIAL.println(measured_axis_length[i]); From 976e5a6a19e56fed90d380f687854c64dca40215 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 7 Mar 2018 21:45:55 +0100 Subject: [PATCH 5/7] Temperature calibration - remove steel --- Firmware/Marlin_main.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 60afe10a5..7360ab9af 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3266,10 +3266,8 @@ void process_commands() #ifdef PINDA_THERMISTOR if (true) { - lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_WARNING); - bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); - if(result) lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); - if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])) { + if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])) + { // We don't know where we are! HOME! // Push the commands to the front of the message queue in the reverse order! // There shall be always enough space reserved for these commands. @@ -3277,6 +3275,17 @@ void process_commands() enquecommand_front_P((PSTR("G28 W0"))); break; } + lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CAL_WARNING); + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); + if (result) + { + current_position[Z_AXIS] = 50; + current_position[Y_AXIS] = 190; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); + st_synchronize(); + lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); + } + lcd_update_enable(true); KEEPALIVE_STATE(NOT_BUSY); //no need to print busy messages as we print current temperatures periodicaly SERIAL_ECHOLNPGM("PINDA probe calibration start"); From d512c9c9c2ed22cc2f4687f1c97fb1025d494fc8 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 8 Mar 2018 14:48:01 +0100 Subject: [PATCH 6/7] version changed --- Firmware/Configuration.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 4eb4270c4..d793c3fdf 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.1.2" -#define FW_COMMIT_NR 231 +#define FW_VERSION "3.1.3-RC1" +#define FW_COMMIT_NR 243 // FW_VERSION_UNKNOWN means this is an unofficial build. // The firmware should only be checked into github with this symbol. #define FW_DEV_VERSION FW_VERSION_UNKNOWN From 66dc65ecd4e2b76273da54c64f9263dd08741dab Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 9 Mar 2018 14:15:47 +0100 Subject: [PATCH 7/7] version changed --- Firmware/Configuration.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index d793c3fdf..b46731f49 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.1.3-RC1" -#define FW_COMMIT_NR 243 +#define FW_VERSION "3.1.3" +#define FW_COMMIT_NR 245 // FW_VERSION_UNKNOWN means this is an unofficial build. // The firmware should only be checked into github with this symbol. #define FW_DEV_VERSION FW_VERSION_UNKNOWN