From 49b1d1cb9371c4b4a63218984cb1f2ff0b44a709 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 18:50:15 +0100 Subject: [PATCH 1/4] Move prototype to header file. --- Firmware/Marlin.h | 1 + Firmware/temperature.cpp | 2 -- Firmware/ultralcd.cpp | 2 -- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 37c2fda1..2d469a76 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -284,6 +284,7 @@ void setPwmFrequency(uint8_t pin, int val); #define CRITICAL_SECTION_END SREG = _sreg; #endif //CRITICAL_SECTION_START +extern bool fans_check_enabled; extern float homing_feedrate[]; extern bool axis_relative_modes[]; extern int feedmultiply; diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 99a0d0c9..f6ad8761 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -483,8 +483,6 @@ void countFanSpeed() fan_edge_counter[1] = 0; } -extern bool fans_check_enabled; - void checkFanSpeed() { uint8_t max_print_fan_errors = 0; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 46dd1a3c..5dba1384 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -41,8 +41,6 @@ #include "static_assert.h" #include "io_atmega2560.h" -extern bool fans_check_enabled; - int scrollstuff = 0; char longFilenameOLD[LONG_FILENAME_LENGTH]; From 4a4eb9962cbd783324879229bf8e7e77ff125cc7 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 27 Feb 2019 10:42:26 +0100 Subject: [PATCH 2/4] Cut filament when cutter is enabled and MMU load fails. --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 1 + Firmware/mmu.cpp | 6 ++++++ Firmware/ultralcd.cpp | 10 ++++++++++ 4 files changed, 18 insertions(+) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 2d469a76..ff9335ac 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -285,6 +285,7 @@ void setPwmFrequency(uint8_t pin, int val); #endif //CRITICAL_SECTION_START extern bool fans_check_enabled; +extern bool cutter_enabled; extern float homing_feedrate[]; extern bool axis_relative_modes[]; extern int feedmultiply; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index fc53b204..ee00f35b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -510,6 +510,7 @@ void servo_init() bool fans_check_enabled = true; +bool cutter_enabled = false; #ifdef TMC2130 diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 07ea844a..37bd631d 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1439,6 +1439,12 @@ void mmu_continue_loading() if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1); if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1); + if (cutter_enabled) + { + mmu_command(MmuCmd::K0 + tmp_extruder); + manage_response(true, true, MMU_UNLOAD_MOVE); + } + mmu_command(MmuCmd::T0 + tmp_extruder); manage_response(true, true, MMU_TCODE_MOVE); load_more(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5dba1384..57300241 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -199,6 +199,7 @@ static void fil_unload_menu(); #endif // SNMM || SNMM_V2 static void lcd_disable_farm_mode(); static void lcd_set_fan_check(); +static void lcd_cutter_enabled(); static char snmm_stop_print_menu(); #ifdef SDCARD_SORT_ALPHA static void lcd_sort_type_set(); @@ -2292,6 +2293,10 @@ void lcd_set_fan_check() { eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED, fans_check_enabled); } +void lcd_cutter_enabled() { + cutter_enabled = !cutter_enabled; +} + void lcd_set_filament_autoload() { fsensor_autoload_set(!fsensor_autoload_enabled); } @@ -5207,6 +5212,11 @@ static void lcd_settings_menu() SETTINGS_AUTO_DEPLETE; + if (cutter_enabled == true) + MENU_ITEM_FUNCTION_P(_i("Cutter [on]"), lcd_cutter_enabled);////MSG_FANS_CHECK_ON c=17 r=1 + else + MENU_ITEM_FUNCTION_P(_i("Cutter [off]"), lcd_cutter_enabled);////MSG_FANS_CHECK_OFF c=17 r=1 + if (fans_check_enabled == true) MENU_ITEM_FUNCTION_P(_i("Fans check [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1 else From 02a692c5d9dd7cb0cefc5c3bb69f9c25885118b6 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 27 Feb 2019 17:34:03 +0100 Subject: [PATCH 3/4] Store cutter enable state in EEPROM. --- Firmware/Marlin.h | 1 - Firmware/Marlin_main.cpp | 2 -- Firmware/eeprom.h | 2 +- Firmware/mmu.cpp | 2 +- Firmware/ultralcd.cpp | 18 +++++++++++++----- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index ff9335ac..2d469a76 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -285,7 +285,6 @@ void setPwmFrequency(uint8_t pin, int val); #endif //CRITICAL_SECTION_START extern bool fans_check_enabled; -extern bool cutter_enabled; extern float homing_feedrate[]; extern bool axis_relative_modes[]; extern int feedmultiply; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index ee00f35b..d9766e96 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -510,8 +510,6 @@ void servo_init() bool fans_check_enabled = true; -bool cutter_enabled = false; - #ifdef TMC2130 diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index 9f878796..16c02ed5 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -153,7 +153,7 @@ #define EEPROM_MMU_LOAD_FAIL_TOT (EEPROM_MMU_FAIL - 2) //uint16_t #define EEPROM_MMU_LOAD_FAIL (EEPROM_MMU_LOAD_FAIL_TOT - 1) //uint8_t - +#define EEPROM_MMU_CUTTER_ENABLED (EEPROM_MMU_LOAD_FAIL - 1) // !!!!! // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!! // !!!!! diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 37bd631d..cdd85e9b 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1439,7 +1439,7 @@ void mmu_continue_loading() if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1); if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1); - if (cutter_enabled) + if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) { mmu_command(MmuCmd::K0 + tmp_extruder); manage_response(true, true, MMU_UNLOAD_MOVE); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 57300241..d925ce05 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2293,8 +2293,16 @@ void lcd_set_fan_check() { eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED, fans_check_enabled); } -void lcd_cutter_enabled() { - cutter_enabled = !cutter_enabled; +void lcd_cutter_enabled() +{ + if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + { + eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0); + } + else + { + eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 1); + } } void lcd_set_filament_autoload() { @@ -5212,10 +5220,10 @@ static void lcd_settings_menu() SETTINGS_AUTO_DEPLETE; - if (cutter_enabled == true) - MENU_ITEM_FUNCTION_P(_i("Cutter [on]"), lcd_cutter_enabled);////MSG_FANS_CHECK_ON c=17 r=1 + if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + MENU_ITEM_FUNCTION_P(_i("Cutter [on]"), lcd_cutter_enabled);//// c=17 r=1 else - MENU_ITEM_FUNCTION_P(_i("Cutter [off]"), lcd_cutter_enabled);////MSG_FANS_CHECK_OFF c=17 r=1 + MENU_ITEM_FUNCTION_P(_i("Cutter [off]"), lcd_cutter_enabled);//// c=17 r=1 if (fans_check_enabled == true) MENU_ITEM_FUNCTION_P(_i("Fans check [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1 From 2a005caf42a0724306b699ad46a0c0b9c14cf301 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 27 Feb 2019 17:47:51 +0100 Subject: [PATCH 4/4] Add cutter enable to tune menu. --- Firmware/ultralcd.cpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d925ce05..f8cbd6b2 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5097,6 +5097,29 @@ do\ }\ while(0)\ +static bool settingsCutter() +{ + if (mmu_enabled) + { + if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + { + if (menu_item_function_P(_i("Cutter [on]"), lcd_cutter_enabled)) return true;//// c=17 r=1 + } + else + { + if (menu_item_function_P(_i("Cutter [off]"), lcd_cutter_enabled)) return true;//// c=17 r=1 + } + } + return false; +} + +#define SETTINGS_CUTTER \ +do\ +{\ + if(settingsCutter()) return;\ +}\ +while(0)\ + #ifdef TMC2130 #define SETTINGS_SILENT_MODE \ do\ @@ -5220,10 +5243,7 @@ static void lcd_settings_menu() SETTINGS_AUTO_DEPLETE; - if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) - MENU_ITEM_FUNCTION_P(_i("Cutter [on]"), lcd_cutter_enabled);//// c=17 r=1 - else - MENU_ITEM_FUNCTION_P(_i("Cutter [off]"), lcd_cutter_enabled);//// c=17 r=1 + SETTINGS_CUTTER; if (fans_check_enabled == true) MENU_ITEM_FUNCTION_P(_i("Fans check [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1 @@ -6422,6 +6442,8 @@ static void lcd_tune_menu() SETTINGS_AUTO_DEPLETE; + SETTINGS_CUTTER; + #ifdef TMC2130 if(!farm_mode) {