From 173062295f9ead60600c5df24419d911e5c3e994 Mon Sep 17 00:00:00 2001 From: Voinea Date: Sat, 6 Apr 2019 12:50:22 +0300 Subject: [PATCH 01/21] Enable print fan while waiting for cooldown --- Firmware/ultralcd.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e06824f13..c9932eadb 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3507,6 +3507,8 @@ void lcd_wait_for_cool_down() { lcd_set_custom_characters_degree(); setAllTargetHotends(0); setTargetBed(0); + int fanSpeedBckp = fanSpeed; + fanSpeed = 255; while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) { lcd_display_message_fullscreen_P(_i("Waiting for nozzle and bed cooling"));////MSG_WAITING_TEMP c=20 r=3 @@ -3525,6 +3527,7 @@ void lcd_wait_for_cool_down() { delay_keep_alive(1000); serialecho_temperatures(); } + fanSpeed = fanSpeedBckp; lcd_set_custom_characters_arrows(); lcd_update_enable(true); } From 863c7158b2f97c624acde09aa678ed7e06b5eac4 Mon Sep 17 00:00:00 2001 From: Paul Bransford Date: Tue, 16 Apr 2019 06:15:46 -0400 Subject: [PATCH 02/21] use modification times for sdcard sort --- Firmware/cardreader.cpp | 28 ++++++++++++++-------------- Firmware/cardreader.h | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 7aa8ed7e0..38c3f9e6f 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -137,8 +137,8 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m SERIAL_ECHOPGM("Access date: "); MYSERIAL.println(p.lastAccessDate); SERIAL_ECHOLNPGM("");*/ - creationDate = p.creationDate; - creationTime = p.creationTime; + modificationDate = p.lastWriteDate; + modificationTime = p.lastWriteTime; //writeDate = p.lastAccessDate; if (match != NULL) { if (strcasecmp(match, filename) == 0) return; @@ -761,8 +761,8 @@ void CardReader::presort() { #endif #elif SDSORT_USES_STACK char sortnames[fileCnt][LONG_FILENAME_LENGTH]; - uint16_t creation_time[fileCnt]; - uint16_t creation_date[fileCnt]; + uint16_t modification_time[fileCnt]; + uint16_t modification_date[fileCnt]; #endif // Folder sorting needs 1 bit per entry for flags. @@ -782,8 +782,8 @@ void CardReader::presort() { // retaining only two filenames at a time. This is very // slow but is safest and uses minimal RAM. char name1[LONG_FILENAME_LENGTH + 1]; - uint16_t creation_time_bckp; - uint16_t creation_date_bckp; + uint16_t modification_time_bckp; + uint16_t modification_date_bckp; #endif position = 0; @@ -809,8 +809,8 @@ void CardReader::presort() { #else // Copy filenames into the static array strcpy(sortnames[i], LONGEST_FILENAME); - creation_time[i] = creationTime; - creation_date[i] = creationDate; + modification_time[i] = modificationTime; + modification_date[i] = modificationDate; #if SDSORT_CACHE_NAMES strcpy(sortshort[i], filename); #endif @@ -835,12 +835,12 @@ void CardReader::presort() { // Compare names from the array or just the two buffered names #if SDSORT_USES_RAM #define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0) - #define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \ - (creation_date[o1] < creation_date [o2])) + #define _SORT_CMP_TIME_NODIR() (((modification_date[o1] == modification_date[o2]) && (modification_time[o1] < modification_time[o2])) || \ + (modification_date[o1] < modification_date [o2])) #else #define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2) - #define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp > creationTime)) || \ - (creation_date_bckp > creationDate)) + #define _SORT_CMP_TIME_NODIR() (((modification_date_bckp == modificationDate) && (modification_time_bckp > modificationTime)) || \ + (modification_date_bckp > modificationDate)) #endif @@ -891,8 +891,8 @@ void CardReader::presort() { counter++; getfilename_simple(positions[o1]); strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it) - creation_date_bckp = creationDate; - creation_time_bckp = creationTime; + modification_date_bckp = modificationDate; + modification_time_bckp = modificationTime; #if HAS_FOLDER_SORTING bool dir1 = filenameIsDir; #endif diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index f287a44f4..9f8385ba4 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -77,7 +77,7 @@ public: bool cardOK ; bool paused ; char filename[13]; - uint16_t creationTime, creationDate; + uint16_t modificationTime, modificationDate; uint32_t cluster, position; char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; @@ -114,8 +114,8 @@ private: #endif #elif !SDSORT_USES_STACK char sortnames[SDSORT_LIMIT][FILENAME_LENGTH]; - uint16_t creation_time[SDSORT_LIMIT]; - uint16_t creation_date[SDSORT_LIMIT]; + uint16_t modification_time[SDSORT_LIMIT]; + uint16_t modification_date[SDSORT_LIMIT]; #endif // Folder sorting uses an isDir array when caching items. From ce25bb8532b3f9262fbfd57c3613ecf782caeee9 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 19 Apr 2019 17:24:03 +0200 Subject: [PATCH 03/21] Introduce an editorconfig file --- .editorconfig | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..8acdfc7e9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +#-*-mode:conf-*- +# editorconfig file (see EditorConfig.org) + +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 4 +tab_width = 4 +max_line_length = 100 From 556b87edece80f38bfaa8c3aa05dd97786e0f74f Mon Sep 17 00:00:00 2001 From: leptun Date: Mon, 29 Jul 2019 09:41:33 +0300 Subject: [PATCH 04/21] M350 for all axis - MK3 --- Firmware/Marlin_main.cpp | 43 +++++++++++++++++++++++----------------- Firmware/tmc2130.cpp | 4 ++-- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 35722679b..d987fad98 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7538,27 +7538,34 @@ Sigma_Exit: case 350: { #ifdef TMC2130 - if(code_seen('E')) + for (int i=0; i res) + 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 + if (res_valid) { - uint16_t fac = (res_new / res); - cs.axis_steps_per_unit[axis] *= fac; - position[E_AXIS] *= fac; - } - else - { - uint16_t fac = (res / res_new); - cs.axis_steps_per_unit[axis] /= fac; - position[E_AXIS] /= fac; + + st_synchronize(); + uint16_t res = tmc2130_get_res(i); + tmc2130_set_res(i, res_new); + cs.axis_ustep_resolution[i] = res_new; + uint16_t fac; + if (res_new > res) + { + fac = (res_new / res); + cs.axis_steps_per_unit[i] *= fac; + position[i] *= fac; + } + else + { + fac = (res / res_new); + cs.axis_steps_per_unit[i] /= fac; + position[i] /= fac; + } } } } diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp index 15188fc42..bff7030be 100755 --- a/Firmware/tmc2130.cpp +++ b/Firmware/tmc2130.cpp @@ -425,7 +425,7 @@ void tmc2130_check_overtemp() void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_t current_r) { - uint8_t intpol = 1; + uint8_t intpol = (mres != 0); // intpol to 256 only if microsteps aren't 256 uint8_t toff = tmc2130_chopper_config[axis].toff; // toff = 3 (fchop = 27.778kHz) uint8_t hstrt = tmc2130_chopper_config[axis].hstr; //initial 4, modified to 5 uint8_t hend = tmc2130_chopper_config[axis].hend; //original value = 1 @@ -598,7 +598,7 @@ void tmc2130_wr_THIGH(uint8_t axis, uint32_t val32) uint8_t tmc2130_usteps2mres(uint16_t usteps) { - uint8_t mres = 8; while (mres && (usteps >>= 1)) mres--; + uint8_t mres = 8; while (usteps >>= 1) mres--; return mres; } From 2345288d401d157a75ddc5225a4f2c41f034f5e6 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Sat, 31 Aug 2019 15:28:31 +0200 Subject: [PATCH 05/21] Fix the LCD pause function Do not call long_pause recursively! long_pause() is called before resetting the lcd_command_type. As long_pause uses st_synchronize() internally, there could be time to schedule another call to long_pause(). --- Firmware/Marlin_main.cpp | 5 ++--- Firmware/ultralcd.cpp | 10 +++------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a034f94ea..275326abc 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9492,10 +9492,9 @@ void long_pause() //long pause print current_position[Y_AXIS] = Y_PAUSE_POS; plan_buffer_line_curposXYZE(50, active_extruder); - // Turn off the print fan + // Turn off the hotends and print fan + setAllTargetHotends(0); fanSpeed = 0; - - st_synchronize(); } void serialecho_temperatures() { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2efc1e099..0f4af7cef 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1059,12 +1059,8 @@ void lcd_commands() if (!blocks_queued() && !homing_flag) { lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20 r=1 - long_pause(); - if (lcd_commands_type == LcdCommands::LongPause) // !!! because "lcd_commands_type" can be changed during/inside "long_pause()" - { - lcd_commands_type = LcdCommands::Idle; - lcd_commands_step = 0; - } + lcd_commands_type = LcdCommands::Idle; + lcd_commands_step = 0; } } @@ -1644,7 +1640,7 @@ void lcd_pause_print() { lcd_return_to_status(); stop_and_save_print_to_ram(0.0,0.0); - setAllTargetHotends(0); + long_pause(); isPrintPaused = true; if (LcdCommands::Idle == lcd_commands_type) { From 10cdcb3ae3dd91d7d7063bd8ba0c488e61eae288 Mon Sep 17 00:00:00 2001 From: leptun Date: Sat, 31 Aug 2019 17:00:39 +0300 Subject: [PATCH 06/21] SD Scroll workaround --- Firmware/ultralcd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2efc1e099..e72db256c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -305,7 +305,7 @@ const char STR_SEPARATOR[] PROGMEM = "------------"; static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, char* longFilename) { char c; - int enc_dif = lcd_encoder_diff; + int enc_dif = lcd_encoder_diff / ENCODER_PULSES_PER_STEP; uint8_t n = LCD_WIDTH - 1; for(uint_least8_t g = 0; g<4;g++){ lcd_set_cursor(0, g); @@ -331,7 +331,7 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, char* longF n = LCD_WIDTH - 1; for(int g = 0; g<300 ;g++){ manage_heater(); - if(LCD_CLICKED || ( enc_dif != lcd_encoder_diff )){ + if(LCD_CLICKED || ( enc_dif != (lcd_encoder_diff / ENCODER_PULSES_PER_STEP))){ longFilenameTMP = longFilename; *(longFilenameTMP + LCD_WIDTH - 2) = '\0'; i = 1; From bb1fb4989489c2b01906e68bc08f408872d84590 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 10 Sep 2019 18:36:14 +0200 Subject: [PATCH 07/21] Use MMU cutter only as last resort. Cut filament only before last load retry. --- Firmware/mmu.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index e7a59e75c..f44bad97b 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1577,19 +1577,23 @@ void mmu_continue_loading(bool blocking) increment_load_fail(); // no break case Ls::Retry: -#ifdef MMU_HAS_CUTTER - if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + ++retry; // overflow not handled, as it is not dangerous. + if (retry >= max_retry) { - mmu_command(MmuCmd::K0 + tmp_extruder); - manage_response(true, true, MMU_UNLOAD_MOVE); - } + state = Ls::Unload; +#ifdef MMU_HAS_CUTTER + if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + { + mmu_command(MmuCmd::K0 + tmp_extruder); + manage_response(true, true, MMU_UNLOAD_MOVE); + } #endif //MMU_HAS_CUTTER + } mmu_command(MmuCmd::T0 + tmp_extruder); manage_response(true, true, MMU_TCODE_MOVE); success = load_more(); if (success) success = can_load(); - ++retry; // overflow not handled, as it is not dangerous. - if (retry >= max_retry) state = Ls::Unload; + break; case Ls::Unload: stop_and_save_print_to_ram(0, 0); From bf9f66857436500afb887f55f3581292a34dfddb Mon Sep 17 00:00:00 2001 From: leptun Date: Wed, 11 Sep 2019 22:03:56 +0300 Subject: [PATCH 08/21] Fix short filenames scrolling in sdprint menu and status screen --- Firmware/ultralcd.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ee8475d12..33b2b555e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -302,18 +302,24 @@ bool bSettings; // flag (i.e. 'fake parameter' const char STR_SEPARATOR[] PROGMEM = "------------"; -static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, char* longFilename) +static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* filename, char* longFilename) { char c; int enc_dif = lcd_encoder_diff; uint8_t n = LCD_WIDTH - 1; + for(uint_least8_t g = 0; g<4;g++){ lcd_set_cursor(0, g); lcd_print(' '); } - lcd_set_cursor(0, row); lcd_print('>'); + + if (longFilename[0] == '\0') + { + longFilename = filename; + } + int i = 1; int j = 0; char* longFilenameTMP = longFilename; @@ -529,7 +535,7 @@ static uint8_t menu_item_sdfile(const char* if (lcd_draw_update) { if (lcd_encoder == menu_item) - lcd_implementation_drawmenu_sdfile_selected(menu_row, str_fnl); + lcd_implementation_drawmenu_sdfile_selected(menu_row, str_fn, str_fnl); else lcd_implementation_drawmenu_sdfile(menu_row, str_fn, str_fnl); } @@ -701,10 +707,10 @@ void lcdui_print_status_line(void) { if (IS_SD_PRINTING) { - if (strcmp(longFilenameOLD, card.longFilename) != 0) + if (strcmp(longFilenameOLD, (card.longFilename[0] ? card.longFilename : card.filename)) != 0) { memset(longFilenameOLD, '\0', strlen(longFilenameOLD)); - sprintf_P(longFilenameOLD, PSTR("%s"), card.longFilename); + sprintf_P(longFilenameOLD, PSTR("%s"), (card.longFilename[0] ? card.longFilename : card.filename)); scrollstuff = 0; } } @@ -752,16 +758,16 @@ void lcdui_print_status_line(void) } else if ((IS_SD_PRINTING) && (custom_message_type == CustomMsg::Status)) { // If printing from SD, show what we are printing - if(strlen(card.longFilename) > LCD_WIDTH) + if(strlen(longFilenameOLD) > LCD_WIDTH) { int inters = 0; int gh = scrollstuff; while (((gh - scrollstuff) < LCD_WIDTH) && (inters == 0)) { - if (card.longFilename[gh] == '\0') + if (longFilenameOLD[gh] == '\0') { lcd_set_cursor(gh - scrollstuff, 3); - lcd_print(card.longFilename[gh - 1]); + lcd_print(longFilenameOLD[gh - 1]); scrollstuff = 0; gh = scrollstuff; inters = 1; @@ -769,7 +775,7 @@ void lcdui_print_status_line(void) else { lcd_set_cursor(gh - scrollstuff, 3); - lcd_print(card.longFilename[gh - 1]); + lcd_print(longFilenameOLD[gh - 1]); gh++; } } @@ -777,7 +783,7 @@ void lcdui_print_status_line(void) } else { - lcd_print(longFilenameOLD); + lcd_printf_P(PSTR("%-20s"), longFilenameOLD); } } else From 219a5e06251443f8a379143ea8222b6e5adad494 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 3 Oct 2019 21:25:52 +0200 Subject: [PATCH 09/21] Initialize EEPROM_SILENT in one place both for MK3 and MK25 printers and make it more clear. --- Firmware/Marlin_main.cpp | 2 +- Firmware/stepper.cpp | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 45dd118c4..bcbe87422 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1242,8 +1242,8 @@ void setup() // Once a firmware boots up, it forces at least a language selection, which changes // EEPROM_LANG to number lower than 0x0ff. // 1) Set a high power mode. + eeprom_update_byte((uint8_t*)EEPROM_SILENT, SILENT_MODE_OFF); #ifdef TMC2130 - eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0); tmc2130_mode = TMC2130_MODE_NORMAL; #endif //TMC2130 eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 710b135ec..52fedcde9 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1564,10 +1564,6 @@ void st_current_init() //Initialize Digipot Motor Current { #ifdef MOTOR_CURRENT_PWM_XY_PIN uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); - if (SilentMode == 0xff){ //set power to High Power (MK2.5) or Normal Power (MK3, unused) - SilentMode = SILENT_MODE_POWER; - eeprom_update_byte((uint8_t*)EEPROM_SILENT, SilentMode); - } SilentModeMenu = SilentMode; pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT); From e3ac2e2509aa01e06b112af77efa42724f94547e Mon Sep 17 00:00:00 2001 From: leptun Date: Thu, 10 Oct 2019 19:01:57 +0300 Subject: [PATCH 10/21] PSU_DELTA fix force_high_power_mode() --- Firmware/Marlin_main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 45dd118c4..816a57dc2 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2433,6 +2433,9 @@ void ramming() { #ifdef TMC2130 void force_high_power_mode(bool start_high_power_section) { +#ifdef PSU_Delta + if (start_high_power_section == true) enable_force_z(); +#endif //PSU_Delta uint8_t silent; silent = eeprom_read_byte((uint8_t*)EEPROM_SILENT); if (silent == 1) { From 04bfe674df36ed985faed0e80a68073d2024c62a Mon Sep 17 00:00:00 2001 From: DRracer Date: Wed, 16 Oct 2019 16:32:49 +0200 Subject: [PATCH 11/21] tiny lang fixes, part 1 --- Firmware/ultralcd.cpp | 21 ++++++++++++--------- lang/lang_en_cz.txt | 2 +- lang/lang_en_es.txt | 4 ++-- lang/lang_en_pl.txt | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f49528025..d11148974 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1843,8 +1843,8 @@ static void lcd_menu_fails_stats_total() //! @code{.unparsed} //! |01234567890123456789| //! |Last print failures | c=20 r=1 -//! | Power failures: 000| c=14 r=1 -//! | Filam. runouts: 000| c=14 r=1 +//! | Power failures 000| c=14 r=1 +//! | Filam. runouts 000| c=14 r=1 //! | Crash X:000 Y:000| c=7 r=1 //! ---------------------- //! @endcode @@ -1890,6 +1890,7 @@ static void lcd_menu_fails_stats() } #elif defined(FILAMENT_SENSOR) +static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-16.16S%-3d\n"; //! //! @brief Print last print and total filament run outs //! @@ -1900,9 +1901,9 @@ static void lcd_menu_fails_stats() //! @code{.unparsed} //! |01234567890123456789| //! |Last print failures | c=20 r=1 -//! | Filam. runouts: 000| c=14 r=1 +//! | Filam. runouts 000| c=14 r=1 //! |Total failures | c=20 r=1 -//! | Filam. runouts: 000| c=14 r=1 +//! | Filam. runouts 000| c=14 r=1 //! ---------------------- //! @endcode //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. @@ -1912,11 +1913,13 @@ static void lcd_menu_fails_stats() uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); lcd_home(); - lcd_printf_P(PSTR("Last print failures\n" ////c=20 r=1 - " Filam. runouts %-3d\n" ////c=14 r=1 - "Total failures\n" ////c=20 r=1 - " Filam. runouts %-3d"), filamentLast, filamentTotal); ////c=14 r=1 - menu_back_if_clicked(); + lcd_printf_P(failStatsFmt, + _i("Last print failures"), ////c=20 r=1 + _i("Filam. runouts"), filamentLast, ////c=14 r=1 + _i("Total failures"), ////c=20 r=1 + _i("Filam. runouts"), filamentTotal); ////c=14 r=1 + + menu_back_if_clicked(); } #else static void lcd_menu_fails_stats() diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index 64673af42..c25c94644 100755 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -72,7 +72,7 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..." +"Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index 3f6007c88..4a6006af7 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -72,11 +72,11 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"La carga automatica de filamento solo funciona si el sensor de filamento esta activado..." +"La carga automatica solo funciona si el sensor de filamento esta activado..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." -"La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..." +"La carga automatica esta activada, pulse el dial e inserte el filamento..." #MSG_SELFTEST_AXIS_LENGTH "Axis length" diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index 9e6d8e707..a8aa9f749 100755 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -72,7 +72,7 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..." +"Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." From ace1d7049aeb0066083d469a0b007401e8fd1fe9 Mon Sep 17 00:00:00 2001 From: leptun Date: Thu, 17 Oct 2019 17:49:15 +0300 Subject: [PATCH 12/21] Reenable command processing when issue is fixed if printer not active --- Firmware/temperature.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 5a1b9c8c2..99b07a265 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -505,7 +505,9 @@ void checkFanSpeed() // we may even send some info to the LCD from here fan_check_error = EFCE_FIXED; } - + if ((fan_check_error == EFCE_FIXED) && !PRINTER_ACTIVE){ + fan_check_error = EFCE_OK; //if the issue is fixed while the printer is doing nothing, reenable processing immediately. + } if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) { fan_speed_errors[0] = 0; fanSpeedError(0); //extruder fan From d432c3644db4e57ba7d3054da9cbbdf635a5ab07 Mon Sep 17 00:00:00 2001 From: leptun Date: Fri, 18 Oct 2019 09:13:19 +0300 Subject: [PATCH 13/21] Enable beeping after fan error is fixed --- Firmware/temperature.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 38d3ab7e8..cde7cd88e 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -507,6 +507,7 @@ void checkFanSpeed() } if ((fan_check_error == EFCE_FIXED) && !PRINTER_ACTIVE){ fan_check_error = EFCE_OK; //if the issue is fixed while the printer is doing nothing, reenable processing immediately. + lcd_reset_alert_level(); //for another fan speed error } if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) { fan_speed_errors[0] = 0; From d32fd1d893305baac0d7cd2894a5fa4e6ec22023 Mon Sep 17 00:00:00 2001 From: DRracer Date: Tue, 22 Oct 2019 09:11:47 +0200 Subject: [PATCH 14/21] Better EN for new messages --- Firmware/ultralcd.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d11148974..d08f536c1 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4932,12 +4932,12 @@ static void lcd_wizard_load() { if (mmu_enabled) { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament to the first tube of MMU, then press the knob to load it."));////c=20 r=8 + lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the first tube of the MMU, then press the knob to load it."));////c=20 r=8 tmp_extruder = 0; } else { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 + lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the extruder, then press the knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 } lcd_update_enable(false); lcd_clear(); @@ -4961,7 +4961,7 @@ static void wizard_lay1cal_message(bool cold) if (mmu_enabled) { lcd_show_fullscreen_message_and_wait_P( - _i("First you will select filament you wish to use for calibration. Then select temperature which matches your material.")); + _i("Choose a filament for the First Layer Calibration and select it in the on-screen menu.")); } else if (cold) { @@ -4969,7 +4969,7 @@ static void wizard_lay1cal_message(bool cold) _i("Select temperature which matches your material.")); } lcd_show_fullscreen_message_and_wait_P( - _i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration.")); ////MSG_WIZARD_V2_CAL_2 c=20 r=12 + _i("The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter).")); ////MSG_WIZARD_V2_CAL_2 c=20 r=12 } //! @brief Printer first run wizard (Selftest and calibration) @@ -5097,7 +5097,7 @@ void lcd_wizard(WizState state) setTargetBed(PLA_PREHEAT_HPB_TEMP); if (mmu_enabled) { - wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is any filament loaded?"), true);////c=20 r=2 + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////c=20 r=2 } else { wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////MSG_WIZARD_FILAMENT_LOADED c=20 r=2 @@ -5142,7 +5142,7 @@ void lcd_wizard(WizState state) } else { - lcd_show_fullscreen_message_and_wait_P(_i("If you have more steel sheets you can calibrate additional presets in Settings / HW Setup / Steel sheets.")); + lcd_show_fullscreen_message_and_wait_P(_i("If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets.")); state = S::Finish; } break; From 50231b76da86e666b48554242818e9589ec3a202 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 5 Jun 2019 18:12:46 +0200 Subject: [PATCH 15/21] Improved handling of unknown Z position - Introduce raise_z_above to move Z carefully when the current position is potentially unknown, using stallguard - Use raise_z_above for: * filament loading/unloading clearance * extruder spacing when preheating (to avoid buildplate marks on PEI) * before homing to avoid damaging the build plate and to avoid repeated Z moves as well Since raise_z_above is conditional, it will only raise when needed. Calling raise_z_above when the extruder position is unknown and already at maximum travel is safe and will prevent further vertical moves. --- Firmware/Configuration.h | 8 ++++- Firmware/Marlin.h | 2 +- Firmware/Marlin_main.cpp | 78 +++++++++++++++++++++++++++------------- Firmware/mmu.cpp | 2 +- Firmware/ultralcd.cpp | 8 +++-- 5 files changed, 69 insertions(+), 29 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 87b5023f9..f9f272d5c 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -345,7 +345,7 @@ your extruder heater takes 2 minutes to hit the target on heating. #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 - #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + #define Z_RAISE_BEFORE_HOMING 5 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min @@ -549,6 +549,12 @@ enum CalibrationStatus CALIBRATION_STATUS_UNKNOWN = 0, }; +// Try to maintain a minimum distance from the bed even when Z is +// unknown when doing the following operations +#define MIN_Z_FOR_LOAD 50 +#define MIN_Z_FOR_UNLOAD 20 +#define MIN_Z_FOR_PREHEAT 10 + #include "Configuration_adv.h" #include "thermistortables.h" diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index c1a7b5627..ee99490e9 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -513,4 +513,4 @@ void M600_wait_for_user(float HotendTempBckp); void M600_check_state(float nozzle_temp); void load_filament_final_feed(); void marlin_wait_for_click(); -void marlin_rise_z(void); +void raise_z_above(float target, bool plan=true); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a2cbece56..58233e339 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2104,6 +2104,52 @@ bool check_commands() { } + +// raise_z_above: slowly raise Z to the requested height +// +// contrarily to a simple move, this function will carefully plan a move +// when the current Z position is unknown. In such cases, stallguard is +// enabled and will prevent prolonged pushing against the Z tops +void raise_z_above(float target, bool plan) +{ + if (current_position[Z_AXIS] >= target) + return; + + // Z needs raising + current_position[Z_AXIS] = target; + + if (axis_known_position[Z_AXIS]) + { + // current position is known, it's safe to raise Z + if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS], active_extruder); + return; + } + + // ensure Z is powered in normal mode to overcome initial load + enable_z(); + st_synchronize(); + + // rely on crashguard to limit damage + bool z_endstop_enabled = enable_z_endstop(true); +#ifdef TMC2130 + tmc2130_home_enter(Z_AXIS_MASK); +#endif //TMC2130 + plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder); + st_synchronize(); +#ifdef TMC2130 + if (endstop_z_hit_on_purpose()) + { + // not necessarily exact, but will avoid further vertical moves + current_position[Z_AXIS] = max_pos[Z_AXIS]; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], + current_position[Z_AXIS], current_position[E_AXIS]); + } + tmc2130_home_exit(); +#endif //TMC2130 + enable_z_endstop(z_endstop_enabled); +} + + #ifdef TMC2130 bool calibrate_z_auto() { @@ -2484,9 +2530,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon //if we are homing all axes, first move z higher to protect heatbed/steel sheet if (home_all_axes) { - current_position[Z_AXIS] += MESH_HOME_Z_SEARCH; - feedrate = homing_feedrate[Z_AXIS]; - plan_buffer_line_curposXYZE(feedrate / 60, active_extruder); + raise_z_above(MESH_HOME_Z_SEARCH); st_synchronize(); } #ifdef ENABLE_AUTO_BED_LEVELING @@ -2597,26 +2641,21 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon #ifndef Z_SAFE_HOMING if(home_z) { #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) - destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed - feedrate = max_feedrate[Z_AXIS]; - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + raise_z_above(Z_RAISE_BEFORE_HOMING); st_synchronize(); #endif // defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) #if (defined(MESH_BED_LEVELING) && !defined(MK1BP)) // If Mesh bed leveling, move X&Y to safe position for home - if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] )) - { - homeaxis(X_AXIS); - homeaxis(Y_AXIS); - } + raise_z_above(MESH_HOME_Z_SEARCH); + st_synchronize(); + if (!axis_known_position[X_AXIS]) homeaxis(X_AXIS); + if (!axis_known_position[Y_AXIS]) homeaxis(Y_AXIS); // 1st mesh bed leveling measurement point, corrected. world2machine_initialize(); world2machine(pgm_read_float(bed_ref_points_4), pgm_read_float(bed_ref_points_4+1), destination[X_AXIS], destination[Y_AXIS]); world2machine_reset(); if (destination[Y_AXIS] < Y_MIN_POS) destination[Y_AXIS] = Y_MIN_POS; - destination[Z_AXIS] = MESH_HOME_Z_SEARCH; // Set destination away from bed - feedrate = homing_feedrate[Z_AXIS]/10; - current_position[Z_AXIS] = 0; + feedrate = homing_feedrate[X_AXIS] / 20; enable_endstops(false); #ifdef DEBUG_BUILD SERIAL_ECHOLNPGM("plan_set_position()"); @@ -3143,15 +3182,6 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float custom_message_type = CustomMsg::Status; } -//! @brief Rise Z if too low to avoid blob/jam before filament loading -//! -//! It doesn't plan_buffer_line(), as it expects plan_buffer_line() to be called after -//! during extruding (loading) filament. -void marlin_rise_z(void) -{ - if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30; -} - void gcode_M701() { printf_P(PSTR("gcode_M701 begin\n")); @@ -3180,7 +3210,7 @@ void gcode_M701() plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence st_synchronize(); - marlin_rise_z(); + raise_z_above(MIN_Z_FOR_LOAD, false); current_position[E_AXIS] += 30; plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index d8ae497ba..224ffc8ad 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1355,7 +1355,7 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr) manage_response(true, true, MMU_TCODE_MOVE); mmu_continue_loading(false); mmu_extruder = tmp_extruder; //filament change is finished - marlin_rise_z(); + raise_z_above(MIN_Z_FOR_LOAD, false); mmu_load_to_nozzle(); load_filament_final_feed(); st_synchronize(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d11148974..03faf2ac2 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2374,9 +2374,11 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) { lcd_commands_type = LcdCommands::Layer1Cal; } - else if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)) + else { - lcd_wizard(WizState::LoadFilHot); + raise_z_above(MIN_Z_FOR_PREHEAT); + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE)) + lcd_wizard(WizState::LoadFilHot); } return; } @@ -6360,6 +6362,8 @@ void unload_filament() custom_message_type = CustomMsg::FilamentLoading; lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT)); + raise_z_above(MIN_Z_FOR_UNLOAD); + // extr_unload2(); current_position[E_AXIS] -= 45; From e25befa1759fd5d27b388fef3f132f0af00a83b9 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Sat, 31 Aug 2019 16:09:53 +0200 Subject: [PATCH 16/21] Fix include guard to silence duplicate declaration warnings --- Firmware/Marlin.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index ee99490e9..8a396dac1 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -358,9 +358,6 @@ extern int fan_speed[2]; // Handling multiple extruders pins extern uint8_t active_extruder; - -#endif - //Long pause extern unsigned long pause_time; extern unsigned long start_pause_print; @@ -514,3 +511,5 @@ void M600_check_state(float nozzle_temp); void load_filament_final_feed(); void marlin_wait_for_click(); void raise_z_above(float target, bool plan=true); + +#endif From 939957aa522f6464257148ddf6b3bab51259d574 Mon Sep 17 00:00:00 2001 From: DRracer Date: Wed, 23 Oct 2019 12:44:11 +0200 Subject: [PATCH 17/21] translations for new text messages --- lang/lang-add.sh | 2 +- lang/lang_en.txt | 27 ++++++++++++++++++++++++--- lang/lang_en_cz.txt | 36 ++++++++++++++++++++++++++++++++---- lang/lang_en_de.txt | 37 ++++++++++++++++++++++++++++++++----- lang/lang_en_es.txt | 36 ++++++++++++++++++++++++++++++++---- lang/lang_en_fr.txt | 36 ++++++++++++++++++++++++++++++++---- lang/lang_en_it.txt | 36 ++++++++++++++++++++++++++++++++---- lang/lang_en_pl.txt | 36 ++++++++++++++++++++++++++++++++---- 8 files changed, 217 insertions(+), 29 deletions(-) diff --git a/lang/lang-add.sh b/lang/lang-add.sh index f8031e19d..0b63a4622 100755 --- a/lang/lang-add.sh +++ b/lang/lang-add.sh @@ -51,7 +51,7 @@ if ! [ -e lang_add.txt ]; then fi cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do - if grep "$new_s" lang_en.txt >/dev/nul; then + if grep "$new_s" lang_en.txt >/dev/null; then echo "text already exist:" echo "$new_s" echo diff --git a/lang/lang_en.txt b/lang/lang_en.txt index a7756bfe0..b1f952aa1 100755 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -133,6 +133,9 @@ #MSG_CRASHDETECT_ON "Crash det. [on]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" @@ -361,6 +364,9 @@ # "Last print failures" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." + # "Last print" @@ -613,6 +619,15 @@ # "Print FAN" +# +"Please insert filament into the extruder, then press the knob to load it." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." + +# +"Please load filament first." + #MSG_PRUSA3D "prusa3d.com" @@ -688,9 +703,6 @@ # "Select nozzle preheat temperature which matches your material." -# -"Select PLA filament:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" @@ -763,12 +775,18 @@ #MSG_SELFTEST_SWAPPED "Swapped" +# +"Select filament:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " #MSG_TEMP_CALIBRATION_ON c=20 r=1 "Temp. cal. [on]" +# +"Select temperature which matches your material." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" @@ -904,6 +922,9 @@ # "Y distance from min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." + # "Y-correct:" diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index c25c94644..7849ddde8 100755 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Crash det. [zap]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu" + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "\x00" @@ -482,6 +486,10 @@ "Last print failures" "Selhani posl. tisku" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy" + # "Last print" "Posledni tisk" @@ -818,6 +826,18 @@ "Print FAN" "Tiskovy vent." +# +"Please insert filament into the extruder, then press the knob to load it." +"Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni" + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni" + +# +"Please load filament first." +"Prosim nejdriv zavedte filament" + #MSG_PRUSA3D "prusa3d.com" "\x00" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu." -# -"Select PLA filament:" -"Vyberte PLA filament:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Nastavte teplotu:" @@ -1018,6 +1034,10 @@ "Swapped" "Prohozene" +# +"Select filament:" +"Zvolte filament:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Tepl. kal. " @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Tepl. kal. [zap]" +# +"Select temperature which matches your material." +"Zvolte teplotu, ktera odpovida vasemu materialu." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Tepl. kal. [vyp]" @@ -1206,6 +1230,10 @@ "Y distance from min" "Y vzdalenost od min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)." + # "Y-correct:" "Korekce Y:" diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index 0aec39d12..e3be10061 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Crash Erk. [an]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "Crash Erk. [nv]" @@ -482,6 +486,10 @@ "Last print failures" "Letzte Druckfehler" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." + # "Last print" "Letzter Druck" @@ -818,6 +826,18 @@ "Print FAN" "Druckvent." +# +"Please insert filament into the extruder, then press the knob to load it." +"Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden." + +# +"Please load filament first." +"Bitte laden Sie zuerst das Filament." + #MSG_PRUSA3D "prusa3d.com" "\x00" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht." -# -"Select PLA filament:" -"PLA Filament auswaehlen:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Temp. einstellen:" @@ -1018,6 +1034,10 @@ "Swapped" "Ausgetauscht" +# +"Select filament:" +"Filament auswaehlen:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Temp Kalib. " @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Temp. Kal. [an]" +# +"Select temperature which matches your material." +"Waehlen Sie die Temperatur, die zu Ihrem Material passt." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Temp. Kal. [aus]" @@ -1202,11 +1226,14 @@ "XYZ calibration failed. Right front calibration point not reachable." "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar." - # "Y distance from min" "Y Entfernung vom Min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." + # "Y-correct:" "Y-Korrektur:" diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index 4a6006af7..1790e8020 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Det. choque [act]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "Dec. choque [N/D]" @@ -482,6 +486,10 @@ "Last print failures" "Ultimas impresiones fallidas" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero." + # "Last print" "Ultima impresion" @@ -818,6 +826,18 @@ "Print FAN" "Vent. extr" +# +"Please insert filament into the extruder, then press the knob to load it." +"Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo." + +# +"Please load filament first." +"Por favor, cargar primero el filamento. " + #MSG_PRUSA3D "prusa3d.com" "prusa3d.es" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. " -# -"Select PLA filament:" -"Seleccionar filamento PLA:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Establecer temp.:" @@ -1018,6 +1034,10 @@ "Swapped" "Intercambiado" +# +"Select filament:" +"Selecciona filamento:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Cal. temp. " @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Cal. temp. [on]" +# +"Select temperature which matches your material." +"Selecciona la temperatura adecuada a tu material." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Cal. temp. [off]" @@ -1206,6 +1230,10 @@ "Y distance from min" "Distancia en Y desde el min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)." + # "Y-correct:" "Corregir-Y:" diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt index 729778c27..1a292d280 100755 --- a/lang/lang_en_fr.txt +++ b/lang/lang_en_fr.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Detect.crash [on]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "Detect.crash[N/A]" @@ -482,6 +486,10 @@ "Last print failures" "Echecs derniere imp." +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Si vous avez d'autres feuilles d'acier, calibrez leurs pre-reglages dans Reglages - Config HW - Feuilles d'acier." + # "Last print" "Derniere impres." @@ -818,6 +826,18 @@ "Print FAN" "Vent. impr" +# +"Please insert filament into the extruder, then press the knob to load it." +"Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger." + +# +"Please load filament first." +"Veuillez d'abord charger un filament." + #MSG_PRUSA3D "prusa3d.com" "\x00" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau." -# -"Select PLA filament:" -"Selectionnez le fil. PLA:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Regler temp.:" @@ -1018,6 +1034,10 @@ "Swapped" "Echange" +# +"Select filament:" +"Selectionnez le filament:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Calib. Temp." @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Calib. Temp. [on]" +# +"Select temperature which matches your material." +"Selectionnez la temperature qui correspond a votre materiau." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Calib. Temp.[off]" @@ -1206,6 +1230,10 @@ "Y distance from min" "Distance Y du min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)." + # "Y-correct:" "Correct-Y:" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index 4d175221f..60a8a2ca8 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Rileva.crash [on]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "Rileva.crash[N/A]" @@ -482,6 +486,10 @@ "Last print failures" "Fallimenti ultima stampa" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio." + # "Last print" "Ultima stampa" @@ -818,6 +826,18 @@ "Print FAN" "Ventola di stampa" +# +"Please insert filament into the extruder, then press the knob to load it." +"Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo." + +# +"Please load filament first." +"Per favore prima carica il filamento." + #MSG_PRUSA3D "prusa3d.com" "\x00" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale." -# -"Select PLA filament:" -"Selezionate filamento PLA:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Imposta temperatura:" @@ -1018,6 +1034,10 @@ "Swapped" "Scambiato" +# +"Select filament:" +"Seleziona il filamento:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Calib. temp. " @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Calib. temp. [on]" +# +"Select temperature which matches your material." +"Seleziona la temperatura appropriata per il tuo materiale." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Calib. temp.[off]" @@ -1206,6 +1230,10 @@ "Y distance from min" "Distanza Y dal min" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):" + # "Y-correct:" "Correzione-Y:" diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index a8aa9f749..0afdd7bfe 100755 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -178,6 +178,10 @@ "Crash det. [on]" "Wykr.zderzen [wl]" +# +"Choose a filament for the First Layer Calibration and select it in the on-screen menu." +"Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym." + #MSG_CRASHDETECT_NA "Crash det. [N/A]" "Wykr.zderzen[N/D]" @@ -482,6 +486,10 @@ "Last print failures" "Ostatnie bledy druku" +# +"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +"Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe." + # "Last print" "Ost. wydruk" @@ -818,6 +826,18 @@ "Print FAN" "WentWydruk" +# +"Please insert filament into the extruder, then press the knob to load it." +"Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac." + +# +"Please insert filament into the first tube of the MMU, then press the knob to load it." +"Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac." + +# +"Please load filament first." +"Najpierw zaladuj filament." + #MSG_PRUSA3D "prusa3d.com" "\x00" @@ -918,10 +938,6 @@ "Select nozzle preheat temperature which matches your material." "Wybierz temperature grzania dyszy odpowiednia dla materialu." -# -"Select PLA filament:" -"Wybierz filament PLA:" - #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" "Ustaw temperature:" @@ -1018,6 +1034,10 @@ "Swapped" "Zamieniono" +# +"Select filament:" +"Wybierz filament:" + #MSG_TEMP_CALIBRATION c=20 r=1 "Temp. cal. " "Kalibracja temp." @@ -1026,6 +1046,10 @@ "Temp. cal. [on]" "Kalibr.temp. [wl]" +# +"Select temperature which matches your material." +"Wybierz temperature, ktora odpowiada Twojemu filamentowi." + #MSG_TEMP_CALIBRATION_OFF c=20 r=1 "Temp. cal. [off]" "Kalibr.temp.[wyl]" @@ -1206,6 +1230,10 @@ "Y distance from min" "Dystans od 0 w osi Y" +# +"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)." + # "Y-correct:" "Korekcja-Y:" From 5c2b573415a19d57353463856017919e7376ffac Mon Sep 17 00:00:00 2001 From: DRracer Date: Wed, 23 Oct 2019 13:54:15 +0200 Subject: [PATCH 18/21] Skipped one translated sentence, because total translation size was > 65535B. --- lang/lang_en_cz.txt | 2 +- lang/lang_en_de.txt | 2 +- lang/lang_en_es.txt | 2 +- lang/lang_en_fr.txt | 2 +- lang/lang_en_it.txt | 2 +- lang/lang_en_pl.txt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index 7849ddde8..c362b3f6b 100755 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)." +"\x00" # "Y-correct:" diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index e3be10061..90181ebf3 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." +"\x00" # "Y-correct:" diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index 1790e8020..efb3a85bb 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)." +"\x00" # "Y-correct:" diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt index 1a292d280..90fd096e1 100755 --- a/lang/lang_en_fr.txt +++ b/lang/lang_en_fr.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)." +"\x00" # "Y-correct:" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index 60a8a2ca8..4333041d3 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):" +"\x00" # "Y-correct:" diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index 0afdd7bfe..29d48ed8a 100755 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -1232,7 +1232,7 @@ # "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)." +"\x00" # "Y-correct:" From 726b4156d10a4fd19ea9f1ff78ff0521d480928e Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Oct 2019 15:56:25 +0200 Subject: [PATCH 19/21] Shorten "Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..." to fit on single screen. --- lang/lang_en_de.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index 90181ebf3..90ea6d159 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -72,7 +72,7 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..." +"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." From 023ce01f9d8d4b1437db2d0558082401cd21f326 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 24 Oct 2019 16:12:46 +0200 Subject: [PATCH 20/21] Version 3.8.1 final. --- Firmware/Configuration.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 87b5023f9..589d428a7 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -16,8 +16,8 @@ extern uint16_t nPrinterType; extern PGM_P sPrinterName; // Firmware version -#define FW_VERSION "3.8.1-RC1" -#define FW_COMMIT_NR 2851 +#define FW_VERSION "3.8.1" +#define FW_COMMIT_NR 2869 // 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 a14d7545a5ec362fa82df4ce68e7209395774d35 Mon Sep 17 00:00:00 2001 From: DRracer Date: Fri, 8 Nov 2019 16:06:42 +0100 Subject: [PATCH 21/21] Update Marlin_main.cpp --- Firmware/Marlin_main.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d987fad98..36be553ca 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7553,16 +7553,15 @@ Sigma_Exit: uint16_t res = tmc2130_get_res(i); tmc2130_set_res(i, res_new); cs.axis_ustep_resolution[i] = res_new; - uint16_t fac; if (res_new > res) { - fac = (res_new / res); + uint16_t fac = (res_new / res); cs.axis_steps_per_unit[i] *= fac; position[i] *= fac; } else { - fac = (res / res_new); + uint16_t fac = (res / res_new); cs.axis_steps_per_unit[i] /= fac; position[i] /= fac; }