From 497637ee841551b2a6175e1a342fbbea5f2575f8 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Tue, 18 Feb 2020 12:23:42 +0100 Subject: [PATCH 01/25] Remove hard-coded X/Y jerk limits --- Firmware/ConfigurationStore.cpp | 4 ---- Firmware/Marlin_main.cpp | 2 -- 2 files changed, 6 deletions(-) diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index 0bd13a3a1..0698c7f2d 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -247,10 +247,6 @@ bool Config_RetrieveSettings() { EEPROM_readData(reinterpret_cast(EEPROM_M500_base), reinterpret_cast(&cs), sizeof(cs), "cs"); - - - if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK; - if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK; calculate_extruder_multipliers(); //if max_feedrate_silent and max_acceleration_units_per_sq_second_silent were never stored to eeprom, use default values: diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1dcb89389..38034fa59 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7102,8 +7102,6 @@ Sigma_Exit: #endif cs.max_jerk[E_AXIS] = e; } - if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK; - if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK; } break; From f37f132ee41413408d50d26c0e646bfc185b7e6a Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 4 Nov 2020 16:00:53 +0100 Subject: [PATCH 02/25] Allow all microstep resolutions for all axes --- Firmware/Marlin_main.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index dd6dd78b1..c2610653d 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8530,9 +8530,7 @@ Sigma_Exit: if(code_seen(axis_codes[i])) { uint16_t res_new = code_value(); - bool res_valid = (res_new == 8) || (res_new == 16) || (res_new == 32); // resolutions valid for all axis - res_valid |= (i != E_AXIS) && ((res_new == 1) || (res_new == 2) || (res_new == 4)); // resolutions valid for X Y Z only - res_valid |= (i == E_AXIS) && ((res_new == 64) || (res_new == 128)); // resolutions valid for E only + bool res_valid = res_new > 0 && res_new <= 256 && !(res_new & (res_new - 1)); // must be a power of two if (res_valid) { st_synchronize(); From 153de8e1dbe7d64f8465d6151b54950ae6e22ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 10 Jul 2021 17:01:13 +0000 Subject: [PATCH 03/25] Remove redundant lines --- Firmware/ultralcd.cpp | 4 +--- Firmware/ultralcd.h | 11 ----------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 81fef9674..9df919af7 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -241,9 +241,7 @@ static void lcd_detect_IRsensor(); #endif //IR_SENSOR_ANALOG static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2); static void lcd_colorprint_change(); -#ifdef SNMM -static int get_ext_nr(); -#endif //SNMM + #if defined (SNMM) || defined(SNMM_V2) static void fil_load_menu(); static void fil_unload_menu(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 68b933d02..5e39b34db 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -162,15 +162,6 @@ void lcd_commands(); extern bool bSettings; // flag (i.e. 'fake parameter') for 'lcd_hw_setup_menu()' function void lcd_hw_setup_menu(void); // NOT static due to using inside "util" module ("nozzle_diameter_check()") - -void change_extr(int extr); - -#ifdef SNMM -void extr_unload_all(); -void extr_unload_used(); -#endif //SNMM -void extr_unload(); - enum class FilamentAction : uint_least8_t { None, //!< 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state) @@ -218,8 +209,6 @@ void lcd_pinda_calibration_menu(); void lcd_calibrate_pinda(); void lcd_temp_calibration_set(); -void display_loading(); - void lcd_set_degree(); #if (LANG_MODE != 0) From 8af9f788220e09fe97e43c88e095e95aa734760e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Mon, 26 Jul 2021 16:31:34 +0000 Subject: [PATCH 04/25] Optimize farm_mode init in setup() This saves 28 bytes of flash memory --- Firmware/Marlin_main.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 023b646fa..5ae899c97 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1101,8 +1101,10 @@ void setup() setup_powerhold(); farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - if (farm_mode == 0xFF) + if (farm_mode == 0xFF) { farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode + eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); + } if (farm_mode) { no_response = true; //we need confirmation by recieving PRUSA thx @@ -1440,13 +1442,6 @@ void setup() enable_z(); #endif - farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - if (farm_mode == 0xFF) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if (farm_mode) - { - prusa_statistics(8); - } - // Enable Toshiba FlashAir SD card / WiFi enahanced card. card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); From b1972fdcee97808a2f523193d0292c2e10864c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 28 Jul 2021 16:47:47 +0000 Subject: [PATCH 05/25] Fixes https://github.com/prusa3d/Prusa-Firmware/issues/3252 --- Firmware/ultralcd.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 658e6b01f..ef5cf1e5b 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -8844,6 +8844,22 @@ void menu_lcd_lcdupdate_func(void) #if (SDCARDDETECT > 0) if ((IS_SD_INSERTED != lcd_oldcardstatus)) { + if(menu_menu == lcd_sdcard_menu) { + // If the user is either inside the submenus + // 1. 'Print from SD' --> and SD card is removed + // 2. 'No SD card' --> and SD card is inserted + // + // 1. 'Print from SD': We want to back out of this submenu + // and instead show the submenu title 'No SD card'. + // + // 2. 'No SD card': When the user inserts the SD card we want + // to back out of this submenu. Not only to show + // 'Print from SD' submenu title but also because the user + // will be prompted with another menu with the sorted list of files. + // Without backing out of the menu, the list will appear empty and + // The user will need to back out of two nested submenus. + menu_back(); + } lcd_draw_update = 2; lcd_oldcardstatus = IS_SD_INSERTED; lcd_refresh(); // to maybe revive the LCD if static electricity killed it. @@ -8861,8 +8877,6 @@ void menu_lcd_lcdupdate_func(void) } else { - if(menu_menu==lcd_sdcard_menu) - menu_back(); card.release(); LCD_MESSAGERPGM(_i("Card removed"));////MSG_SD_REMOVED c=20 } From 6afc87d3c8603d9ad2848101bbfdb39de827a6e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Fri, 30 Jul 2021 23:16:03 +0000 Subject: [PATCH 06/25] Reduce unnecessary LCD CGRAM writes --- Firmware/lcd.cpp | 38 -------------------------------------- Firmware/lcd.h | 6 ------ Firmware/mmu.cpp | 3 --- Firmware/ultralcd.cpp | 22 ---------------------- Firmware/ultralcd.h | 3 --- 5 files changed, 72 deletions(-) diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index 37b70f1a1..bffaaa7f0 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -644,8 +644,6 @@ uint8_t lcd_status_update_delay = 0; lcd_longpress_func_t lcd_longpress_func = 0; -lcd_charsetup_func_t lcd_charsetup_func = 0; - lcd_lcdupdate_func_t lcd_lcdupdate_func = 0; static ShortTimer buttonBlanking; @@ -718,8 +716,6 @@ void lcd_update_enable(uint8_t enabled) lcd_next_update_millis = _millis() - 1; // Full update. lcd_clear(); - if (lcd_charsetup_func) - lcd_charsetup_func(); lcd_update(2); } else { @@ -924,28 +920,6 @@ const uint8_t lcd_chardata_clock[8] PROGMEM = { B00000, B00000}; //thanks Sonny Mounicou -const uint8_t lcd_chardata_arrup[8] PROGMEM = { - B00100, - B01110, - B11111, - B00000, - B00000, - B00000, - B00000, - B00000}; - -const uint8_t lcd_chardata_arrdown[8] PROGMEM = { - B00000, - B00000, - B00000, - B00000, - B00000, - B10001, - B01010, - B00100}; - - - void lcd_set_custom_characters(void) { lcd_createChar_P(LCD_STR_BEDTEMP[0], lcd_chardata_bedTemp); @@ -956,13 +930,6 @@ void lcd_set_custom_characters(void) lcd_createChar_P(LCD_STR_FOLDER[0], lcd_chardata_folder); lcd_createChar_P(LCD_STR_FEEDRATE[0], lcd_chardata_feedrate); lcd_createChar_P(LCD_STR_CLOCK[0], lcd_chardata_clock); - //lcd_createChar_P(LCD_STR_ARROW_UP[0], lcd_chardata_arrup); - //lcd_createChar_P(LCD_STR_ARROW_DOWN[0], lcd_chardata_arrdown); -} - -void lcd_set_custom_characters_arrows(void) -{ - lcd_createChar_P(1, lcd_chardata_arrdown); } const uint8_t lcd_chardata_arr2down[8] PROGMEM = { @@ -990,8 +957,3 @@ void lcd_set_custom_characters_nextpage(void) lcd_createChar_P(2, lcd_chardata_confirm); } -void lcd_set_custom_characters_degree(void) -{ - lcd_createChar_P(1, lcd_chardata_degree); -} - diff --git a/Firmware/lcd.h b/Firmware/lcd.h index 65bb9dc92..09ff26dc0 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -112,8 +112,6 @@ extern uint8_t lcd_status_update_delay; extern lcd_longpress_func_t lcd_longpress_func; extern bool lcd_longpress_trigger; -extern lcd_charsetup_func_t lcd_charsetup_func; - extern lcd_lcdupdate_func_t lcd_lcdupdate_func; @@ -199,14 +197,10 @@ private: #define LCD_STR_FOLDER "\x05" #define LCD_STR_FEEDRATE "\x06" #define LCD_STR_CLOCK "\x07" -#define LCD_STR_ARROW_UP "\x0B" -#define LCD_STR_ARROW_DOWN "\x01" #define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set extern void lcd_set_custom_characters(void); -extern void lcd_set_custom_characters_arrows(void); extern void lcd_set_custom_characters_nextpage(void); -extern void lcd_set_custom_characters_degree(void); //! @brief Consume click event inline void lcd_consume_click() diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index abc84c34d..8cd50f879 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -728,9 +728,6 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) screen=0; } - lcd_set_degree(); - - //5 seconds delay for (uint8_t i = 0; i < 5; i++) { if (lcd_clicked()) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 658e6b01f..03426e769 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3232,7 +3232,6 @@ void lcd_adjust_z() { #ifdef PINDA_THERMISTOR bool lcd_wait_for_pinda(float temp) { - lcd_set_custom_characters_degree(); setAllTargetHotends(0); setTargetBed(0); LongTimer pinda_timeout; @@ -3255,7 +3254,6 @@ bool lcd_wait_for_pinda(float temp) { break; } } - lcd_set_custom_characters_arrows(); lcd_update_enable(true); return target_temp_reached; } @@ -3263,7 +3261,6 @@ bool lcd_wait_for_pinda(float temp) { void lcd_wait_for_heater() { lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); - lcd_set_degree(); lcd_set_cursor(0, 4); lcd_print(LCD_STR_THERMOMETER[0]); lcd_print(ftostr3(degHotend(active_extruder))); @@ -3273,7 +3270,6 @@ void lcd_wait_for_heater() { } void lcd_wait_for_cool_down() { - lcd_set_custom_characters_degree(); setAllTargetHotends(0); setTargetBed(0); int fanSpeedBckp = fanSpeed; @@ -3292,12 +3288,10 @@ void lcd_wait_for_cool_down() { lcd_print(ftostr3(degBed())); lcd_print("/0"); lcd_print(LCD_STR_DEGREE); - lcd_set_custom_characters(); delay_keep_alive(1000); serialecho_temperatures(); } fanSpeed = fanSpeedBckp; - lcd_set_custom_characters_arrows(); lcd_update_enable(true); } @@ -3440,7 +3434,6 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, if (multi_screen) { // Display the "next screen" indicator character. - // lcd_set_custom_characters_arrows(); lcd_set_custom_characters_nextpage(); lcd_set_cursor(19, 3); // Display the down arrow. @@ -4421,10 +4414,6 @@ static void lcd_fsensor_state_set() } #endif //FILAMENT_SENSOR -void lcd_set_degree() { - lcd_set_custom_characters_degree(); -} - #if (LANG_MODE != 0) void menu_setlang(unsigned char lang) @@ -4793,7 +4782,6 @@ static void wait_preheat() plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60); delay_keep_alive(2000); lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); - lcd_set_custom_characters(); while (fabs(degHotend(0) - degTargetHotend(0)) > 3) { lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); @@ -8596,10 +8584,8 @@ void ultralcd_init() lcd_init(); lcd_refresh(); lcd_longpress_func = menu_lcd_longpress_func; - lcd_charsetup_func = menu_lcd_charsetup_func; lcd_lcdupdate_func = menu_lcd_lcdupdate_func; menu_menu = lcd_status_screen; - menu_lcd_charsetup_func(); SET_INPUT(BTN_EN1); SET_INPUT(BTN_EN2); @@ -8812,14 +8798,6 @@ void menu_lcd_longpress_func(void) } } -void menu_lcd_charsetup_func(void) -{ - if (menu_menu == lcd_status_screen) - lcd_set_custom_characters_degree(); - else - lcd_set_custom_characters_arrows(); -} - static inline bool z_menu_expired() { return (menu_menu == lcd_babystep_z diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 1f0577618..090bc6d4a 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -5,7 +5,6 @@ #include "config.h" extern void menu_lcd_longpress_func(void); -extern void menu_lcd_charsetup_func(void); extern void menu_lcd_lcdupdate_func(void); // Call with a false parameter to suppress the LCD update from various places like the planner or the temp control. @@ -219,8 +218,6 @@ void lcd_temp_calibration_set(); void display_loading(); -void lcd_set_degree(); - #if (LANG_MODE != 0) void lcd_language(); #endif From da2c80244035a46416b32bf442f749891c007de1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 1 Aug 2021 11:10:03 +0000 Subject: [PATCH 07/25] Add two defines and use LCD_STR_DEGREE with consistency This saves 12 bytes of flash and 2 bytes of SRAM --- Firmware/lcd.cpp | 4 ++-- Firmware/lcd.h | 20 +++++++++++--------- Firmware/ultralcd.cpp | 16 ++++++++-------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index bffaaa7f0..4dfb00634 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -953,7 +953,7 @@ const uint8_t lcd_chardata_confirm[8] PROGMEM = { void lcd_set_custom_characters_nextpage(void) { - lcd_createChar_P(1, lcd_chardata_arr2down); - lcd_createChar_P(2, lcd_chardata_confirm); + lcd_createChar_P(LCD_STR_ARROW_2_DOWN[0], lcd_chardata_arr2down); + lcd_createChar_P(LCD_STR_CONFIRM[0], lcd_chardata_confirm); } diff --git a/Firmware/lcd.h b/Firmware/lcd.h index 09ff26dc0..6b715896d 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -189,15 +189,17 @@ private: //Custom characters defined in the first 8 characters of the LCD -#define LCD_STR_BEDTEMP "\x00" -#define LCD_STR_DEGREE "\x01" -#define LCD_STR_THERMOMETER "\x02" -#define LCD_STR_UPLEVEL "\x03" -#define LCD_STR_REFRESH "\x04" -#define LCD_STR_FOLDER "\x05" -#define LCD_STR_FEEDRATE "\x06" -#define LCD_STR_CLOCK "\x07" -#define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set +#define LCD_STR_BEDTEMP "\x00" +#define LCD_STR_DEGREE "\x01" +#define LCD_STR_ARROW_2_DOWN "\x01" +#define LCD_STR_THERMOMETER "\x02" +#define LCD_STR_CONFIRM "\x02" +#define LCD_STR_UPLEVEL "\x03" +#define LCD_STR_REFRESH "\x04" +#define LCD_STR_FOLDER "\x05" +#define LCD_STR_FEEDRATE "\x06" +#define LCD_STR_CLOCK "\x07" +#define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set extern void lcd_set_custom_characters(void); extern void lcd_set_custom_characters_nextpage(void); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 03426e769..d19072bee 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3246,7 +3246,7 @@ bool lcd_wait_for_pinda(float temp) { lcd_print(ftostr3(current_temperature_pinda)); lcd_print('/'); lcd_print(ftostr3(temp)); - lcd_print(LCD_STR_DEGREE); + lcd_print(LCD_STR_DEGREE[0]); delay_keep_alive(1000); serialecho_temperatures(); if (pinda_timeout.expired(8 * 60 * 1000ul)) { //PINDA cooling from 60 C to 35 C takes about 7 minutes @@ -3266,7 +3266,7 @@ void lcd_wait_for_heater() { lcd_print(ftostr3(degHotend(active_extruder))); lcd_print('/'); lcd_print(ftostr3(degTargetHotend(active_extruder))); - lcd_print(LCD_STR_DEGREE); + lcd_print(LCD_STR_DEGREE[0]); } void lcd_wait_for_cool_down() { @@ -3281,13 +3281,13 @@ void lcd_wait_for_cool_down() { lcd_print(LCD_STR_THERMOMETER[0]); lcd_print(ftostr3(degHotend(0))); lcd_print("/0"); - lcd_print(LCD_STR_DEGREE); + lcd_print(LCD_STR_DEGREE[0]); lcd_set_cursor(9, 4); lcd_print(LCD_STR_BEDTEMP[0]); lcd_print(ftostr3(degBed())); lcd_print("/0"); - lcd_print(LCD_STR_DEGREE); + lcd_print(LCD_STR_DEGREE[0]); delay_keep_alive(1000); serialecho_temperatures(); } @@ -3436,8 +3436,8 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, // Display the "next screen" indicator character. lcd_set_custom_characters_nextpage(); lcd_set_cursor(19, 3); - // Display the down arrow. - lcd_print(char(1)); + // Display the double down arrow. + lcd_print(LCD_STR_ARROW_2_DOWN[0]); } nlines = row; @@ -3478,7 +3478,7 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) if (!multi_screen) { lcd_set_cursor(19, 3); // Display the confirm char. - lcd_print(char(2)); + lcd_print(LCD_STR_CONFIRM[0]); } // Wait for 5 seconds before displaying the next text. for (uint8_t i = 0; i < 100; ++ i) { @@ -3504,7 +3504,7 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) lcd_set_cursor(19, 3); // Display the confirm char. - lcd_print(char(2)); + lcd_print(LCD_STR_CONFIRM[0]); } } } From 158877e73616320814ede663f2e53b1e9ac438ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 1 Aug 2021 11:20:29 +0000 Subject: [PATCH 08/25] Remove one space from Support -> Temperatures menu Saves 2 bytes of flash memory --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d19072bee..74cc26fc6 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1703,7 +1703,7 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ static const size_t maxChars = 15; char tmp[maxChars]; pgmtext_with_colon(ipgmLabel, tmp, maxChars); - lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment + lcd_printf_P(PSTR(" %s%3d\x01\n"), tmp, value); // no need to add -14.14 to string alignment } //! @brief Show Temperatures From cf8a16baa17dffb656ca5119729f2090c4b7bfb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 21 Aug 2021 14:34:02 +0000 Subject: [PATCH 09/25] Remove one call to lcd_timeoutToStatus.start Saves 8 bytes of Flash memory This call is redundant and when moving between menus it gets called multiple times which results in waste of clock cycles. lcd_timeoutToStatus.start() is called from menu_lcd_lcdupdate_func() which is enough. --- Firmware/lcd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index 37b70f1a1..2398e33b7 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -741,7 +741,6 @@ void lcd_buttons_update(void) if (READ(BTN_ENC) == 0) { //button is pressed - lcd_timeoutToStatus.start(); if (!buttonBlanking.running() || buttonBlanking.expired(BUTTON_BLANKING_TIME)) { buttonBlanking.start(); safetyTimer.start(); From 05e0c1e1d3ed20a26f82f2db5b9aa99ab64c6b97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 12 Oct 2021 21:52:19 +0000 Subject: [PATCH 10/25] Fix build error if PINDA_THERMISTOR is not defined temp_cal_active variable is not defined in this scope --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 023b646fa..f4461e827 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3103,7 +3103,7 @@ static void gcode_G80() bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0); #ifndef PINDA_THERMISTOR - if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) + if (run == false && eeprom_read_byte((uint8_t *)EEPROM_TEMP_CAL_ACTIVE) && calibration_status_pinda() == true && target_temperature_bed >= 50) { temp_compensation_start(); run = true; @@ -3337,7 +3337,7 @@ static void gcode_G80() // SERIAL_ECHOLNPGM("clean up finished "); #ifndef PINDA_THERMISTOR - if(temp_cal_active == true && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation + if(eeprom_read_byte((uint8_t *)EEPROM_TEMP_CAL_ACTIVE) && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation #endif babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated. // SERIAL_ECHOLNPGM("babystep applied"); From 63c6373f8d84db189b3fc6ba40b5c138a5609a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 25 Dec 2021 09:41:50 +0000 Subject: [PATCH 11/25] Remove TEMP_STAT_LEDS from firmware This isn't used by MK3 printers. It seems to be leftover code from Marlin --- Firmware/Configuration.h | 5 ----- Firmware/Marlin_main.cpp | 36 ------------------------------------ 2 files changed, 41 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 1ede18c03..75a9ad5cc 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -489,11 +489,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 01e62f2a6..985af1b2d 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9814,39 +9814,6 @@ void controllerFan() } #endif -#ifdef TEMP_STAT_LEDS -static bool blue_led = false; -static bool red_led = false; -static uint32_t stat_update = 0; - -void handle_status_leds(void) { - float max_temp = 0.0; - if(_millis() > stat_update) { - stat_update += 500; // Update every 0.5s - for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) { - max_temp = max(max_temp, degHotend(cur_extruder)); - max_temp = max(max_temp, degTargetHotend(cur_extruder)); - } - #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 - max_temp = max(max_temp, degTargetBed()); - max_temp = max(max_temp, degBed()); - #endif - if((max_temp > 55.0) && (red_led == false)) { - digitalWrite(STAT_LED_RED, 1); - digitalWrite(STAT_LED_BLUE, 0); - red_led = true; - blue_led = false; - } - if((max_temp < 54.0) && (blue_led == false)) { - digitalWrite(STAT_LED_RED, 0); - digitalWrite(STAT_LED_BLUE, 1); - red_led = false; - blue_led = true; - } - } -} -#endif - #ifdef SAFETYTIMER /** * @brief Turn off heating after safetytimer_inactive_time milliseconds of inactivity @@ -10090,9 +10057,6 @@ if(0) WRITE(E0_ENABLE_PIN,oldstatus); } #endif - #ifdef TEMP_STAT_LEDS - handle_status_leds(); - #endif check_axes_activity(); mmu_loop(); From 58867f6c06c8cdaf80da7d5b617221490601e410 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 4 Feb 2022 15:53:12 +0100 Subject: [PATCH 12/25] Fix arduino 1.8.13 warnings --- Firmware/MarlinSerial.cpp | 2 +- Firmware/MarlinSerial.h | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Firmware/MarlinSerial.cpp b/Firmware/MarlinSerial.cpp index 5f1c5ce33..e09ddac32 100644 --- a/Firmware/MarlinSerial.cpp +++ b/Firmware/MarlinSerial.cpp @@ -30,7 +30,7 @@ uint8_t selectedSerialPort = 0; // this is so I can support Attiny series and any other chip without a UART #if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) -#if UART_PRESENT(SERIAL_PORT) +#ifdef HAS_UART ring_buffer rx_buffer = { { 0 }, 0, 0 }; #endif diff --git a/Firmware/MarlinSerial.h b/Firmware/MarlinSerial.h index 27e722bc0..ebfc11c1b 100644 --- a/Firmware/MarlinSerial.h +++ b/Firmware/MarlinSerial.h @@ -28,9 +28,12 @@ #endif // The presence of the UBRRH register is used to detect a UART. -#define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ - (port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \ - (port == 3 && defined(UBRR3H))) +#if ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ + (port == 1 && defined(UBRR1H)) || \ + (port == 2 && defined(UBRR2H)) || \ + (port == 3 && defined(UBRR3H))) +#define HAS_UART +#endif // These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor // requires two levels of indirection to expand macro values properly) @@ -82,7 +85,7 @@ struct ring_buffer int tail; }; -#if UART_PRESENT(SERIAL_PORT) +#ifdef HAS_UART extern ring_buffer rx_buffer; #endif From 274f198188c3f5137ab2de74ddde2618ee5929e4 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 4 Feb 2022 16:28:49 +0100 Subject: [PATCH 13/25] Fix typo from long ago --- Firmware/MarlinSerial.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Firmware/MarlinSerial.h b/Firmware/MarlinSerial.h index ebfc11c1b..3bb0926b2 100644 --- a/Firmware/MarlinSerial.h +++ b/Firmware/MarlinSerial.h @@ -28,10 +28,10 @@ #endif // The presence of the UBRRH register is used to detect a UART. -#if ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ - (port == 1 && defined(UBRR1H)) || \ - (port == 2 && defined(UBRR2H)) || \ - (port == 3 && defined(UBRR3H))) +#if ((SERIAL_PORT == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ + (SERIAL_PORT == 1 && defined(UBRR1H)) || \ + (SERIAL_PORT == 2 && defined(UBRR2H)) || \ + (SERIAL_PORT == 3 && defined(UBRR3H))) #define HAS_UART #endif From 19dc05597dc113ae6acd84f7b19d2aeb6e0fb5fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 11:24:04 +0000 Subject: [PATCH 14/25] Fix identation in PR Also combined the if statements that check farm_mode If farm_mode is 0xFF then we can skip the next if statment. No change in memory footprint --- Firmware/Marlin_main.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5ae899c97..23c517982 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1103,10 +1103,8 @@ void setup() farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); if (farm_mode == 0xFF) { farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); - } - if (farm_mode) - { + eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); + } else if (farm_mode) { no_response = true; //we need confirmation by recieving PRUSA thx important_status = 8; prusa_statistics(8); @@ -1118,9 +1116,9 @@ void setup() //disabled filament autoload (PFW360) fsensor_autoload_set(false); #endif //FILAMENT_SENSOR - // ~ FanCheck -> on - if(!(eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED))) - eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED,true); + // ~ FanCheck -> on + if(!(eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED))) + eeprom_update_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED,true); } #ifdef TMC2130 From e62bc4686f452f3222860146d28b7769b06200fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 18:28:17 +0000 Subject: [PATCH 15/25] Replace hardcoded values and optimise strings This commit saves 64 bytes of flash memory on my end --- Firmware/mmu.cpp | 2 +- Firmware/ultralcd.cpp | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 8cd50f879..31cad6d82 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -738,7 +738,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) //Print the hotend temperature (9 chars total) and fill rest of the line with space lcd_set_cursor(0, 4); //line 4 - int chars = lcd_printf_P(_N("%c%3d/%d%c"), LCD_STR_THERMOMETER[0],(int)(degHotend(active_extruder) + 0.5), (int)(degTargetHotend(active_extruder) + 0.5), LCD_STR_DEGREE[0]); + int chars = lcd_printf_P(_N(LCD_STR_THERMOMETER "%3d/%d" LCD_STR_DEGREE),(int)(degHotend(active_extruder) + 0.5), (int)(degTargetHotend(active_extruder) + 0.5)); lcd_space(9 - chars); delay_keep_alive(1000); } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 74cc26fc6..d3b642f2b 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -409,7 +409,7 @@ static uint8_t menu_item_sdfile(const char* str_fn, char* str_fnl) // Print temperature (nozzle/bed) (9 chars total) void lcdui_print_temp(char type, int val_current, int val_target) { - int chars = lcd_printf_P(_N("%c%3d/%d%c"), type, val_current, val_target, LCD_STR_DEGREE[0]); + int chars = lcd_printf_P(_N("%c%3d/%d" LCD_STR_DEGREE), type, val_current, val_target); lcd_space(9 - chars); } @@ -448,7 +448,7 @@ void lcdui_print_planner_diag(void) // Print feedrate (8 chars total) void lcdui_print_feedrate(void) { - int chars = lcd_printf_P(_N("%c%3d%%"), LCD_STR_FEEDRATE[0], feedmultiply); + int chars = lcd_printf_P(_N(LCD_STR_FEEDRATE "%3d%%"), feedmultiply); lcd_space(8 - chars); } @@ -563,12 +563,12 @@ void lcdui_print_time(void) } if (print_t < 6000) //time<100h - chars = lcd_printf_P(_N("%c%02u:%02u%c%c"), LCD_STR_CLOCK[0], print_t / 60, print_t % 60, suff, suff_doubt); + chars = lcd_printf_P(_N(LCD_STR_CLOCK "%02u:%02u%c%c"), print_t / 60, print_t % 60, suff, suff_doubt); else //time>=100h - chars = lcd_printf_P(_N("%c%3uh %c%c"), LCD_STR_CLOCK[0], print_t / 60, suff, suff_doubt); + chars = lcd_printf_P(_N(LCD_STR_CLOCK "%3uh %c%c"), print_t / 60, suff, suff_doubt); } else - chars = lcd_printf_P(_N("%c--:-- "), LCD_STR_CLOCK[0]); + chars = lcd_puts_P(_N(LCD_STR_CLOCK "--:-- ")); lcd_space(8 - chars); } @@ -1703,7 +1703,7 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ static const size_t maxChars = 15; char tmp[maxChars]; pgmtext_with_colon(ipgmLabel, tmp, maxChars); - lcd_printf_P(PSTR(" %s%3d\x01\n"), tmp, value); // no need to add -14.14 to string alignment + lcd_printf_P(PSTR(" %s%3d" LCD_STR_DEGREE "\n"), tmp, value); // no need to add -14.14 to string alignment } //! @brief Show Temperatures @@ -2878,8 +2878,8 @@ static void lcd_menu_xyz_skew() lcd_printf_P(_N( "%-14.14S:\n" "%S\n" - "%-14.14S:%3.2f\x01\n" - "%-14.14S:%3.2f\x01" + "%-14.14S:%3.2f" LCD_STR_DEGREE "\n" + "%-14.14S:%3.2f" LCD_STR_DEGREE ), _i("Measured skew"), ////MSG_MEASURED_SKEW c=14 separator, @@ -2888,7 +2888,7 @@ static void lcd_menu_xyz_skew() ); if (angleDiff < 100){ lcd_set_cursor(15,0); - lcd_printf_P(_N("%3.2f\x01"), _deg(angleDiff)); + lcd_printf_P(_N("%3.2f" LCD_STR_DEGREE), _deg(angleDiff)); } else{ lcd_puts_at_P(15,0, _T(MSG_NA)); From 976c8c4902017a59994cb7005ea33e01ae5aff47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 18:57:18 +0000 Subject: [PATCH 16/25] Change message from .c to .cpp The allows us to include lcd.h and replace hardcoded value with define LCD_STR_REFRESH Also deleted a #define for bool which does not seem to be used. --- Firmware/{messages.c => messages.cpp} | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) rename Firmware/{messages.c => messages.cpp} (99%) diff --git a/Firmware/messages.c b/Firmware/messages.cpp similarity index 99% rename from Firmware/messages.c rename to Firmware/messages.cpp index 486d78ccd..1546ae961 100644 --- a/Firmware/messages.c +++ b/Firmware/messages.cpp @@ -1,10 +1,8 @@ //messages.c #include "language.h" +#include "lcd.h" // Needed for LCD_STR_REFRESH //this is because we need include Configuration_prusa.h (CUSTOM_MENDEL_NAME) -#define bool char -#define true 1 -#define false 0 #include "Configuration_prusa.h" //internationalized messages @@ -80,7 +78,7 @@ const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unl const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20 const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4 const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2 -const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\x04Refresh"); ////c=18 +const char MSG_REFRESH[] PROGMEM_I1 = ISTR(LCD_STR_REFRESH "Refresh"); ////c=18 const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4 const char MSG_RESET[] PROGMEM_I1 = ISTR("Reset"); ////c=14 const char MSG_RESUME_PRINT[] PROGMEM_I1 = ISTR("Resume print"); ////c=18 From d5b666d2604b60a13e6d1338902016feee144db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 19:53:42 +0000 Subject: [PATCH 17/25] Add LCD_STR_SOLID_BLOCK to represent \xFF --- Firmware/lcd.h | 1 + Firmware/menu.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/lcd.h b/Firmware/lcd.h index 6b715896d..c2b88b7c4 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -200,6 +200,7 @@ private: #define LCD_STR_FEEDRATE "\x06" #define LCD_STR_CLOCK "\x07" #define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set +#define LCD_STR_SOLID_BLOCK "\xFF" //from the default character set extern void lcd_set_custom_characters(void); extern void lcd_set_custom_characters_nextpage(void); diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index 8eb504a8b..f00b362d0 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -570,7 +570,7 @@ void menu_progressbar_update(uint16_t newVal) newCnt = LCD_WIDTH; while (newCnt > progressbar_block_count) { - lcd_print('\xFF'); + lcd_print(LCD_STR_SOLID_BLOCK[0]); progressbar_block_count++; } } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d3b642f2b..5901b2f1d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -8646,7 +8646,7 @@ static void lcd_connect_printer() { i = 0; lcd_puts_at_P(0, 3, PSTR(" ")); } - if (i!=0) lcd_puts_at_P((i * 20) / (NC_BUTTON_LONG_PRESS * 10), 3, "\xFF"); + if (i!=0) lcd_puts_at_P((i * 20) / (NC_BUTTON_LONG_PRESS * 10), 3, LCD_STR_SOLID_BLOCK[0]); if (i == NC_BUTTON_LONG_PRESS * 10) { no_response = false; } From a22a7ea9d7c4bfaa30842d5d467de39d9a3c24e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 19:58:31 +0000 Subject: [PATCH 18/25] Change LCD_STR_UPLEVEL to LCD_STR_UPLEVEL[0] for consistency Saves 4 bytes of flash and 2 bytes of SRAM (Arduino IDE 1.8.19) --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5901b2f1d..86be43de5 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -7269,7 +7269,7 @@ void lcd_belttest() Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)); lcd_set_cursor(10,3),lcd_printf_P(PSTR("%u"),Y); lcd_set_cursor(19, 3); - lcd_print(LCD_STR_UPLEVEL); + lcd_print(LCD_STR_UPLEVEL[0]); lcd_wait_for_click_delay(10); } } From 670214a30b8459259219dfc132639ec44ef97b69 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 6 Feb 2022 11:01:35 +0100 Subject: [PATCH 19/25] Fix indentation --- Firmware/lcd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/lcd.h b/Firmware/lcd.h index c2b88b7c4..e67715a3c 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -200,7 +200,7 @@ private: #define LCD_STR_FEEDRATE "\x06" #define LCD_STR_CLOCK "\x07" #define LCD_STR_ARROW_RIGHT "\x7E" //from the default character set -#define LCD_STR_SOLID_BLOCK "\xFF" //from the default character set +#define LCD_STR_SOLID_BLOCK "\xFF" //from the default character set extern void lcd_set_custom_characters(void); extern void lcd_set_custom_characters_nextpage(void); From ff009883035a58ec3a8739198cd365f9da6e23c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 5 Feb 2022 18:28:17 +0000 Subject: [PATCH 20/25] Revert "Replace hardcoded values and optimise strings" This reverts commit e62bc4686f452f3222860146d28b7769b06200fd. --- Firmware/mmu.cpp | 2 +- Firmware/ultralcd.cpp | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 31cad6d82..8cd50f879 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -738,7 +738,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move) //Print the hotend temperature (9 chars total) and fill rest of the line with space lcd_set_cursor(0, 4); //line 4 - int chars = lcd_printf_P(_N(LCD_STR_THERMOMETER "%3d/%d" LCD_STR_DEGREE),(int)(degHotend(active_extruder) + 0.5), (int)(degTargetHotend(active_extruder) + 0.5)); + int chars = lcd_printf_P(_N("%c%3d/%d%c"), LCD_STR_THERMOMETER[0],(int)(degHotend(active_extruder) + 0.5), (int)(degTargetHotend(active_extruder) + 0.5), LCD_STR_DEGREE[0]); lcd_space(9 - chars); delay_keep_alive(1000); } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5972befcd..8162e450d 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -409,7 +409,7 @@ static uint8_t menu_item_sdfile(const char* str_fn, char* str_fnl) // Print temperature (nozzle/bed) (9 chars total) void lcdui_print_temp(char type, int val_current, int val_target) { - int chars = lcd_printf_P(_N("%c%3d/%d" LCD_STR_DEGREE), type, val_current, val_target); + int chars = lcd_printf_P(_N("%c%3d/%d%c"), type, val_current, val_target, LCD_STR_DEGREE[0]); lcd_space(9 - chars); } @@ -448,7 +448,7 @@ void lcdui_print_planner_diag(void) // Print feedrate (8 chars total) void lcdui_print_feedrate(void) { - int chars = lcd_printf_P(_N(LCD_STR_FEEDRATE "%3d%%"), feedmultiply); + int chars = lcd_printf_P(_N("%c%3d%%"), LCD_STR_FEEDRATE[0], feedmultiply); lcd_space(8 - chars); } @@ -563,12 +563,12 @@ void lcdui_print_time(void) } if (print_t < 6000) //time<100h - chars = lcd_printf_P(_N(LCD_STR_CLOCK "%02u:%02u%c%c"), print_t / 60, print_t % 60, suff, suff_doubt); + chars = lcd_printf_P(_N("%c%02u:%02u%c%c"), LCD_STR_CLOCK[0], print_t / 60, print_t % 60, suff, suff_doubt); else //time>=100h - chars = lcd_printf_P(_N(LCD_STR_CLOCK "%3uh %c%c"), print_t / 60, suff, suff_doubt); + chars = lcd_printf_P(_N("%c%3uh %c%c"), LCD_STR_CLOCK[0], print_t / 60, suff, suff_doubt); } else - chars = lcd_puts_P(_N(LCD_STR_CLOCK "--:-- ")); + chars = lcd_printf_P(_N("%c--:-- "), LCD_STR_CLOCK[0]); lcd_space(8 - chars); } @@ -1702,7 +1702,7 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ static const size_t maxChars = 15; char tmp[maxChars]; pgmtext_with_colon(ipgmLabel, tmp, maxChars); - lcd_printf_P(PSTR(" %s%3d" LCD_STR_DEGREE "\n"), tmp, value); // no need to add -14.14 to string alignment + lcd_printf_P(PSTR(" %s%3d\x01\n"), tmp, value); // no need to add -14.14 to string alignment } //! @brief Show Temperatures @@ -2879,8 +2879,8 @@ static void lcd_menu_xyz_skew() lcd_printf_P(_N( "%-14.14S:\n" "%S\n" - "%-14.14S:%3.2f" LCD_STR_DEGREE "\n" - "%-14.14S:%3.2f" LCD_STR_DEGREE + "%-14.14S:%3.2f\x01\n" + "%-14.14S:%3.2f\x01" ), _i("Measured skew"), ////MSG_MEASURED_SKEW c=14 separator, @@ -2889,7 +2889,7 @@ static void lcd_menu_xyz_skew() ); if (angleDiff < 100){ lcd_set_cursor(15,0); - lcd_printf_P(_N("%3.2f" LCD_STR_DEGREE), _deg(angleDiff)); + lcd_printf_P(_N("%3.2f\x01"), _deg(angleDiff)); } else{ lcd_puts_at_P(15,0, _T(MSG_NA)); From 121324d20b742303fecd34a78f1d909fa2f4ada4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 1 Aug 2021 11:20:29 +0000 Subject: [PATCH 21/25] Revert "Remove one space from Support -> Temperatures menu" This reverts commit 158877e73616320814ede663f2e53b1e9ac438ba. --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8162e450d..fbd572570 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1702,7 +1702,7 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ static const size_t maxChars = 15; char tmp[maxChars]; pgmtext_with_colon(ipgmLabel, tmp, maxChars); - lcd_printf_P(PSTR(" %s%3d\x01\n"), tmp, value); // no need to add -14.14 to string alignment + lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment } //! @brief Show Temperatures From d0466194700635c8a2bc262a32f6c89a35bd8029 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Tue, 8 Feb 2022 08:19:17 +0100 Subject: [PATCH 22/25] Update Community translation Added Hugarian Co-Maintainer Added Croatian Mainteners Set Swedish to inactive, waiting for review --- lang/Community_made_translations.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lang/Community_made_translations.md b/lang/Community_made_translations.md index dab8a1351..942d4c06e 100644 --- a/lang/Community_made_translations.md +++ b/lang/Community_made_translations.md @@ -16,7 +16,14 @@ - **Hungarian / Magyar** - Maintainers: **@AttilaSVK** - - Co-maintainers: + - Co-maintainers: **@Hauzman** + - Contributors: + - [X] **Active** since January 2022 + - [X] **Maintained** since January 2022 + +- **Croatian / Hrvatski** + - Maintainers: **@Prime1910** + - Co-maintainers: **@PRPA041** - Contributors: - [X] **Active** since January 2022 - [X] **Maintained** since January 2022 @@ -25,6 +32,6 @@ - Maintainers: **@Painkiller56** - Co-maintainers: - Contributors: - - [X] **Active** since January 2022 + - [ ] **Active** since January 2022 - [X] **Maintained** since January 2022 From caf496e9961f0d37c95b5e7fb9d785b9609c44f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 9 Feb 2022 07:26:34 +0000 Subject: [PATCH 23/25] Optimise FanCheck initialisation when farm mode is on Saves 12 bytes of flash memory (Arduino IDE 1.8.19) --- Firmware/Marlin_main.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 23c517982..4351311e5 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1117,8 +1117,7 @@ void setup() fsensor_autoload_set(false); #endif //FILAMENT_SENSOR // ~ FanCheck -> on - if(!(eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED))) - eeprom_update_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED,true); + eeprom_update_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED, true); } #ifdef TMC2130 From c4f102392427dd1573a75e705dcad698e8975140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Wed, 9 Feb 2022 07:30:50 +0000 Subject: [PATCH 24/25] Add back second call to prusa_statistics(8) when farm_mode is enabled. Adds 18 bytes of flash --- Firmware/Marlin_main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4351311e5..53f80a9b5 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1439,6 +1439,12 @@ void setup() enable_z(); #endif + if (farm_mode) { + // The farm monitoring SW may accidentally expect + // 2 messages of "printer started" to consider a printer working. + prusa_statistics(8); + } + // Enable Toshiba FlashAir SD card / WiFi enahanced card. card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); From 916212b597ee530b3557a5a682702ada6c9ea390 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 9 Feb 2022 10:28:45 +0100 Subject: [PATCH 25/25] Add ALLOW_ALL_MRES as requested in PR --- Firmware/Marlin_main.cpp | 6 ++++++ Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 1 + Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h | 1 + 3 files changed, 8 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c2610653d..81d9bcc54 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8530,7 +8530,13 @@ Sigma_Exit: if(code_seen(axis_codes[i])) { uint16_t res_new = code_value(); +#ifdef ALLOW_ALL_MRES bool res_valid = res_new > 0 && res_new <= 256 && !(res_new & (res_new - 1)); // must be a power of two +#else + bool res_valid = (res_new == 8) || (res_new == 16) || (res_new == 32); // resolutions valid for all axis + res_valid |= (i != E_AXIS) && ((res_new == 1) || (res_new == 2) || (res_new == 4)); // resolutions valid for X Y Z only + res_valid |= (i == E_AXIS) && ((res_new == 64) || (res_new == 128)); // resolutions valid for E only +#endif if (res_valid) { st_synchronize(); diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 04b4c5266..1400e7eb2 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -212,6 +212,7 @@ #define TMC2130_INTPOL_XY 1 // extrapolate 256 for XY axes #define TMC2130_INTPOL_Z 1 // extrapolate 256 for Z axis #define TMC2130_INTPOL_E 1 // extrapolate 256 for E axis +// #define ALLOW_ALL_MRES #define TMC2130_PWM_GRAD_X 2 // PWMCONF #define TMC2130_PWM_AMPL_X 230 // PWMCONF diff --git a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h index c869ec517..d9d72d3dc 100644 --- a/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h @@ -214,6 +214,7 @@ #define TMC2130_INTPOL_XY 1 // extrapolate 256 for XY axes #define TMC2130_INTPOL_Z 1 // extrapolate 256 for Z axis #define TMC2130_INTPOL_E 1 // extrapolate 256 for E axis +// #define ALLOW_ALL_MRES #define TMC2130_PWM_GRAD_X 2 // PWMCONF #define TMC2130_PWM_AMPL_X 230 // PWMCONF