Code changes supporting up to 6 extruders
This commit is contained in:
parent
f5c210d33d
commit
1718eff54a
@ -78,6 +78,8 @@
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E3_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(E4_AUTO_FAN) && SPINDLE_LASER_PWM_PIN == E4_AUTO_FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E4_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(E5_AUTO_FAN) && SPINDLE_LASER_PWM_PIN == E5_AUTO_FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E5_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(FAN) && SPINDLE_LASER_PWM_PIN == FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used FAN_PIN."
|
||||
#elif PIN_EXISTS(FAN1) && SPINDLE_LASER_PWM_PIN == FAN1_PIN
|
||||
|
@ -53,6 +53,8 @@
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E3_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(E4_AUTO_FAN) && SPINDLE_LASER_PWM_PIN == E4_AUTO_FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E4_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(E5_AUTO_FAN) && SPINDLE_LASER_PWM_PIN == E5_AUTO_FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used by E5_AUTO_FAN_PIN."
|
||||
#elif PIN_EXISTS(FAN) && SPINDLE_LASER_PWM_PIN == FAN_PIN
|
||||
#error "SPINDLE_LASER_PWM_PIN is used FAN_PIN."
|
||||
#elif PIN_EXISTS(FAN1) && SPINDLE_LASER_PWM_PIN == FAN1_PIN
|
||||
|
@ -290,6 +290,7 @@ void enable_all_steppers() {
|
||||
enable_E2();
|
||||
enable_E3();
|
||||
enable_E4();
|
||||
enable_E5();
|
||||
}
|
||||
|
||||
void disable_e_steppers() {
|
||||
@ -298,6 +299,7 @@ void disable_e_steppers() {
|
||||
disable_E2();
|
||||
disable_E3();
|
||||
disable_E4();
|
||||
disable_E5();
|
||||
}
|
||||
|
||||
void disable_e_stepper(const uint8_t e) {
|
||||
@ -307,6 +309,7 @@ void disable_e_stepper(const uint8_t e) {
|
||||
case 2: disable_E2(); break;
|
||||
case 3: disable_E3(); break;
|
||||
case 4: disable_E4(); break;
|
||||
case 5: disable_E5(); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -440,7 +443,7 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
#if E_STEPPERS > 1
|
||||
case 2: case 3: oldstatus = E1_ENABLE_READ; enable_E1(); break;
|
||||
#if E_STEPPERS > 2
|
||||
case 4: oldstatus = E2_ENABLE_READ; enable_E2(); break;
|
||||
case 4: case 5: oldstatus = E2_ENABLE_READ; enable_E2(); break;
|
||||
#endif // E_STEPPERS > 2
|
||||
#endif // E_STEPPERS > 1
|
||||
}
|
||||
@ -456,6 +459,9 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
case 3: oldstatus = E3_ENABLE_READ; enable_E3(); break;
|
||||
#if E_STEPPERS > 4
|
||||
case 4: oldstatus = E4_ENABLE_READ; enable_E4(); break;
|
||||
#if E_STEPPERS > 5
|
||||
case 5: oldstatus = E5_ENABLE_READ; enable_E5(); break;
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -476,7 +482,7 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
#if E_STEPPERS > 1
|
||||
case 2: case 3: oldstatus = E1_ENABLE_WRITE(oldstatus); break;
|
||||
#if E_STEPPERS > 2
|
||||
case 4: oldstatus = E2_ENABLE_WRITE(oldstatus); break;
|
||||
case 4: case 5: oldstatus = E2_ENABLE_WRITE(oldstatus); break;
|
||||
#endif // E_STEPPERS > 2
|
||||
#endif // E_STEPPERS > 1
|
||||
}
|
||||
@ -491,6 +497,9 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||
case 3: E3_ENABLE_WRITE(oldstatus); break;
|
||||
#if E_STEPPERS > 4
|
||||
case 4: E4_ENABLE_WRITE(oldstatus); break;
|
||||
#if E_STEPPERS > 5
|
||||
case 5: E5_ENABLE_WRITE(oldstatus); break;
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
|
@ -83,7 +83,10 @@ void manage_inactivity(const bool ignore_stepper_queue=false);
|
||||
/**
|
||||
* Mixing steppers synchronize their enable (and direction) together
|
||||
*/
|
||||
#if MIXING_STEPPERS > 4
|
||||
#if MIXING_STEPPERS > 5
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); E4_ENABLE_WRITE( E_ENABLE_ON); E5_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); E4_ENABLE_WRITE(!E_ENABLE_ON); E5_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#elif MIXING_STEPPERS > 4
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); E4_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); E4_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#elif MIXING_STEPPERS > 3
|
||||
@ -104,6 +107,8 @@ void manage_inactivity(const bool ignore_stepper_queue=false);
|
||||
#define disable_E3() NOOP
|
||||
#define enable_E4() NOOP
|
||||
#define disable_E4() NOOP
|
||||
#define enable_E5() NOOP
|
||||
#define disable_E5() NOOP
|
||||
|
||||
#else // !MIXING_EXTRUDER
|
||||
|
||||
@ -147,6 +152,14 @@ void manage_inactivity(const bool ignore_stepper_queue=false);
|
||||
#define disable_E4() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 5 && HAS_E5_ENABLE
|
||||
#define enable_E5() E5_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E5() E5_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E5() NOOP
|
||||
#define disable_E5() NOOP
|
||||
#endif
|
||||
|
||||
#endif // !MIXING_EXTRUDER
|
||||
|
||||
#if ENABLED(EXPERIMENTAL_I2CBUS)
|
||||
|
@ -54,6 +54,7 @@
|
||||
#define AXIS_DRIVER_TYPE_E2(T) (E_STEPPERS > 2 && _AXIS_DRIVER_TYPE(E2,T))
|
||||
#define AXIS_DRIVER_TYPE_E3(T) (E_STEPPERS > 3 && _AXIS_DRIVER_TYPE(E3,T))
|
||||
#define AXIS_DRIVER_TYPE_E4(T) (E_STEPPERS > 4 && _AXIS_DRIVER_TYPE(E4,T))
|
||||
#define AXIS_DRIVER_TYPE_E5(T) (E_STEPPERS > 5 && _AXIS_DRIVER_TYPE(E5,T))
|
||||
|
||||
#define AXIS_DRIVER_TYPE(A,T) AXIS_DRIVER_TYPE_##A(T)
|
||||
|
||||
@ -62,7 +63,7 @@
|
||||
AXIS_DRIVER_TYPE_Z(T) || AXIS_DRIVER_TYPE_Z2(T) || AXIS_DRIVER_TYPE_Z3(T) || \
|
||||
AXIS_DRIVER_TYPE_E0(T) || AXIS_DRIVER_TYPE_E1(T) || \
|
||||
AXIS_DRIVER_TYPE_E2(T) || AXIS_DRIVER_TYPE_E3(T) || \
|
||||
AXIS_DRIVER_TYPE_E4(T) )
|
||||
AXIS_DRIVER_TYPE_E4(T) || AXIS_DRIVER_TYPE_E5(T) )
|
||||
|
||||
// Test for supported TMC drivers that require advanced configuration
|
||||
// Does not match standalone configurations
|
||||
|
@ -289,26 +289,31 @@
|
||||
#define MSG_H3 "3"
|
||||
#define MSG_H4 "4"
|
||||
#define MSG_H5 "5"
|
||||
#define MSG_H6 "6"
|
||||
#define MSG_N1 " 1"
|
||||
#define MSG_N2 " 2"
|
||||
#define MSG_N3 " 3"
|
||||
#define MSG_N4 " 4"
|
||||
#define MSG_N5 " 5"
|
||||
#define MSG_N6 " 6"
|
||||
#define MSG_E1 "E1"
|
||||
#define MSG_E2 "E2"
|
||||
#define MSG_E3 "E3"
|
||||
#define MSG_E4 "E4"
|
||||
#define MSG_E5 "E5"
|
||||
#define MSG_E6 "E6"
|
||||
#define MSG_MOVE_E1 "1"
|
||||
#define MSG_MOVE_E2 "2"
|
||||
#define MSG_MOVE_E3 "3"
|
||||
#define MSG_MOVE_E4 "4"
|
||||
#define MSG_MOVE_E5 "5"
|
||||
#define MSG_MOVE_E6 "6"
|
||||
#define MSG_DIAM_E1 " 1"
|
||||
#define MSG_DIAM_E2 " 2"
|
||||
#define MSG_DIAM_E3 " 3"
|
||||
#define MSG_DIAM_E4 " 4"
|
||||
#define MSG_DIAM_E5 " 5"
|
||||
#define MSG_DIAM_E6 " 6"
|
||||
|
||||
#include INCLUDE_LANGUAGE
|
||||
|
||||
|
@ -646,6 +646,37 @@ void I2CPositionEncodersMgr::init() {
|
||||
encoders[i].set_homed();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if I2CPE_ENCODER_CNT > 5
|
||||
i++;
|
||||
|
||||
encoders[i].init(I2CPE_ENC_6_ADDR, I2CPE_ENC_6_AXIS);
|
||||
|
||||
#ifdef I2CPE_ENC_6_TYPE
|
||||
encoders[i].set_type(I2CPE_ENC_6_TYPE);
|
||||
#endif
|
||||
#ifdef I2CPE_ENC_6_TICKS_UNIT
|
||||
encoders[i].set_ticks_unit(I2CPE_ENC_6_TICKS_UNIT);
|
||||
#endif
|
||||
#ifdef I2CPE_ENC_6_TICKS_REV
|
||||
encoders[i].set_stepper_ticks(I2CPE_ENC_6_TICKS_REV);
|
||||
#endif
|
||||
#ifdef I2CPE_ENC_6_INVERT
|
||||
encoders[i].set_inverted(I2CPE_ENC_6_INVERT);
|
||||
#endif
|
||||
#ifdef I2CPE_ENC_6_EC_METHOD
|
||||
encoders[i].set_ec_method(I2CPE_ENC_6_EC_METHOD);
|
||||
#endif
|
||||
#ifdef I2CPE_ENC_6_EC_THRESH
|
||||
encoders[i].set_ec_threshold(I2CPE_ENC_6_EC_THRESH);
|
||||
#endif
|
||||
|
||||
encoders[i].set_active(encoders[i].passes_test(true));
|
||||
|
||||
#if I2CPE_ENC_6_AXIS == E_AXIS
|
||||
encoders[i].set_homed();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void I2CPositionEncodersMgr::report_position(const int8_t idx, const bool units, const bool noOffset) {
|
||||
|
@ -57,11 +57,14 @@ void controllerfan_update() {
|
||||
#if E_STEPPERS > 1
|
||||
|| E1_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 2
|
||||
|| E2_ENABLE_READ == E_ENABLE_ON
|
||||
|| E2_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 3
|
||||
|| E3_ENABLE_READ == E_ENABLE_ON
|
||||
|| E3_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 4
|
||||
|| E4_ENABLE_READ == E_ENABLE_ON
|
||||
|| E4_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 5
|
||||
|| E5_ENABLE_READ == E_ENABLE_ON
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -68,11 +68,14 @@ bool Power::is_power_needed() {
|
||||
#if E_STEPPERS > 1
|
||||
|| E1_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 2
|
||||
|| E2_ENABLE_READ == E_ENABLE_ON
|
||||
|| E2_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 3
|
||||
|| E3_ENABLE_READ == E_ENABLE_ON
|
||||
|| E3_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 4
|
||||
|| E4_ENABLE_READ == E_ENABLE_ON
|
||||
|| E4_ENABLE_READ == E_ENABLE_ON
|
||||
#if E_STEPPERS > 5
|
||||
|| E5_ENABLE_READ == E_ENABLE_ON
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -54,6 +54,9 @@ void FilamentRunoutSensor::setup() {
|
||||
INIT_RUNOUT_PIN(FIL_RUNOUT4_PIN);
|
||||
#if NUM_RUNOUT_SENSORS > 4
|
||||
INIT_RUNOUT_PIN(FIL_RUNOUT5_PIN);
|
||||
#if NUM_RUNOUT_SENSORS > 5
|
||||
INIT_RUNOUT_PIN(FIL_RUNOUT6_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -71,6 +71,9 @@ class FilamentRunoutSensor {
|
||||
case 3: is_out = READ(FIL_RUNOUT4_PIN) == FIL_RUNOUT_INVERTING; break;
|
||||
#if NUM_RUNOUT_SENSORS > 4
|
||||
case 4: is_out = READ(FIL_RUNOUT5_PIN) == FIL_RUNOUT_INVERTING; break;
|
||||
#if NUM_RUNOUT_SENSORS > 5
|
||||
case 5: is_out = READ(FIL_RUNOUT6_PIN) == FIL_RUNOUT_INVERTING; break;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -53,6 +53,11 @@ inline void enable_solenoid(const uint8_t num) {
|
||||
OUT_WRITE(SOL4_PIN, HIGH);
|
||||
break;
|
||||
#endif
|
||||
#if HAS_SOLENOID_5 && EXTRUDERS > 5
|
||||
case 5:
|
||||
OUT_WRITE(SOL5_PIN, HIGH);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOLNPGM(MSG_INVALID_SOLENOID);
|
||||
@ -76,6 +81,9 @@ void disable_all_solenoids() {
|
||||
#if HAS_SOLENOID_4 && EXTRUDERS > 4
|
||||
OUT_WRITE(SOL4_PIN, LOW);
|
||||
#endif
|
||||
#if HAS_SOLENOID_5 && EXTRUDERS > 5
|
||||
OUT_WRITE(SOL5_PIN, LOW);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // EXT_SOLENOID
|
||||
|
@ -213,6 +213,10 @@ bool report_tmc_status = false;
|
||||
static uint8_t e4_otpw_cnt = 0;
|
||||
monitor_tmc_driver(stepperE4, TMC_E4, e4_otpw_cnt);
|
||||
#endif
|
||||
#if HAS_HW_COMMS(E5)
|
||||
static uint8_t e5_otpw_cnt = 0;
|
||||
monitor_tmc_driver(stepperE5, TMC_E5, e5_otpw_cnt);
|
||||
#endif
|
||||
|
||||
if (report_tmc_status) SERIAL_EOL();
|
||||
}
|
||||
@ -244,6 +248,9 @@ void _tmc_say_axis(const TMC_AxisEnum axis) {
|
||||
, ext_E3[] PROGMEM = "E3"
|
||||
#if E_STEPPERS > 4
|
||||
, ext_E4[] PROGMEM = "E4"
|
||||
#if E_STEPPERS > 5
|
||||
, ext_E5[] PROGMEM = "E5"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -274,6 +281,9 @@ void _tmc_say_axis(const TMC_AxisEnum axis) {
|
||||
, ext_E3
|
||||
#if E_STEPPERS > 4
|
||||
, ext_E4
|
||||
#if E_STEPPERS > 5
|
||||
, ext_E5
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -532,6 +542,13 @@ void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt) {
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
tmc_status(stepperE5, TMC_E5, i, planner.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 5
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
|
||||
SERIAL_EOL();
|
||||
}
|
||||
@ -576,6 +593,9 @@ void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt) {
|
||||
#if AXIS_IS_TMC(E4)
|
||||
tmc_parse_drv_status(stepperE4, TMC_E4, i);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
tmc_parse_drv_status(stepperE5, TMC_E5, i);
|
||||
#endif
|
||||
|
||||
SERIAL_EOL();
|
||||
}
|
||||
@ -693,6 +713,9 @@ void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt) {
|
||||
#if AXIS_DRIVER_TYPE(E4, TMC2130)
|
||||
SET_CS_PIN(E4);
|
||||
#endif
|
||||
#if AXIS_DRIVER_TYPE(E5, TMC2130)
|
||||
SET_CS_PIN(E5);
|
||||
#endif
|
||||
}
|
||||
#endif // TMC2130
|
||||
|
||||
|
@ -49,19 +49,24 @@ enum TMC_AxisEnum : char {
|
||||
#if ENABLED(Z_TRIPLE_STEPPER_DRIVERS)
|
||||
, TMC_Z3
|
||||
#endif
|
||||
, TMC_E0
|
||||
#if E_STEPPERS > 1
|
||||
, TMC_E1
|
||||
#if E_STEPPERS > 2
|
||||
, TMC_E2
|
||||
#if E_STEPPERS > 3
|
||||
, TMC_E3
|
||||
#if E_STEPPERS > 4
|
||||
, TMC_E4
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if E_STEPPERS
|
||||
, TMC_E0
|
||||
#if E_STEPPERS > 1
|
||||
, TMC_E1
|
||||
#if E_STEPPERS > 2
|
||||
, TMC_E2
|
||||
#if E_STEPPERS > 3
|
||||
, TMC_E3
|
||||
#if E_STEPPERS > 4
|
||||
, TMC_E4
|
||||
#if E_STEPPERS > 5
|
||||
, TMC_E5
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
#endif // E_STEPPERS > 1
|
||||
#endif // E_STEPPERS
|
||||
};
|
||||
|
||||
constexpr uint32_t _tmc_thrs(const uint16_t msteps, const int32_t thrs, const uint32_t spmm) {
|
||||
|
@ -677,8 +677,8 @@ G29_TYPE GcodeSuite::G29() {
|
||||
// Inner loop is Y with PROBE_Y_FIRST enabled
|
||||
for (int8_t PR_INNER_VAR = inStart; PR_INNER_VAR != inStop; PR_INNER_VAR += inInc) {
|
||||
|
||||
float xBase = left_probe_bed_position + xGridSpacing * xCount,
|
||||
yBase = front_probe_bed_position + yGridSpacing * yCount;
|
||||
const float xBase = left_probe_bed_position + xGridSpacing * xCount,
|
||||
yBase = front_probe_bed_position + yGridSpacing * yCount;
|
||||
|
||||
xProbe = FLOOR(xBase + (xBase < 0 ? 0 : 0.5));
|
||||
yProbe = FLOOR(yBase + (yBase < 0 ? 0 : 0.5));
|
||||
|
@ -86,6 +86,9 @@ void GcodeSuite::M906() {
|
||||
#if AXIS_IS_TMC(E4)
|
||||
case 4: TMC_SET_CURRENT(E4); break;
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
case 5: TMC_SET_CURRENT(E5); break;
|
||||
#endif
|
||||
}
|
||||
} break;
|
||||
}
|
||||
@ -128,6 +131,9 @@ void GcodeSuite::M906() {
|
||||
#if AXIS_IS_TMC(E4)
|
||||
TMC_SAY_CURRENT(E4);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
TMC_SAY_CURRENT(E5);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,9 @@ void GcodeSuite::M911() {
|
||||
#if M91x_USE_E(4)
|
||||
tmc_report_otpw(stepperE4, TMC_E4);
|
||||
#endif
|
||||
#if M91x_USE_E(5)
|
||||
tmc_report_otpw(stepperE5, TMC_E5);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@ -145,6 +148,9 @@ void GcodeSuite::M912() {
|
||||
#if M91x_USE_E(4)
|
||||
if (hasNone || eval == 4 || (hasE && eval < 0)) tmc_clear_otpw(stepperE4, TMC_E4);
|
||||
#endif
|
||||
#if M91x_USE_E(5)
|
||||
if (hasNone || eval == 5 || (hasE && eval == 10)) tmc_clear_otpw(stepperE5, TMC_E5);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -208,6 +214,9 @@ void GcodeSuite::M912() {
|
||||
#if E_STEPPERS > 4 && AXIS_HAS_STEALTHCHOP(E4)
|
||||
case 4: TMC_SET_PWMTHRS_E(4); break;
|
||||
#endif
|
||||
#if E_STEPPERS > 5 && AXIS_HAS_STEALTHCHOP(E5)
|
||||
case 5: TMC_SET_PWMTHRS_E(5); break;
|
||||
#endif
|
||||
}
|
||||
} break;
|
||||
}
|
||||
@ -250,6 +259,9 @@ void GcodeSuite::M912() {
|
||||
#if E_STEPPERS > 4 && AXIS_HAS_STEALTHCHOP(E4)
|
||||
TMC_SAY_PWMTHRS_E(4);
|
||||
#endif
|
||||
#if E_STEPPERS > 5 && AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_SAY_PWMTHRS_E(5);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif // HYBRID_THRESHOLD
|
||||
|
@ -381,6 +381,22 @@
|
||||
#define HEATER_4_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_5 == -4
|
||||
#define HEATER_5_USES_AD8495
|
||||
#elif TEMP_SENSOR_5 == -3
|
||||
#error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_5."
|
||||
#elif TEMP_SENSOR_5 == -2
|
||||
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5."
|
||||
#elif TEMP_SENSOR_5 == -1
|
||||
#define HEATER_5_USES_AD595
|
||||
#elif TEMP_SENSOR_5 == 0
|
||||
#undef HEATER_5_MINTEMP
|
||||
#undef HEATER_5_MAXTEMP
|
||||
#elif TEMP_SENSOR_5 > 0
|
||||
#define THERMISTORHEATER_5 TEMP_SENSOR_5
|
||||
#define HEATER_5_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_BED == -4
|
||||
#define HEATER_BED_USES_AD8495
|
||||
#elif TEMP_SENSOR_BED == -3
|
||||
@ -841,6 +857,12 @@
|
||||
#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
|
||||
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
|
||||
|
||||
#define HAS_E5_ENABLE (PIN_EXISTS(E5_ENABLE))
|
||||
#define HAS_E5_DIR (PIN_EXISTS(E5_DIR))
|
||||
#define HAS_E5_STEP (PIN_EXISTS(E5_STEP))
|
||||
#define HAS_E5_MICROSTEPS (PIN_EXISTS(E5_MS1))
|
||||
#define HAS_SOLENOID_5 (PIN_EXISTS(SOL5))
|
||||
|
||||
// Trinamic Stepper Drivers
|
||||
#define HAS_STEALTHCHOP (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2208))
|
||||
#define HAS_STALLGUARD HAS_DRIVER(TMC2130)
|
||||
@ -919,8 +941,9 @@
|
||||
#define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_3 (HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_4 (HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_5 (HOTENDS > 5 && PIN_EXISTS(E5_AUTO_FAN))
|
||||
#define HAS_AUTO_CHAMBER_FAN (PIN_EXISTS(CHAMBER_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 || HAS_AUTO_CHAMBER_FAN)
|
||||
#define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 || HAS_AUTO_FAN_4 || HAS_AUTO_FAN_5 || HAS_AUTO_CHAMBER_FAN)
|
||||
#define AUTO_1_IS_0 (E1_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_2_IS_0 (E2_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_2_IS_1 (E2_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
@ -931,11 +954,17 @@
|
||||
#define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
|
||||
#define AUTO_5_IS_0 (E5_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_5_IS_1 (E5_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_5_IS_2 (E5_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
||||
#define AUTO_5_IS_3 (E5_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
|
||||
#define AUTO_5_IS_4 (E5_AUTO_FAN_PIN == E4_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_0 (CHAMBER_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_1 (CHAMBER_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_2 (CHAMBER_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_3 (CHAMBER_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_4 (CHAMBER_AUTO_FAN_PIN == E4_AUTO_FAN_PIN)
|
||||
#define AUTO_CHAMBER_IS_5 (CHAMBER_AUTO_FAN_PIN == E5_AUTO_FAN_PIN)
|
||||
|
||||
// Other fans
|
||||
#define HAS_FAN0 (PIN_EXISTS(FAN))
|
||||
@ -966,7 +995,7 @@
|
||||
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
|
||||
|
||||
// Digital control
|
||||
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS)
|
||||
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS || HAS_E5_MICROSTEPS)
|
||||
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
|
||||
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
||||
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
|
||||
@ -1022,6 +1051,9 @@
|
||||
#define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, (v) ^ HEATER_3_INVERTING)
|
||||
#if HOTENDS > 4
|
||||
#define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, (v) ^ HEATER_4_INVERTING)
|
||||
#if HOTENDS > 5
|
||||
#define WRITE_HEATER_5(v) WRITE(HEATER_5_PIN, (v) ^ HEATER_5_INVERTING)
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
|
@ -273,19 +273,19 @@
|
||||
#elif defined(HAVE_L6470DRIVER)
|
||||
#error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
|
||||
#elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
|
||||
|| defined(E0_IS_TMC) || defined(E1_IS_TMC) || defined(E2_IS_TMC) || defined(E3_IS_TMC) || defined(E4_IS_TMC)
|
||||
|| defined(E0_IS_TMC) || defined(E1_IS_TMC) || defined(E2_IS_TMC) || defined(E3_IS_TMC) || defined(E4_IS_TMC) || defined(E5_IS_TMC)
|
||||
#error "[AXIS]_IS_TMC is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
|
||||
#elif defined(X_IS_TMC26X) || defined(X2_IS_TMC26X) || defined(Y_IS_TMC26X) || defined(Y2_IS_TMC26X) || defined(Z_IS_TMC26X) || defined(Z2_IS_TMC26X) || defined(Z3_IS_TMC26X) \
|
||||
|| defined(E0_IS_TMC26X) || defined(E1_IS_TMC26X) || defined(E2_IS_TMC26X) || defined(E3_IS_TMC26X) || defined(E4_IS_TMC26X)
|
||||
|| defined(E0_IS_TMC26X) || defined(E1_IS_TMC26X) || defined(E2_IS_TMC26X) || defined(E3_IS_TMC26X) || defined(E4_IS_TMC26X) || defined(E5_IS_TMC26X)
|
||||
#error "[AXIS]_IS_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
|
||||
#elif defined(X_IS_TMC2130) || defined(X2_IS_TMC2130) || defined(Y_IS_TMC2130) || defined(Y2_IS_TMC2130) || defined(Z_IS_TMC2130) || defined(Z2_IS_TMC2130) || defined(Z3_IS_TMC2130) \
|
||||
|| defined(E0_IS_TMC2130) || defined(E1_IS_TMC2130) || defined(E2_IS_TMC2130) || defined(E3_IS_TMC2130) || defined(E4_IS_TMC2130)
|
||||
|| defined(E0_IS_TMC2130) || defined(E1_IS_TMC2130) || defined(E2_IS_TMC2130) || defined(E3_IS_TMC2130) || defined(E4_IS_TMC2130) || defined(E5_IS_TMC2130)
|
||||
#error "[AXIS]_IS_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h."
|
||||
#elif defined(X_IS_TMC2208) || defined(X2_IS_TMC2208) || defined(Y_IS_TMC2208) || defined(Y2_IS_TMC2208) || defined(Z_IS_TMC2208) || defined(Z2_IS_TMC2208) || defined(Z3_IS_TMC2208) \
|
||||
|| defined(E0_IS_TMC2208) || defined(E1_IS_TMC2208) || defined(E2_IS_TMC2208) || defined(E3_IS_TMC2208) || defined(E4_IS_TMC2208)
|
||||
|| defined(E0_IS_TMC2208) || defined(E1_IS_TMC2208) || defined(E2_IS_TMC2208) || defined(E3_IS_TMC2208) || defined(E4_IS_TMC2208) || defined(E5_IS_TMC2208)
|
||||
#error "[AXIS]_IS_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208. Please update your Configuration.h."
|
||||
#elif defined(X_IS_L6470) || defined(X2_IS_L6470) || defined(Y_IS_L6470) || defined(Y2_IS_L6470) || defined(Z_IS_L6470) || defined(Z2_IS_L6470) || defined(Z3_IS_L6470) \
|
||||
|| defined(E0_IS_L6470) || defined(E1_IS_L6470) || defined(E2_IS_L6470) || defined(E3_IS_L6470) || defined(E4_IS_L6470)
|
||||
|| defined(E0_IS_L6470) || defined(E1_IS_L6470) || defined(E2_IS_L6470) || defined(E3_IS_L6470) || defined(E4_IS_L6470) || defined(E5_IS_L6470)
|
||||
#error "[AXIS]_IS_L6470 is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
|
||||
#elif defined(AUTOMATIC_CURRENT_CONTROL)
|
||||
#error "AUTOMATIC_CURRENT_CONTROL is now MONITOR_DRIVER_STATUS. Please update your configuration."
|
||||
@ -534,6 +534,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 3 requires FIL_RUNOUT4_PIN."
|
||||
#elif NUM_RUNOUT_SENSORS > 4 && !PIN_EXISTS(FIL_RUNOUT5)
|
||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 4 requires FIL_RUNOUT5_PIN."
|
||||
#elif NUM_RUNOUT_SENSORS > 5 && !PIN_EXISTS(FIL_RUNOUT6)
|
||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 5 requires FIL_RUNOUT6_PIN."
|
||||
#elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
|
||||
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||
@ -1242,13 +1244,28 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#elif !PIN_EXISTS(TEMP_4)
|
||||
#error "TEMP_4_PIN not defined for this board."
|
||||
#endif
|
||||
#if HOTENDS > 5
|
||||
#if TEMP_SENSOR_5 == 0
|
||||
#error "TEMP_SENSOR_5 is required with 5 HOTENDS."
|
||||
#elif !HAS_HEATER_5
|
||||
#error "HEATER_5_PIN not defined for this board."
|
||||
#elif !PIN_EXISTS(TEMP_5)
|
||||
#error "TEMP_5_PIN not defined for this board."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 5 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_4 != 0
|
||||
#error "TEMP_SENSOR_4 shouldn't be set with only 4 HOTENDS."
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 5 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_3 != 0
|
||||
#error "TEMP_SENSOR_3 shouldn't be set with only 3 HOTENDS."
|
||||
#elif TEMP_SENSOR_4 != 0
|
||||
#error "TEMP_SENSOR_4 shouldn't be set with only 3 HOTENDS."
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 4 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_2 != 0
|
||||
#error "TEMP_SENSOR_2 shouldn't be set with only 2 HOTENDS."
|
||||
@ -1256,6 +1273,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#error "TEMP_SENSOR_3 shouldn't be set with only 2 HOTENDS."
|
||||
#elif TEMP_SENSOR_4 != 0
|
||||
#error "TEMP_SENSOR_4 shouldn't be set with only 2 HOTENDS."
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 2 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
#error "TEMP_SENSOR_1 shouldn't be set with only 1 HOTEND."
|
||||
@ -1265,6 +1284,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#error "TEMP_SENSOR_3 shouldn't be set with only 1 HOTEND."
|
||||
#elif TEMP_SENSOR_4 != 0
|
||||
#error "TEMP_SENSOR_4 shouldn't be set with only 1 HOTEND."
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 1 HOTEND."
|
||||
#endif
|
||||
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0
|
||||
@ -1306,23 +1327,36 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
* Test Extruder Stepper Pins
|
||||
*/
|
||||
#if DISABLED(MK2_MULTIPLEXER) // MK2_MULTIPLEXER uses E0 stepper only
|
||||
#if E_STEPPERS > 4
|
||||
#if !(PIN_EXISTS(E4_STEP) && PIN_EXISTS(E4_DIR) && PIN_EXISTS(E4_ENABLE))
|
||||
#error "E4_STEP_PIN, E4_DIR_PIN, or E4_ENABLE_PIN not defined for this board."
|
||||
#if E_STEPPERS
|
||||
#if !(PIN_EXISTS(E0_STEP) && PIN_EXISTS(E0_DIR) && PIN_EXISTS(E0_ENABLE))
|
||||
#error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#elif E_STEPPERS > 3
|
||||
#if !(PIN_EXISTS(E3_STEP) && PIN_EXISTS(E3_DIR) && PIN_EXISTS(E3_ENABLE))
|
||||
#error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#elif E_STEPPERS > 2
|
||||
#if !(PIN_EXISTS(E2_STEP) && PIN_EXISTS(E2_DIR) && PIN_EXISTS(E2_ENABLE))
|
||||
#error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#elif E_STEPPERS > 1
|
||||
#if !(PIN_EXISTS(E1_STEP) && PIN_EXISTS(E1_DIR) && PIN_EXISTS(E1_ENABLE))
|
||||
#error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#endif
|
||||
#if E_STEPPERS > 1
|
||||
#if !(PIN_EXISTS(E1_STEP) && PIN_EXISTS(E1_DIR) && PIN_EXISTS(E1_ENABLE))
|
||||
#error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 2
|
||||
#if !(PIN_EXISTS(E2_STEP) && PIN_EXISTS(E2_DIR) && PIN_EXISTS(E2_ENABLE))
|
||||
#error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 3
|
||||
#if !(PIN_EXISTS(E3_STEP) && PIN_EXISTS(E3_DIR) && PIN_EXISTS(E3_ENABLE))
|
||||
#error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 4
|
||||
#if !(PIN_EXISTS(E4_STEP) && PIN_EXISTS(E4_DIR) && PIN_EXISTS(E4_ENABLE))
|
||||
#error "E4_STEP_PIN, E4_DIR_PIN, or E4_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 5
|
||||
#if !(PIN_EXISTS(E5_STEP) && PIN_EXISTS(E5_DIR) && PIN_EXISTS(E5_ENABLE))
|
||||
#error "E5_STEP_PIN, E5_DIR_PIN, or E5_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
#endif // E_STEPPERS > 1
|
||||
#endif // E_STEPPERS
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -1625,6 +1659,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#error "E3_CS_PIN is required for TMC2130. Define E3_CS_PIN in Configuration_adv.h."
|
||||
#elif AXIS_DRIVER_TYPE(E4, TMC2130) && !PIN_EXISTS(E4_CS)
|
||||
#error "E4_CS_PIN is required for TMC2130. Define E4_CS_PIN in Configuration_adv.h."
|
||||
#elif AXIS_DRIVER_TYPE(E5, TMC2130) && !PIN_EXISTS(E5_CS)
|
||||
#error "E5_CS_PIN is required for TMC2130. Define E5_CS_PIN in Configuration_adv.h."
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -1642,8 +1678,9 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
|| defined(E1_HARDWARE_SERIAL) \
|
||||
|| defined(E2_HARDWARE_SERIAL) \
|
||||
|| defined(E3_HARDWARE_SERIAL) \
|
||||
|| defined(E4_HARDWARE_SERIAL) )
|
||||
#error "select hardware UART for TMC2208 to use both TMC2208 and ENDSTOP_INTERRUPTS_FEATURE."
|
||||
|| defined(E4_HARDWARE_SERIAL) \
|
||||
|| defined(E5_HARDWARE_SERIAL) )
|
||||
#error "Select hardware UART for TMC2208 to use both TMC2208 and ENDSTOP_INTERRUPTS_FEATURE."
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -1660,7 +1697,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
|| defined(E1_HARDWARE_SERIAL) \
|
||||
|| defined(E2_HARDWARE_SERIAL) \
|
||||
|| defined(E3_HARDWARE_SERIAL) \
|
||||
|| defined(E4_HARDWARE_SERIAL) )
|
||||
|| defined(E4_HARDWARE_SERIAL) \
|
||||
|| defined(E5_HARDWARE_SERIAL) )
|
||||
#error "TMC2208 Software Serial is supported only on AVR and LPC1768 platforms."
|
||||
#endif
|
||||
|
||||
|
@ -130,6 +130,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 trangos/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 trangos/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 trangos/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 trangos/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimiento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -99,6 +99,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 стъпки/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 стъпки/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 стъпки/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 стъпки/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Температура")
|
||||
#define MSG_MOTION _UxGT("Движение")
|
||||
#define MSG_FILAMENT _UxGT("Нишка")
|
||||
|
@ -132,6 +132,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3passos/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4passos/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5passos/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6passos/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Moviment")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -233,6 +233,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3kroků/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4kroků/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5kroků/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6kroků/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Teplota")
|
||||
#define MSG_MOTION _UxGT("Pohyb")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -130,6 +130,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3steps/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4steps/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatur")
|
||||
#define MSG_MOTION _UxGT("Bevægelse")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -145,6 +145,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 Steps/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 Steps/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 Steps/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 Steps/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatur")
|
||||
#define MSG_MOTION _UxGT("Bewegung")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -630,6 +630,12 @@
|
||||
#ifndef MSG_E5STEPS
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm")
|
||||
#endif
|
||||
#ifndef MSG_E6STEPS
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#endif
|
||||
#ifndef MSG_E6STEPS
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#endif
|
||||
#ifndef MSG_TEMPERATURE
|
||||
#define MSG_TEMPERATURE _UxGT("Temperature")
|
||||
#endif
|
||||
|
@ -125,6 +125,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 pasos/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 pasos/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 pasos/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 pasos/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimiento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -224,6 +224,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 pausoak/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 pausoak/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 pausoak/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 pausoak/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Tenperatura")
|
||||
#define MSG_MOTION _UxGT("Mugimendua")
|
||||
#define MSG_FILAMENT _UxGT("Harizpia")
|
||||
|
@ -120,6 +120,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3steps/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4steps/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Lämpötila")
|
||||
#define MSG_MOTION _UxGT("Liike")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -228,6 +228,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 pas/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 pas/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 pas/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 pas/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Température")
|
||||
#define MSG_MOTION _UxGT("Mouvement")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -129,6 +129,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 pasos/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 pasos/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 pasos/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 pasos/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movemento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -129,6 +129,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3steps/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4steps/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperature")
|
||||
#define MSG_MOTION _UxGT("Gibanje")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -232,6 +232,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3passi/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4passi/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5passi/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6passi/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -136,6 +136,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3steps/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4steps/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatuur")
|
||||
#define MSG_MOTION _UxGT("Beweging")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -129,6 +129,7 @@
|
||||
#define MSG_E3STEPS _UxGT("krokiE3/mm")
|
||||
#define MSG_E4STEPS _UxGT("krokiE4/mm")
|
||||
#define MSG_E5STEPS _UxGT("krokiE5/mm")
|
||||
#define MSG_E6STEPS _UxGT("krokiE6/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Ruch")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -237,6 +237,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -126,6 +126,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3 passo/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4 passo/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5 passo/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6 passo/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
|
@ -227,6 +227,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3шаг/мм")
|
||||
#define MSG_E4STEPS _UxGT("E4шаг/мм")
|
||||
#define MSG_E5STEPS _UxGT("E5шаг/мм")
|
||||
#define MSG_E6STEPS _UxGT("E6шаг/мм")
|
||||
#define MSG_TEMPERATURE _UxGT("Температура")
|
||||
#define MSG_MOTION _UxGT("Движение")
|
||||
#define MSG_FILAMENT _UxGT("Филамент")
|
||||
|
@ -246,6 +246,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3krokov/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4krokov/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5krokov/mm")
|
||||
#define MSG_E6STEPS _UxGT("E6krokov/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Teplota")
|
||||
#define MSG_MOTION _UxGT("Pohyb")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
|
@ -135,7 +135,8 @@
|
||||
#define MSG_E2STEPS _UxGT("E2steps/mm") // E2steps/mm
|
||||
#define MSG_E3STEPS _UxGT("E3steps/mm") // E3steps/mm
|
||||
#define MSG_E4STEPS _UxGT("E4steps/mm") // E4steps/mm
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm") // E4steps/mm
|
||||
#define MSG_E5STEPS _UxGT("E5steps/mm") // E5steps/mm
|
||||
#define MSG_E6STEPS _UxGT("E6steps/mm") // E6steps/mm
|
||||
#define MSG_TEMPERATURE _UxGT("Sıcaklık") // Sıcaklık
|
||||
#define MSG_MOTION _UxGT("Hareket") // Hareket
|
||||
#define MSG_FILAMENT _UxGT("Filaman") // Filaman
|
||||
|
@ -129,6 +129,7 @@
|
||||
#define MSG_E3STEPS _UxGT("E3кроків/мм")
|
||||
#define MSG_E4STEPS _UxGT("E4кроків/мм")
|
||||
#define MSG_E5STEPS _UxGT("E5кроків/мм")
|
||||
#define MSG_E6STEPS _UxGT("E6кроків/мм")
|
||||
#define MSG_TEMPERATURE _UxGT("Температура")
|
||||
#define MSG_MOTION _UxGT("Рух")
|
||||
#define MSG_FILAMENT _UxGT("Волокно")
|
||||
|
@ -226,6 +226,7 @@
|
||||
#define MSG_E3STEPS _UxGT("挤出机3步数/mm") //"E3steps/mm"
|
||||
#define MSG_E4STEPS _UxGT("挤出机4步数/mm") //"E4steps/mm"
|
||||
#define MSG_E5STEPS _UxGT("挤出机5步数/mm") //"E5steps/mm"
|
||||
#define MSG_E6STEPS _UxGT("挤出机6步数/mm") //"E6steps/mm"
|
||||
#define MSG_TEMPERATURE _UxGT("温度") //"Temperature"
|
||||
#define MSG_MOTION _UxGT("运动") //"Motion"
|
||||
#define MSG_FILAMENT _UxGT("丝料测容") //"Filament" lcd_control_volumetric_menu
|
||||
|
@ -226,6 +226,7 @@
|
||||
#define MSG_E3STEPS _UxGT("擠出機3步數/mm") //"E3steps/mm"
|
||||
#define MSG_E4STEPS _UxGT("擠出機4步數/mm") //"E4steps/mm"
|
||||
#define MSG_E5STEPS _UxGT("擠出機5步數/mm") //"E5steps/mm"
|
||||
#define MSG_E6STEPS _UxGT("擠出機6步數/mm") //"E6steps/mm"
|
||||
#define MSG_TEMPERATURE _UxGT("溫度") //"Temperature"
|
||||
#define MSG_MOTION _UxGT("運作") //"Motion"
|
||||
#define MSG_FILAMENT _UxGT("絲料測容") //"Filament" lcd_control_volumetric_menu
|
||||
|
@ -1402,6 +1402,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void watch_temp_callback_E3() { _WATCH_FUNC(3); }
|
||||
#if HOTENDS > 4
|
||||
void watch_temp_callback_E4() { _WATCH_FUNC(4); }
|
||||
#if HOTENDS > 5
|
||||
void watch_temp_callback_E5() { _WATCH_FUNC(5); }
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1434,6 +1437,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
inline void _lcd_refresh_e_factor_3() { planner.refresh_e_factor(3); }
|
||||
#if EXTRUDERS > 4
|
||||
inline void _lcd_refresh_e_factor_4() { planner.refresh_e_factor(4); }
|
||||
#if EXTRUDERS > 5
|
||||
inline void _lcd_refresh_e_factor_5() { planner.refresh_e_factor(5); }
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -1486,6 +1492,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N4, &thermalManager.target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3);
|
||||
#if HOTENDS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N5, &thermalManager.target_temperature[4], 0, HEATER_4_MAXTEMP - 15, watch_temp_callback_E4);
|
||||
#if HOTENDS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N6, &thermalManager.target_temperature[5], 0, HEATER_5_MAXTEMP - 15, watch_temp_callback_E5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1538,6 +1547,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM_EDIT_CALLBACK(int3, MSG_FLOW MSG_N4, &planner.flow_percentage[3], 10, 999, _lcd_refresh_e_factor_3);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_ITEM_EDIT_CALLBACK(int3, MSG_FLOW MSG_N5, &planner.flow_percentage[4], 10, 999, _lcd_refresh_e_factor_4);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_ITEM_EDIT_CALLBACK(int3, MSG_FLOW MSG_N6, &planner.flow_percentage[5], 10, 999, _lcd_refresh_e_factor_5);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -1672,6 +1684,14 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void lcd_preheat_m1_e4() { _lcd_preheat(4, lcd_preheat_hotend_temp[0], lcd_preheat_bed_temp[0], lcd_preheat_fan_speed[0]); }
|
||||
void lcd_preheat_m2_e4() { _lcd_preheat(4, lcd_preheat_hotend_temp[1], lcd_preheat_bed_temp[1], lcd_preheat_fan_speed[1]); }
|
||||
#endif
|
||||
#if HOTENDS > 5
|
||||
void lcd_preheat_m1_e5_only() { _lcd_preheat(5, lcd_preheat_hotend_temp[0], -1, lcd_preheat_fan_speed[0]); }
|
||||
void lcd_preheat_m2_e5_only() { _lcd_preheat(5, lcd_preheat_hotend_temp[1], -1, lcd_preheat_fan_speed[1]); }
|
||||
#if HAS_HEATED_BED
|
||||
void lcd_preheat_m1_e5() { _lcd_preheat(5, lcd_preheat_hotend_temp[0], lcd_preheat_bed_temp[0], lcd_preheat_fan_speed[0]); }
|
||||
void lcd_preheat_m2_e5() { _lcd_preheat(5, lcd_preheat_hotend_temp[1], lcd_preheat_bed_temp[1], lcd_preheat_fan_speed[1]); }
|
||||
#endif
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1685,6 +1705,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[0], 3);
|
||||
#if HOTENDS > 4
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[0], 4);
|
||||
#if HOTENDS > 5
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[0], 5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1704,6 +1727,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[1], 3);
|
||||
#if HOTENDS > 4
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[1], 4);
|
||||
#if HOTENDS > 5
|
||||
thermalManager.setTargetHotend(lcd_preheat_hotend_temp[1], 5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1765,6 +1791,14 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
#else
|
||||
MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H5, lcd_preheat_m1_e4_only);
|
||||
#endif
|
||||
#if HOTENDS > 5
|
||||
#if HAS_HEATED_BED
|
||||
MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H6, lcd_preheat_m1_e5);
|
||||
MENU_ITEM(function, MSG_PREHEAT_1_END " " MSG_E6, lcd_preheat_m1_e5_only);
|
||||
#else
|
||||
MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H6, lcd_preheat_m1_e5_only);
|
||||
#endif
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1817,6 +1851,14 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
#else
|
||||
MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H5, lcd_preheat_m2_e4_only);
|
||||
#endif
|
||||
#if HOTENDS > 5
|
||||
#if HAS_HEATED_BED
|
||||
MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H6, lcd_preheat_m2_e5);
|
||||
MENU_ITEM(function, MSG_PREHEAT_2_END " " MSG_E6, lcd_preheat_m2_e5_only);
|
||||
#else
|
||||
MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H6, lcd_preheat_m2_e5_only);
|
||||
#endif
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -3061,6 +3103,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
case 3: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E4); break;
|
||||
#if E_MANUAL > 4
|
||||
case 4: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E5); break;
|
||||
#if E_MANUAL > 5
|
||||
case 5: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E6); break;
|
||||
#endif // E_MANUAL > 5
|
||||
#endif // E_MANUAL > 4
|
||||
#endif // E_MANUAL > 3
|
||||
#endif // E_MANUAL > 2
|
||||
@ -3087,6 +3132,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void lcd_move_e3() { _lcd_move_e(3); }
|
||||
#if E_MANUAL > 4
|
||||
void lcd_move_e4() { _lcd_move_e(4); }
|
||||
#if E_MANUAL > 5
|
||||
void lcd_move_e5() { _lcd_move_e(5); }
|
||||
#endif // E_MANUAL > 5
|
||||
#endif // E_MANUAL > 4
|
||||
#endif // E_MANUAL > 3
|
||||
#endif // E_MANUAL > 2
|
||||
@ -3147,6 +3195,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void lcd_move_get_e3_amount() { _lcd_move_distance_menu(E_AXIS, lcd_move_e3); }
|
||||
#if E_MANUAL > 4
|
||||
void lcd_move_get_e4_amount() { _lcd_move_distance_menu(E_AXIS, lcd_move_e4); }
|
||||
#if E_MANUAL > 5
|
||||
void lcd_move_get_e5_amount() { _lcd_move_distance_menu(E_AXIS, lcd_move_e5); }
|
||||
#endif // E_MANUAL > 5
|
||||
#endif // E_MANUAL > 4
|
||||
#endif // E_MANUAL > 3
|
||||
#endif // E_MANUAL > 2
|
||||
@ -3199,7 +3250,16 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
|
||||
#if ENABLED(SWITCHING_EXTRUDER) || ENABLED(SWITCHING_NOZZLE)
|
||||
|
||||
#if EXTRUDERS == 4
|
||||
#if EXTRUDERS == 6
|
||||
switch (active_extruder) {
|
||||
case 0: MENU_ITEM(gcode, MSG_SELECT " " MSG_E2, PSTR("T1")); break;
|
||||
case 1: MENU_ITEM(gcode, MSG_SELECT " " MSG_E1, PSTR("T0")); break;
|
||||
case 2: MENU_ITEM(gcode, MSG_SELECT " " MSG_E4, PSTR("T3")); break;
|
||||
case 3: MENU_ITEM(gcode, MSG_SELECT " " MSG_E3, PSTR("T2")); break;
|
||||
case 4: MENU_ITEM(gcode, MSG_SELECT " " MSG_E6, PSTR("T5")); break;
|
||||
case 5: MENU_ITEM(gcode, MSG_SELECT " " MSG_E5, PSTR("T4")); break;
|
||||
}
|
||||
#elif EXTRUDERS == 5 || EXTRUDERS == 4
|
||||
switch (active_extruder) {
|
||||
case 0: MENU_ITEM(gcode, MSG_SELECT " " MSG_E2, PSTR("T1")); break;
|
||||
case 1: MENU_ITEM(gcode, MSG_SELECT " " MSG_E1, PSTR("T0")); break;
|
||||
@ -3253,6 +3313,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E4, lcd_move_get_e3_amount);
|
||||
#if E_MANUAL > 4
|
||||
MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E5, lcd_move_get_e4_amount);
|
||||
#if E_MANUAL > 5
|
||||
MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E6, lcd_move_get_e5_amount);
|
||||
#endif // E_MANUAL > 5
|
||||
#endif // E_MANUAL > 4
|
||||
#endif // E_MANUAL > 3
|
||||
#endif // E_MANUAL > 2
|
||||
@ -3412,6 +3475,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
DEFINE_PIDTEMP_FUNCS(3);
|
||||
#if HOTENDS > 4
|
||||
DEFINE_PIDTEMP_FUNCS(4);
|
||||
#if HOTENDS > 5
|
||||
DEFINE_PIDTEMP_FUNCS(5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -3444,6 +3510,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N4, &thermalManager.target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3);
|
||||
#if HOTENDS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N5, &thermalManager.target_temperature[4], 0, HEATER_4_MAXTEMP - 15, watch_temp_callback_E4);
|
||||
#if HOTENDS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N6, &thermalManager.target_temperature[5], 0, HEATER_5_MAXTEMP - 15, watch_temp_callback_E5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -3568,6 +3637,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
PID_MENU_ITEMS(" " MSG_E4, 3);
|
||||
#if HOTENDS > 4
|
||||
PID_MENU_ITEMS(" " MSG_E5, 4);
|
||||
#if HOTENDS > 5
|
||||
PID_MENU_ITEMS(" " MSG_E6, 5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -3583,7 +3655,10 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
#if DISABLED(SLIM_LCD_MENUS)
|
||||
|
||||
void _lcd_configuration_temperature_preheat_settings_menu(const uint8_t material) {
|
||||
#if HOTENDS > 4
|
||||
#if HOTENDS > 5
|
||||
#define MINTEMP_ALL MIN5(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP, HEATER_3_MINTEMP, HEATER_4_MINTEMP, HEATER_5_MINTEMP)
|
||||
#define MAXTEMP_ALL MAX5(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP)
|
||||
#elif HOTENDS > 4
|
||||
#define MINTEMP_ALL MIN5(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP, HEATER_3_MINTEMP, HEATER_4_MINTEMP)
|
||||
#define MAXTEMP_ALL MAX5(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP)
|
||||
#elif HOTENDS > 3
|
||||
@ -3639,6 +3714,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void _reset_e3_acceleration_rate() { _reset_e_acceleration_rate(3); }
|
||||
#if E_STEPPERS > 4
|
||||
void _reset_e4_acceleration_rate() { _reset_e_acceleration_rate(4); }
|
||||
#if E_STEPPERS > 5
|
||||
void _reset_e5_acceleration_rate() { _reset_e_acceleration_rate(5); }
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -3660,6 +3738,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
void _planner_refresh_e3_positioning() { _planner_refresh_e_positioning(3); }
|
||||
#if E_STEPPERS > 4
|
||||
void _planner_refresh_e4_positioning() { _planner_refresh_e_positioning(4); }
|
||||
#if E_STEPPERS > 5
|
||||
void _planner_refresh_e5_positioning() { _planner_refresh_e_positioning(5); }
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -3685,6 +3766,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E4, &planner.max_feedrate_mm_s[E_AXIS + 3], 1, 999);
|
||||
#if E_STEPPERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E5, &planner.max_feedrate_mm_s[E_AXIS + 4], 1, 999);
|
||||
#if E_STEPPERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E6, &planner.max_feedrate_mm_s[E_AXIS + 5], 1, 999);
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -3730,6 +3814,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E4, &planner.max_acceleration_mm_per_s2[E_AXIS + 3], 100, 99000, _reset_e3_acceleration_rate);
|
||||
#if E_STEPPERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E5, &planner.max_acceleration_mm_per_s2[E_AXIS + 4], 100, 99000, _reset_e4_acceleration_rate);
|
||||
#if E_STEPPERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E6, &planner.max_acceleration_mm_per_s2[E_AXIS + 5], 100, 99000, _reset_e5_acceleration_rate);
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -3787,6 +3874,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E4STEPS, &planner.axis_steps_per_mm[E_AXIS + 3], 5, 9999, _planner_refresh_e3_positioning);
|
||||
#if E_STEPPERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E5STEPS, &planner.axis_steps_per_mm[E_AXIS + 4], 5, 9999, _planner_refresh_e4_positioning);
|
||||
#if E_STEPPERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E6STEPS, &planner.axis_steps_per_mm[E_AXIS + 5], 5, 9999, _planner_refresh_e5_positioning);
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -3865,6 +3955,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E4, &planner.extruder_advance_K[3], 0, 999);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E5, &planner.extruder_advance_K[4], 0, 999);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E6, &planner.extruder_advance_K[5], 0, 999);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -3914,6 +4007,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E4, &planner.extruder_advance_K[3], 0, 999);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E5, &planner.extruder_advance_K[4], 0, 999);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K MSG_E6, &planner.extruder_advance_K[5], 0, 999);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -3932,10 +4028,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &planner.filament_size[1], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#if EXTRUDERS > 2
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &planner.filament_size[2], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &planner.filament_size[3], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#if EXTRUDERS > 4
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &planner.filament_size[3], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E5, &planner.filament_size[4], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E6, &planner.filament_size[5], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -3960,10 +4059,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E2, &filament_change_unload_length[1], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 2
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E3, &filament_change_unload_length[2], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E4, &filament_change_unload_length[3], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 4
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E4, &filament_change_unload_length[3], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E5, &filament_change_unload_length[4], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E6, &filament_change_unload_length[5], 0, extrude_maxlength);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -3977,10 +4079,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E2, &filament_change_load_length[1], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 2
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E3, &filament_change_load_length[2], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E4, &filament_change_load_length[3], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 4
|
||||
#if EXTRUDERS > 3
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E4, &filament_change_load_length[3], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 4
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E5, &filament_change_load_length[4], 0, extrude_maxlength);
|
||||
#if EXTRUDERS > 5
|
||||
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E6, &filament_change_load_length[5], 0, extrude_maxlength);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -4405,6 +4510,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
case 3: max_temp = HEATER_3_MAXTEMP; break;
|
||||
#if HOTENDS > 4
|
||||
case 4: max_temp = HEATER_4_MAXTEMP; break;
|
||||
#if HOTENDS > 5
|
||||
case 5: max_temp = HEATER_5_MAXTEMP; break;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -4486,6 +4594,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_change);
|
||||
else
|
||||
MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
|
||||
#if E_STEPPERS > 5
|
||||
PGM_P msg5 = PSTR(MSG_FILAMENTCHANGE " " MSG_E6);
|
||||
if (thermalManager.targetTooColdToExtrude(5))
|
||||
MENU_ITEM_P(submenu, msg5, lcd_temp_menu_e5_filament_change);
|
||||
else
|
||||
MENU_ITEM_P(gcode, msg5, PSTR("M600 B0 T5"));
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -4529,6 +4644,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_load);
|
||||
else
|
||||
MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
|
||||
#if E_STEPPERS > 5
|
||||
PGM_P msg5 = PSTR(MSG_FILAMENTLOAD " " MSG_E6);
|
||||
if (thermalManager.targetTooColdToExtrude(5))
|
||||
MENU_ITEM_P(submenu, msg5, lcd_temp_menu_e5_filament_load);
|
||||
else
|
||||
MENU_ITEM_P(gcode, msg5, PSTR("M701 T5"));
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -4551,6 +4673,9 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
&& thermalManager.targetHotEnoughToExtrude(3)
|
||||
#if E_STEPPERS > 4
|
||||
&& thermalManager.targetHotEnoughToExtrude(4)
|
||||
#if E_STEPPERS > 5
|
||||
&& thermalManager.targetHotEnoughToExtrude(5)
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
@ -4583,6 +4708,12 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E5, PSTR("M702 T4"));
|
||||
else
|
||||
MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E5, lcd_temp_menu_e4_filament_unload);
|
||||
#if E_STEPPERS > 5
|
||||
if (thermalManager.targetHotEnoughToExtrude(5))
|
||||
MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E6, PSTR("M702 T5"));
|
||||
else
|
||||
MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E6, lcd_temp_menu_e5_filament_unload);
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
#endif // E_STEPPERS > 2
|
||||
|
@ -37,7 +37,7 @@
|
||||
*/
|
||||
|
||||
// Change EEPROM version if the structure changes
|
||||
#define EEPROM_VERSION "V57"
|
||||
#define EEPROM_VERSION "V58"
|
||||
#define EEPROM_OFFSET 100
|
||||
|
||||
// Check the integrity of data offsets.
|
||||
@ -213,7 +213,7 @@ typedef struct SettingsDataStruct {
|
||||
//
|
||||
// PIDTEMP
|
||||
//
|
||||
PIDC hotendPID[MAX_EXTRUDERS]; // M301 En PIDC / M303 En U
|
||||
PIDC hotendPID[HOTENDS]; // M301 En PIDC / M303 En U
|
||||
|
||||
int16_t lpq_len; // M301 L
|
||||
|
||||
@ -244,14 +244,14 @@ typedef struct SettingsDataStruct {
|
||||
// !NO_VOLUMETRIC
|
||||
//
|
||||
bool parser_volumetric_enabled; // M200 D parser.volumetric_enabled
|
||||
float planner_filament_size[MAX_EXTRUDERS]; // M200 T D planner.filament_size[]
|
||||
float planner_filament_size[EXTRUDERS]; // M200 T D planner.filament_size[]
|
||||
|
||||
//
|
||||
// HAS_TRINAMIC
|
||||
//
|
||||
#define TMC_AXES (MAX_EXTRUDERS + 7)
|
||||
uint16_t tmc_stepper_current[TMC_AXES]; // M906 X Y Z X2 Y2 Z2 Z3 E0 E1 E2 E3 E4
|
||||
uint32_t tmc_hybrid_threshold[TMC_AXES]; // M913 X Y Z X2 Y2 Z2 Z3 E0 E1 E2 E3 E4
|
||||
uint16_t tmc_stepper_current[TMC_AXES]; // M906 X Y Z X2 Y2 Z2 Z3 E0 E1 E2 E3 E4 E5
|
||||
uint32_t tmc_hybrid_threshold[TMC_AXES]; // M913 X Y Z X2 Y2 Z2 Z3 E0 E1 E2 E3 E4 E5
|
||||
int16_t tmc_sgt[XYZ]; // M914 X Y Z
|
||||
|
||||
//
|
||||
@ -279,8 +279,8 @@ typedef struct SettingsDataStruct {
|
||||
//
|
||||
// ADVANCED_PAUSE_FEATURE
|
||||
//
|
||||
float filament_change_unload_length[MAX_EXTRUDERS], // M603 T U
|
||||
filament_change_load_length[MAX_EXTRUDERS]; // M603 T L
|
||||
float filament_change_unload_length[EXTRUDERS], // M603 T U
|
||||
filament_change_load_length[EXTRUDERS]; // M603 T L
|
||||
|
||||
} SettingsData;
|
||||
|
||||
@ -629,29 +629,23 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_WRITE(lcd_preheat_bed_temp);
|
||||
EEPROM_WRITE(lcd_preheat_fan_speed);
|
||||
|
||||
for (uint8_t e = 0; e < MAX_EXTRUDERS; e++) {
|
||||
|
||||
for (uint8_t e = 0; e < HOTENDS; e++) {
|
||||
#if ENABLED(PIDTEMP)
|
||||
if (e < HOTENDS) {
|
||||
EEPROM_WRITE(PID_PARAM(Kp, e));
|
||||
EEPROM_WRITE(PID_PARAM(Ki, e));
|
||||
EEPROM_WRITE(PID_PARAM(Kd, e));
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
EEPROM_WRITE(PID_PARAM(Kc, e));
|
||||
#else
|
||||
dummy = 1.0f; // 1.0 = default kc
|
||||
EEPROM_WRITE(dummy);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif // !PIDTEMP
|
||||
{
|
||||
dummy = DUMMY_PID_VALUE; // When read, will not change the existing value
|
||||
EEPROM_WRITE(dummy); // Kp
|
||||
dummy = 0;
|
||||
for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy); // Ki, Kd, Kc
|
||||
}
|
||||
|
||||
EEPROM_WRITE(PID_PARAM(Kp, e));
|
||||
EEPROM_WRITE(PID_PARAM(Ki, e));
|
||||
EEPROM_WRITE(PID_PARAM(Kd, e));
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
EEPROM_WRITE(PID_PARAM(Kc, e));
|
||||
#else
|
||||
dummy = 1.0f; // 1.0 = default kc
|
||||
EEPROM_WRITE(dummy);
|
||||
#endif
|
||||
#else
|
||||
dummy = DUMMY_PID_VALUE; // When read, will not change the existing value
|
||||
EEPROM_WRITE(dummy); // Kp
|
||||
dummy = 0;
|
||||
for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy); // Ki, Kd, Kc
|
||||
#endif
|
||||
} // Hotends Loop
|
||||
|
||||
_FIELD_TEST(lpq_len);
|
||||
@ -705,17 +699,15 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_WRITE(parser.volumetric_enabled);
|
||||
|
||||
// Save filament sizes
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
if (q < COUNT(planner.filament_size)) dummy = planner.filament_size[q];
|
||||
EEPROM_WRITE(dummy);
|
||||
}
|
||||
for (uint8_t q = 0; q < COUNT(planner.filament_size); q++)
|
||||
EEPROM_WRITE(planner.filament_size[q]);
|
||||
|
||||
#else
|
||||
|
||||
const bool volumetric_enabled = false;
|
||||
dummy = DEFAULT_NOMINAL_FILAMENT_DIA;
|
||||
EEPROM_WRITE(volumetric_enabled);
|
||||
for (uint8_t q = MAX_EXTRUDERS; q--;) EEPROM_WRITE(dummy);
|
||||
for (uint8_t q = EXTRUDERS; q--;) EEPROM_WRITE(dummy);
|
||||
|
||||
#endif
|
||||
|
||||
@ -762,31 +754,48 @@ void MarlinSettings::postprocess() {
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E0)
|
||||
stepperE0.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E1)
|
||||
stepperE1.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E2)
|
||||
stepperE2.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E3)
|
||||
stepperE3.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E4)
|
||||
stepperE4.getCurrent()
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
#if MAX_EXTRUDERS
|
||||
#if AXIS_IS_TMC(E0)
|
||||
stepperE0.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 1
|
||||
#if AXIS_IS_TMC(E1)
|
||||
stepperE1.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 2
|
||||
#if AXIS_IS_TMC(E2)
|
||||
stepperE2.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 3
|
||||
#if AXIS_IS_TMC(E3)
|
||||
stepperE3.getCurrent(),
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 4
|
||||
#if AXIS_IS_TMC(E4)
|
||||
stepperE4.getCurrent()
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 5
|
||||
#if AXIS_IS_TMC(E5)
|
||||
stepperE5.getCurrent()
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
#endif // MAX_EXTRUDERS > 2
|
||||
#endif // MAX_EXTRUDERS > 1
|
||||
#endif // MAX_EXTRUDERS
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
@ -836,35 +845,69 @@ void MarlinSettings::postprocess() {
|
||||
#else
|
||||
Z3_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
TMC_GET_PWMTHRS(E, E0),
|
||||
#else
|
||||
E0_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
TMC_GET_PWMTHRS(E, E1),
|
||||
#else
|
||||
E1_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
TMC_GET_PWMTHRS(E, E2),
|
||||
#else
|
||||
E2_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
TMC_GET_PWMTHRS(E, E3),
|
||||
#else
|
||||
E3_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
TMC_GET_PWMTHRS(E, E4)
|
||||
#else
|
||||
E4_HYBRID_THRESHOLD
|
||||
#endif
|
||||
#if MAX_EXTRUDERS
|
||||
#if AXIS_HAS_STEALTHCHOP(E0)
|
||||
TMC_GET_PWMTHRS(E, E0),
|
||||
#else
|
||||
E0_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 1
|
||||
#if AXIS_HAS_STEALTHCHOP(E1)
|
||||
TMC_GET_PWMTHRS(E, E1),
|
||||
#else
|
||||
E1_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 2
|
||||
#if AXIS_HAS_STEALTHCHOP(E2)
|
||||
TMC_GET_PWMTHRS(E, E2),
|
||||
#else
|
||||
E2_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 3
|
||||
#if AXIS_HAS_STEALTHCHOP(E3)
|
||||
TMC_GET_PWMTHRS(E, E3),
|
||||
#else
|
||||
E3_HYBRID_THRESHOLD,
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 4
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
TMC_GET_PWMTHRS(E, E4)
|
||||
#else
|
||||
E4_HYBRID_THRESHOLD
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 5
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_GET_PWMTHRS(E, E5)
|
||||
#else
|
||||
E5_HYBRID_THRESHOLD
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
#endif // MAX_EXTRUDERS > 2
|
||||
#endif // MAX_EXTRUDERS > 1
|
||||
#endif // MAX_EXTRUDERS
|
||||
#else
|
||||
100, 100, 3, // X, Y, Z
|
||||
100, 100, 3, 3, // X2, Y2, Z2, Z3
|
||||
30, 30, 30, 30, 30 // E0, E1, E2, E3, E4
|
||||
100, 100, 3, // X, Y, Z
|
||||
100, 100, 3, 3 // X2, Y2, Z2, Z3
|
||||
#if MAX_EXTRUDERS
|
||||
, 30 // E0
|
||||
#if MAX_EXTRUDERS > 1
|
||||
, 30 // E1
|
||||
#if MAX_EXTRUDERS > 2
|
||||
, 30 // E2
|
||||
#if MAX_EXTRUDERS > 3
|
||||
, 30 // E3
|
||||
#if MAX_EXTRUDERS > 4
|
||||
, 30 // E4
|
||||
#if MAX_EXTRUDERS > 5
|
||||
, 30 // E5
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
EEPROM_WRITE(tmc_hybrid_threshold);
|
||||
@ -951,17 +994,13 @@ void MarlinSettings::postprocess() {
|
||||
_FIELD_TEST(filament_change_unload_length);
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
if (q < COUNT(filament_change_unload_length)) dummy = filament_change_unload_length[q];
|
||||
EEPROM_WRITE(dummy);
|
||||
}
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
if (q < COUNT(filament_change_load_length)) dummy = filament_change_load_length[q];
|
||||
EEPROM_WRITE(dummy);
|
||||
for (uint8_t q = 0; q < COUNT(filament_change_unload_length); q++) {
|
||||
EEPROM_WRITE(filament_change_unload_length[q]);
|
||||
EEPROM_WRITE(filament_change_load_length[q]);
|
||||
}
|
||||
#else
|
||||
dummy = 0;
|
||||
for (uint8_t q = MAX_EXTRUDERS * 2; q--;) EEPROM_WRITE(dummy);
|
||||
for (uint8_t q = EXTRUDERS * 2; q--;) EEPROM_WRITE(dummy);
|
||||
#endif
|
||||
|
||||
//
|
||||
@ -1271,9 +1310,9 @@ void MarlinSettings::postprocess() {
|
||||
//
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
for (uint8_t e = 0; e < MAX_EXTRUDERS; e++) {
|
||||
for (uint8_t e = 0; e < HOTENDS; e++) {
|
||||
EEPROM_READ(dummy); // Kp
|
||||
if (e < HOTENDS && dummy != DUMMY_PID_VALUE) {
|
||||
if (dummy != DUMMY_PID_VALUE) {
|
||||
// do not need to scale PID values as the values in EEPROM are already scaled
|
||||
if (!validating) PID_PARAM(Kp, e) = dummy;
|
||||
EEPROM_READ(PID_PARAM(Ki, e));
|
||||
@ -1284,13 +1323,12 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_READ(dummy);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
else
|
||||
for (uint8_t q=3; q--;) EEPROM_READ(dummy); // Ki, Kd, Kc
|
||||
}
|
||||
}
|
||||
#else // !PIDTEMP
|
||||
// 4 x 4 = 16 slots for PID parameters
|
||||
for (uint8_t q = MAX_EXTRUDERS * 4; q--;) EEPROM_READ(dummy); // Kp, Ki, Kd, Kc
|
||||
for (uint8_t q = HOTENDS * 4; q--;) EEPROM_READ(dummy); // Kp, Ki, Kd, Kc
|
||||
#endif // !PIDTEMP
|
||||
|
||||
//
|
||||
@ -1359,16 +1397,15 @@ void MarlinSettings::postprocess() {
|
||||
|
||||
EEPROM_READ(parser.volumetric_enabled);
|
||||
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
for (uint8_t q = 0; q < COUNT(planner.filament_size); q++) {
|
||||
EEPROM_READ(dummy);
|
||||
if (!validating && q < COUNT(planner.filament_size))
|
||||
planner.filament_size[q] = dummy;
|
||||
if (!validating) planner.filament_size[q] = dummy;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
EEPROM_READ(dummyb);
|
||||
for (uint8_t q=MAX_EXTRUDERS; q--;) EEPROM_READ(dummy);
|
||||
for (uint8_t q=EXTRUDERS; q--;) EEPROM_READ(dummy);
|
||||
|
||||
#endif
|
||||
|
||||
@ -1422,6 +1459,9 @@ void MarlinSettings::postprocess() {
|
||||
#if AXIS_IS_TMC(E4)
|
||||
SET_CURR(E4);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
SET_CURR(E5);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
uint16_t val;
|
||||
@ -1469,6 +1509,9 @@ void MarlinSettings::postprocess() {
|
||||
#if AXIS_HAS_STEALTHCHOP(E4)
|
||||
TMC_SET_PWMTHRS(E, E4);
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_SET_PWMTHRS(E, E5);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
uint32_t thrs_val;
|
||||
@ -1580,16 +1623,14 @@ void MarlinSettings::postprocess() {
|
||||
_FIELD_TEST(filament_change_unload_length);
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
for (uint8_t q = 0; q < COUNT(filament_change_unload_length); q++) {
|
||||
EEPROM_READ(dummy);
|
||||
if (!validating && q < COUNT(filament_change_unload_length)) filament_change_unload_length[q] = dummy;
|
||||
}
|
||||
for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
|
||||
EEPROM_READ(dummy);
|
||||
if (!validating && q < COUNT(filament_change_load_length)) filament_change_load_length[q] = dummy;
|
||||
}
|
||||
#else
|
||||
for (uint8_t q = MAX_EXTRUDERS * 2; q--;) EEPROM_READ(dummy);
|
||||
for (uint8_t q = EXTRUDERS * 2; q--;) EEPROM_READ(dummy);
|
||||
#endif
|
||||
|
||||
eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET));
|
||||
@ -2176,6 +2217,11 @@ void MarlinSettings::reset(PORTARG_SOLO) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR_P(port, " M200 T4 D", LINEAR_UNIT(planner.filament_size[4]));
|
||||
SERIAL_EOL_P(port);
|
||||
#if EXTRUDERS > 5
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR_P(port, " M200 T5 D", LINEAR_UNIT(planner.filament_size[5]));
|
||||
SERIAL_EOL_P(port);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -2681,6 +2727,10 @@ void MarlinSettings::reset(PORTARG_SOLO) {
|
||||
say_M906(PORTVAR_SOLO);
|
||||
SERIAL_ECHOLNPAIR_P(port, " T4 E", stepperE4.getCurrent());
|
||||
#endif
|
||||
#if E_STEPPERS > 5 && AXIS_IS_TMC(E5)
|
||||
say_M906(PORTVAR_SOLO);
|
||||
SERIAL_ECHOLNPAIR_P(port, " T5 E", stepperE5.getCurrent());
|
||||
#endif
|
||||
SERIAL_EOL_P(port);
|
||||
|
||||
/**
|
||||
@ -2748,6 +2798,10 @@ void MarlinSettings::reset(PORTARG_SOLO) {
|
||||
say_M913(PORTVAR_SOLO);
|
||||
SERIAL_ECHOLNPAIR_P(port, " T4 E", TMC_GET_PWMTHRS(E, E4));
|
||||
#endif
|
||||
#if E_STEPPERS > 5 && AXIS_IS_TMC(E5)
|
||||
say_M913(PORTVAR_SOLO);
|
||||
SERIAL_ECHOLNPAIR_P(port, " T5 E", TMC_GET_PWMTHRS(E, E5));
|
||||
#endif
|
||||
SERIAL_EOL_P(port);
|
||||
#endif // HYBRID_THRESHOLD
|
||||
|
||||
@ -2871,6 +2925,12 @@ void MarlinSettings::reset(PORTARG_SOLO) {
|
||||
say_M603(PORTVAR_SOLO);
|
||||
SERIAL_ECHOPAIR_P(port, "T4 L", LINEAR_UNIT(filament_change_load_length[4]));
|
||||
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[4]));
|
||||
#if EXTRUDERS > 5
|
||||
CONFIG_ECHO_START;
|
||||
say_M603(PORTVAR_SOLO);
|
||||
SERIAL_ECHOPAIR_P(port, "T5 L", LINEAR_UNIT(filament_change_load_length[5]));
|
||||
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[5]));
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
|
@ -1849,6 +1849,9 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
DISABLE_IDLE_E(3);
|
||||
#if EXTRUDERS > 4
|
||||
DISABLE_IDLE_E(4);
|
||||
#if EXTRUDERS > 5
|
||||
DISABLE_IDLE_E(5);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -1871,6 +1874,9 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
DISABLE_IDLE_E(3);
|
||||
#if EXTRUDERS > 4
|
||||
DISABLE_IDLE_E(4);
|
||||
#if EXTRUDERS > 5
|
||||
DISABLE_IDLE_E(5);
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -1885,6 +1891,9 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
DISABLE_IDLE_E(3);
|
||||
#if EXTRUDERS > 4
|
||||
DISABLE_IDLE_E(4);
|
||||
#if EXTRUDERS > 5
|
||||
DISABLE_IDLE_E(5);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
enable_E2();
|
||||
@ -1897,6 +1906,9 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
DISABLE_IDLE_E(2);
|
||||
#if EXTRUDERS > 4
|
||||
DISABLE_IDLE_E(4);
|
||||
#if EXTRUDERS > 5
|
||||
DISABLE_IDLE_E(5);
|
||||
#endif
|
||||
#endif
|
||||
enable_E3();
|
||||
g_uc_extruder_last_move[3] = (BLOCK_BUFFER_SIZE) * 2;
|
||||
@ -1907,9 +1919,23 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
DISABLE_IDLE_E(1);
|
||||
DISABLE_IDLE_E(2);
|
||||
DISABLE_IDLE_E(3);
|
||||
#if EXTRUDERS > 5
|
||||
DISABLE_IDLE_E(5);
|
||||
#endif
|
||||
enable_E4();
|
||||
g_uc_extruder_last_move[4] = (BLOCK_BUFFER_SIZE) * 2;
|
||||
break;
|
||||
#if EXTRUDERS > 5
|
||||
case 5:
|
||||
DISABLE_IDLE_E(0);
|
||||
DISABLE_IDLE_E(1);
|
||||
DISABLE_IDLE_E(2);
|
||||
DISABLE_IDLE_E(3);
|
||||
DISABLE_IDLE_E(4);
|
||||
enable_E5();
|
||||
g_uc_extruder_last_move[5] = (BLOCK_BUFFER_SIZE) * 2;
|
||||
break;
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -1921,6 +1947,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
enable_E2();
|
||||
enable_E3();
|
||||
enable_E4();
|
||||
enable_E5();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1982,6 +1982,9 @@ void Stepper::init() {
|
||||
#if HAS_E4_DIR
|
||||
E4_DIR_INIT;
|
||||
#endif
|
||||
#if HAS_E5_DIR
|
||||
E5_DIR_INIT;
|
||||
#endif
|
||||
|
||||
// Init Enable Pins - steppers default to disabled.
|
||||
#if HAS_X_ENABLE
|
||||
@ -2032,6 +2035,10 @@ void Stepper::init() {
|
||||
E4_ENABLE_INIT;
|
||||
if (!E_ENABLE_ON) E4_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
#if HAS_E5_ENABLE
|
||||
E5_ENABLE_INIT;
|
||||
if (!E_ENABLE_ON) E5_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
|
||||
#define _STEP_INIT(AXIS) AXIS ##_STEP_INIT
|
||||
#define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW)
|
||||
@ -2088,6 +2095,9 @@ void Stepper::init() {
|
||||
#if E_STEPPERS > 4 && HAS_E4_STEP
|
||||
E_AXIS_INIT(4);
|
||||
#endif
|
||||
#if E_STEPPERS > 5 && HAS_E5_STEP
|
||||
E_AXIS_INIT(5);
|
||||
#endif
|
||||
|
||||
// Init Stepper ISR to 122 Hz for quick starting
|
||||
HAL_timer_start(STEP_TIMER_NUM, 122);
|
||||
@ -2524,6 +2534,10 @@ void Stepper::report_positions() {
|
||||
SET_OUTPUT(E4_MS1_PIN);
|
||||
SET_OUTPUT(E4_MS2_PIN);
|
||||
#endif
|
||||
#if HAS_E5_MICROSTEPS
|
||||
SET_OUTPUT(E5_MS1_PIN);
|
||||
SET_OUTPUT(E5_MS2_PIN);
|
||||
#endif
|
||||
static const uint8_t microstep_modes[] = MICROSTEP_MODES;
|
||||
for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
|
||||
microstep_mode(i, microstep_modes[i]);
|
||||
@ -2553,6 +2567,9 @@ void Stepper::report_positions() {
|
||||
#if HAS_E4_MICROSTEPS
|
||||
case 7: WRITE(E4_MS1_PIN, ms1); break;
|
||||
#endif
|
||||
#if HAS_E5_MICROSTEPS
|
||||
case 8: WRITE(E5_MS1_PIN, ms1); break;
|
||||
#endif
|
||||
}
|
||||
if (ms2 >= 0) switch (driver) {
|
||||
case 0: WRITE(X_MS2_PIN, ms2); break;
|
||||
@ -2577,6 +2594,9 @@ void Stepper::report_positions() {
|
||||
#if HAS_E4_MICROSTEPS
|
||||
case 7: WRITE(E4_MS2_PIN, ms2); break;
|
||||
#endif
|
||||
#if HAS_E5_MICROSTEPS
|
||||
case 8: WRITE(E5_MS2_PIN, ms2); break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -2638,6 +2658,11 @@ void Stepper::report_positions() {
|
||||
SERIAL_PROTOCOL(READ(E4_MS1_PIN));
|
||||
SERIAL_PROTOCOLLN(READ(E4_MS2_PIN));
|
||||
#endif
|
||||
#if HAS_E5_MICROSTEPS
|
||||
SERIAL_PROTOCOLPGM("E5: ");
|
||||
SERIAL_PROTOCOL(READ(E5_MS1_PIN));
|
||||
SERIAL_PROTOCOLLN(READ(E5_MS2_PIN));
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // HAS_MICROSTEPS
|
||||
|
@ -482,11 +482,48 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E4_STEP_WRITE(STATE) WRITE(E4_STEP_PIN,STATE)
|
||||
#define E4_STEP_READ READ(E4_STEP_PIN)
|
||||
|
||||
// E5 Stepper
|
||||
#if AXIS_DRIVER_TYPE(E5, L6470)
|
||||
extern L6470 stepperE5;
|
||||
#define E5_ENABLE_INIT NOOP
|
||||
#define E5_ENABLE_WRITE(STATE) do{ if (STATE) stepperE5.Step_Clock(stepperE5.getStatus() & STATUS_HIZ); else stepperE5.softFree(); }while(0)
|
||||
#define E5_ENABLE_READ (stepperE5.getStatus() & STATUS_HIZ)
|
||||
#define E5_DIR_INIT NOOP
|
||||
#define E5_DIR_WRITE(STATE) stepperE5.Step_Clock(STATE)
|
||||
#define E5_DIR_READ (stepperE5.getStatus() & STATUS_DIR)
|
||||
#else
|
||||
#if AXIS_DRIVER_TYPE(E5, TMC26X)
|
||||
extern TMC26XStepper stepperE5;
|
||||
#define E5_ENABLE_INIT NOOP
|
||||
#define E5_ENABLE_WRITE(STATE) stepperE5.setEnabled(STATE)
|
||||
#define E5_ENABLE_READ stepperE5.isEnabled()
|
||||
#else
|
||||
#if AXIS_DRIVER_TYPE(E5, TMC2130)
|
||||
extern TMC2130Stepper stepperE5;
|
||||
#elif AXIS_DRIVER_TYPE(E5, TMC2208)
|
||||
extern TMC2208Stepper stepperE5;
|
||||
#endif
|
||||
#define E5_ENABLE_INIT SET_OUTPUT(E5_ENABLE_PIN)
|
||||
#define E5_ENABLE_WRITE(STATE) WRITE(E5_ENABLE_PIN,STATE)
|
||||
#define E5_ENABLE_READ READ(E5_ENABLE_PIN)
|
||||
#endif
|
||||
#define E5_DIR_INIT SET_OUTPUT(E5_DIR_PIN)
|
||||
#define E5_DIR_WRITE(STATE) WRITE(E5_DIR_PIN,STATE)
|
||||
#define E5_DIR_READ READ(E5_DIR_PIN)
|
||||
#endif
|
||||
#define E5_STEP_INIT SET_OUTPUT(E5_STEP_PIN)
|
||||
#define E5_STEP_WRITE(STATE) WRITE(E5_STEP_PIN,STATE)
|
||||
#define E5_STEP_READ READ(E5_STEP_PIN)
|
||||
|
||||
/**
|
||||
* Extruder indirection for the single E axis
|
||||
*/
|
||||
#if ENABLED(SWITCHING_EXTRUDER) // One stepper driver per two extruders, reversed on odd index
|
||||
#if EXTRUDERS > 4
|
||||
#if EXTRUDERS > 5
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0)
|
||||
#define NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E0_DIR_WRITE( INVERT_E0_DIR); break; case 2: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 3: E1_DIR_WRITE( INVERT_E1_DIR); break; case 4: E2_DIR_WRITE(!INVERT_E2_DIR); case 5: E2_DIR_WRITE( INVERT_E2_DIR); } }while(0)
|
||||
#define REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 2: E1_DIR_WRITE( INVERT_E1_DIR); break; case 3: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 4: E2_DIR_WRITE( INVERT_E2_DIR); case 5: E2_DIR_WRITE(!INVERT_E2_DIR); } }while(0)
|
||||
#elif EXTRUDERS > 4
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0)
|
||||
#define NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E0_DIR_WRITE( INVERT_E0_DIR); break; case 2: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 3: E1_DIR_WRITE( INVERT_E1_DIR); break; case 4: E2_DIR_WRITE(!INVERT_E2_DIR); } }while(0)
|
||||
#define REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 2: E1_DIR_WRITE( INVERT_E1_DIR); break; case 3: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 4: E2_DIR_WRITE( INVERT_E2_DIR); } }while(0)
|
||||
@ -507,6 +544,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#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)
|
||||
#elif E_STEPPERS > 5
|
||||
#define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); case 5: E5_STEP_WRITE(V); } }while(0)
|
||||
#define NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); case 5: E5_DIR_WRITE(!INVERT_E5_DIR); } }while(0)
|
||||
#define REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); break; case 4: E4_DIR_WRITE( INVERT_E4_DIR); case 5: E5_DIR_WRITE( INVERT_E5_DIR); } }while(0)
|
||||
#elif E_STEPPERS > 4
|
||||
#define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); } }while(0)
|
||||
#define NORM_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); } }while(0)
|
||||
|
@ -74,6 +74,7 @@ Temperature thermalManager;
|
||||
(HOTENDS > 2 && (E) == 2) ? PSTR(MSG_E3 " " MSG) : \
|
||||
(HOTENDS > 3 && (E) == 3) ? PSTR(MSG_E4 " " MSG) : \
|
||||
(HOTENDS > 4 && (E) == 4) ? PSTR(MSG_E5 " " MSG) : \
|
||||
(HOTENDS > 5 && (E) == 5) ? PSTR(MSG_E6 " " MSG) : \
|
||||
PSTR(MSG_E1 " " MSG)
|
||||
#else
|
||||
#define TEMP_ERR_PSTR(MSG, E) \
|
||||
@ -81,6 +82,7 @@ Temperature thermalManager;
|
||||
(HOTENDS > 2 && (E) == 2) ? PSTR(MSG_E3 " " MSG) : \
|
||||
(HOTENDS > 3 && (E) == 3) ? PSTR(MSG_E4 " " MSG) : \
|
||||
(HOTENDS > 4 && (E) == 4) ? PSTR(MSG_E5 " " MSG) : \
|
||||
(HOTENDS > 5 && (E) == 5) ? PSTR(MSG_E6 " " MSG) : \
|
||||
PSTR(MSG_E1 " " MSG)
|
||||
#endif
|
||||
|
||||
@ -149,7 +151,7 @@ int16_t Temperature::current_temperature_raw[HOTENDS] = { 0 },
|
||||
#endif
|
||||
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
volatile int Temperature::babystepsTodo[XYZ] = { 0 };
|
||||
volatile int16_t Temperature::babystepsTodo[XYZ] = { 0 };
|
||||
#endif
|
||||
|
||||
#if WATCH_HOTENDS
|
||||
@ -527,13 +529,14 @@ int Temperature::getHeaterPower(const int heater) {
|
||||
#if HAS_AUTO_FAN
|
||||
|
||||
void Temperature::checkExtruderAutoFans() {
|
||||
static const pin_t fanPin[] PROGMEM = { E0_AUTO_FAN_PIN, E1_AUTO_FAN_PIN, E2_AUTO_FAN_PIN, E3_AUTO_FAN_PIN, E4_AUTO_FAN_PIN, CHAMBER_AUTO_FAN_PIN };
|
||||
static const pin_t fanPin[] PROGMEM = { E0_AUTO_FAN_PIN, E1_AUTO_FAN_PIN, E2_AUTO_FAN_PIN, E3_AUTO_FAN_PIN, E4_AUTO_FAN_PIN, E5_AUTO_FAN_PIN, CHAMBER_AUTO_FAN_PIN };
|
||||
static const uint8_t fanBit[] PROGMEM = {
|
||||
0,
|
||||
AUTO_1_IS_0 ? 0 : 1,
|
||||
AUTO_2_IS_0 ? 0 : AUTO_2_IS_1 ? 1 : 2,
|
||||
AUTO_3_IS_0 ? 0 : AUTO_3_IS_1 ? 1 : AUTO_3_IS_2 ? 2 : 3,
|
||||
AUTO_4_IS_0 ? 0 : AUTO_4_IS_1 ? 1 : AUTO_4_IS_2 ? 2 : AUTO_4_IS_3 ? 3 : 4,
|
||||
AUTO_4_IS_0 ? 0 : AUTO_4_IS_1 ? 1 : AUTO_4_IS_2 ? 2 : AUTO_4_IS_3 ? 3 : 4,
|
||||
AUTO_5_IS_0 ? 0 : AUTO_5_IS_1 ? 1 : AUTO_5_IS_2 ? 2 : AUTO_5_IS_3 ? 3 : AUTO_5_IS_4 ? 4 : 5,
|
||||
AUTO_CHAMBER_IS_0 ? 0 : AUTO_CHAMBER_IS_1 ? 1 : AUTO_CHAMBER_IS_2 ? 2 : AUTO_CHAMBER_IS_3 ? 3 : AUTO_CHAMBER_IS_4 ? 4 : 5
|
||||
};
|
||||
uint8_t fanState = 0;
|
||||
@ -1193,6 +1196,9 @@ void Temperature::init() {
|
||||
#if HAS_TEMP_ADC_4
|
||||
HAL_ANALOG_SELECT(TEMP_4_PIN);
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_5
|
||||
HAL_ANALOG_SELECT(TEMP_5_PIN);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
HAL_ANALOG_SELECT(TEMP_BED_PIN);
|
||||
#endif
|
||||
@ -1226,7 +1232,7 @@ void Temperature::init() {
|
||||
SET_OUTPUT(E1_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_2 && !AUTO_2_IS_0 && !AUTO_2_IS_1
|
||||
#if HAS_AUTO_FAN_2 && !(AUTO_2_IS_0 || AUTO_2_IS_1)
|
||||
#if E2_AUTO_FAN_PIN == FAN1_PIN
|
||||
SET_OUTPUT(E2_AUTO_FAN_PIN);
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
@ -1236,7 +1242,7 @@ void Temperature::init() {
|
||||
SET_OUTPUT(E2_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_3 && !AUTO_3_IS_0 && !AUTO_3_IS_1 && !AUTO_3_IS_2
|
||||
#if HAS_AUTO_FAN_3 && !(AUTO_3_IS_0 || AUTO_3_IS_1 || AUTO_3_IS_2)
|
||||
#if E3_AUTO_FAN_PIN == FAN1_PIN
|
||||
SET_OUTPUT(E3_AUTO_FAN_PIN);
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
@ -1246,7 +1252,7 @@ void Temperature::init() {
|
||||
SET_OUTPUT(E3_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_4 && !AUTO_4_IS_0 && !AUTO_4_IS_1 && !AUTO_4_IS_2 && !AUTO_4_IS_3
|
||||
#if HAS_AUTO_FAN_4 && !(AUTO_4_IS_0 || AUTO_4_IS_1 || AUTO_4_IS_2 || AUTO_4_IS_3)
|
||||
#if E4_AUTO_FAN_PIN == FAN1_PIN
|
||||
SET_OUTPUT(E4_AUTO_FAN_PIN);
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
@ -1256,7 +1262,17 @@ void Temperature::init() {
|
||||
SET_OUTPUT(E4_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_0 && !AUTO_CHAMBER_IS_1 && !AUTO_CHAMBER_IS_2 && !AUTO_CHAMBER_IS_3 && ! AUTO_CHAMBER_IS_4
|
||||
#if HAS_AUTO_FAN_5 && !(AUTO_5_IS_0 || AUTO_5_IS_1 || AUTO_5_IS_2 || AUTO_5_IS_3 || AUTO_5_IS_4)
|
||||
#if E5_AUTO_FAN_PIN == FAN1_PIN
|
||||
SET_OUTPUT(E5_AUTO_FAN_PIN);
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
setPwmFrequency(E5_AUTO_FAN_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8
|
||||
#endif
|
||||
#else
|
||||
SET_OUTPUT(E5_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_AUTO_CHAMBER_FAN && !(AUTO_CHAMBER_IS_0 || AUTO_CHAMBER_IS_1 || AUTO_CHAMBER_IS_2 || AUTO_CHAMBER_IS_3 || AUTO_CHAMBER_IS_4 || AUTO_CHAMBER_IS_5)
|
||||
#if CHAMBER_AUTO_FAN_PIN == FAN1_PIN
|
||||
SET_OUTPUT(CHAMBER_AUTO_FAN_PIN);
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
@ -1321,6 +1337,14 @@ void Temperature::init() {
|
||||
#ifdef HEATER_4_MAXTEMP
|
||||
TEMP_MAX_ROUTINE(4);
|
||||
#endif
|
||||
#if HOTENDS > 5
|
||||
#ifdef HEATER_5_MINTEMP
|
||||
TEMP_MIN_ROUTINE(5);
|
||||
#endif
|
||||
#ifdef HEATER_5_MAXTEMP
|
||||
TEMP_MAX_ROUTINE(5);
|
||||
#endif
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1539,6 +1563,9 @@ void Temperature::disable_all_heaters() {
|
||||
DISABLE_HEATER(3);
|
||||
#if HOTENDS > 4
|
||||
DISABLE_HEATER(4);
|
||||
#if HOTENDS > 5
|
||||
DISABLE_HEATER(5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1665,10 +1692,13 @@ void Temperature::set_current_temp_raw() {
|
||||
current_temperature_raw[3] = raw_temp_value[3];
|
||||
#if HAS_TEMP_ADC_4
|
||||
current_temperature_raw[4] = raw_temp_value[4];
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_5
|
||||
current_temperature_raw[5] = raw_temp_value[5];
|
||||
#endif // HAS_TEMP_ADC_5
|
||||
#endif // HAS_TEMP_ADC_4
|
||||
#endif // HAS_TEMP_ADC_3
|
||||
#endif // HAS_TEMP_ADC_2
|
||||
#endif // HAS_TEMP_ADC_1
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
current_temperature_bed_raw = raw_temp_bed_value;
|
||||
@ -1718,6 +1748,9 @@ void Temperature::readings_ready() {
|
||||
, TEMPDIR(3)
|
||||
#if HOTENDS > 4
|
||||
, TEMPDIR(4)
|
||||
#if HOTENDS > 5
|
||||
, TEMPDIR(5)
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1815,6 +1848,9 @@ void Temperature::isr() {
|
||||
ISR_STATICS(3);
|
||||
#if HOTENDS > 4
|
||||
ISR_STATICS(4);
|
||||
#if HOTENDS > 5
|
||||
ISR_STATICS(5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1851,6 +1887,10 @@ void Temperature::isr() {
|
||||
#if HOTENDS > 4
|
||||
soft_pwm_count_4 = (soft_pwm_count_4 & pwm_mask) + soft_pwm_amount[4];
|
||||
WRITE_HEATER_4(soft_pwm_count_4 > pwm_mask ? HIGH : LOW);
|
||||
#if HOTENDS > 5
|
||||
soft_pwm_count_5 = (soft_pwm_count_5 & pwm_mask) + soft_pwm_amount[5];
|
||||
WRITE_HEATER_5(soft_pwm_count_5 > pwm_mask ? HIGH : LOW);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1886,6 +1926,9 @@ void Temperature::isr() {
|
||||
if (soft_pwm_count_3 <= pwm_count_tmp) WRITE_HEATER_3(LOW);
|
||||
#if HOTENDS > 4
|
||||
if (soft_pwm_count_4 <= pwm_count_tmp) WRITE_HEATER_4(LOW);
|
||||
#if HOTENDS > 5
|
||||
if (soft_pwm_count_5 <= pwm_count_tmp) WRITE_HEATER_5(LOW);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1968,6 +2011,9 @@ void Temperature::isr() {
|
||||
SLOW_PWM_ROUTINE(3);
|
||||
#if HOTENDS > 4
|
||||
SLOW_PWM_ROUTINE(4);
|
||||
#if HOTENDS > 5
|
||||
SLOW_PWM_ROUTINE(5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -1987,6 +2033,9 @@ void Temperature::isr() {
|
||||
PWM_OFF_ROUTINE(3);
|
||||
#if HOTENDS > 4
|
||||
PWM_OFF_ROUTINE(4);
|
||||
#if HOTENDS > 5
|
||||
PWM_OFF_ROUTINE(5);
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -2047,6 +2096,9 @@ void Temperature::isr() {
|
||||
if (state_timer_heater_3 > 0) state_timer_heater_3--;
|
||||
#if HOTENDS > 4
|
||||
if (state_timer_heater_4 > 0) state_timer_heater_4--;
|
||||
#if HOTENDS > 5
|
||||
if (state_timer_heater_5 > 0) state_timer_heater_5--;
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -2169,6 +2221,15 @@ void Temperature::isr() {
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if HAS_TEMP_ADC_5
|
||||
case PrepareTemp_5:
|
||||
HAL_START_ADC(TEMP_5_PIN);
|
||||
break;
|
||||
case MeasureTemp_5:
|
||||
ACCUMULATE_ADC(raw_temp_value[5]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
case Prepare_FILWIDTH:
|
||||
HAL_START_ADC(FILWIDTH_PIN);
|
||||
@ -2218,7 +2279,7 @@ void Temperature::isr() {
|
||||
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
LOOP_XYZ(axis) {
|
||||
const int curTodo = babystepsTodo[axis]; // get rid of volatile for performance
|
||||
const int16_t curTodo = babystepsTodo[axis]; // get rid of volatile for performance
|
||||
if (curTodo) {
|
||||
stepper.babystep((AxisEnum)axis, curTodo > 0);
|
||||
if (curTodo > 0) babystepsTodo[axis]--;
|
||||
|
@ -163,7 +163,7 @@ class Temperature {
|
||||
#endif
|
||||
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
static volatile int babystepsTodo[3];
|
||||
static volatile int16_t babystepsTodo[3];
|
||||
#endif
|
||||
|
||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||
|
@ -468,6 +468,15 @@
|
||||
#ifndef E4_MS3_PIN
|
||||
#define E4_MS3_PIN -1
|
||||
#endif
|
||||
#ifndef E5_MS1_PIN
|
||||
#define E5_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef E5_MS2_PIN
|
||||
#define E5_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef E5_MS3_PIN
|
||||
#define E5_MS3_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef E0_STEP_PIN
|
||||
#define E0_STEP_PIN -1
|
||||
@ -514,6 +523,15 @@
|
||||
#ifndef E4_ENABLE_PIN
|
||||
#define E4_ENABLE_PIN -1
|
||||
#endif
|
||||
#ifndef E5_STEP_PIN
|
||||
#define E5_STEP_PIN -1
|
||||
#endif
|
||||
#ifndef E5_DIR_PIN
|
||||
#define E5_DIR_PIN -1
|
||||
#endif
|
||||
#ifndef E5_ENABLE_PIN
|
||||
#define E5_ENABLE_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef X_CS_PIN
|
||||
#define X_CS_PIN -1
|
||||
@ -539,6 +557,9 @@
|
||||
#ifndef E4_CS_PIN
|
||||
#define E4_CS_PIN -1
|
||||
#endif
|
||||
#ifndef E5_CS_PIN
|
||||
#define E5_CS_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN -1
|
||||
@ -578,6 +599,9 @@
|
||||
#ifndef HEATER_4_PIN
|
||||
#define HEATER_4_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_5_PIN
|
||||
#define HEATER_5_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_BED_PIN
|
||||
#define HEATER_BED_PIN -1
|
||||
#endif
|
||||
@ -597,6 +621,9 @@
|
||||
#ifndef TEMP_4_PIN
|
||||
#define TEMP_4_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_5_PIN
|
||||
#define TEMP_5_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_BED_PIN
|
||||
#define TEMP_BED_PIN -1
|
||||
#endif
|
||||
@ -669,6 +696,13 @@
|
||||
#define E4_AUTO_FAN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#ifndef E5_AUTO_FAN_PIN
|
||||
#ifdef ORIG_E5_AUTO_FAN_PIN
|
||||
#define E5_AUTO_FAN_PIN ORIG_E5_AUTO_FAN_PIN
|
||||
#else
|
||||
#define E5_AUTO_FAN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#ifndef CHAMBER_AUTO_FAN_PIN
|
||||
#ifdef ORIG_CHAMBER_AUTO_FAN_PIN
|
||||
#define CHAMBER_AUTO_FAN_PIN ORIG_CHAMBER_AUTO_FAN_PIN
|
||||
@ -683,6 +717,7 @@
|
||||
#define _E2_PINS
|
||||
#define _E3_PINS
|
||||
#define _E4_PINS
|
||||
#define _E5_PINS
|
||||
|
||||
#if ENABLED(SWITCHING_EXTRUDER)
|
||||
// Tools 0 and 1 use E0
|
||||
@ -706,6 +741,10 @@
|
||||
#if EXTRUDERS > 4
|
||||
#undef _E4_PINS
|
||||
#define _E4_PINS E4_STEP_PIN, E4_DIR_PIN, E4_ENABLE_PIN, E4_MS1_PIN, E4_MS2_PIN, E4_MS3_PIN, E4_CS_PIN,
|
||||
#if EXTRUDERS > 5
|
||||
#undef _E5_PINS
|
||||
#define _E5_PINS E5_STEP_PIN, E5_DIR_PIN, E5_ENABLE_PIN, E5_MS1_PIN, E5_MS2_PIN, E5_MS3_PIN, E5_CS_PIN,
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
@ -716,6 +755,7 @@
|
||||
#define _H2_PINS
|
||||
#define _H3_PINS
|
||||
#define _H4_PINS
|
||||
#define _H5_PINS
|
||||
|
||||
#if HOTENDS > 1
|
||||
#undef _H1_PINS
|
||||
@ -728,7 +768,11 @@
|
||||
#define _H3_PINS HEATER_3_PIN, E3_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_3_PIN),
|
||||
#if HOTENDS > 4
|
||||
#undef _H4_PINS
|
||||
#define _H4_PINS HEATER_4_PIN, analogInputToDigitalPin(TEMP_4_PIN),
|
||||
#define _H4_PINS HEATER_4_PIN, E4_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_4_PIN),
|
||||
#if HOTENDS > 5
|
||||
#undef _H5_PINS
|
||||
#define _H5_PINS HEATER_5_PIN, E5_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_5_PIN),
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
@ -744,6 +788,10 @@
|
||||
#if MIXING_STEPPERS > 4
|
||||
#undef _E4_PINS
|
||||
#define _E4_PINS E4_STEP_PIN, E4_DIR_PIN, E4_ENABLE_PIN, E4_MS1_PIN, E4_MS2_PIN, E4_CS_PIN,
|
||||
#if MIXING_STEPPERS > 5
|
||||
#undef _E5_PINS
|
||||
#define _E5_PINS E5_STEP_PIN, E5_DIR_PIN, E5_ENABLE_PIN, E5_MS1_PIN, E5_MS2_PIN, E5_CS_PIN,
|
||||
#endif // MIXING_STEPPERS > 5
|
||||
#endif // MIXING_STEPPERS > 4
|
||||
#endif // MIXING_STEPPERS > 3
|
||||
#endif // MIXING_STEPPERS > 2
|
||||
@ -856,7 +904,7 @@
|
||||
#ifndef X2_CS_PIN
|
||||
#define X2_CS_PIN _EPIN(E_STEPPERS, CS)
|
||||
#endif
|
||||
#if E_STEPPERS > 4 || !PIN_EXISTS(X2_ENABLE)
|
||||
#if E_STEPPERS > MAX_EXTRUDERS || !PIN_EXISTS(X2_ENABLE)
|
||||
#error "No E stepper plug left for X2!"
|
||||
#endif
|
||||
#endif
|
||||
@ -881,7 +929,7 @@
|
||||
#ifndef Y2_CS_PIN
|
||||
#define Y2_CS_PIN _EPIN(Y2_E_INDEX, CS)
|
||||
#endif
|
||||
#if Y2_E_INDEX > 4 || !PIN_EXISTS(Y2_ENABLE)
|
||||
#if Y2_E_INDEX > MAX_EXTRUDERS || !PIN_EXISTS(Y2_ENABLE)
|
||||
#error "No E stepper plug left for Y2!"
|
||||
#endif
|
||||
#endif
|
||||
@ -906,7 +954,7 @@
|
||||
#ifndef Z2_CS_PIN
|
||||
#define Z2_CS_PIN _EPIN(Z2_E_INDEX, CS)
|
||||
#endif
|
||||
#if Z2_E_INDEX > 4 || !PIN_EXISTS(Z2_ENABLE)
|
||||
#if Z2_E_INDEX > MAX_EXTRUDERS || !PIN_EXISTS(Z2_ENABLE)
|
||||
#error "No E stepper plug left for Z2!"
|
||||
#endif
|
||||
#endif
|
||||
@ -952,8 +1000,8 @@
|
||||
Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, Y_MS1_PIN, Y_MS2_PIN, Y_CS_PIN, \
|
||||
Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MS1_PIN, Z_MS2_PIN, Z_MS3_PIN, Z_CS_PIN, Z_MIN_PROBE_PIN, \
|
||||
PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, FAN1_PIN, FAN2_PIN, CONTROLLER_FAN_PIN, \
|
||||
_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS BED_PINS \
|
||||
_H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS \
|
||||
_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS _E5_PINS BED_PINS \
|
||||
_H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS _H5_PINS \
|
||||
_X2_PINS _Y2_PINS _Z2_PINS _Z3_PINS \
|
||||
HAL_SENSITIVE_PINS \
|
||||
}
|
||||
|
@ -361,6 +361,30 @@
|
||||
#if PIN_EXISTS(E4_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E4_STEP_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_CS)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_CS_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_DIR)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_DIR_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_MS1_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_MS2)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_MS2_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_MS3)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_MS3_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_STEP_PIN)
|
||||
#endif
|
||||
#if defined(ENET_CRS) && ENET_CRS >= 0
|
||||
REPORT_NAME_DIGITAL(__LINE__, ENET_CRS)
|
||||
#endif
|
||||
@ -578,6 +602,9 @@
|
||||
#if PIN_EXISTS(ORIG_E4_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ORIG_E4_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E5_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ORIG_E5_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(PHOTOGRAPH)
|
||||
REPORT_NAME_DIGITAL(__LINE__, PHOTOGRAPH_PIN)
|
||||
#endif
|
||||
@ -689,6 +716,9 @@
|
||||
#if PIN_EXISTS(SOL4)
|
||||
REPORT_NAME_DIGITAL(__LINE__, SOL4_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(SOL5)
|
||||
REPORT_NAME_DIGITAL(__LINE__, SOL5_PIN)
|
||||
#endif
|
||||
#if defined(SPARE_IO) && SPARE_IO >= 0
|
||||
REPORT_NAME_DIGITAL(__LINE__, SPARE_IO)
|
||||
#endif
|
||||
@ -1043,3 +1073,9 @@
|
||||
#if PIN_EXISTS(E4_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E4_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E5_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_SERIAL_RX_PIN)
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user