SMUFF (MMU2 clone) support (#19912)
This commit is contained in:
@ -1068,46 +1068,30 @@ void MarlinSettings::postprocess() {
|
||||
#if AXIS_IS_TMC(Z4)
|
||||
tmc_stepper_current.Z4 = stepperZ4.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS
|
||||
#if AXIS_IS_TMC(E0)
|
||||
tmc_stepper_current.E0 = stepperE0.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 1
|
||||
#if AXIS_IS_TMC(E1)
|
||||
tmc_stepper_current.E1 = stepperE1.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 2
|
||||
#if AXIS_IS_TMC(E2)
|
||||
tmc_stepper_current.E2 = stepperE2.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 3
|
||||
#if AXIS_IS_TMC(E3)
|
||||
tmc_stepper_current.E3 = stepperE3.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 4
|
||||
#if AXIS_IS_TMC(E4)
|
||||
tmc_stepper_current.E4 = stepperE4.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 5
|
||||
#if AXIS_IS_TMC(E5)
|
||||
tmc_stepper_current.E5 = stepperE5.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_IS_TMC(E6)
|
||||
tmc_stepper_current.E6 = stepperE6.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_IS_TMC(E7)
|
||||
tmc_stepper_current.E7 = stepperE7.getMilliamps();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
#endif // MAX_EXTRUDERS > 2
|
||||
#endif // MAX_EXTRUDERS > 1
|
||||
#endif // MAX_EXTRUDERS
|
||||
#if AXIS_IS_TMC(E0)
|
||||
tmc_stepper_current.E0 = stepperE0.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E1)
|
||||
tmc_stepper_current.E1 = stepperE1.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E2)
|
||||
tmc_stepper_current.E2 = stepperE2.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E3)
|
||||
tmc_stepper_current.E3 = stepperE3.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E4)
|
||||
tmc_stepper_current.E4 = stepperE4.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
tmc_stepper_current.E5 = stepperE5.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E6)
|
||||
tmc_stepper_current.E6 = stepperE6.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E7)
|
||||
tmc_stepper_current.E7 = stepperE7.getMilliamps();
|
||||
#endif
|
||||
#endif
|
||||
EEPROM_WRITE(tmc_stepper_current);
|
||||
}
|
||||
@ -1144,46 +1128,30 @@ void MarlinSettings::postprocess() {
|
||||
#if AXIS_HAS_STEALTHCHOP(Z4)
|
||||
tmc_hybrid_threshold.Z4 = stepperZ4.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
tmc_hybrid_threshold.E0 = stepperE0.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 1
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
tmc_hybrid_threshold.E1 = stepperE1.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 2
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
tmc_hybrid_threshold.E2 = stepperE2.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 3
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
tmc_hybrid_threshold.E3 = stepperE3.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 4
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
tmc_hybrid_threshold.E4 = stepperE4.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 5
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_hybrid_threshold.E5 = stepperE5.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_hybrid_threshold.E6 = stepperE6.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_hybrid_threshold.E7 = stepperE7.get_pwm_thrs();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
#endif // MAX_EXTRUDERS > 2
|
||||
#endif // MAX_EXTRUDERS > 1
|
||||
#endif // MAX_EXTRUDERS
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
tmc_hybrid_threshold.E0 = stepperE0.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
tmc_hybrid_threshold.E1 = stepperE1.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
tmc_hybrid_threshold.E2 = stepperE2.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
tmc_hybrid_threshold.E3 = stepperE3.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
tmc_hybrid_threshold.E4 = stepperE4.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_hybrid_threshold.E5 = stepperE5.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_hybrid_threshold.E6 = stepperE6.get_pwm_thrs();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_hybrid_threshold.E7 = stepperE7.get_pwm_thrs();
|
||||
#endif
|
||||
#else
|
||||
const tmc_hybrid_threshold_t tmc_hybrid_threshold = {
|
||||
.X = 100, .Y = 100, .Z = 3,
|
||||
@ -1219,73 +1187,54 @@ void MarlinSettings::postprocess() {
|
||||
{
|
||||
_FIELD_TEST(tmc_stealth_enabled);
|
||||
|
||||
tmc_stealth_enabled_t tmc_stealth_enabled = { false, false, false, false, false, false, false, false, false, false, false, false, false };
|
||||
|
||||
#if HAS_STEALTHCHOP
|
||||
#if AXIS_HAS_STEALTHCHOP(X)
|
||||
tmc_stealth_enabled.X = stepperX.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Y)
|
||||
tmc_stealth_enabled.Y = stepperY.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z)
|
||||
tmc_stealth_enabled.Z = stepperZ.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(X2)
|
||||
tmc_stealth_enabled.X2 = stepperX2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Y2)
|
||||
tmc_stealth_enabled.Y2 = stepperY2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z2)
|
||||
tmc_stealth_enabled.Z2 = stepperZ2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z3)
|
||||
tmc_stealth_enabled.Z3 = stepperZ3.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z4)
|
||||
tmc_stealth_enabled.Z4 = stepperZ4.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
tmc_stealth_enabled.E0 = stepperE0.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 1
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
tmc_stealth_enabled.E1 = stepperE1.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 2
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
tmc_stealth_enabled.E2 = stepperE2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 3
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
tmc_stealth_enabled.E3 = stepperE3.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 4
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
tmc_stealth_enabled.E4 = stepperE4.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 5
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_stealth_enabled.E5 = stepperE5.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_stealth_enabled.E6 = stepperE6.get_stored_stealthChop();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_stealth_enabled.E7 = stepperE7.get_stored_stealthChop();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
#endif // MAX_EXTRUDERS > 2
|
||||
#endif // MAX_EXTRUDERS > 1
|
||||
#endif // MAX_EXTRUDERS
|
||||
tmc_stealth_enabled_t tmc_stealth_enabled = { false };
|
||||
#if AXIS_HAS_STEALTHCHOP(X)
|
||||
tmc_stealth_enabled.X = stepperX.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Y)
|
||||
tmc_stealth_enabled.Y = stepperY.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z)
|
||||
tmc_stealth_enabled.Z = stepperZ.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(X2)
|
||||
tmc_stealth_enabled.X2 = stepperX2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Y2)
|
||||
tmc_stealth_enabled.Y2 = stepperY2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z2)
|
||||
tmc_stealth_enabled.Z2 = stepperZ2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z3)
|
||||
tmc_stealth_enabled.Z3 = stepperZ3.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(Z4)
|
||||
tmc_stealth_enabled.Z4 = stepperZ4.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
tmc_stealth_enabled.E0 = stepperE0.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
tmc_stealth_enabled.E1 = stepperE1.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
tmc_stealth_enabled.E2 = stepperE2.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
tmc_stealth_enabled.E3 = stepperE3.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
tmc_stealth_enabled.E4 = stepperE4.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_stealth_enabled.E5 = stepperE5.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_stealth_enabled.E6 = stepperE6.get_stored_stealthChop();
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_stealth_enabled.E7 = stepperE7.get_stored_stealthChop();
|
||||
#endif
|
||||
EEPROM_WRITE(tmc_stealth_enabled);
|
||||
}
|
||||
|
@ -417,12 +417,15 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define NORM_E_DIR(E) do{ E0_DIR_WRITE(E ? INVERT_E0_DIR : !INVERT_E0_DIR); }while(0)
|
||||
#define REV_E_DIR(E) do{ E0_DIR_WRITE(E ? !INVERT_E0_DIR : INVERT_E0_DIR); }while(0)
|
||||
#endif
|
||||
#elif ENABLED(PRUSA_MMU2)
|
||||
|
||||
#elif HAS_PRUSA_MMU2
|
||||
|
||||
#define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
|
||||
#define NORM_E_DIR(E) E0_DIR_WRITE(!INVERT_E0_DIR)
|
||||
#define REV_E_DIR(E) E0_DIR_WRITE( INVERT_E0_DIR)
|
||||
|
||||
#elif ENABLED(MK2_MULTIPLEXER) // One multiplexed stepper driver, reversed on odd index
|
||||
#elif HAS_PRUSA_MMU1 // One multiplexed stepper driver, reversed on odd index
|
||||
|
||||
#define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
|
||||
#define NORM_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? !INVERT_E0_DIR: INVERT_E0_DIR); }while(0)
|
||||
#define REV_E_DIR(E) do{ E0_DIR_WRITE(TEST(E, 0) ? INVERT_E0_DIR: !INVERT_E0_DIR); }while(0)
|
||||
|
@ -73,10 +73,6 @@
|
||||
#include "../feature/solenoid.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(MK2_MULTIPLEXER)
|
||||
#include "../feature/snmm.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
#include "../feature/mixing.h"
|
||||
#endif
|
||||
@ -89,8 +85,10 @@
|
||||
#include "../feature/fanmux.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(PRUSA_MMU2)
|
||||
#include "../feature/mmu2/mmu2.h"
|
||||
#if HAS_PRUSA_MMU1
|
||||
#include "../feature/mmu/mmu.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
@ -863,7 +861,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
||||
mixer.T(new_tool);
|
||||
#endif
|
||||
|
||||
#elif ENABLED(PRUSA_MMU2)
|
||||
#elif HAS_PRUSA_MMU2
|
||||
|
||||
UNUSED(no_move);
|
||||
|
||||
@ -1171,8 +1169,6 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
||||
do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]);
|
||||
#endif
|
||||
|
||||
TERN_(PRUSA_MMU2, mmu2.tool_change(new_tool));
|
||||
|
||||
TERN_(SWITCHING_NOZZLE_TWO_SERVOS, lower_nozzle(new_tool));
|
||||
|
||||
} // (new_tool != old_tool)
|
||||
@ -1184,7 +1180,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
||||
enable_solenoid_on_active_extruder();
|
||||
#endif
|
||||
|
||||
#if ENABLED(MK2_MULTIPLEXER)
|
||||
#if HAS_PRUSA_MMU1
|
||||
if (new_tool >= E_STEPPERS) return invalid_extruder_error(new_tool);
|
||||
select_multiplexed_stepper(new_tool);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user