|
|
|
@ -10271,6 +10271,31 @@ inline void invalid_extruder_error(const uint8_t e) {
|
|
|
|
|
|
|
|
|
|
#endif // PARKING_EXTRUDER
|
|
|
|
|
|
|
|
|
|
#if HAS_FANMUX
|
|
|
|
|
|
|
|
|
|
void fanmux_switch(const uint8_t e) {
|
|
|
|
|
WRITE(FANMUX0_PIN, TEST(e, 0) ? HIGH : LOW);
|
|
|
|
|
#if PIN_EXISTS(FANMUX1)
|
|
|
|
|
WRITE(FANMUX1_PIN, TEST(e, 1) ? HIGH : LOW);
|
|
|
|
|
#if PIN_EXISTS(FANMUX2)
|
|
|
|
|
WRITE(FANMUX2, TEST(e, 2) ? HIGH : LOW);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FORCE_INLINE void fanmux_init(void){
|
|
|
|
|
SET_OUTPUT(FANMUX0_PIN);
|
|
|
|
|
#if PIN_EXISTS(FANMUX1)
|
|
|
|
|
SET_OUTPUT(FANMUX1_PIN);
|
|
|
|
|
#if PIN_EXISTS(FANMUX2)
|
|
|
|
|
SET_OUTPUT(FANMUX2_PIN);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
fanmux_switch(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif // HAS_FANMUX
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Perform a tool-change, which may result in moving the
|
|
|
|
|
* previous tool out of the way and the new tool into place.
|
|
|
|
@ -10353,7 +10378,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
|
|
|
|
|
current_position[Y_AXIS] -= hotend_offset[Y_AXIS][active_extruder] - hotend_offset[Y_AXIS][tmp_extruder];
|
|
|
|
|
current_position[Z_AXIS] -= hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder];
|
|
|
|
|
|
|
|
|
|
// Activate the new extruder
|
|
|
|
|
// Activate the new extruder ahead of calling set_axis_is_at_home!
|
|
|
|
|
active_extruder = tmp_extruder;
|
|
|
|
|
|
|
|
|
|
// This function resets the max/min values - the current position may be overwritten below.
|
|
|
|
@ -10687,14 +10712,19 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
|
|
|
|
|
select_multiplexed_stepper(tmp_extruder);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Set the new active extruder
|
|
|
|
|
active_extruder = tmp_extruder;
|
|
|
|
|
|
|
|
|
|
#endif // HOTENDS <= 1
|
|
|
|
|
|
|
|
|
|
#if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH
|
|
|
|
|
stepper.synchronize();
|
|
|
|
|
move_extruder_servo(tmp_extruder);
|
|
|
|
|
move_extruder_servo(active_extruder);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
active_extruder = tmp_extruder;
|
|
|
|
|
#if HAS_FANMUX
|
|
|
|
|
fanmux_switch(active_extruder);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
|
SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, (int)active_extruder);
|
|
|
|
@ -13433,7 +13463,11 @@ void setup() {
|
|
|
|
|
SET_OUTPUT(E_MUX1_PIN);
|
|
|
|
|
SET_OUTPUT(E_MUX2_PIN);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if HAS_FANMUX
|
|
|
|
|
fanmux_init();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
lcd_init();
|
|
|
|
|
|
|
|
|
|
#ifndef CUSTOM_BOOTSCREEN_TIMEOUT
|
|
|
|
|