The following situation is now fixed, steps:
1. Load filament through LCD
2. Load to nozzle through LCD
3. Before filament reaches Fsensor => turn off the printer
4. Wait a few seconds and then turn the printer on again
5. Start a print through the SD card
6. Printer will unload and then re-load the filament

Previously in step 6, the printer would start a print without any
filament loaded.
This commit is contained in:
Guðni Már Gilbert 2022-06-11 08:27:39 +00:00 committed by D.R.racer
parent 46184a9447
commit 204b43dce4
2 changed files with 22 additions and 14 deletions

View File

@ -5448,24 +5448,32 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
### M24 - Start SD print <a href="https://reprap.org/wiki/G-code#M24:_Start.2Fresume_SD_print">M24: Start/resume SD print</a> ### M24 - Start SD print <a href="https://reprap.org/wiki/G-code#M24:_Start.2Fresume_SD_print">M24: Start/resume SD print</a>
*/ */
case 24: case 24:
if (isPrintPaused) if (isPrintPaused)
lcd_resume_print(); lcd_resume_print();
else else
{
if (!card.get_sdpos())
{ {
if (!card.get_sdpos())
{
// A new print has started from scratch, reset stats // A new print has started from scratch, reset stats
failstats_reset_print(); failstats_reset_print();
sdpos_atomic = 0; sdpos_atomic = 0;
#ifndef LA_NOCOMPAT #ifndef LA_NOCOMPAT
la10c_reset(); la10c_reset();
#endif #endif
}
card.startFileprint();
starttime=_millis();
} }
break;
card.startFileprint();
starttime=_millis();
if (MMU2::mmu2.Enabled())
{
if (MMU2::mmu2.FindaDetectsFilament() && !fsensor.getFilamentPresent())
{ // Filament only half way into the PTFE. Unload the filament.
MMU2::mmu2.unload();
// Tx and Tc gcodes take care of loading the filament to the nozzle.
}
}
}
break;
/*! /*!
### M26 - Set SD index <a href="https://reprap.org/wiki/G-code#M26:_Set_SD_position">M26: Set SD position</a> ### M26 - Set SD index <a href="https://reprap.org/wiki/G-code#M26:_Set_SD_position">M26: Set SD position</a>

View File

@ -45,7 +45,7 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) {
if (IsInvalidTCode(strchr_pointer, index)){ if (IsInvalidTCode(strchr_pointer, index)){
TCodeInvalid(); TCodeInvalid();
} /*else if (strchr_pointer[index] == 'x'){ } else if (strchr_pointer[index] == 'x'){
// load to bondtech gears; if mmu is not present do nothing // load to bondtech gears; if mmu is not present do nothing
if (MMU2::mmu2.Enabled()) { if (MMU2::mmu2.Enabled()) {
MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER))); MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER)));
@ -53,9 +53,9 @@ void TCodes(char *const strchr_pointer, uint8_t codeValue) {
} else if (strchr_pointer[index] == 'c'){ } else if (strchr_pointer[index] == 'c'){
// load from bondtech gears to nozzle (nozzle should be preheated) // load from bondtech gears to nozzle (nozzle should be preheated)
if (MMU2::mmu2.Enabled()) { if (MMU2::mmu2.Enabled()) {
MMU2::mmu2.tool_change(strchr_pointer[index], 0); MMU2::mmu2.tool_change(strchr_pointer[index], MMU2::mmu2.get_current_tool());
} }
}*/ else { } else {
SChooseFromMenu selectedSlot; SChooseFromMenu selectedSlot;
// if (strchr_pointer[index] == '?') // if (strchr_pointer[index] == '?')
// selectedSlot = TCodeChooseFromMenu(); // selectedSlot = TCodeChooseFromMenu();