From f99196a7a019853cd1b3271f7468aadd8cd4d789 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 22 Aug 2018 11:09:12 +0200 Subject: [PATCH 1/8] fix reseting during filament change --- Firmware/mmu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 843f415c..ab479fe5 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -239,6 +239,7 @@ bool mmu_get_response(void) while (!mmu_ready) { // mmu_loop(); + manage_heater(); if (mmu_state != 3) break; delay_keep_alive(100); From d2aeb40bee95035254acb1f8d5dd4c153df58187 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 22 Aug 2018 15:46:36 +0200 Subject: [PATCH 2/8] manage response function update --- Firmware/mmu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index ab479fe5..8990bee5 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -322,6 +322,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle) } } lcd_display_message_fullscreen_P(_i("Check MMU. Fix the issue and then press button on MMU unit.")); + delay_keep_alive(1000); } else if (mmu_print_saved) { printf_P(PSTR("MMU start responding\n")); From ef6188cd59bfdae1e2ea2fce14a7e925b88f9d8c Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 22 Aug 2018 16:09:19 +0200 Subject: [PATCH 3/8] Hot fix PFW-505 Speed change after tuning (on USB). When encoder is rotated left and pushed immediately on status screen, after returning to status screen print speed jumps to 345%. This is caused by downcasting signed lcd_encoder to unsigned position and back to signed lcd_encoder. --- Firmware/menu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/menu.h b/Firmware/menu.h index 4dbf21ef..06c90103 100644 --- a/Firmware/menu.h +++ b/Firmware/menu.h @@ -14,7 +14,7 @@ typedef void (*menu_func_t)(void); typedef struct { menu_func_t menu; - uint8_t position; + int8_t position; } menu_record_t; extern menu_record_t menu_stack[MENU_DEPTH_MAX]; From a81b8dbd6187277c76ba149369368bc1b829d75a Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 22 Aug 2018 16:09:38 +0200 Subject: [PATCH 4/8] remove manage_heater --- Firmware/mmu.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 8990bee5..57da1e80 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -239,7 +239,6 @@ bool mmu_get_response(void) while (!mmu_ready) { // mmu_loop(); - manage_heater(); if (mmu_state != 3) break; delay_keep_alive(100); From 78367426212c2a5d90f0faf30bd2fecb0fbb2743 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 22 Aug 2018 16:19:57 +0200 Subject: [PATCH 5/8] MMU communication fix - WD reset inside manage_response --- Firmware/mmu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 843f415c..57da1e80 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -321,6 +321,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle) } } lcd_display_message_fullscreen_P(_i("Check MMU. Fix the issue and then press button on MMU unit.")); + delay_keep_alive(1000); } else if (mmu_print_saved) { printf_P(PSTR("MMU start responding\n")); From dfb4bfac5b7b491f2d213b5eaea19c9ce4d6ff89 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 22 Aug 2018 16:38:34 +0200 Subject: [PATCH 6/8] MMU - display status while switching active extruder [PFW-465] --- Firmware/ultralcd.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9988815e..ee81f5a6 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -528,7 +528,11 @@ void lcdui_print_percent_done(void) // Print extruder status (5 chars total) void lcdui_print_extruder(void) { - int chars = lcd_printf_P(_N(" T%u"), mmu_extruder); + int chars = 0; + if (mmu_extruder == tmp_extruder) + chars = lcd_printf_P(_N(" T%u"), mmu_extruder); + else + chars = lcd_printf_P(_N(" %u>%u"), mmu_extruder, tmp_extruder); lcd_space(5 - chars); } From 142bf28dc262ac933c12bdd875daeda004e8fd70 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 23 Aug 2018 21:15:12 +0200 Subject: [PATCH 7/8] Clear communication buffer when sending load filament command to MMU. This fixes PFW-517 in the moment, when the problem with not displaying "Loading filament 1" to "Loading filament 5" has appeared for the first time. --- Firmware/mmu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 57da1e80..bf7645a8 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -480,7 +480,7 @@ void extr_adj(int extruder) //loading filament for SNMM { #ifndef SNMM printf_P(PSTR("L%d \n"),extruder); - fprintf_P(uart2io, PSTR("L%d\n"), extruder); + mmu_printf_P(PSTR("L%d\n"), extruder); //show which filament is currently loaded From 050a7c41d0e2f3a4c2d1681af44461ba47959dcc Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 24 Aug 2018 03:49:51 +0200 Subject: [PATCH 8/8] Fix "Check MMU. Fix the issue and then press button on MMU unit." shown instead of "Loading filament 1". --- Firmware/mmu.cpp | 18 +++++++++++++++--- Firmware/mmu.h | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index bf7645a8..94a19b9f 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -162,6 +162,13 @@ void mmu_loop(void) mmu_printf_P(PSTR("T%d\n"), extruder); mmu_state = 3; // wait for response } + else if ((mmu_cmd >= MMU_CMD_L0) && (mmu_cmd <= MMU_CMD_L4)) + { + int filament = mmu_cmd - MMU_CMD_L0; + printf_P(PSTR("MMU <= 'L%d'\n"), filament); + mmu_printf_P(PSTR("L%d\n"), filament); + mmu_state = 3; // wait for response + } mmu_cmd = 0; } else if ((mmu_last_response + 1000) < millis()) //request every 1s @@ -479,8 +486,13 @@ void display_loading() void extr_adj(int extruder) //loading filament for SNMM { #ifndef SNMM - printf_P(PSTR("L%d \n"),extruder); - mmu_printf_P(PSTR("L%d\n"), extruder); + uint8_t cmd = MMU_CMD_L0 + extruder; + if (cmd > MMU_CMD_L4) + { + printf_P(PSTR("Filament out of range %d \n"),extruder); + return; + } + mmu_command(cmd); //show which filament is currently loaded @@ -490,7 +502,7 @@ void extr_adj(int extruder) //loading filament for SNMM //if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1); //else lcd.print(" "); lcd_print(" "); - lcd_print(mmu_extruder + 1); + lcd_print(extruder + 1); // get response manage_response(false, false); diff --git a/Firmware/mmu.h b/Firmware/mmu.h index 763c15ea..835b615c 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -23,6 +23,11 @@ extern int16_t mmu_buildnr; #define MMU_CMD_T2 0x12 #define MMU_CMD_T3 0x13 #define MMU_CMD_T4 0x14 +#define MMU_CMD_L0 0x20 +#define MMU_CMD_L1 0x21 +#define MMU_CMD_L2 0x22 +#define MMU_CMD_L3 0x23 +#define MMU_CMD_L4 0x24 extern int mmu_puts_P(const char* str);