From ccb649b1f6f445bcea735a4a213f2ebd5898a195 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 30 May 2019 20:46:41 +0200 Subject: [PATCH] Add always cut experimental / for testing feature. --- Firmware/Marlin_main.cpp | 5 ++++- Firmware/eeprom.h | 6 ++++++ Firmware/ultralcd.cpp | 21 ++++++++++++++++++--- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 249147482..82d01e6fe 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7090,8 +7090,11 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } else { +#if defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) + mmu_command(MmuCmd::K0 + tmp_extruder); + manage_response(true, true, MMU_UNLOAD_MOVE); +#endif //defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT) mmu_command(MmuCmd::T0 + tmp_extruder); - manage_response(true, true, MMU_TCODE_MOVE); mmu_continue_loading(is_usb_printing); diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h index c96e1d8db..899d52359 100644 --- a/Firmware/eeprom.h +++ b/Firmware/eeprom.h @@ -201,5 +201,11 @@ static M500_conf * const EEPROM_M500_base = reinterpret_cast(20); //offset for storing settings using M500 #endif +enum +{ + EEPROM_MMU_CUTTER_ENABLED_enabled = 1, + EEPROM_MMU_CUTTER_ENABLED_always = 2, +}; + #endif // EEPROM_H diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 23571eed2..68b6f7989 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2346,13 +2346,22 @@ void lcd_set_fan_check() { #ifdef MMU_HAS_CUTTER void lcd_cutter_enabled() { - if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + { +#ifndef MMU_ALWAYS_CUT + eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0); + } +#else //MMU_ALWAYS_CUT + eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, EEPROM_MMU_CUTTER_ENABLED_always); + } + else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) { eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0); } +#endif //MMU_ALWAYS_CUT else { - eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 1); + eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, EEPROM_MMU_CUTTER_ENABLED_enabled); } } #endif //MMU_HAS_CUTTER @@ -5287,10 +5296,16 @@ static bool settingsCutter() { if (mmu_enabled) { - if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + if (EEPROM_MMU_CUTTER_ENABLED_enabled == 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 } +#ifdef MMU_ALWAYS_CUT + else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + { + if (menu_item_function_P(_i("Cutter [always]"), lcd_cutter_enabled)) return true;//// c=17 r=1 + } +#endif else { if (menu_item_function_P(_i("Cutter [off]"), lcd_cutter_enabled)) return true;//// c=17 r=1