From c704a4b7abefe627553f55fd98ececa869ceb8f1 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 6 Feb 2019 18:25:45 +0100 Subject: [PATCH 01/41] Fix menu stack overrun. --- Firmware/menu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index 89fadb663..b7ae1d5e4 100644 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -120,7 +120,7 @@ void menu_back_if_clicked_fb(void) void menu_submenu(menu_func_t submenu) { - if (menu_depth <= MENU_DEPTH_MAX) + if (menu_depth < MENU_DEPTH_MAX) { menu_stack[menu_depth].menu = menu_menu; menu_stack[menu_depth++].position = lcd_encoder; @@ -130,7 +130,7 @@ void menu_submenu(menu_func_t submenu) static void menu_submenu_no_reset(menu_func_t submenu) { - if (menu_depth <= MENU_DEPTH_MAX) + if (menu_depth < MENU_DEPTH_MAX) { menu_stack[menu_depth].menu = menu_menu; menu_stack[menu_depth++].position = lcd_encoder; From 326c8492b53cea2bd964f646f43b6fe1170e71e9 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 21 Feb 2019 00:38:10 +0100 Subject: [PATCH 02/41] Move extruder forth and back after filament detected by sensor to detect bad load. --- Firmware/mmu.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 5e1e5471a..2cb654085 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1418,11 +1418,16 @@ static void load_more() { for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++) { - if (PIN_GET(IR_SENSOR_PIN) == 0) return; + if (PIN_GET(IR_SENSOR_PIN) == 0) break; DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i); mmu_command(MmuCmd::C0); manage_response(true, true, MMU_LOAD_MOVE); } + current_position[E_AXIS] += 60; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder); + current_position[E_AXIS] -= 58; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder); + st_synchronize(); } void mmu_continue_loading() From 8b858286ac5a27a90b2ff1eec3e06b5df7c3e7a2 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 21 Feb 2019 02:30:01 +0100 Subject: [PATCH 03/41] Document. --- Firmware/mmu.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2cb654085..a51b708f2 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1414,6 +1414,12 @@ bFilamentAction=false; } } +//! @brief load more +//! +//! Try to feed more filament from MMU if it is not detected by filament sensor. +//! Move filament back and forth to nozzle in order to detect jam. +//! If PTFE tube is jammed, this cause filament to be unloaded and no longer +//! detected by pulley IR sensor in next step. static void load_more() { for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++) From 26cab2911f85f86b716cb4e9c7f0db37bc1d332c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 22 Feb 2019 16:30:54 +0100 Subject: [PATCH 04/41] mmu stealth mode --- Firmware/mmu.cpp | 7 ++++++- Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 3 ++- Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 3 ++- Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 3 ++- Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 3 ++- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2f7bf96c3..1c0e0a41e 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -223,7 +223,12 @@ void mmu_loop(void) if (!version_valid) mmu_show_warning(); else puts_P(PSTR("MMU version valid")); - if ((PRINTER_TYPE == PRINTER_MK3) || (PRINTER_TYPE == PRINTER_MK3_SNMM)) + bool activate_stealth_mode = (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_STEALTH); +#ifdef MMU_STEALTH_MODE + activate_stealth_mode = true; +#endif //MMU_STEALTH_MODE + + if (!activate_stealth_mode) { FDEBUG_PUTS_P(PSTR("MMU <= 'P0'")); mmu_puts_P(PSTR("P0\n")); //send 'read finda' request diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index a9dcefe41..dd836b69a 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -498,7 +498,8 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -//#define MMU_DEBUG //print communication between MMU2 and printer on serial +#define MMU_STEALTH_MODE +#define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 38d181349..9715aa7d9 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -499,7 +499,8 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -//#define MMU_DEBUG //print communication between MMU2 and printer on serial +#define MMU_STEALTH_MODE +#define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index 53b545e8b..b814d1cbb 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -498,7 +498,8 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -//#define MMU_DEBUG //print communication between MMU2 and printer on serial +#define MMU_STEALTH_MODE +#define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index e786b70ff..3f38a286f 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -499,7 +499,8 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -//#define MMU_DEBUG //print communication between MMU2 and printer on serial +#define MMU_STEALTH_MODE +#define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning From 8e3d52ee6db8f5a1135b32e5cfef8c67a695bf9d Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 22 Feb 2019 17:15:40 +0100 Subject: [PATCH 05/41] fix compilation error for MK2.5, make code more readable --- Firmware/mmu.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 1c0e0a41e..d1be76d4c 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -181,6 +181,18 @@ bool check_for_ir_sensor() #endif //IR_SENSOR } +static bool activate_stealth_mode() +{ + bool activate_stealth_mode = false; +#ifdef SILENT_MODE_STEALTH + activate_stealth_mode = (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_STEALTH); +#endif //SILENT_MODE_STEALTH +#ifdef MMU_STEALTH_MODE + activate_stealth_mode = true; +#endif //MMU_STEALTH_MODE + return activate_stealth_mode; +} + //mmu main loop - state machine processing void mmu_loop(void) { @@ -222,13 +234,8 @@ void mmu_loop(void) bool version_valid = mmu_check_version(); if (!version_valid) mmu_show_warning(); else puts_P(PSTR("MMU version valid")); - - bool activate_stealth_mode = (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_STEALTH); -#ifdef MMU_STEALTH_MODE - activate_stealth_mode = true; -#endif //MMU_STEALTH_MODE - - if (!activate_stealth_mode) + + if (!activate_stealth_mode()) { FDEBUG_PUTS_P(PSTR("MMU <= 'P0'")); mmu_puts_P(PSTR("P0\n")); //send 'read finda' request From d5c5ed55eb7de4f66a557655cb7d5b889c733c22 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 25 Feb 2019 11:12:39 +0100 Subject: [PATCH 06/41] Change formatting. --- Firmware/ultralcd.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index dd1132f86..4bf514d9b 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -134,7 +134,15 @@ void extr_unload_used(); void extr_unload(); typedef enum - {e_FILAMENT_ACTION_none,e_FILAMENT_ACTION_Load,e_FILAMENT_ACTION_autoLoad,e_FILAMENT_ACTION_unLoad,e_FILAMENT_ACTION_mmuLoad,e_FILAMENT_ACTION_mmuUnLoad,e_FILAMENT_ACTION_mmuEject} eFILAMENT_ACTION; // 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state) +{ + e_FILAMENT_ACTION_none, //!< 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state) + e_FILAMENT_ACTION_Load, + e_FILAMENT_ACTION_autoLoad, + e_FILAMENT_ACTION_unLoad, + e_FILAMENT_ACTION_mmuLoad, + e_FILAMENT_ACTION_mmuUnLoad, + e_FILAMENT_ACTION_mmuEject, +} eFILAMENT_ACTION; extern eFILAMENT_ACTION eFilamentAction; extern bool bFilamentFirstRun; extern bool bFilamentPreheatState; From 34e24954879118201f6a1ef8b199597b7d5f73df Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 10:32:10 +0100 Subject: [PATCH 07/41] Convert mmu_load_to_nozzle_0 to mmu_load_to_nozzle_4 to template. --- Firmware/mmu.cpp | 34 ---------------------------------- Firmware/mmu.h | 5 ----- Firmware/ultralcd.cpp | 18 ++++++++++++------ 3 files changed, 12 insertions(+), 45 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2f7bf96c3..158b3cb77 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1183,40 +1183,6 @@ void extr_adj_4() #endif } -void mmu_load_to_nozzle_0() -{ -//-// - menu_back(); - lcd_mmu_load_to_nozzle(0); -} - -void mmu_load_to_nozzle_1() -{ -//-// - menu_back(); - lcd_mmu_load_to_nozzle(1); -} - -void mmu_load_to_nozzle_2() -{ -//-// - menu_back(); - lcd_mmu_load_to_nozzle(2); -} - -void mmu_load_to_nozzle_3() -{ -//-// - menu_back(); - lcd_mmu_load_to_nozzle(3); -} - -void mmu_load_to_nozzle_4() -{ -//-// - menu_back(); - lcd_mmu_load_to_nozzle(4); -} void mmu_eject_fil_0() { diff --git a/Firmware/mmu.h b/Firmware/mmu.h index 446c9aec0..b2f9cefb8 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -108,11 +108,6 @@ extern void extr_adj_1(); extern void extr_adj_2(); extern void extr_adj_3(); extern void extr_adj_4(); -extern void mmu_load_to_nozzle_0(); -extern void mmu_load_to_nozzle_1(); -extern void mmu_load_to_nozzle_2(); -extern void mmu_load_to_nozzle_3(); -extern void mmu_load_to_nozzle_4(); extern void load_all(); extern void extr_change_0(); extern void extr_change_1(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f6502cef9..339d5195d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5685,18 +5685,24 @@ static void fil_load_menu() MENU_END(); } +template +static void mmu_load_to_nozzle() +{ + menu_back(); + lcd_mmu_load_to_nozzle(filament); +} + static void mmu_load_to_nozzle_menu() { -//-//if (degHotend0() > EXTRUDE_MINTEMP) if(bFilamentAction) { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Load filament 1"), mmu_load_to_nozzle_0); - MENU_ITEM_FUNCTION_P(_i("Load filament 2"), mmu_load_to_nozzle_1); - MENU_ITEM_FUNCTION_P(_i("Load filament 3"), mmu_load_to_nozzle_2); - MENU_ITEM_FUNCTION_P(_i("Load filament 4"), mmu_load_to_nozzle_3); - MENU_ITEM_FUNCTION_P(_i("Load filament 5"), mmu_load_to_nozzle_4); + MENU_ITEM_FUNCTION_P(_i("Load filament 1"), mmu_load_to_nozzle<0>); + MENU_ITEM_FUNCTION_P(_i("Load filament 2"), mmu_load_to_nozzle<1>); + MENU_ITEM_FUNCTION_P(_i("Load filament 3"), mmu_load_to_nozzle<2>); + MENU_ITEM_FUNCTION_P(_i("Load filament 4"), mmu_load_to_nozzle<3>); + MENU_ITEM_FUNCTION_P(_i("Load filament 5"), mmu_load_to_nozzle<4>); MENU_END(); } else { From 7a1b47c340b357161663be96c6e51d5e580d6972 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 11:11:05 +0100 Subject: [PATCH 08/41] Convert functions mmu_eject_fil_0 to mmu_eject_fil_4 to template function. --- Firmware/mmu.cpp | 36 ----------------------------- Firmware/mmu.h | 5 ---- Firmware/ultralcd.cpp | 53 ++++++++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 64 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 158b3cb77..c77276be1 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1183,42 +1183,6 @@ void extr_adj_4() #endif } - -void mmu_eject_fil_0() -{ -//-// - menu_back(); - mmu_eject_filament(0, true); -} - -void mmu_eject_fil_1() -{ -//-// - menu_back(); - mmu_eject_filament(1, true); -} - -void mmu_eject_fil_2() -{ -//-// - menu_back(); - mmu_eject_filament(2, true); -} - -void mmu_eject_fil_3() -{ -//-// - menu_back(); - mmu_eject_filament(3, true); -} - -void mmu_eject_fil_4() -{ -//-// - menu_back(); - mmu_eject_filament(4, true); -} - void load_all() { #ifndef SNMM diff --git a/Firmware/mmu.h b/Firmware/mmu.h index b2f9cefb8..3b0d41860 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -127,11 +127,6 @@ extern bool mmu_check_version(); extern void mmu_show_warning(); extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr); extern void mmu_eject_filament(uint8_t filament, bool recover); -extern void mmu_eject_fil_0(); -extern void mmu_eject_fil_1(); -extern void mmu_eject_fil_2(); -extern void mmu_eject_fil_3(); -extern void mmu_eject_fil_4(); extern void mmu_continue_loading(); extern void mmu_filament_ramming(); extern void mmu_wait_for_heater_blocking(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 339d5195d..00c939bb6 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4745,7 +4745,7 @@ static void lcd_wizard_unload() } else { - mmu_eject_fil_0(); + mmu_eject_filament(0, true); } } else @@ -5717,30 +5717,37 @@ else { } } +template +static void mmu_eject_filament() +{ + menu_back(); + mmu_eject_filament(filament, true); +} + static void mmu_fil_eject_menu() { -//-//if (degHotend0() > EXTRUDE_MINTEMP) -if(bFilamentAction) -{ - MENU_BEGIN(); - MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_FUNCTION_P(_i("Eject filament 1"), mmu_eject_fil_0); - MENU_ITEM_FUNCTION_P(_i("Eject filament 2"), mmu_eject_fil_1); - MENU_ITEM_FUNCTION_P(_i("Eject filament 3"), mmu_eject_fil_2); - MENU_ITEM_FUNCTION_P(_i("Eject filament 4"), mmu_eject_fil_3); - MENU_ITEM_FUNCTION_P(_i("Eject filament 5"), mmu_eject_fil_4); - MENU_END(); -} -else { - eFilamentAction=e_FILAMENT_ACTION_mmuEject; - bFilamentFirstRun=false; - if(target_temperature[0]>=EXTRUDE_MINTEMP) - { - bFilamentPreheatState=true; - mFilamentItem(target_temperature[0],target_temperature_bed); - } - else mFilamentMenu(); - } + if(bFilamentAction) + { + MENU_BEGIN(); + MENU_ITEM_BACK_P(_T(MSG_MAIN)); + MENU_ITEM_FUNCTION_P(_i("Eject filament 1"), mmu_eject_filament<0>); + MENU_ITEM_FUNCTION_P(_i("Eject filament 2"), mmu_eject_filament<1>); + MENU_ITEM_FUNCTION_P(_i("Eject filament 3"), mmu_eject_filament<2>); + MENU_ITEM_FUNCTION_P(_i("Eject filament 4"), mmu_eject_filament<3>); + MENU_ITEM_FUNCTION_P(_i("Eject filament 5"), mmu_eject_filament<4>); + MENU_END(); + } + else + { + eFilamentAction=e_FILAMENT_ACTION_mmuEject; + bFilamentFirstRun=false; + if(target_temperature[0]>=EXTRUDE_MINTEMP) + { + bFilamentPreheatState=true; + mFilamentItem(target_temperature[0],target_temperature_bed); + } + else mFilamentMenu(); + } } #ifdef SNMM From 6c9dd4f2725e6aaceb06c058c9d7c4fe65d65ee7 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 13:40:23 +0100 Subject: [PATCH 09/41] Add filament ramming to eject filament. --- Firmware/mmu.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2f7bf96c3..12b6d64b1 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1422,9 +1422,7 @@ bFilamentAction=false; // NOT in "mmu_fil_eject_menu( LcdUpdateDisabler disableLcdUpdate; lcd_clear(); lcd_set_cursor(0, 1); lcd_puts_P(_i("Ejecting filament")); - current_position[E_AXIS] -= 80; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder); - st_synchronize(); + mmu_filament_ramming(); mmu_command(MmuCmd::E0 + filament); manage_response(false, false, MMU_UNLOAD_MOVE); if (recover) From 5a5a482a59c2302837e72e7452f0f0263d9cae9b Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 13:59:44 +0100 Subject: [PATCH 10/41] Rename preprocessor macro K1 to PID_K1 to avoid future conflict with MMU command. --- Firmware/Configuration.h | 2 +- Firmware/temperature.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 13d2f1a05..db8d54ec2 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -132,7 +132,7 @@ //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID + #define PID_K1 0.95 //smoothing factor within the PID #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index e156734b8..99a0d0c95 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -662,9 +662,9 @@ void manage_heater() iState_sum[e] += pid_error[e]; iState_sum[e] = constrain(iState_sum[e], iState_sum_min[e], iState_sum_max[e]); iTerm[e] = cs.Ki * iState_sum[e]; - // K1 defined in Configuration.h in the PID settings - #define K2 (1.0-K1) - dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (K1 * dTerm[e]); // e.g. digital filtration of derivative term changes + // PID_K1 defined in Configuration.h in the PID settings + #define K2 (1.0-PID_K1) + dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (PID_K1 * dTerm[e]); // e.g. digital filtration of derivative term changes pid_output = pTerm[e] + iTerm[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used) if (pid_output > PID_MAX) { if (pid_error[e] > 0 ) iState_sum[e] -= pid_error[e]; // conditional un-integration @@ -811,9 +811,9 @@ void manage_heater() temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed); iTerm_bed = cs.bedKi * temp_iState_bed; - //K1 defined in Configuration.h in the PID settings - #define K2 (1.0-K1) - dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed); + //PID_K1 defined in Configuration.h in the PID settings + #define K2 (1.0-PID_K1) + dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (PID_K1 * dTerm_bed); temp_dState_bed = pid_input; pid_output = pTerm_bed + iTerm_bed - dTerm_bed; From 815231bc26ea89c720df0a5bedbfd99d99793df3 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 17:58:00 +0100 Subject: [PATCH 11/41] Add MMU cut filament menu. --- Firmware/mmu.cpp | 28 +++++++++++++++++++++++++++ Firmware/mmu.h | 6 ++++++ Firmware/ultralcd.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++ Firmware/ultralcd.h | 1 + 4 files changed, 80 insertions(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index c77276be1..53e7458a6 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -297,6 +297,14 @@ void mmu_loop(void) mmu_fil_loaded = false; mmu_state = S::WaitCmd; } + else if ((mmu_cmd >= MmuCmd::K0) && (mmu_cmd <= MmuCmd::K4)) + { + const uint8_t filament = mmu_cmd - MmuCmd::K0; + DEBUG_PRINTF_P(PSTR("MMU <= 'K%d'\n"), filament); + mmu_printf_P(PSTR("K%d\n"), filament); //send eject filament + mmu_fil_loaded = false; + mmu_state = S::WaitCmd; + } else if (mmu_cmd == MmuCmd::R0) { DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n")); @@ -1337,6 +1345,26 @@ bFilamentAction=false; // NOT in "mmu_load_to_nozzle_ } } +void mmu_cut_filament(uint8_t filament_nr) +{ +bFilamentAction=false; // NOT in "mmu_load_to_nozzle_menu()" + if (degHotend0() > EXTRUDE_MINTEMP) + { + LcdUpdateDisabler disableLcdUpdate; + lcd_clear(); + lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18 r=1 + lcd_print(" "); + lcd_print(filament_nr + 1); + mmu_filament_ramming(); + mmu_command(MmuCmd::K0 + filament_nr); + manage_response(false, false, MMU_UNLOAD_MOVE); + } + else + { + show_preheat_nozzle_warning(); + } +} + void mmu_eject_filament(uint8_t filament, bool recover) { //-// diff --git a/Firmware/mmu.h b/Firmware/mmu.h index 3b0d41860..b498a3749 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -52,6 +52,11 @@ enum class MmuCmd : uint_least8_t E2, E3, E4, + K0, + K1, + K2, + K3, + K4, R0, S3, W0, @@ -127,6 +132,7 @@ extern bool mmu_check_version(); extern void mmu_show_warning(); extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr); extern void mmu_eject_filament(uint8_t filament, bool recover); +extern void mmu_cut_filament(uint8_t filament_nr); extern void mmu_continue_loading(); extern void mmu_filament_ramming(); extern void mmu_wait_for_heater_blocking(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 00c939bb6..46dd1a3ce 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -144,6 +144,7 @@ static void lcd_menu_show_sensors_state(); static void mmu_fil_eject_menu(); static void mmu_load_to_nozzle_menu(); +static void mmu_cut_filament_menu(); #if defined(TMC2130) || defined(FILAMENT_SENSOR) static void lcd_menu_fails_stats(); @@ -2407,6 +2408,9 @@ switch(eFilamentAction) case e_FILAMENT_ACTION_mmuEject: lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1 break; + case e_FILAMENT_ACTION_mmuCut: + lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1 + break; } lcd_set_cursor(0,3); lcd_puts_P(_i(">Cancel")); ////MSG_ c=20 r=1 @@ -2460,6 +2464,14 @@ else { menu_back(nLevel); menu_submenu(mmu_fil_eject_menu); break; + case e_FILAMENT_ACTION_mmuCut: + nLevel=1; + if(!bFilamentPreheatState) + nLevel++; + bFilamentAction=true; + menu_back(nLevel); + menu_submenu(mmu_cut_filament_menu); + break; } if(bBeep) Sound_MakeSound(e_SOUND_TYPE_StandardPrompt); @@ -5750,6 +5762,38 @@ static void mmu_fil_eject_menu() } } +template +static void mmu_cut_filament() +{ + menu_back(); + mmu_cut_filament(filament); +} + +static void mmu_cut_filament_menu() +{ +if(bFilamentAction) +{ + MENU_BEGIN(); + MENU_ITEM_BACK_P(_T(MSG_MAIN)); + MENU_ITEM_FUNCTION_P(_i("Cut filament 1"), mmu_cut_filament<0>); + MENU_ITEM_FUNCTION_P(_i("Cut filament 2"), mmu_cut_filament<1>); + MENU_ITEM_FUNCTION_P(_i("Cut filament 3"), mmu_cut_filament<2>); + MENU_ITEM_FUNCTION_P(_i("Cut filament 4"), mmu_cut_filament<3>); + MENU_ITEM_FUNCTION_P(_i("Cut filament 5"), mmu_cut_filament<4>); + MENU_END(); +} +else { + eFilamentAction=e_FILAMENT_ACTION_mmuCut; + bFilamentFirstRun=false; + if(target_temperature[0]>=EXTRUDE_MINTEMP) + { + bFilamentPreheatState=true; + mFilamentItem(target_temperature[0],target_temperature_bed); + } + else mFilamentMenu(); + } +} + #ifdef SNMM static void fil_unload_menu() { @@ -6222,6 +6266,7 @@ static void lcd_main_menu() //bFilamentFirstRun=true; MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), extr_unload_); MENU_ITEM_SUBMENU_P(_i("Eject filament"), mmu_fil_eject_menu); + MENU_ITEM_SUBMENU_P(_i("Cut filament"), mmu_cut_filament_menu); } else { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 4bf514d9b..c947a346d 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -142,6 +142,7 @@ typedef enum e_FILAMENT_ACTION_mmuLoad, e_FILAMENT_ACTION_mmuUnLoad, e_FILAMENT_ACTION_mmuEject, + e_FILAMENT_ACTION_mmuCut, } eFILAMENT_ACTION; extern eFILAMENT_ACTION eFilamentAction; extern bool bFilamentFirstRun; From 49b1d1cb9371c4b4a63218984cb1f2ff0b44a709 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 26 Feb 2019 18:50:15 +0100 Subject: [PATCH 12/41] 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 37c2fda15..2d469a764 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 99a0d0c95..f6ad87615 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 46dd1a3ce..5dba13840 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 13/41] 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 2d469a764..ff9335ac5 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 fc53b2049..ee00f35b7 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 07ea844a4..37bd631d4 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 5dba13840..573002412 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 14/41] 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 ff9335ac5..2d469a764 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 ee00f35b7..d9766e96a 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 9f878796e..16c02ed58 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 37bd631d4..cdd85e9bb 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 573002412..d925ce053 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 15/41] 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 d925ce053..f8cbd6b2c 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) { From f14733f2ddb7d7960d8ccc4a2ccc3a51c8b69065 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 1 Mar 2019 13:53:18 +0100 Subject: [PATCH 16/41] version change --- Firmware/Configuration.h | 4 +- Firmware/Configuration_prusa_bckp.h | 631 ++++++++++++++++++++++++++++ 2 files changed, 633 insertions(+), 2 deletions(-) create mode 100644 Firmware/Configuration_prusa_bckp.h diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 13d2f1a05..9d1d8248d 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.6.0-RC1" -#define FW_COMMIT_NR 2060 +#define FW_VERSION "3.6.0" +#define FW_COMMIT_NR 2067 // 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 diff --git a/Firmware/Configuration_prusa_bckp.h b/Firmware/Configuration_prusa_bckp.h new file mode 100644 index 000000000..c400b016f --- /dev/null +++ b/Firmware/Configuration_prusa_bckp.h @@ -0,0 +1,631 @@ +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +#include +/*------------------------------------ + GENERAL SETTINGS + *------------------------------------*/ + +// Printer revision +#define PRINTER_TYPE PRINTER_MK3 +#define FILAMENT_SIZE "1_75mm_MK3" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK3" + +// Electronics +#define MOTHERBOARD BOARD_EINSY_1_0a +#define STEEL_SHEET +#define HAS_SECOND_SERIAL_PORT + + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ + AXIS SETTINGS + *------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280} +//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560} + +// Endstop inverting +#define X_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. + +// Direction inverting +#define INVERT_X_DIR 1 // for Mendel set to 0, for Orca set to 1 +#define INVERT_Y_DIR 0 // for Mendel set to 1, for Orca set to 0 +#define INVERT_Z_DIR 1 // for Mendel set to 0, for Orca set to 1 +#define INVERT_E0_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 +#define INVERT_E1_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 +#define INVERT_E2_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.2 + +// Travel limits after homing +#define X_MAX_POS 255 +#define X_MIN_POS 0 +#define Y_MAX_POS 212.5 +#define Y_MIN_POS -4 //orig -4 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 + +//#define DEFAULT_Y_OFFSET 4.f // Default distance of Y_MIN_POS point from endstop, when the printer is not calibrated. +/** + * [0,0] steel sheet print area point X coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_X 0.f +/** + * [0,0] steel sheet print area point Y coordinate in bed print area coordinates + */ +#define SHEET_PRINT_ZERO_REF_Y -2.f + +#define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203) +#define DEFAULT_MAX_FEEDRATE_SILENT {100, 100, 12, 120} // (mm/sec) max feedrate (M203), silent mode + +#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201) +#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode + + +#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S) +#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T) + +#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min) + +//Silent mode limits +#define SILENT_MAX_ACCEL_XY 960ul // max acceleration in silent mode in mm/s^2 +#define SILENT_MAX_FEEDRATE_XY 100 // max feedrate in mm/s + +//Normal mode limits +#define NORMAL_MAX_ACCEL_XY 2500ul // max acceleration in normal mode in mm/s^2 +#define NORMAL_MAX_FEEDRATE_XY 200 // max feedrate in mm/s + +//number of bytes from end of the file to start check +#define END_FILE_SECTION 20000 + +#define Z_AXIS_ALWAYS_ON 1 + +//Crash detection +#define CRASHDET_TIMER 45 //seconds +#define CRASHDET_COUNTER_MAX 3 + +// New XYZ calibration +#define NEW_XYZCAL + +// Watchdog support +#define WATCHDOG + +// Power panic +#define UVLO_SUPPORT + +// Fan check +#define FANCHECK + +// Safety timer +#define SAFETYTIMER +#define DEFAULT_SAFETYTIMER_TIME_MINS 30 + +// Filament sensor +#define FILAMENT_SENSOR +#define PAT9125 + +// Backlash - +//#define BACKLASH_X +//#define BACKLASH_Y + + +// Minimum ambient temperature limit to start triggering MINTEMP errors [C] +// this value is litlebit higher that real limit, because ambient termistor is on the board and is temperated from it, +// temperature inside the case is around 31C for ambient temperature 25C, when the printer is powered on long time and idle +// the real limit is 15C (same as MINTEMP limit), this is because 15C is end of scale for both used thermistors (bed, heater) +#define MINTEMP_MINAMBIENT 25 +#define MINTEMP_MINAMBIENT_RAW 978 + +#define DEBUG_DCODE3 + +//#define DEBUG_BUILD +//#define DEBUG_SEC_LANG //secondary language debug output at startup +//#define DEBUG_W25X20CL //debug external spi flash +#ifdef DEBUG_BUILD +//#define _NO_ASM +#define DEBUG_DCODES //D codes +#define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR +//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD +//#define DEBUG_RESUME_PRINT //Resume/save print debug enable +//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output +//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored +//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored +//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored +//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored +//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored +//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored +#define DEBUG_DISABLE_STARTMSGS //no startup messages +//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored +//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored +//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line +//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed +//#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages +//#define DEBUG_DISABLE_FORCE_SELFTEST //disable force selftest +//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3) +//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3) +//#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled) +//#define DEBUG_DISABLE_FSENSORCHECK //disable fsensor check (no ISR INT7, check disabled) +#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line +#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message. +#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display. +#define CMD_DIAGNOSTICS //Show cmd queue length on printer display +#endif /* DEBUG_BUILD */ + +//#define FSENSOR_QUALITY + + +#define LINEARITY_CORRECTION +#define TMC2130_LINEARITY_CORRECTION +#define TMC2130_LINEARITY_CORRECTION_XYZ +//#define TMC2130_VARIABLE_RESOLUTION + + + +/*------------------------------------ + TMC2130 default settings + *------------------------------------*/ + +#define TMC2130_FCLK 12000000 // fclk = 12MHz + +#define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes +#define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis +#define TMC2130_USTEPS_E 32 // microstep resolution for E axis +#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 TMC2130_PWM_GRAD_X 2 // PWMCONF +#define TMC2130_PWM_AMPL_X 230 // PWMCONF +#define TMC2130_PWM_AUTO_X 1 // PWMCONF +#define TMC2130_PWM_FREQ_X 2 // PWMCONF + +#define TMC2130_PWM_GRAD_Y 2 // PWMCONF +#define TMC2130_PWM_AMPL_Y 235 // PWMCONF +#define TMC2130_PWM_AUTO_Y 1 // PWMCONF +#define TMC2130_PWM_FREQ_Y 2 // PWMCONF + +#define TMC2130_PWM_GRAD_Z 4 // PWMCONF +#define TMC2130_PWM_AMPL_Z 200 // PWMCONF +#define TMC2130_PWM_AUTO_Z 1 // PWMCONF +#define TMC2130_PWM_FREQ_Z 2 // PWMCONF + +#define TMC2130_PWM_GRAD_E 4 // PWMCONF +#define TMC2130_PWM_AMPL_E 240 // PWMCONF +#define TMC2130_PWM_AUTO_E 1 // PWMCONF +#define TMC2130_PWM_FREQ_E 2 // PWMCONF + +#define TMC2130_TOFF_XYZ 3 // CHOPCONF // fchop = 27.778kHz +#define TMC2130_TOFF_E 3 // CHOPCONF // fchop = 27.778kHz +//#define TMC2130_TOFF_E 4 // CHOPCONF // fchop = 21.429kHz +//#define TMC2130_TOFF_E 5 // CHOPCONF // fchop = 17.442kHz + +//#define TMC2130_STEALTH_E // Extruder stealthChop mode +//#define TMC2130_CNSTOFF_E // Extruder constant-off-time mode (similar to MK2) + +//#define TMC2130_PWM_DIV 683 // PWM frequency divider (1024, 683, 512, 410) +#define TMC2130_PWM_DIV 512 // PWM frequency divider (1024, 683, 512, 410) +#define TMC2130_PWM_CLK (2 * TMC2130_FCLK / TMC2130_PWM_DIV) // PWM frequency (23.4kHz, 35.1kHz, 46.9kHz, 58.5kHz for 12MHz fclk) + +#define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode +#define TMC2130_THIGH 0 // THIGH - unused + +//#define TMC2130_TCOOLTHRS_X 450 // TCOOLTHRS - coolstep treshold +//#define TMC2130_TCOOLTHRS_Y 450 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_X 430 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_Y 430 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_Z 500 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_E 500 // TCOOLTHRS - coolstep treshold + +#define TMC2130_SG_HOMING 1 // stallguard homing +#define TMC2130_SG_THRS_X 3 // stallguard sensitivity for X axis +#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis +#define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis +#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis + +//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only) +#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes +#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes +#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor + +#define TMC2130_STEALTH_Z + +//#define TMC2130_SERVICE_CODES_M910_M918 + +//#define TMC2130_DEBUG +//#define TMC2130_DEBUG_WR +//#define TMC2130_DEBUG_RD + + +/*------------------------------------ + EXTRUDER SETTINGS + *------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_MINTEMP_DELAY 15000 // [ms] ! if changed, check maximal allowed value @ ShortTimer +#if HEATER_MINTEMP_DELAY>USHRT_MAX +#error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)" +#endif +#define BED_MINTEMP 15 +#define BED_MINTEMP_DELAY 50000 // [ms] ! if changed, check maximal allowed value @ ShortTimer +#if BED_MINTEMP_DELAY>USHRT_MAX +#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)" +#endif + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 125 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +//#define DEFAULT_Kp 40.925 +//#define DEFAULT_Ki 4.875 +//#define DEFAULT_Kd 86.085 +#define DEFAULT_Kp 16.13 +#define DEFAULT_Ki 1.1625 +#define DEFAULT_Kd 56.23 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 175 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + + +/*------------------------------------ + LOAD/UNLOAD FILAMENT SETTINGS + *------------------------------------*/ + +// Load filament commands +#define LOAD_FILAMENT_0 "M83" +#define LOAD_FILAMENT_1 "G1 E70 F400" +#define LOAD_FILAMENT_2 "G1 E40 F100" + +// Unload filament commands +#define UNLOAD_FILAMENT_0 "M83" +#define UNLOAD_FILAMENT_1 "G1 E-80 F7000" + +/*------------------------------------ + CHANGE FILAMENT SETTINGS + *------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600) +#define FILAMENTCHANGE_FINALFEED 25 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701) +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED_FIRST 20 // feedrate in mm/s for fast filament loading sequence used in filament change (M600) +#define FILAMENTCHANGE_EFEED_FINAL 3.3f // feedrate in mm/s for slow filament loading sequence used in filament change (M600) and filament load (M701) +//#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_RFEED 7000 / 60 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ + ADDITIONAL FEATURES SETTINGS + *------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ + MOTOR CURRENT SETTINGS + *------------------------------------*/ + +// Motor Current settings for Einsy/tmc = 0..63 +#define MOTOR_CURRENT_PWM_RANGE 63 + +/*------------------------------------ + BED SETTINGS + *------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +// Maximum bed level correction value +#define BED_ADJUSTMENT_UM_MAX 100 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + +//connect message when communication with monitoring broken +//#define FARM_CONNECT_MESSAGE + +/*----------------------------------- + PREHEAT SETTINGS + *------------------------------------*/ + +#define FARM_PREHEAT_HOTEND_TEMP 250 +#define FARM_PREHEAT_HPB_TEMP 60 +#define FARM_PREHEAT_FAN_SPEED 0 + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 60 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 230 +#define PET_PREHEAT_HPB_TEMP 85 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 240 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ + THERMISTORS SETTINGS + *------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif +#define TEMP_SENSOR_PINDA 1 +#define TEMP_SENSOR_AMBIENT 2000 + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 20 +#define PINDA_PREHEAT_Y 60 +#define PINDA_PREHEAT_Z 0.15 +/* +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1*/ +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid 0 triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s + +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#define MIN_PRINT_FAN_SPEED 75 + + +// How much shall the print head be lifted on power panic? +// Ideally the Z axis will reach a zero phase of the stepper driver on power outage. To simplify this, +// UVLO_Z_AXIS_SHIFT shall be an integer multiply of the stepper driver cycle, that is 4x full step. +// For example, the Prusa i3 MK2 with 16 microsteps per full step has Z stepping of 400 microsteps per mm. +// At 400 microsteps per mm, a full step lifts the Z axis by 0.04mm, and a stepper driver cycle is 0.16mm. +// The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm. +//#define UVLO_Z_AXIS_SHIFT 1.92 +#define UVLO_Z_AXIS_SHIFT 0.64 +// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically. +#define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5 + +#define HEATBED_V2 + +#define M600_TIMEOUT 600 //seconds + +//#define SUPPORT_VERBOSITY + +#define MMU_REQUIRED_FW_BUILDNR 83 +#define MMU_HWRESET +#define MMU_DEBUG //print communication between MMU2 and printer on serial +#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning + +#endif //__CONFIGURATION_PRUSA_H From ca880100180fa90c2265ecd4df46deecbfe18366 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 1 Mar 2019 13:54:25 +0100 Subject: [PATCH 17/41] Revert "version change" This reverts commit f14733f2ddb7d7960d8ccc4a2ccc3a51c8b69065. --- Firmware/Configuration.h | 4 +- Firmware/Configuration_prusa_bckp.h | 631 ---------------------------- 2 files changed, 2 insertions(+), 633 deletions(-) delete mode 100644 Firmware/Configuration_prusa_bckp.h diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 9d1d8248d..13d2f1a05 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.6.0" -#define FW_COMMIT_NR 2067 +#define FW_VERSION "3.6.0-RC1" +#define FW_COMMIT_NR 2060 // 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 diff --git a/Firmware/Configuration_prusa_bckp.h b/Firmware/Configuration_prusa_bckp.h deleted file mode 100644 index c400b016f..000000000 --- a/Firmware/Configuration_prusa_bckp.h +++ /dev/null @@ -1,631 +0,0 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -#include -/*------------------------------------ - GENERAL SETTINGS - *------------------------------------*/ - -// Printer revision -#define PRINTER_TYPE PRINTER_MK3 -#define FILAMENT_SIZE "1_75mm_MK3" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK3" - -// Electronics -#define MOTHERBOARD BOARD_EINSY_1_0a -#define STEEL_SHEET -#define HAS_SECOND_SERIAL_PORT - - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ - AXIS SETTINGS - *------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280} -//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560} - -// Endstop inverting -#define X_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop. - -// Direction inverting -#define INVERT_X_DIR 1 // for Mendel set to 0, for Orca set to 1 -#define INVERT_Y_DIR 0 // for Mendel set to 1, for Orca set to 0 -#define INVERT_Z_DIR 1 // for Mendel set to 0, for Orca set to 1 -#define INVERT_E0_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 -#define INVERT_E1_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 -#define INVERT_E2_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0 - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.2 - -// Travel limits after homing -#define X_MAX_POS 255 -#define X_MIN_POS 0 -#define Y_MAX_POS 212.5 -#define Y_MIN_POS -4 //orig -4 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 - -//#define DEFAULT_Y_OFFSET 4.f // Default distance of Y_MIN_POS point from endstop, when the printer is not calibrated. -/** - * [0,0] steel sheet print area point X coordinate in bed print area coordinates - */ -#define SHEET_PRINT_ZERO_REF_X 0.f -/** - * [0,0] steel sheet print area point Y coordinate in bed print area coordinates - */ -#define SHEET_PRINT_ZERO_REF_Y -2.f - -#define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203) -#define DEFAULT_MAX_FEEDRATE_SILENT {100, 100, 12, 120} // (mm/sec) max feedrate (M203), silent mode - -#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201) -#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode - - -#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S) -#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T) - -#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min) - -//Silent mode limits -#define SILENT_MAX_ACCEL_XY 960ul // max acceleration in silent mode in mm/s^2 -#define SILENT_MAX_FEEDRATE_XY 100 // max feedrate in mm/s - -//Normal mode limits -#define NORMAL_MAX_ACCEL_XY 2500ul // max acceleration in normal mode in mm/s^2 -#define NORMAL_MAX_FEEDRATE_XY 200 // max feedrate in mm/s - -//number of bytes from end of the file to start check -#define END_FILE_SECTION 20000 - -#define Z_AXIS_ALWAYS_ON 1 - -//Crash detection -#define CRASHDET_TIMER 45 //seconds -#define CRASHDET_COUNTER_MAX 3 - -// New XYZ calibration -#define NEW_XYZCAL - -// Watchdog support -#define WATCHDOG - -// Power panic -#define UVLO_SUPPORT - -// Fan check -#define FANCHECK - -// Safety timer -#define SAFETYTIMER -#define DEFAULT_SAFETYTIMER_TIME_MINS 30 - -// Filament sensor -#define FILAMENT_SENSOR -#define PAT9125 - -// Backlash - -//#define BACKLASH_X -//#define BACKLASH_Y - - -// Minimum ambient temperature limit to start triggering MINTEMP errors [C] -// this value is litlebit higher that real limit, because ambient termistor is on the board and is temperated from it, -// temperature inside the case is around 31C for ambient temperature 25C, when the printer is powered on long time and idle -// the real limit is 15C (same as MINTEMP limit), this is because 15C is end of scale for both used thermistors (bed, heater) -#define MINTEMP_MINAMBIENT 25 -#define MINTEMP_MINAMBIENT_RAW 978 - -#define DEBUG_DCODE3 - -//#define DEBUG_BUILD -//#define DEBUG_SEC_LANG //secondary language debug output at startup -//#define DEBUG_W25X20CL //debug external spi flash -#ifdef DEBUG_BUILD -//#define _NO_ASM -#define DEBUG_DCODES //D codes -#define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR -//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial -//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD -//#define DEBUG_RESUME_PRINT //Resume/save print debug enable -//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output -//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored -//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored -//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored -//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored -//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored -//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored -#define DEBUG_DISABLE_STARTMSGS //no startup messages -//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored -//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored -//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line -//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed -//#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages -//#define DEBUG_DISABLE_FORCE_SELFTEST //disable force selftest -//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3) -//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3) -//#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled) -//#define DEBUG_DISABLE_FSENSORCHECK //disable fsensor check (no ISR INT7, check disabled) -#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line -#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message. -#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display. -#define CMD_DIAGNOSTICS //Show cmd queue length on printer display -#endif /* DEBUG_BUILD */ - -//#define FSENSOR_QUALITY - - -#define LINEARITY_CORRECTION -#define TMC2130_LINEARITY_CORRECTION -#define TMC2130_LINEARITY_CORRECTION_XYZ -//#define TMC2130_VARIABLE_RESOLUTION - - - -/*------------------------------------ - TMC2130 default settings - *------------------------------------*/ - -#define TMC2130_FCLK 12000000 // fclk = 12MHz - -#define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes -#define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis -#define TMC2130_USTEPS_E 32 // microstep resolution for E axis -#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 TMC2130_PWM_GRAD_X 2 // PWMCONF -#define TMC2130_PWM_AMPL_X 230 // PWMCONF -#define TMC2130_PWM_AUTO_X 1 // PWMCONF -#define TMC2130_PWM_FREQ_X 2 // PWMCONF - -#define TMC2130_PWM_GRAD_Y 2 // PWMCONF -#define TMC2130_PWM_AMPL_Y 235 // PWMCONF -#define TMC2130_PWM_AUTO_Y 1 // PWMCONF -#define TMC2130_PWM_FREQ_Y 2 // PWMCONF - -#define TMC2130_PWM_GRAD_Z 4 // PWMCONF -#define TMC2130_PWM_AMPL_Z 200 // PWMCONF -#define TMC2130_PWM_AUTO_Z 1 // PWMCONF -#define TMC2130_PWM_FREQ_Z 2 // PWMCONF - -#define TMC2130_PWM_GRAD_E 4 // PWMCONF -#define TMC2130_PWM_AMPL_E 240 // PWMCONF -#define TMC2130_PWM_AUTO_E 1 // PWMCONF -#define TMC2130_PWM_FREQ_E 2 // PWMCONF - -#define TMC2130_TOFF_XYZ 3 // CHOPCONF // fchop = 27.778kHz -#define TMC2130_TOFF_E 3 // CHOPCONF // fchop = 27.778kHz -//#define TMC2130_TOFF_E 4 // CHOPCONF // fchop = 21.429kHz -//#define TMC2130_TOFF_E 5 // CHOPCONF // fchop = 17.442kHz - -//#define TMC2130_STEALTH_E // Extruder stealthChop mode -//#define TMC2130_CNSTOFF_E // Extruder constant-off-time mode (similar to MK2) - -//#define TMC2130_PWM_DIV 683 // PWM frequency divider (1024, 683, 512, 410) -#define TMC2130_PWM_DIV 512 // PWM frequency divider (1024, 683, 512, 410) -#define TMC2130_PWM_CLK (2 * TMC2130_FCLK / TMC2130_PWM_DIV) // PWM frequency (23.4kHz, 35.1kHz, 46.9kHz, 58.5kHz for 12MHz fclk) - -#define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode -#define TMC2130_THIGH 0 // THIGH - unused - -//#define TMC2130_TCOOLTHRS_X 450 // TCOOLTHRS - coolstep treshold -//#define TMC2130_TCOOLTHRS_Y 450 // TCOOLTHRS - coolstep treshold -#define TMC2130_TCOOLTHRS_X 430 // TCOOLTHRS - coolstep treshold -#define TMC2130_TCOOLTHRS_Y 430 // TCOOLTHRS - coolstep treshold -#define TMC2130_TCOOLTHRS_Z 500 // TCOOLTHRS - coolstep treshold -#define TMC2130_TCOOLTHRS_E 500 // TCOOLTHRS - coolstep treshold - -#define TMC2130_SG_HOMING 1 // stallguard homing -#define TMC2130_SG_THRS_X 3 // stallguard sensitivity for X axis -#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis -#define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis -#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis - -//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only) -#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes -#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes -#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor - -#define TMC2130_STEALTH_Z - -//#define TMC2130_SERVICE_CODES_M910_M918 - -//#define TMC2130_DEBUG -//#define TMC2130_DEBUG_WR -//#define TMC2130_DEBUG_RD - - -/*------------------------------------ - EXTRUDER SETTINGS - *------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_MINTEMP_DELAY 15000 // [ms] ! if changed, check maximal allowed value @ ShortTimer -#if HEATER_MINTEMP_DELAY>USHRT_MAX -#error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)" -#endif -#define BED_MINTEMP 15 -#define BED_MINTEMP_DELAY 50000 // [ms] ! if changed, check maximal allowed value @ ShortTimer -#if BED_MINTEMP_DELAY>USHRT_MAX -#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)" -#endif - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 125 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -//#define DEFAULT_Kp 40.925 -//#define DEFAULT_Ki 4.875 -//#define DEFAULT_Kd 86.085 -#define DEFAULT_Kp 16.13 -#define DEFAULT_Ki 1.1625 -#define DEFAULT_Kd 56.23 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 175 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - -/*------------------------------------ - LOAD/UNLOAD FILAMENT SETTINGS - *------------------------------------*/ - -// Load filament commands -#define LOAD_FILAMENT_0 "M83" -#define LOAD_FILAMENT_1 "G1 E70 F400" -#define LOAD_FILAMENT_2 "G1 E40 F100" - -// Unload filament commands -#define UNLOAD_FILAMENT_0 "M83" -#define UNLOAD_FILAMENT_1 "G1 E-80 F7000" - -/*------------------------------------ - CHANGE FILAMENT SETTINGS - *------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600) -#define FILAMENTCHANGE_FINALFEED 25 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701) -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED_FIRST 20 // feedrate in mm/s for fast filament loading sequence used in filament change (M600) -#define FILAMENTCHANGE_EFEED_FINAL 3.3f // feedrate in mm/s for slow filament loading sequence used in filament change (M600) and filament load (M701) -//#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_RFEED 7000 / 60 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ - ADDITIONAL FEATURES SETTINGS - *------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ - MOTOR CURRENT SETTINGS - *------------------------------------*/ - -// Motor Current settings for Einsy/tmc = 0..63 -#define MOTOR_CURRENT_PWM_RANGE 63 - -/*------------------------------------ - BED SETTINGS - *------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -// Maximum bed level correction value -#define BED_ADJUSTMENT_UM_MAX 100 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -//connect message when communication with monitoring broken -//#define FARM_CONNECT_MESSAGE - -/*----------------------------------- - PREHEAT SETTINGS - *------------------------------------*/ - -#define FARM_PREHEAT_HOTEND_TEMP 250 -#define FARM_PREHEAT_HPB_TEMP 60 -#define FARM_PREHEAT_FAN_SPEED 0 - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 60 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 230 -#define PET_PREHEAT_HPB_TEMP 85 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 240 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ - THERMISTORS SETTINGS - *------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif -#define TEMP_SENSOR_PINDA 1 -#define TEMP_SENSOR_AMBIENT 2000 - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 20 -#define PINDA_PREHEAT_Y 60 -#define PINDA_PREHEAT_Z 0.15 -/* -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1*/ -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid 0 triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s - -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#define MIN_PRINT_FAN_SPEED 75 - - -// How much shall the print head be lifted on power panic? -// Ideally the Z axis will reach a zero phase of the stepper driver on power outage. To simplify this, -// UVLO_Z_AXIS_SHIFT shall be an integer multiply of the stepper driver cycle, that is 4x full step. -// For example, the Prusa i3 MK2 with 16 microsteps per full step has Z stepping of 400 microsteps per mm. -// At 400 microsteps per mm, a full step lifts the Z axis by 0.04mm, and a stepper driver cycle is 0.16mm. -// The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm. -//#define UVLO_Z_AXIS_SHIFT 1.92 -#define UVLO_Z_AXIS_SHIFT 0.64 -// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically. -#define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5 - -#define HEATBED_V2 - -#define M600_TIMEOUT 600 //seconds - -//#define SUPPORT_VERBOSITY - -#define MMU_REQUIRED_FW_BUILDNR 83 -#define MMU_HWRESET -#define MMU_DEBUG //print communication between MMU2 and printer on serial -#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning - -#endif //__CONFIGURATION_PRUSA_H From 488497df2c489a1a36a880dd068e690a7dd09e4f Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 1 Mar 2019 13:56:03 +0100 Subject: [PATCH 18/41] version change --- Firmware/Configuration.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 13d2f1a05..f14f05d85 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -7,8 +7,8 @@ #define STR(x) STR_HELPER(x) // Firmware version -#define FW_VERSION "3.6.0-RC1" -#define FW_COMMIT_NR 2060 +#define FW_VERSION "3.6.0" +#define FW_COMMIT_NR 2069 // 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 22500970bacb0c35ae204ac80810925114925139 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 16:18:16 +0100 Subject: [PATCH 19/41] Remove commented out code, fix formatting. --- Firmware/mmu.cpp | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 2e3fca914..54ccbb13a 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1052,14 +1052,14 @@ else { } } -//-// +//! @brief show which filament is currently unloaded void extr_unload_view() { -lcd_clear(); -lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT)); -lcd_print(" "); -if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" "); -else lcd_print(mmu_extruder + 1); + lcd_clear(); + lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT)); + lcd_print(" "); + if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" "); + else lcd_print(mmu_extruder + 1); } void extr_unload() @@ -1074,17 +1074,8 @@ void extr_unload() { #ifndef SNMM st_synchronize(); - - //show which filament is currently unloaded -//-// lcd_update_enable(false); -menu_submenu(extr_unload_view); -/* - lcd_clear(); - lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT)); - lcd_print(" "); - if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" "); - else lcd_print(mmu_extruder + 1); -*/ + + menu_submenu(extr_unload_view); mmu_filament_ramming(); @@ -1092,8 +1083,7 @@ menu_submenu(extr_unload_view); // get response manage_response(false, true, MMU_UNLOAD_MOVE); -//-// lcd_update_enable(true); -menu_back(); + menu_back(); #else //SNMM lcd_clear(); @@ -1151,7 +1141,6 @@ menu_back(); { show_preheat_nozzle_warning(); } - //lcd_return_to_status(); } //wrapper functions for loading filament From 8e51b37d91418e565f2de5da883c9338e827796a Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 16:57:20 +0100 Subject: [PATCH 20/41] Suppress warning: unused parameter. --- Firmware/timer02.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/timer02.c b/Firmware/timer02.c index 827299be1..8309f9401 100644 --- a/Firmware/timer02.c +++ b/Firmware/timer02.c @@ -157,12 +157,12 @@ void delay2(unsigned long ms) } } -void tone2(uint8_t _pin, unsigned int frequency/*, unsigned long duration*/) +void tone2(__attribute__((unused)) uint8_t _pin, __attribute__((unused)) unsigned int frequency/*, unsigned long duration*/) { PIN_SET(BEEPER); } -void noTone2(uint8_t _pin) +void noTone2(__attribute__((unused)) uint8_t _pin) { PIN_CLR(BEEPER); } From a964f996fa895cfb41274daa54555235efe58a55 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 17:08:36 +0100 Subject: [PATCH 21/41] Fix compiler warning: variable 'kill_message' set but not used kill_message is unused since: Author: MRprusa3d Date: 4 months ago (11/2/2018 11:03:14 PM) Commit hash: 73794b56cf532cb4193a6c80082652351509677a MeshBed Leveling Fail Z-leveling after MeshBed leveling failing --- Firmware/Marlin_main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 68292d90c..1fc5a1692 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4461,7 +4461,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } #endif // SUPPORT_VERBOSITY int l_feedmultiply = setup_for_endstop_move(false); //save feedrate and feedmultiply, sets feedmultiply to 100 - const char *kill_message = NULL; + while (mesh_point != nMeasPoints * nMeasPoints) { // Get coords of a measuring point. uint8_t ix = mesh_point % nMeasPoints; // from 0 to MESH_NUM_X_POINTS - 1 @@ -4511,15 +4511,15 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) // Go down until endstop is hit const float Z_CALIBRATION_THRESHOLD = 1.f; if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f, nProbeRetry)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point - kill_message = _T(MSG_BED_LEVELING_FAILED_POINT_LOW); + //Bed leveling failed. Sensor didnt trigger. Debris on nozzle? break; } if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) { - kill_message = _i("Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset.");////MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 + //Bed leveling failed. Sensor disconnected or cable broken. break; } if (has_z && fabs(z0 - current_position[Z_AXIS]) > Z_CALIBRATION_THRESHOLD) { //if we have data from z calibration, max. allowed difference is 1mm for each point - kill_message = _i("Bed leveling failed. Sensor triggered too high. Waiting for reset.");////MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 + //Bed leveling failed. Sensor triggered too high. break; } #ifdef SUPPORT_VERBOSITY From 4c2d4fcf773db0eda897e88c597546a5d1bfde13 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 17:18:05 +0100 Subject: [PATCH 22/41] Fix compiler warning ultralcd.cpp:4038:10: warning: unused variable 'chars --- Firmware/ultralcd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2f0cb7852..d9b6677c9 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4035,7 +4035,6 @@ static void lcd_print_state(uint8_t state) static void lcd_show_sensors_state() { //0: N/A; 1: OFF; 2: ON - uint8_t chars = 0; uint8_t pinda_state = STATE_NA; uint8_t finda_state = STATE_NA; uint8_t idler_state = STATE_NA; From 57cf7ee171fb7f1bc8471c3a7f6fc64c42d21c65 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 17:21:13 +0100 Subject: [PATCH 23/41] Fix compiler warning: 'lcd_selftest_fsensor' defined but not used --- Firmware/ultralcd.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d9b6677c9..c54a7af90 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -186,7 +186,9 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite); #ifdef FANCHECK static bool lcd_selftest_fan_dialog(int _fan); #endif //FANCHECK +#ifdef PAT9125 static bool lcd_selftest_fsensor(); +#endif //PAT9125 static bool selftest_irsensor(); static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); static void lcd_colorprint_change(); @@ -7494,6 +7496,7 @@ static void lcd_selftest_error(int _error_no, const char *_error_1, const char * } #ifdef FILAMENT_SENSOR +#ifdef PAT9125 static bool lcd_selftest_fsensor(void) { fsensor_init(); @@ -7503,6 +7506,7 @@ static bool lcd_selftest_fsensor(void) } return (!fsensor_not_responding); } +#endif //PAT9125 //! @brief Self-test of infrared barrier filament sensor mounted on MK3S with MMUv2 printer //! From 824d11e4b0432b6900f40e4dfdf9bb88d2b4c867 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 17:43:28 +0100 Subject: [PATCH 24/41] Remove "Press the knob to eject filament" message, as it is never shown. --- Firmware/ultralcd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c54a7af90..2024bb029 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2344,7 +2344,6 @@ switch(eFilamentAction) lcd_puts_P(_i("to unload filament")); ////MSG_ c=20 r=1 break; case e_FILAMENT_ACTION_mmuEject: - lcd_puts_P(_i("to eject filament")); ////MSG_ c=20 r=1 break; } if(lcd_clicked()) From 83e07b5cdf4dd8ea705fe4a882ab31c9029b058a Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 18:07:19 +0100 Subject: [PATCH 25/41] Fix compiler warnings: sketch/ultralcd.cpp: In function 'void mFilamentPrompt()': sketch/ultralcd.cpp:2335:7: warning: enumeration value 'e_FILAMENT_ACTION_none' not handled in switch [-Wswitch] switch(eFilamentAction) ^ sketch/ultralcd.cpp:2335:7: warning: enumeration value 'e_FILAMENT_ACTION_mmuCut' not handled in switch [-Wswitch] sketch/ultralcd.cpp:2359:12: warning: enumeration value 'e_FILAMENT_ACTION_none' not handled in switch [-Wswitch] switch(eFilamentAction) ^ sketch/ultralcd.cpp:2359:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuLoad' not handled in switch [-Wswitch] sketch/ultralcd.cpp:2359:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuUnLoad' not handled in switch [-Wswitch] sketch/ultralcd.cpp:2359:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuEject' not handled in switch [-Wswitch] sketch/ultralcd.cpp:2359:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuCut' not handled in switch [-Wswitch] sketch/ultralcd.cpp: In function 'void mFilamentItem(uint16_t, uint16_t)': sketch/ultralcd.cpp:2513:12: warning: enumeration value 'e_FILAMENT_ACTION_none' not handled in switch [-Wswitch] switch(eFilamentAction) ^ sketch/ultralcd.cpp:2513:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuCut' not handled in switch [-Wswitch] sketch/ultralcd.cpp:2562:12: warning: enumeration value 'e_FILAMENT_ACTION_none' not handled in switch [-Wswitch] switch(eFilamentAction) ^ sketch/ultralcd.cpp:2562:12: warning: enumeration value 'e_FILAMENT_ACTION_mmuCut' not handled in switch [-Wswitch] --- Firmware/ultralcd.cpp | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2024bb029..9fd7d6528 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2344,6 +2344,8 @@ switch(eFilamentAction) lcd_puts_P(_i("to unload filament")); ////MSG_ c=20 r=1 break; case e_FILAMENT_ACTION_mmuEject: + case e_FILAMENT_ACTION_mmuCut: + case e_FILAMENT_ACTION_none: break; } if(lcd_clicked()) @@ -2357,38 +2359,23 @@ if(lcd_clicked()) menu_back(nLevel); switch(eFilamentAction) { - case e_FILAMENT_ACTION_Load: case e_FILAMENT_ACTION_autoLoad: + eFilamentAction=e_FILAMENT_ACTION_none; // i.e. non-autoLoad + // no break + case e_FILAMENT_ACTION_Load: loading_flag=true; enquecommand_P(PSTR("M701")); // load filament break; case e_FILAMENT_ACTION_unLoad: enquecommand_P(PSTR("M702")); // unload filament break; -/* case e_FILAMENT_ACTION_mmuLoad: -//./ MYSERIAL.println("mFilamentPrompt - mmuLoad"); - bFilamentAction=true; - menu_submenu(mmu_load_to_nozzle_menu); - break; -*/ -/* case e_FILAMENT_ACTION_mmuUnLoad: -//./ MYSERIAL.println("mFilamentPrompt - mmuUnLoad"); - bFilamentAction=true; - extr_unload(); - break; -*/ -/* case e_FILAMENT_ACTION_mmuEject: - MYSERIAL.println("mFilamentPrompt - mmuEject"); - bFilamentAction=true; -// menu_submenu(mmu_fil_eject_menu); + case e_FILAMENT_ACTION_mmuCut: + case e_FILAMENT_ACTION_none: break; -*/ } - if(eFilamentAction==e_FILAMENT_ACTION_autoLoad) - eFilamentAction=e_FILAMENT_ACTION_none; // i.e. non-autoLoad } } From 6437d449910965437fe7e69aac8499f3fdff9161 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 18:10:06 +0100 Subject: [PATCH 26/41] Fix unable to cut filament, if nozzle is already preheated. --- Firmware/ultralcd.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2f0cb7852..ee98dc51d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2547,6 +2547,14 @@ if(current_temperature[0]>(target_temperature[0]*0.95)) menu_back(nLevel); menu_submenu(mmu_fil_eject_menu); break; + case e_FILAMENT_ACTION_mmuCut: + nLevel=bFilamentPreheatState?1:2; + bFilamentAction=true; + menu_back(nLevel); + menu_submenu(mmu_cut_filament_menu); + break; + case e_FILAMENT_ACTION_none: + break; } if(bFilamentWaitingFlag) Sound_MakeSound(e_SOUND_TYPE_StandardPrompt); From 9e38b1e101f0da37469c4374cc3f6e7bb22aee73 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 1 Mar 2019 18:17:08 +0100 Subject: [PATCH 27/41] Add missing message "Preheating to cut". --- Firmware/ultralcd.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ee98dc51d..da1fc11e3 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2579,6 +2579,11 @@ else { case e_FILAMENT_ACTION_mmuEject: lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1 break; + case e_FILAMENT_ACTION_mmuCut: + lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1 + break; + case e_FILAMENT_ACTION_none: + break; } lcd_set_cursor(0,3); lcd_puts_P(_i(">Cancel")); ////MSG_ c=20 r=1 From b02ca18c93c4fbf0e9387cffd8b0e943d276b0b4 Mon Sep 17 00:00:00 2001 From: MRprusa3d Date: Mon, 4 Mar 2019 12:52:35 +0100 Subject: [PATCH 28/41] better autoLoad autoLoad inhibit if Support::ExtruderInfo-menu is selected --- Firmware/Marlin_main.cpp | 2 +- Firmware/ultralcd.cpp | 4 ++-- Firmware/ultralcd.h | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b0f1e633e..612b1795f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7483,7 +7483,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s if (mmu_enabled == false) { //-// if (mcode_in_progress != 600) //M600 not in progress - if ((mcode_in_progress != 600) && (eFilamentAction != e_FILAMENT_ACTION_autoLoad)) //M600 not in progress, preHeat @ autoLoad menu not active + if ((mcode_in_progress != 600) && (eFilamentAction != e_FILAMENT_ACTION_autoLoad) && (menu_menu!=lcd_menu_extruder_info)) //M600 not in progress, preHeat @ autoLoad menu not active, Support::ExtruderInfo menu not active { if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL) && !wizard_active) { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5a04796f7..c6e1d8e23 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -133,7 +133,7 @@ static void prusa_stat_farm_number(); static void prusa_stat_temperatures(); static void prusa_stat_printinfo(); static void lcd_farm_no(); -static void lcd_menu_extruder_info(); +void lcd_menu_extruder_info(); // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") static void lcd_menu_xyz_y_min(); static void lcd_menu_xyz_skew(); static void lcd_menu_xyz_offset(); @@ -1899,7 +1899,7 @@ void lcd_cooldown() } -static void lcd_menu_extruder_info() +void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") { //|01234567890123456789| //|Nozzle FAN: RPM| diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index c407bbed3..affd7b0b5 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -45,6 +45,8 @@ extern bool lcd_selftest(); void lcd_menu_statistics(); +void lcd_menu_extruder_info(); // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") + extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); extern const char* lcd_display_message_fullscreen_P(const char *msg); From 8812d405462258fe27bd262b7901b8fbebfe68d8 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 4 Mar 2019 15:05:14 +0100 Subject: [PATCH 29/41] Revert "Fix compiler warning: variable 'kill_message' set but not used" This reverts commit a964f996fa895cfb41274daa54555235efe58a55. --- Firmware/Marlin_main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1fc5a1692..68292d90c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4461,7 +4461,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } #endif // SUPPORT_VERBOSITY int l_feedmultiply = setup_for_endstop_move(false); //save feedrate and feedmultiply, sets feedmultiply to 100 - + const char *kill_message = NULL; while (mesh_point != nMeasPoints * nMeasPoints) { // Get coords of a measuring point. uint8_t ix = mesh_point % nMeasPoints; // from 0 to MESH_NUM_X_POINTS - 1 @@ -4511,15 +4511,15 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) // Go down until endstop is hit const float Z_CALIBRATION_THRESHOLD = 1.f; if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f, nProbeRetry)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point - //Bed leveling failed. Sensor didnt trigger. Debris on nozzle? + kill_message = _T(MSG_BED_LEVELING_FAILED_POINT_LOW); break; } if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) { - //Bed leveling failed. Sensor disconnected or cable broken. + kill_message = _i("Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset.");////MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4 break; } if (has_z && fabs(z0 - current_position[Z_AXIS]) > Z_CALIBRATION_THRESHOLD) { //if we have data from z calibration, max. allowed difference is 1mm for each point - //Bed leveling failed. Sensor triggered too high. + kill_message = _i("Bed leveling failed. Sensor triggered too high. Waiting for reset.");////MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4 break; } #ifdef SUPPORT_VERBOSITY From 7f92d73a40152d2c6907ba004e04a61316aca1ad Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 4 Mar 2019 17:04:22 +0100 Subject: [PATCH 30/41] MMU_STEALTH_MODE -> MMU_FORCE_STEALTH_MODE; activate_stealth_mode() function update --- Firmware/mmu.cpp | 15 +++++++-------- .../variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index d1be76d4c..522322650 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -183,14 +183,13 @@ bool check_for_ir_sensor() static bool activate_stealth_mode() { - bool activate_stealth_mode = false; -#ifdef SILENT_MODE_STEALTH - activate_stealth_mode = (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_STEALTH); -#endif //SILENT_MODE_STEALTH -#ifdef MMU_STEALTH_MODE - activate_stealth_mode = true; -#endif //MMU_STEALTH_MODE - return activate_stealth_mode; +#if defined (MMU_FORCE_STEALTH_MODE) + return true; +#elif defined (SILENT_MODE_STEALTH) + return (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_STEALTH); +#else + return false; +#endif } //mmu main loop - state machine processing diff --git a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h index dd836b69a..40a3a229b 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h @@ -498,7 +498,7 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -#define MMU_STEALTH_MODE +#define MMU_FORCE_STEALTH_MODE #define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 9715aa7d9..e316c4f02 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -499,7 +499,7 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -#define MMU_STEALTH_MODE +#define MMU_FORCE_STEALTH_MODE #define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h index b814d1cbb..d3badf6aa 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h @@ -498,7 +498,7 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -#define MMU_STEALTH_MODE +#define MMU_FORCE_STEALTH_MODE #define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning diff --git a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h index 3f38a286f..2563f848a 100644 --- a/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h @@ -499,7 +499,7 @@ //#define SUPPORT_VERBOSITY #define MMU_REQUIRED_FW_BUILDNR 132 -#define MMU_STEALTH_MODE +#define MMU_FORCE_STEALTH_MODE #define MMU_DEBUG //print communication between MMU2 and printer on serial #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning From 23859921b9b52d7afedf1e697833644d9155abc8 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 15:56:20 +0100 Subject: [PATCH 31/41] Fix compiler warnings macro redefined. --- Firmware/pins.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Firmware/pins.h b/Firmware/pins.h index a0b6f462f..5d3b4f832 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -3,20 +3,6 @@ #include "boards.h" -#if !MB(5DPRINT) -#define X_MS1_PIN -1 -#define X_MS2_PIN -1 -#define Y_MS1_PIN -1 -#define Y_MS2_PIN -1 -#define Z_MS1_PIN -1 -#define Z_MS2_PIN -1 -#define E0_MS1_PIN -1 -#define E0_MS2_PIN -1 -#define E1_MS1_PIN -1 -#define E1_MS2_PIN -1 -#define DIGIPOTSS_PIN -1 -#endif - #define LARGE_FLASH true /***************************************************************** From f1031d23024af2edce948c0d1a5265b914be54da Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 5 Mar 2019 16:00:50 +0100 Subject: [PATCH 32/41] new farm statuses for pause (14) and wait for user (15) --- Firmware/ultralcd.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ccf037f57..d7b9b1b4b 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4080,7 +4080,25 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { { case 0: // default message - if (IS_SD_PRINTING) + if (busy_state == PAUSED_FOR_USER) + { + SERIAL_ECHO("{"); + prusa_stat_printerstatus(15); + prusa_stat_farm_number(); + prusa_stat_printinfo(); + SERIAL_ECHOLN("}"); + status_number = 15; + } + else if (isPrintPaused || card.paused) + { + SERIAL_ECHO("{"); + prusa_stat_printerstatus(14); + prusa_stat_farm_number(); + prusa_stat_printinfo(); + SERIAL_ECHOLN("}"); + status_number = 14; + } + else if (IS_SD_PRINTING) { SERIAL_ECHO("{"); prusa_stat_printerstatus(4); From 5b9e7c4fe7359c6eeb173e232ef19e040056fd69 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 16:27:47 +0100 Subject: [PATCH 33/41] Fix warning: assignment makes pointer from integer without a cast. --- Firmware/language.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/language.c b/Firmware/language.c index 3c168638e..c4b501b97 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -77,7 +77,7 @@ uint8_t lang_select(uint8_t lang) if (lang_check(table)) if (pgm_read_dword(((uint32_t*)(table + 12))) == pgm_read_dword(((uint32_t*)(_PRI_LANG_SIGNATURE)))) //signature valid { - lang_table = table; // set table pointer + lang_table = (lang_table_t*)table; // set table pointer lang_selected = lang; // set language id } } @@ -157,7 +157,7 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off if (lang == LANG_ID_SEC) { uint16_t ui = _SEC_LANG_TABLE; //table pointer - memcpy_P(header, ui, sizeof(lang_table_header_t)); //read table header from progmem + memcpy_P(header, (lang_table_header_t*)ui, sizeof(lang_table_header_t)); //read table header from progmem if (offset) *offset = ui; return (header->magic == LANG_MAGIC)?1:0; //return 1 if magic valid } From 790ae9f0cec7cfed2e730f9a66afe45c3810d03e Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 16:41:41 +0100 Subject: [PATCH 34/41] Fix compiler warning: unused parameter 'pstep'. --- Firmware/Marlin.h | 7 ++++++- Firmware/Marlin_main.cpp | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 2d469a764..df64338df 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -297,9 +297,14 @@ extern float min_pos[3]; extern float max_pos[3]; extern bool axis_known_position[3]; extern int fanSpeed; -extern void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0); extern int8_t lcd_change_fil_state; +#ifdef TMC2130 +void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0); +#else +void homeaxis(int axis, uint8_t cnt = 1); +#endif //TMC2130 + #ifdef FAN_SOFT_PWM extern unsigned char fanSpeedSoftPwm; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d14226f36..671afe21f 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2126,7 +2126,11 @@ bool calibrate_z_auto() } #endif //TMC2130 +#ifdef TMC2130 void homeaxis(int axis, uint8_t cnt, uint8_t* pstep) +#else +void homeaxis(int axis, uint8_t cnt) +#endif //TMC2130 { bool endstops_enabled = enable_endstops(true); //RP: endstops should be allways enabled durring homing #define HOMEAXIS_DO(LETTER) \ From ebfd4b2f4712b4e1be6e094fe86fe294f559fc36 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 17:02:57 +0100 Subject: [PATCH 35/41] Fix compiler warning: unused parameter 'calib' --- Firmware/Marlin.h | 2 -- Firmware/Marlin_main.cpp | 24 +++++++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index df64338df..9706cfbb9 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -483,8 +483,6 @@ void force_high_power_mode(bool start_high_power_section); #endif //TMC2130 // G-codes -void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl); -void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis); bool gcode_M45(bool onlyZ, int8_t verbosity_level); void gcode_M114(); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 671afe21f..73e5aa610 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2439,11 +2439,12 @@ void force_high_power_mode(bool start_high_power_section) { } #endif //TMC2130 -void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis) { - gcode_G28(home_x_axis, 0, home_y_axis, 0, home_z_axis, 0, false, true); -} - -void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl) { +#ifdef TMC2130 +static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl) +#else +static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool without_mbl) +#endif //TMC2130 +{ st_synchronize(); #if 0 @@ -2728,6 +2729,15 @@ void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_ #endif } +static void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis) +{ +#ifdef TMC2130 + gcode_G28(home_x_axis, 0, home_y_axis, 0, home_z_axis, 0, false, true); +#else + gcode_G28(home_x_axis, 0, home_y_axis, 0, home_z_axis, 0, true); +#endif //TMC2130 +} + void adjust_bed_reset() { eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); @@ -3834,8 +3844,12 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) home_z_value = code_value_long(); bool without_mbl = code_seen('W'); // calibrate? +#ifdef TMC2130 bool calib = code_seen('C'); gcode_G28(home_x, home_x_value, home_y, home_y_value, home_z, home_z_value, calib, without_mbl); +#else + gcode_G28(home_x, home_x_value, home_y, home_y_value, home_z, home_z_value, without_mbl); +#endif //TMC2130 if ((home_x || home_y || without_mbl || home_z) == false) { // Push the commands to the front of the message queue in the reverse order! // There shall be always enough space reserved for these commands. From 7bcd54f8badf1faad5cb7bf91afbd72dc8324912 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 17:30:27 +0100 Subject: [PATCH 36/41] Add missing function prototype. --- Firmware/Marlin_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 73e5aa610..52e1e3567 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -407,6 +407,7 @@ static void get_arc_coordinates(); static bool setTargetedHotend(int code, uint8_t &extruder); static void print_time_remaining_init(); static void wait_for_heater(long codenum, uint8_t extruder); +static void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis); uint16_t gcode_in_progress = 0; uint16_t mcode_in_progress = 0; From 28f1e309a240e0433a6ebb002b2ccbe1f6150cf4 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 17:44:47 +0100 Subject: [PATCH 37/41] Fix compiler warning: 'old_x_max_endstop' defined but not used Fix compiler warning: 'old_y_max_endstop' defined but not used --- Firmware/stepper.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index bb5d22f75..c21a4e9f1 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -92,10 +92,15 @@ bool abort_on_endstop_hit = false; int motor_current_setting_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD; #endif -static bool old_x_min_endstop=false; +#if ( (defined(X_MAX_PIN) && (X_MAX_PIN > -1)) || defined(TMC2130_SG_HOMING) ) && !defined(DEBUG_DISABLE_XMAXLIMIT) static bool old_x_max_endstop=false; -static bool old_y_min_endstop=false; +#endif +#if ( (defined(Y_MAX_PIN) && (Y_MAX_PIN > -1)) || defined(TMC2130_SG_HOMING) ) && !defined(DEBUG_DISABLE_YMAXLIMIT) static bool old_y_max_endstop=false; +#endif + +static bool old_x_min_endstop=false; +static bool old_y_min_endstop=false; static bool old_z_min_endstop=false; static bool old_z_max_endstop=false; From 484259cbb2447f4fd82e07f62984c0e5ff23c520 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 18:00:16 +0100 Subject: [PATCH 38/41] Fix compiler warning: 'lcd_settings_linearity_correction_menu_save' defined but not used --- Firmware/ultralcd.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ccf037f57..5c7e96932 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5404,10 +5404,9 @@ static void lcd_ustep_linearity_menu_save() } #endif //TMC2130 - +#ifdef TMC2130 static void lcd_settings_linearity_correction_menu_save() { -#ifdef TMC2130 bool changed = false; if (tmc2130_wave_fac[X_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[X_AXIS] = 0; if (tmc2130_wave_fac[Y_AXIS] < TMC2130_WAVE_FAC1000_MIN) tmc2130_wave_fac[Y_AXIS] = 0; @@ -5419,9 +5418,8 @@ static void lcd_settings_linearity_correction_menu_save() changed |= (eeprom_read_byte((uint8_t*)EEPROM_TMC2130_WAVE_E_FAC) != tmc2130_wave_fac[E_AXIS]); lcd_ustep_linearity_menu_save(); if (changed) tmc2130_init(); -#endif //TMC2130 } - +#endif //TMC2130 static void lcd_calibration_menu() { From 7fcecabd5fdfea446fea7f880586d2b717642382 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 18:04:58 +0100 Subject: [PATCH 39/41] Fix compiler warning: variable 'previous_millis_cmd' set but not used --- Firmware/ultralcd.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5c7e96932..7c122c0f5 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3518,7 +3518,6 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) // Until confirmed by the confirmation dialog. for (;;) { - unsigned long previous_millis_cmd = _millis(); const char *msg = only_z ? _i("Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done.") : _i("Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done.");////MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8////MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 const char *msg_next = lcd_display_message_fullscreen_P(msg); const bool multi_screen = msg_next != NULL; @@ -3527,13 +3526,10 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) lcd_encoder_diff = 0; lcd_encoder = 0; for (;;) { -// if (_millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) -// goto canceled; manage_heater(); manage_inactivity(true); if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) { _delay(50); - previous_millis_cmd = _millis(); lcd_encoder += abs(lcd_encoder_diff / ENCODER_PULSES_PER_STEP); lcd_encoder_diff = 0; if (! planner_queue_full()) { From 1eab058ad46ae9e4943a49f326bf259f756b2dab Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 5 Mar 2019 18:08:35 +0100 Subject: [PATCH 40/41] Fix uninitialized variable used. --- Firmware/ultralcd.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7c122c0f5..9b25d0b49 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6802,8 +6802,7 @@ bool lcd_selftest() _result = lcd_selftest_manual_fan_check(1, false); if (!_result) { - const char *_err; - lcd_selftest_error(6, _err, _err); //print fan not spinning + lcd_selftest_error(6, 0, 0); //print fan not spinning } #endif //defined(TACH_1) From f0cc313fede4c15233fa90a0be6c8d07dc521c26 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 6 Mar 2019 19:56:48 +0100 Subject: [PATCH 41/41] debug gcodes (fans, bed analysis) moved to Dcodes, HOST_KEEPALIVE_FEATURE simplified --- Firmware/Configuration.h | 2 + Firmware/Marlin.h | 14 +- Firmware/Marlin_main.cpp | 316 +++++++++++++++--- Firmware/pins_Rambo_1_3.h | 6 + Firmware/temperature.cpp | 2 - .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 3 + 6 files changed, 279 insertions(+), 64 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index c21325c77..a64e90a14 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -446,7 +446,9 @@ your extruder heater takes 2 minutes to hit the target on heating. // When enabled Marlin will send a busy status message to the host // every couple of seconds when it can't accept commands. // +#ifndef HEATBED_ANALYSIS #define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages +#endif //HEATBED_ANALYSIS #define HOST_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. //LCD and SD support diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 2d469a764..ef342b0cb 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -311,9 +311,9 @@ extern float retract_length_swap; extern float retract_recover_length_swap; #endif -#ifdef HOST_KEEPALIVE_FEATURE + extern uint8_t host_keepalive_interval; -#endif + extern unsigned long starttime; extern unsigned long stoptime; @@ -397,13 +397,12 @@ extern void check_babystep(); extern void long_pause(); extern void crashdet_stop_and_save_print(); -#ifdef DIS - +#ifdef HEATBED_ANALYSIS void d_setup(); float d_ReadData(); void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y); - -#endif +void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y); +#endif //HEATBED_ANALYSIS float temp_comp_interpolation(float temperature); void temp_compensation_apply(); void temp_compensation_start(); @@ -443,7 +442,7 @@ extern void restore_print_from_ram_and_continue(float e_move); extern uint16_t print_time_remaining(); extern uint8_t calc_percent_done(); -#ifdef HOST_KEEPALIVE_FEATURE + // States for managing Marlin and host communication // Marlin sends messages if blocked or busy @@ -466,7 +465,6 @@ extern void host_keepalive(); //extern MarlinBusyState busy_state; extern int busy_state; -#endif //HOST_KEEPALIVE_FEATURE #ifdef TMC2130 diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d14226f36..53e842887 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -302,16 +302,9 @@ int fanSpeed=0; bool cancel_heatup = false ; -#ifdef HOST_KEEPALIVE_FEATURE - - int busy_state = NOT_BUSY; - static long prev_busy_signal_ms = -1; - uint8_t host_keepalive_interval = HOST_KEEPALIVE_INTERVAL; -#else - #define host_keepalive(); - #define KEEPALIVE_STATE(n); -#endif - +int busy_state = NOT_BUSY; +static long prev_busy_signal_ms = -1; +uint8_t host_keepalive_interval = HOST_KEEPALIVE_INTERVAL; const char errormagic[] PROGMEM = "Error:"; const char echomagic[] PROGMEM = "echo:"; @@ -1696,12 +1689,14 @@ void serial_read_stream() { } } -#ifdef HOST_KEEPALIVE_FEATURE /** * Output a "busy" message at regular intervals * while the machine is not accepting commands. */ void host_keepalive() { +#ifndef HOST_KEEPALIVE_FEATURE + return; +#endif //HOST_KEEPALIVE_FEATURE if (farm_mode) return; long ms = _millis(); if (host_keepalive_interval && busy_state != NOT_BUSY) { @@ -1726,7 +1721,7 @@ void host_keepalive() { } prev_busy_signal_ms = ms; } -#endif + // The loop() function is called in an endless loop by the Arduino framework from the default main() routine. // Before loop(), the setup() function is called by the main() routine. @@ -4295,44 +4290,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; -#ifdef DIS - case 77: - { - //! G77 X200 Y150 XP100 YP15 XO10 Y015 - //! for 9 point mesh bed leveling G77 X203 Y196 XP3 YP3 XO0 YO0 - //! G77 X232 Y218 XP116 YP109 XO-11 YO0 - float dimension_x = 40; - float dimension_y = 40; - int points_x = 40; - int points_y = 40; - float offset_x = 74; - float offset_y = 33; - - if (code_seen('X')) dimension_x = code_value(); - if (code_seen('Y')) dimension_y = code_value(); - if (code_seen("XP")) { strchr_pointer+=1; points_x = code_value(); } - if (code_seen("YP")) { strchr_pointer+=1; points_y = code_value(); } - if (code_seen("XO")) { strchr_pointer+=1; offset_x = code_value(); } - if (code_seen("YO")) { strchr_pointer+=1; offset_y = code_value(); } - - bed_analysis(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y); - - } break; - -#endif - - case 79: { - for (int i = 255; i > 0; i = i - 5) { - fanSpeed = i; - //delay_keep_alive(2000); - for (int j = 0; j < 100; j++) { - delay_keep_alive(100); - - } - printf_P(_N("%d: %d\n"), i, fan_speed[1]); - } - }break; /** * G80: Mesh-based Z probe, probes a grid and produces a @@ -5792,7 +5750,6 @@ Sigma_Exit: if (code_seen('N')) gcode_LastN = code_value_long(); break; -#ifdef HOST_KEEPALIVE_FEATURE case 113: // M113 - Get or set Host Keepalive interval if (code_seen('S')) { host_keepalive_interval = (uint8_t)code_value_short(); @@ -5804,7 +5761,6 @@ Sigma_Exit: SERIAL_PROTOCOLLN(""); } break; -#endif case 115: // M115 if (code_seen('V')) { // Report the Prusa version number. @@ -7138,7 +7094,66 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) dcode_9(); break; case 10: //! D10 - XYZ calibration = OK dcode_10(); break; - +#endif //DEBUG_DCODES +#ifdef HEATBED_ANALYSIS + case 80: + { + float dimension_x = 40; + float dimension_y = 40; + int points_x = 40; + int points_y = 40; + float offset_x = 74; + float offset_y = 33; + + if (code_seen('E')) dimension_x = code_value(); + if (code_seen('F')) dimension_y = code_value(); + if (code_seen('G')) {points_x = code_value(); } + if (code_seen('H')) {points_y = code_value(); } + if (code_seen('I')) {offset_x = code_value(); } + if (code_seen('J')) {offset_y = code_value(); } + printf_P(PSTR("DIM X: %f\n"), dimension_x); + printf_P(PSTR("DIM Y: %f\n"), dimension_y); + printf_P(PSTR("POINTS X: %d\n"), points_x); + printf_P(PSTR("POINTS Y: %d\n"), points_y); + printf_P(PSTR("OFFSET X: %f\n"), offset_x); + printf_P(PSTR("OFFSET Y: %f\n"), offset_y); + bed_check(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y); + }break; + + case 81: + { + float dimension_x = 40; + float dimension_y = 40; + int points_x = 40; + int points_y = 40; + float offset_x = 74; + float offset_y = 33; + + if (code_seen('E')) dimension_x = code_value(); + if (code_seen('F')) dimension_y = code_value(); + if (code_seen("G")) { strchr_pointer+=1; points_x = code_value(); } + if (code_seen("H")) { strchr_pointer+=1; points_y = code_value(); } + if (code_seen("I")) { strchr_pointer+=1; offset_x = code_value(); } + if (code_seen("J")) { strchr_pointer+=1; offset_y = code_value(); } + + bed_analysis(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y); + + } break; + +#endif //HEATBED_ANALYSIS +#ifdef DEBUG_DCODES + case 106: //D106 print measured fan speed for different pwm values + { + for (int i = 255; i > 0; i = i - 5) { + fanSpeed = i; + //delay_keep_alive(2000); + for (int j = 0; j < 100; j++) { + delay_keep_alive(100); + + } + printf_P(_N("%d: %d\n"), i, fan_speed[1]); + } + }break; #ifdef TMC2130 case 2130: //! D2130 - TMC2130 @@ -7934,7 +7949,7 @@ void check_babystep() lcd_update_enable(true); } } -#ifdef DIS +#ifdef HEATBED_ANALYSIS void d_setup() { pinMode(D_DATACLOCK, INPUT_PULLUP); @@ -7984,6 +7999,199 @@ float d_ReadData() } +void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y) { + int t1 = 0; + int t_delay = 0; + int digit[13]; + int m; + char str[3]; + //String mergeOutput; + char mergeOutput[15]; + float output; + + int mesh_point = 0; //index number of calibration point + float bed_zero_ref_x = (-22.f + X_PROBE_OFFSET_FROM_EXTRUDER); //shift between zero point on bed and target and between probe and nozzle + float bed_zero_ref_y = (-0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER); + + float mesh_home_z_search = 4; + float measure_z_heigth = 0.2f; + float row[x_points_num]; + int ix = 0; + int iy = 0; + + const char* filename_wldsd = "mesh.txt"; + char data_wldsd[x_points_num * 7 + 1]; //6 chars(" -A.BCD")for each measurement + null + char numb_wldsd[8]; // (" -A.BCD" + null) +#ifdef MICROMETER_LOGGING + d_setup(); +#endif //MICROMETER_LOGGING + + int XY_AXIS_FEEDRATE = homing_feedrate[X_AXIS] / 20; + int Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 40; + + unsigned int custom_message_type_old = custom_message_type; + unsigned int custom_message_state_old = custom_message_state; + custom_message_type = CUSTOM_MSG_TYPE_MESHBL; + custom_message_state = (x_points_num * y_points_num) + 10; + lcd_update(1); + + //mbl.reset(); + babystep_undo(); + + card.openFile(filename_wldsd, false); + + /*destination[Z_AXIS] = mesh_home_z_search; + //plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder); + + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder); + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } + st_synchronize(); + */ + destination[Z_AXIS] = measure_z_heigth; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder); + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } + st_synchronize(); + /*int l_feedmultiply = */setup_for_endstop_move(false); + + SERIAL_PROTOCOLPGM("Num X,Y: "); + SERIAL_PROTOCOL(x_points_num); + SERIAL_PROTOCOLPGM(","); + SERIAL_PROTOCOL(y_points_num); + SERIAL_PROTOCOLPGM("\nZ search height: "); + SERIAL_PROTOCOL(mesh_home_z_search); + SERIAL_PROTOCOLPGM("\nDimension X,Y: "); + SERIAL_PROTOCOL(x_dimension); + SERIAL_PROTOCOLPGM(","); + SERIAL_PROTOCOL(y_dimension); + SERIAL_PROTOCOLLNPGM("\nMeasured points:"); + + while (mesh_point != x_points_num * y_points_num) { + ix = mesh_point % x_points_num; // from 0 to MESH_NUM_X_POINTS - 1 + iy = mesh_point / x_points_num; + if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag + float z0 = 0.f; + /*destination[Z_AXIS] = mesh_home_z_search; + //plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder); + + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder); + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } + st_synchronize();*/ + + + //current_position[X_AXIS] = 13.f + ix * (x_dimension / (x_points_num - 1)) - bed_zero_ref_x + shift_x; + //current_position[Y_AXIS] = 6.4f + iy * (y_dimension / (y_points_num - 1)) - bed_zero_ref_y + shift_y; + + destination[X_AXIS] = ix * (x_dimension / (x_points_num - 1)) + shift_x; + destination[Y_AXIS] = iy * (y_dimension / (y_points_num - 1)) + shift_y; + + mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder); + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } + st_synchronize(); + + // printf_P(PSTR("X = %f; Y= %f \n"), current_position[X_AXIS], current_position[Y_AXIS]); + + delay_keep_alive(1000); +#ifdef MICROMETER_LOGGING + + //memset(numb_wldsd, 0, sizeof(numb_wldsd)); + //dtostrf(d_ReadData(), 8, 5, numb_wldsd); + //strcat(data_wldsd, numb_wldsd); + + + + //MYSERIAL.println(data_wldsd); + //delay(1000); + //delay(3000); + //t1 = millis(); + + //while (digitalRead(D_DATACLOCK) == LOW) {} + //while (digitalRead(D_DATACLOCK) == HIGH) {} + memset(digit, 0, sizeof(digit)); + //cli(); + digitalWrite(D_REQUIRE, LOW); + + for (int i = 0; i<13; i++) + { + //t1 = millis(); + for (int j = 0; j < 4; j++) + { + while (digitalRead(D_DATACLOCK) == LOW) {} + while (digitalRead(D_DATACLOCK) == HIGH) {} + //printf_P(PSTR("Done %d\n"), j); + bitWrite(digit[i], j, digitalRead(D_DATA)); + } + //t_delay = (millis() - t1); + //SERIAL_PROTOCOLPGM(" "); + //SERIAL_PROTOCOL_F(t_delay, 5); + //SERIAL_PROTOCOLPGM(" "); + + } + //sei(); + digitalWrite(D_REQUIRE, HIGH); + mergeOutput[0] = '\0'; + output = 0; + for (int r = 5; r <= 10; r++) //Merge digits + { + sprintf(str, "%d", digit[r]); + strcat(mergeOutput, str); + } + + output = atof(mergeOutput); + + if (digit[4] == 8) //Handle sign + { + output *= -1; + } + + for (int i = digit[11]; i > 0; i--) //Handle floating point + { + output *= 0.1; + } + + + //output = d_ReadData(); + + //row[ix] = current_position[Z_AXIS]; + + + + //row[ix] = d_ReadData(); + + row[ix] = output; + + if (iy % 2 == 1 ? ix == 0 : ix == x_points_num - 1) { + memset(data_wldsd, 0, sizeof(data_wldsd)); + for (int i = 0; i < x_points_num; i++) { + SERIAL_PROTOCOLPGM(" "); + SERIAL_PROTOCOL_F(row[i], 5); + memset(numb_wldsd, 0, sizeof(numb_wldsd)); + dtostrf(row[i], 7, 3, numb_wldsd); + strcat(data_wldsd, numb_wldsd); + } + card.write_command(data_wldsd); + SERIAL_PROTOCOLPGM("\n"); + + } + + custom_message_state--; + mesh_point++; + lcd_update(1); + + } + #endif //MICROMETER_LOGGING + card.closefile(); + //clean_up_after_endstop_move(l_feedmultiply); + +} + void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y) { int t1 = 0; int t_delay = 0; @@ -8167,7 +8375,7 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_ card.closefile(); clean_up_after_endstop_move(l_feedmultiply); } -#endif +#endif //HEATBED_ANALYSIS void temp_compensation_start() { diff --git a/Firmware/pins_Rambo_1_3.h b/Firmware/pins_Rambo_1_3.h index c1adf5969..538fb4f35 100644 --- a/Firmware/pins_Rambo_1_3.h +++ b/Firmware/pins_Rambo_1_3.h @@ -14,6 +14,12 @@ #define SWI2C_SDA 20 //SDA on P3 #define SWI2C_SCL 21 //SCL on P3 +#ifdef MICROMETER_LOGGING +#define D_DATACLOCK 24 //Y_MAX (green) +#define D_DATA 30 //X_MAX (blue) +#define D_REQUIRE 23 //Z_MAX (white) +#endif //MICROMETER_LOGGING + #define X_STEP_PIN 37 diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 4ce13bd60..d6019eebc 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -888,9 +888,7 @@ void manage_heater() } #endif -#ifdef HOST_KEEPALIVE_FEATURE host_keepalive(); -#endif } #define PGM_RD_W(x) (short)pgm_read_word(&x) diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index e316c4f02..99dd1e65a 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -504,4 +504,7 @@ #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning +//#define HEATBED_ANALYSIS //for meash bed leveling and heatbed analysis D-codes D80 and D81 +//#define MICROMETER_LOGGING //related to D-codes D80 and D81, currently works on MK2.5 only (MK3 board pin definitions missing) + #endif //__CONFIGURATION_PRUSA_H