Merge remote-tracking branch 'upstream/MK3' into MK3
This commit is contained in:
commit
adb5baa12b
|
|
@ -1010,6 +1010,10 @@ void setup()
|
||||||
{
|
{
|
||||||
mmu_init();
|
mmu_init();
|
||||||
|
|
||||||
|
#ifdef UVLO_SUPPORT
|
||||||
|
setup_uvlo_interrupt();
|
||||||
|
#endif //UVLO_SUPPORT
|
||||||
|
|
||||||
ultralcd_init();
|
ultralcd_init();
|
||||||
|
|
||||||
#if (LCD_BL_PIN != -1) && defined (LCD_BL_PIN)
|
#if (LCD_BL_PIN != -1) && defined (LCD_BL_PIN)
|
||||||
|
|
@ -1298,10 +1302,6 @@ void setup()
|
||||||
|
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
#ifdef UVLO_SUPPORT
|
|
||||||
setup_uvlo_interrupt();
|
|
||||||
#endif //UVLO_SUPPORT
|
|
||||||
|
|
||||||
st_init(); // Initialize stepper, this enables interrupts!
|
st_init(); // Initialize stepper, this enables interrupts!
|
||||||
|
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
|
|
@ -7090,8 +7090,14 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT)
|
||||||
|
if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||||
|
{
|
||||||
|
mmu_command(MmuCmd::K0 + tmp_extruder);
|
||||||
|
manage_response(true, true, MMU_UNLOAD_MOVE);
|
||||||
|
}
|
||||||
|
#endif //defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT)
|
||||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
|
|
||||||
manage_response(true, true, MMU_TCODE_MOVE);
|
manage_response(true, true, MMU_TCODE_MOVE);
|
||||||
mmu_continue_loading(is_usb_printing);
|
mmu_continue_loading(is_usb_printing);
|
||||||
|
|
||||||
|
|
@ -8692,7 +8698,6 @@ void serialecho_temperatures() {
|
||||||
SERIAL_PROTOCOL_F(degBed(), 1);
|
SERIAL_PROTOCOL_F(degBed(), 1);
|
||||||
SERIAL_PROTOCOLLN("");
|
SERIAL_PROTOCOLLN("");
|
||||||
}
|
}
|
||||||
|
|
||||||
extern uint32_t sdpos_atomic;
|
extern uint32_t sdpos_atomic;
|
||||||
#ifdef UVLO_SUPPORT
|
#ifdef UVLO_SUPPORT
|
||||||
|
|
||||||
|
|
@ -8856,9 +8861,11 @@ disable_z();
|
||||||
|
|
||||||
// Finaly store the "power outage" flag.
|
// Finaly store the "power outage" flag.
|
||||||
//if(sd_print)
|
//if(sd_print)
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_UVLO,2);
|
if(eeprom_read_byte((uint8_t*)EEPROM_UVLO)==1){
|
||||||
|
eeprom_update_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z), current_position[Z_AXIS]);
|
||||||
eeprom_update_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS),z_microsteps);
|
eeprom_update_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS),z_microsteps);
|
||||||
|
}
|
||||||
|
eeprom_update_byte((uint8_t*)EEPROM_UVLO,2);
|
||||||
|
|
||||||
// Increment power failure counter
|
// Increment power failure counter
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
|
eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
|
||||||
|
|
@ -8933,6 +8940,7 @@ void recover_print(uint8_t automatic) {
|
||||||
char cmd[30];
|
char cmd[30];
|
||||||
lcd_update_enable(true);
|
lcd_update_enable(true);
|
||||||
lcd_update(2);
|
lcd_update(2);
|
||||||
|
lcd_setstatuspgm(_i("Recovering print "));////MSG_RECOVERING_PRINT c=20 r=1
|
||||||
bool bTiny=(eeprom_read_byte((uint8_t*)EEPROM_UVLO)==2);
|
bool bTiny=(eeprom_read_byte((uint8_t*)EEPROM_UVLO)==2);
|
||||||
recover_machine_state_after_power_panic(bTiny); //recover position, temperatures and extrude_multipliers
|
recover_machine_state_after_power_panic(bTiny); //recover position, temperatures and extrude_multipliers
|
||||||
// Lift the print head, so one may remove the excess priming material.
|
// Lift the print head, so one may remove the excess priming material.
|
||||||
|
|
@ -8970,8 +8978,7 @@ void recover_machine_state_after_power_panic(bool bTiny)
|
||||||
// Recover the logical coordinate of the Z axis at the time of the power panic.
|
// Recover the logical coordinate of the Z axis at the time of the power panic.
|
||||||
// The current position after power panic is moved to the next closest 0th full step.
|
// The current position after power panic is moved to the next closest 0th full step.
|
||||||
if(bTiny){
|
if(bTiny){
|
||||||
current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)) +
|
current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z)) + float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS)) + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS];
|
||||||
UVLO_Z_AXIS_SHIFT + float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS)) + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS];
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)) +
|
current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)) +
|
||||||
|
|
@ -9084,7 +9091,7 @@ void restore_print_from_eeprom() {
|
||||||
strcat_P(cmd, PSTR(" F2000"));
|
strcat_P(cmd, PSTR(" F2000"));
|
||||||
enquecommand(cmd);
|
enquecommand(cmd);
|
||||||
// Move the Z axis down to the print, in logical coordinates.
|
// Move the Z axis down to the print, in logical coordinates.
|
||||||
strcpy_P(cmd, PSTR("G1 Z")); strcat(cmd, ftostr32(current_position[Z_AXIS] - (UVLO_Z_AXIS_SHIFT +
|
strcpy_P(cmd, PSTR("G1 Z")); strcat(cmd, ftostr32( eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)) - (UVLO_Z_AXIS_SHIFT +
|
||||||
float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS)) + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS])));
|
float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS)) + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS])));
|
||||||
enquecommand(cmd);
|
enquecommand(cmd);
|
||||||
// Unretract.
|
// Unretract.
|
||||||
|
|
|
||||||
|
|
@ -201,5 +201,11 @@
|
||||||
static M500_conf * const EEPROM_M500_base = reinterpret_cast<M500_conf*>(20); //offset for storing settings using M500
|
static M500_conf * const EEPROM_M500_base = reinterpret_cast<M500_conf*>(20); //offset for storing settings using M500
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
EEPROM_MMU_CUTTER_ENABLED_enabled = 1,
|
||||||
|
EEPROM_MMU_CUTTER_ENABLED_always = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // EEPROM_H
|
#endif // EEPROM_H
|
||||||
|
|
|
||||||
|
|
@ -2346,13 +2346,22 @@ void lcd_set_fan_check() {
|
||||||
#ifdef MMU_HAS_CUTTER
|
#ifdef MMU_HAS_CUTTER
|
||||||
void lcd_cutter_enabled()
|
void lcd_cutter_enabled()
|
||||||
{
|
{
|
||||||
if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||||
|
{
|
||||||
|
#ifndef MMU_ALWAYS_CUT
|
||||||
|
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0);
|
||||||
|
}
|
||||||
|
#else //MMU_ALWAYS_CUT
|
||||||
|
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, EEPROM_MMU_CUTTER_ENABLED_always);
|
||||||
|
}
|
||||||
|
else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||||
{
|
{
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0);
|
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 0);
|
||||||
}
|
}
|
||||||
|
#endif //MMU_ALWAYS_CUT
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, 1);
|
eeprom_update_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED, EEPROM_MMU_CUTTER_ENABLED_enabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //MMU_HAS_CUTTER
|
#endif //MMU_HAS_CUTTER
|
||||||
|
|
@ -5287,10 +5296,16 @@ static bool settingsCutter()
|
||||||
{
|
{
|
||||||
if (mmu_enabled)
|
if (mmu_enabled)
|
||||||
{
|
{
|
||||||
if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||||
{
|
{
|
||||||
if (menu_item_function_P(_i("Cutter [on]"), lcd_cutter_enabled)) return true;//// c=17 r=1
|
if (menu_item_function_P(_i("Cutter [on]"), lcd_cutter_enabled)) return true;//// c=17 r=1
|
||||||
}
|
}
|
||||||
|
#ifdef MMU_ALWAYS_CUT
|
||||||
|
else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||||
|
{
|
||||||
|
if (menu_item_function_P(_i("Cutter [always]"), lcd_cutter_enabled)) return true;//// c=17 r=1
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (menu_item_function_P(_i("Cutter [off]"), lcd_cutter_enabled)) return true;//// c=17 r=1
|
if (menu_item_function_P(_i("Cutter [off]"), lcd_cutter_enabled)) return true;//// c=17 r=1
|
||||||
|
|
@ -6028,11 +6043,11 @@ static void mmu_cut_filament_menu()
|
||||||
{
|
{
|
||||||
MENU_BEGIN();
|
MENU_BEGIN();
|
||||||
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
||||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '1', mmu_cut_filament, 0);
|
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '1', mmu_cut_filament, 0);
|
||||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '2', mmu_cut_filament, 1);
|
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '2', mmu_cut_filament, 1);
|
||||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '3', mmu_cut_filament, 2);
|
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '3', mmu_cut_filament, 2);
|
||||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '4', mmu_cut_filament, 3);
|
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '4', mmu_cut_filament, 3);
|
||||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FILAMENT), '5', mmu_cut_filament, 4);
|
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), '5', mmu_cut_filament, 4);
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -505,6 +505,13 @@
|
||||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||||
//#define MMU_HAS_CUTTER
|
//#define MMU_HAS_CUTTER
|
||||||
|
|
||||||
|
// This is experimental feature requested by our test department.
|
||||||
|
// There is no known use for ordinary user. If enabled by this macro
|
||||||
|
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||||
|
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||||
|
// defined.
|
||||||
|
|
||||||
|
//#define MMU_ALWAYS_CUT
|
||||||
#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 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
|
#endif //__CONFIGURATION_PRUSA_H
|
||||||
|
|
|
||||||
|
|
@ -506,6 +506,13 @@
|
||||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||||
//#define MMU_HAS_CUTTER
|
//#define MMU_HAS_CUTTER
|
||||||
|
|
||||||
|
// This is experimental feature requested by our test department.
|
||||||
|
// There is no known use for ordinary user. If enabled by this macro
|
||||||
|
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||||
|
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||||
|
// defined.
|
||||||
|
|
||||||
|
//#define MMU_ALWAYS_CUT
|
||||||
#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 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
|
#endif //__CONFIGURATION_PRUSA_H
|
||||||
|
|
|
||||||
|
|
@ -627,6 +627,14 @@
|
||||||
#define MMU_HWRESET
|
#define MMU_HWRESET
|
||||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||||
//#define MMU_HAS_CUTTER
|
//#define MMU_HAS_CUTTER
|
||||||
|
|
||||||
|
// This is experimental feature requested by our test department.
|
||||||
|
// There is no known use for ordinary user. If enabled by this macro
|
||||||
|
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||||
|
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||||
|
// defined.
|
||||||
|
|
||||||
|
//#define MMU_ALWAYS_CUT
|
||||||
#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 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
|
#endif //__CONFIGURATION_PRUSA_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue