diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 0cb5a49623..a9fbf958aa 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7309,17 +7309,17 @@ SERIAL_PROTOCOLPGM("\n\n"); // ---------------------------------------------- /*! Checks the parameters of the printer and gcode and performs compatibility check - - M862.1 [ P | Q ] - - M862.2 [ P | Q ] - - M862.3 [ P | Q ] - - M862.4 [ P | Q] - - M862.5 [ P | Q] + - M862.1 { P | Q } + - M862.2 { P | Q } + - M862.3 { P"" | Q } + - M862.4 { P | Q } + - M862.5 { P | Q } When run with P<> argument, the check is performed against the input value. When run with Q argument, the current value is shown. M862.3 accepts text identifiers of printer types too. - The syntax of M862.3 is (note the space between P and the printer type name and the quotes around the type): + The syntax of M862.3 is (note the quotes around the type): M862.3 P "MK3S" diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3bd451ed41..ac8a302fd7 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4853,9 +4853,21 @@ void lcd_wizard(WizState state) int wizard_event; const char *msg = NULL; while (!end) { - printf_P(PSTR("Wizard state: %d"), state); + printf_P(PSTR("Wizard state: %d\n"), state); switch (state) { case S::Run: //Run wizard? + + // 2019-08-07 brutal hack - solving the "viper" situation. + // It is caused by the fact, that tmc2130_st_isr makes a crash detection before the printers really starts. + // And thus it calles stop_and_save_print_to_ram which sets the saved_printing flag. + // Having this flag set during normal printing is lethal - mesh_plan_buffer_line exist in the middle of planning long travels + // which results in distorted print. + // This primarily happens when the printer is new and parked in 0,0 + // So any new printer will fail the first layer calibration unless being reset or the Stop function gets called. + // We really must find a way to prevent the crash from happening before the printer is started - that would be the correct solution. + // Btw. the flag may even trigger the viper situation on normal start this way and the user won't be able to find out why. + saved_printing = false; + wizard_active = true; wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"), false, true);////MSG_WIZARD_WELCOME c=20 r=7 if (wizard_event) { diff --git a/Firmware/util.cpp b/Firmware/util.cpp index cc8d7850a0..aa1a624da6 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -401,8 +401,11 @@ lcd_update_enable(true); // display / status-line recovery case ClCheckMode::_Undef: break; } -bSettings=false; // flag ('fake parameter') for 'lcd_hw_setup_menu()' function -menu_submenu(lcd_hw_setup_menu); +if(!farm_mode) + { + bSettings=false; // flag ('fake parameter') for 'lcd_hw_setup_menu()' function + menu_submenu(lcd_hw_setup_menu); + } } void printer_model_check(uint16_t nPrinterModel)