BigTreeTech GTR V1.0 / Support 8 extruders, heaters, temp sensors, fans (#16595)
This commit is contained in:
parent
0d166f9c7d
commit
248b7dfa59
|
@ -279,14 +279,25 @@ enum ClockSource2 : char {
|
|||
*/
|
||||
|
||||
// Determine which harware PWMs are already in use
|
||||
#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
|
||||
#if PIN_EXISTS(CONTROLLER_FAN)
|
||||
#define PWM_CHK_FAN_B(P) (P == CONTROLLER_FAN_PIN || P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
|
||||
#define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)
|
||||
#else
|
||||
#define PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
|
||||
#define PWM_CHK_FAN_B(P) _PWM_CHK_FAN_B(P)
|
||||
#endif
|
||||
|
||||
#if ANY_PIN(FAN, FAN1, FAN2)
|
||||
#if PIN_EXISTS(FAN2)
|
||||
#if ANY_PIN(FAN, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7)
|
||||
#if PIN_EXISTS(FAN7)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN || P == FAN7_PIN)
|
||||
#elif PIN_EXISTS(FAN6)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN)
|
||||
#elif PIN_EXISTS(FAN5)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN)
|
||||
#elif PIN_EXISTS(FAN4)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN)
|
||||
#elif PIN_EXISTS(FAN3)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN)
|
||||
#elif PIN_EXISTS(FAN2)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN)
|
||||
#elif PIN_EXISTS(FAN1)
|
||||
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN)
|
||||
|
|
|
@ -46,6 +46,10 @@
|
|||
#error "TEMP_4_PIN must be defined using the Pn_nn or Pn_nn_An format. (See the included pins files)."
|
||||
#elif _OLD_TEMP_PIN(TEMP_5)
|
||||
#error "TEMP_5_PIN must be defined using the Pn_nn or Pn_nn_An format. (See the included pins files)."
|
||||
#elif _OLD_TEMP_PIN(TEMP_6)
|
||||
#error "TEMP_6_PIN must be defined using the Pn_nn or Pn_nn_An format. (See the included pins files)."
|
||||
#elif _OLD_TEMP_PIN(TEMP_7)
|
||||
#error "TEMP_7_PIN must be defined using the Pn_nn or Pn_nn_An format. (See the included pins files)."
|
||||
#endif
|
||||
#undef _OLD_TEMP_PIN
|
||||
|
||||
|
|
|
@ -59,6 +59,16 @@
|
|||
#else
|
||||
#define GET_TEMP_5_ADC() -1
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
#define GET_TEMP_6_ADC() PIN_TO_ADC(TEMP_6_PIN)
|
||||
#else
|
||||
#define GET_TEMP_6_ADC() -1
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
#define GET_TEMP_7_ADC() PIN_TO_ADC(TEMP_7_PIN)
|
||||
#else
|
||||
#define GET_TEMP_7_ADC() -1
|
||||
#endif
|
||||
#if HAS_TEMP_PROBE
|
||||
#define GET_PROBE_ADC() PIN_TO_ADC(TEMP_PROBE_PIN)
|
||||
#else
|
||||
|
@ -85,13 +95,15 @@
|
|||
#define GET_BUTTONS_ADC() -1
|
||||
#endif
|
||||
|
||||
#define IS_ADC_REQUIRED(n) (GET_TEMP_0_ADC() == n || GET_TEMP_1_ADC() == n || GET_TEMP_2_ADC() == n \
|
||||
|| GET_TEMP_3_ADC() == n || GET_TEMP_4_ADC() == n || GET_TEMP_5_ADC() == n \
|
||||
#define IS_ADC_REQUIRED(n) ( \
|
||||
GET_TEMP_0_ADC() == n || GET_TEMP_1_ADC() == n || GET_TEMP_2_ADC() == n || GET_TEMP_3_ADC() == n \
|
||||
|| GET_TEMP_4_ADC() == n || GET_TEMP_5_ADC() == n || GET_TEMP_6_ADC() == n || GET_TEMP_7_ADC() == n \
|
||||
|| GET_PROBE_ADC() == n \
|
||||
|| GET_BED_ADC() == n \
|
||||
|| GET_CHAMBER_ADC() == n \
|
||||
|| GET_FILAMENT_WIDTH_ADC() == n \
|
||||
|| GET_BUTTONS_ADC() == n)
|
||||
|| GET_BUTTONS_ADC() == n \
|
||||
)
|
||||
|
||||
#define ADC0_IS_REQUIRED IS_ADC_REQUIRED(0)
|
||||
#define ADC1_IS_REQUIRED IS_ADC_REQUIRED(1)
|
||||
|
@ -151,6 +163,12 @@ uint16_t HAL_adc_result;
|
|||
#if GET_TEMP_5_ADC() == 0
|
||||
TEMP_5_PIN,
|
||||
#endif
|
||||
#if GET_TEMP_6_ADC() == 0
|
||||
TEMP_6_PIN,
|
||||
#endif
|
||||
#if GET_TEMP_7_ADC() == 0
|
||||
TEMP_7_PIN,
|
||||
#endif
|
||||
#if GET_PROBE_ADC() == 0
|
||||
TEMP_PROBE_PIN,
|
||||
#endif
|
||||
|
@ -185,6 +203,12 @@ uint16_t HAL_adc_result;
|
|||
#if GET_TEMP_5_ADC() == 1
|
||||
TEMP_5_PIN,
|
||||
#endif
|
||||
#if GET_TEMP_6_ADC() == 1
|
||||
TEMP_6_PIN,
|
||||
#endif
|
||||
#if GET_TEMP_7_ADC() == 1
|
||||
TEMP_7_PIN,
|
||||
#endif
|
||||
#if GET_PROBE_ADC() == 1
|
||||
TEMP_PROBE_PIN,
|
||||
#endif
|
||||
|
@ -227,6 +251,12 @@ uint16_t HAL_adc_result;
|
|||
#if GET_TEMP_5_ADC() == 0
|
||||
{ PIN_TO_INPUTCTRL(TEMP_5_PIN) },
|
||||
#endif
|
||||
#if GET_TEMP_6_ADC() == 0
|
||||
{ PIN_TO_INPUTCTRL(TEMP_6_PIN) },
|
||||
#endif
|
||||
#if GET_TEMP_7_ADC() == 0
|
||||
{ PIN_TO_INPUTCTRL(TEMP_7_PIN) },
|
||||
#endif
|
||||
#if GET_PROBE_ADC() == 0
|
||||
{ PIN_TO_INPUTCTRL(TEMP_PROBE_PIN) },
|
||||
#endif
|
||||
|
@ -270,6 +300,12 @@ uint16_t HAL_adc_result;
|
|||
#if GET_TEMP_5_ADC() == 1
|
||||
{ PIN_TO_INPUTCTRL(TEMP_5_PIN) },
|
||||
#endif
|
||||
#if GET_TEMP_6_ADC() == 1
|
||||
{ PIN_TO_INPUTCTRL(TEMP_6_PIN) },
|
||||
#endif
|
||||
#if GET_TEMP_7_ADC() == 1
|
||||
{ PIN_TO_INPUTCTRL(TEMP_7_PIN) },
|
||||
#endif
|
||||
#if GET_PROBE_ADC() == 1
|
||||
{ PIN_TO_INPUTCTRL(TEMP_PROBE_PIN) },
|
||||
#endif
|
||||
|
|
|
@ -118,6 +118,12 @@ const uint8_t adc_pins[] = {
|
|||
#if HAS_TEMP_ADC_5
|
||||
TEMP_5_PIN,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
TEMP_6_PIN,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
TEMP_7_PIN,
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
FILWIDTH_PIN,
|
||||
#endif
|
||||
|
@ -160,6 +166,12 @@ enum TEMP_PINS : char {
|
|||
#if HAS_TEMP_ADC_5
|
||||
TEMP_5,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
TEMP_6,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
TEMP_7,
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
FILWIDTH,
|
||||
#endif
|
||||
|
@ -346,6 +358,12 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
|
|||
#if HAS_TEMP_ADC_5
|
||||
case TEMP_5_PIN: pin_index = TEMP_5; break;
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
case TEMP_6_PIN: pin_index = TEMP_6; break;
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
case TEMP_7_PIN: pin_index = TEMP_7; break;
|
||||
#endif
|
||||
#if HAS_JOY_ADC_X
|
||||
case JOY_X_PIN: pin_index = JOY_X; break;
|
||||
#endif
|
||||
|
|
|
@ -79,7 +79,8 @@
|
|||
|
||||
#define HAS_E_DRIVER(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_E5(T) )
|
||||
|| AXIS_DRIVER_TYPE_E4(T) || AXIS_DRIVER_TYPE_E5(T) \
|
||||
|| AXIS_DRIVER_TYPE_E6(T) || AXIS_DRIVER_TYPE_E7(T) )
|
||||
|
||||
#define HAS_DRIVER(T) ( AXIS_DRIVER_TYPE_X(T) || AXIS_DRIVER_TYPE_X2(T) \
|
||||
|| AXIS_DRIVER_TYPE_Y(T) || AXIS_DRIVER_TYPE_Y2(T) \
|
||||
|
@ -152,7 +153,8 @@
|
|||
|| AXIS_HAS_##T(Z3) \
|
||||
|| AXIS_HAS_##T(E0) || AXIS_HAS_##T(E1) \
|
||||
|| AXIS_HAS_##T(E2) || AXIS_HAS_##T(E3) \
|
||||
|| AXIS_HAS_##T(E4) || AXIS_HAS_##T(E5) )
|
||||
|| AXIS_HAS_##T(E4) || AXIS_HAS_##T(E5) \
|
||||
|| AXIS_HAS_##T(E6) || AXIS_HAS_##T(E7) )
|
||||
|
||||
#define HAS_STEALTHCHOP ANY_AXIS_HAS(STEALTHCHOP)
|
||||
#define HAS_STALLGUARD ANY_AXIS_HAS(STALLGUARD)
|
||||
|
|
|
@ -359,6 +359,8 @@
|
|||
#define LCD_STR_N3 "3"
|
||||
#define LCD_STR_N4 "4"
|
||||
#define LCD_STR_N5 "5"
|
||||
#define LCD_STR_N6 "6"
|
||||
#define LCD_STR_N7 "7"
|
||||
#else
|
||||
#define LCD_FIRST_TOOL '1'
|
||||
#define LCD_STR_N0 "1"
|
||||
|
@ -367,6 +369,8 @@
|
|||
#define LCD_STR_N3 "4"
|
||||
#define LCD_STR_N4 "5"
|
||||
#define LCD_STR_N5 "6"
|
||||
#define LCD_STR_N6 "7"
|
||||
#define LCD_STR_N7 "8"
|
||||
#endif
|
||||
|
||||
#define LCD_STR_E0 "E" LCD_STR_N0
|
||||
|
@ -375,6 +379,8 @@
|
|||
#define LCD_STR_E3 "E" LCD_STR_N3
|
||||
#define LCD_STR_E4 "E" LCD_STR_N4
|
||||
#define LCD_STR_E5 "E" LCD_STR_N5
|
||||
#define LCD_STR_E6 "E" LCD_STR_N6
|
||||
#define LCD_STR_E7 "E" LCD_STR_N7
|
||||
|
||||
#include "multi_language.h" // Allow multiple languages
|
||||
|
||||
|
|
|
@ -43,11 +43,7 @@ enum AxisEnum : uint8_t {
|
|||
E_AXIS = 3,
|
||||
X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 6,
|
||||
E0_AXIS = 3,
|
||||
E1_AXIS = 4,
|
||||
E2_AXIS = 5,
|
||||
E3_AXIS = 6,
|
||||
E4_AXIS = 7,
|
||||
E5_AXIS = 8,
|
||||
E1_AXIS, E2_AXIS, E3_AXIS, E4_AXIS, E5_AXIS, E6_AXIS, E7_AXIS,
|
||||
ALL_AXES = 0xFE, NO_AXIS = 0xFF
|
||||
};
|
||||
|
||||
|
|
|
@ -47,23 +47,38 @@ void GcodeSuite::M42() {
|
|||
|
||||
const pin_t pin = GET_PIN_MAP_PIN(pin_index);
|
||||
|
||||
#if FAN_COUNT > 0
|
||||
switch (pin) {
|
||||
#if HAS_FAN0
|
||||
case FAN0_PIN: thermalManager.fan_speed[0] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
case FAN1_PIN: thermalManager.fan_speed[1] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
case FAN2_PIN: thermalManager.fan_speed[2] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
case FAN3_PIN: thermalManager.fan_speed[3] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
case FAN4_PIN: thermalManager.fan_speed[4] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
case FAN5_PIN: thermalManager.fan_speed[5] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
case FAN6_PIN: thermalManager.fan_speed[6] = pin_status; return;
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
case FAN7_PIN: thermalManager.fan_speed[7] = pin_status; return;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!parser.boolval('I') && pin_is_protected(pin)) return protected_pin_err();
|
||||
|
||||
pinMode(pin, OUTPUT);
|
||||
extDigitalWrite(pin, pin_status);
|
||||
analogWrite(pin, pin_status);
|
||||
|
||||
#if FAN_COUNT > 0
|
||||
switch (pin) {
|
||||
#if HAS_FAN0
|
||||
case FAN0_PIN: thermalManager.fan_speed[0] = pin_status; break;
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
case FAN1_PIN: thermalManager.fan_speed[1] = pin_status; break;
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
case FAN2_PIN: thermalManager.fan_speed[2] = pin_status; break;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
|
||||
#define M91x_SOME_Y (M91x_USE(Y) || M91x_USE(Y2))
|
||||
#define M91x_SOME_Z (M91x_USE(Z) || M91x_USE(Z2) || M91x_USE(Z3) || M91x_USE(Z4))
|
||||
#define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))
|
||||
#define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5) || M91x_USE_E(6) || M91x_USE_E(7))
|
||||
|
||||
#if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
|
||||
#error "MONITOR_DRIVER_STATUS requires at least one TMC2130, 2160, 2208, 2209, 2660, 5130, or 5160."
|
||||
|
@ -91,6 +91,12 @@
|
|||
#if M91x_USE_E(5)
|
||||
tmc_report_otpw(stepperE5);
|
||||
#endif
|
||||
#if M91x_USE_E(6)
|
||||
tmc_report_otpw(stepperE6);
|
||||
#endif
|
||||
#if M91x_USE_E(7)
|
||||
tmc_report_otpw(stepperE7);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -188,6 +194,12 @@
|
|||
#if M91x_USE_E(5)
|
||||
if (hasNone || eval == 5 || (hasE && eval < 0)) tmc_clear_otpw(stepperE5);
|
||||
#endif
|
||||
#if M91x_USE_E(6)
|
||||
if (hasNone || eval == 6 || (hasE && eval < 0)) tmc_clear_otpw(stepperE6);
|
||||
#endif
|
||||
#if M91x_USE_E(7)
|
||||
if (hasNone || eval == 7 || (hasE && eval < 0)) tmc_clear_otpw(stepperE7);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -263,6 +275,12 @@
|
|||
#if E_STEPPERS > 5 && AXIS_HAS_STEALTHCHOP(E5)
|
||||
case 5: TMC_SET_PWMTHRS_E(5); break;
|
||||
#endif
|
||||
#if E_STEPPERS > 6 && AXIS_HAS_STEALTHCHOP(E6)
|
||||
case 6: TMC_SET_PWMTHRS_E(6); break;
|
||||
#endif
|
||||
#if E_STEPPERS > 7 && AXIS_HAS_STEALTHCHOP(E7)
|
||||
case 7: TMC_SET_PWMTHRS_E(7); break;
|
||||
#endif
|
||||
}
|
||||
#endif // E_STEPPERS
|
||||
} break;
|
||||
|
@ -312,6 +330,12 @@
|
|||
#if E_STEPPERS > 5 && AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_SAY_PWMTHRS_E(5);
|
||||
#endif
|
||||
#if E_STEPPERS > 6 && AXIS_HAS_STEALTHCHOP(E6)
|
||||
TMC_SAY_PWMTHRS_E(6);
|
||||
#endif
|
||||
#if E_STEPPERS > 7 && AXIS_HAS_STEALTHCHOP(E7)
|
||||
TMC_SAY_PWMTHRS_E(7);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif // HYBRID_THRESHOLD
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#undef TEMP_SENSOR_3
|
||||
#undef TEMP_SENSOR_4
|
||||
#undef TEMP_SENSOR_5
|
||||
#undef TEMP_SENSOR_6
|
||||
#undef TEMP_SENSOR_7
|
||||
#undef FWRETRACT
|
||||
#undef PIDTEMP
|
||||
#undef AUTOTEMP
|
||||
|
|
|
@ -341,7 +341,7 @@
|
|||
* Temp Sensor defines
|
||||
*/
|
||||
|
||||
#define ANY_TEMP_SENSOR_IS(n) (TEMP_SENSOR_0 == (n) || TEMP_SENSOR_1 == (n) || TEMP_SENSOR_2 == (n) || TEMP_SENSOR_3 == (n) || TEMP_SENSOR_4 == (n) || TEMP_SENSOR_5 == (n) || TEMP_SENSOR_BED == (n) || TEMP_SENSOR_PROBE == (n) || TEMP_SENSOR_CHAMBER == (n))
|
||||
#define ANY_TEMP_SENSOR_IS(n) (TEMP_SENSOR_0 == (n) || TEMP_SENSOR_1 == (n) || TEMP_SENSOR_2 == (n) || TEMP_SENSOR_3 == (n) || TEMP_SENSOR_4 == (n) || TEMP_SENSOR_5 == (n) || TEMP_SENSOR_6 == (n) || TEMP_SENSOR_7 == (n) || TEMP_SENSOR_BED == (n) || TEMP_SENSOR_PROBE == (n) || TEMP_SENSOR_CHAMBER == (n))
|
||||
|
||||
#define HAS_USER_THERMISTORS ANY_TEMP_SENSOR_IS(1000)
|
||||
|
||||
|
@ -483,6 +483,44 @@
|
|||
#undef HEATER_5_MAXTEMP
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_6 == -4
|
||||
#define HEATER_6_USES_AD8495
|
||||
#elif TEMP_SENSOR_6 == -3
|
||||
#error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_6."
|
||||
#elif TEMP_SENSOR_6 == -2
|
||||
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6."
|
||||
#elif TEMP_SENSOR_6 == -1
|
||||
#define HEATER_6_USES_AD595
|
||||
#elif TEMP_SENSOR_6 > 0
|
||||
#define THERMISTOR_HEATER_6 TEMP_SENSOR_6
|
||||
#define HEATER_6_USES_THERMISTOR
|
||||
#if TEMP_SENSOR_6 == 1000
|
||||
#define HEATER_6_USER_THERMISTOR
|
||||
#endif
|
||||
#else
|
||||
#undef HEATER_6_MINTEMP
|
||||
#undef HEATER_6_MAXTEMP
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_7 == -4
|
||||
#define HEATER_7_USES_AD8495
|
||||
#elif TEMP_SENSOR_7 == -3
|
||||
#error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_7."
|
||||
#elif TEMP_SENSOR_7 == -2
|
||||
#error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7."
|
||||
#elif TEMP_SENSOR_7 == -1
|
||||
#define HEATER_7_USES_AD595
|
||||
#elif TEMP_SENSOR_7 > 0
|
||||
#define THERMISTOR_HEATER_7 TEMP_SENSOR_7
|
||||
#define HEATER_7_USES_THERMISTOR
|
||||
#if TEMP_SENSOR_7 == 1000
|
||||
#define HEATER_7_USER_THERMISTOR
|
||||
#endif
|
||||
#else
|
||||
#undef HEATER_7_MINTEMP
|
||||
#undef HEATER_7_MAXTEMP
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_BED == -4
|
||||
#define HEATER_BED_USES_AD8495
|
||||
#elif TEMP_SENSOR_BED == -3
|
||||
|
@ -538,8 +576,8 @@
|
|||
#endif
|
||||
|
||||
#define HOTEND_USES_THERMISTOR ANY( \
|
||||
HEATER_0_USES_THERMISTOR, HEATER_1_USES_THERMISTOR, HEATER_2_USES_THERMISTOR, \
|
||||
HEATER_3_USES_THERMISTOR, HEATER_4_USES_THERMISTOR, HEATER_5_USES_THERMISTOR)
|
||||
HEATER_0_USES_THERMISTOR, HEATER_1_USES_THERMISTOR, HEATER_2_USES_THERMISTOR, HEATER_3_USES_THERMISTOR, \
|
||||
HEATER_4_USES_THERMISTOR, HEATER_5_USES_THERMISTOR, HEATER_6_USES_THERMISTOR, HEATER_7_USES_THERMISTOR )
|
||||
|
||||
/**
|
||||
* Default hotend offsets, if not defined
|
||||
|
@ -1025,6 +1063,18 @@
|
|||
#define HAS_E5_MICROSTEPS (PIN_EXISTS(E5_MS1))
|
||||
#define HAS_SOLENOID_5 (PIN_EXISTS(SOL5))
|
||||
|
||||
#define HAS_E6_ENABLE (PIN_EXISTS(E6_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E6)))
|
||||
#define HAS_E6_DIR (PIN_EXISTS(E6_DIR))
|
||||
#define HAS_E6_STEP (PIN_EXISTS(E6_STEP))
|
||||
#define HAS_E6_MICROSTEPS (PIN_EXISTS(E6_MS1))
|
||||
#define HAS_SOLENOID_6 (PIN_EXISTS(SOL6))
|
||||
|
||||
#define HAS_E7_ENABLE (PIN_EXISTS(E7_ENABLE) || (ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E7)))
|
||||
#define HAS_E7_DIR (PIN_EXISTS(E7_DIR))
|
||||
#define HAS_E7_STEP (PIN_EXISTS(E7_STEP))
|
||||
#define HAS_E7_MICROSTEPS (PIN_EXISTS(E7_MS1))
|
||||
#define HAS_SOLENOID_7 (PIN_EXISTS(SOL7))
|
||||
|
||||
// Trinamic Stepper Drivers
|
||||
#if HAS_TRINAMIC
|
||||
#define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
|
||||
|
@ -1095,6 +1145,8 @@
|
|||
#define HAS_TEMP_ADC_3 HAS_ADC_TEST(3)
|
||||
#define HAS_TEMP_ADC_4 HAS_ADC_TEST(4)
|
||||
#define HAS_TEMP_ADC_5 HAS_ADC_TEST(5)
|
||||
#define HAS_TEMP_ADC_6 HAS_ADC_TEST(6)
|
||||
#define HAS_TEMP_ADC_7 HAS_ADC_TEST(7)
|
||||
#define HAS_TEMP_ADC_BED HAS_ADC_TEST(BED)
|
||||
#define HAS_TEMP_ADC_PROBE HAS_ADC_TEST(PROBE)
|
||||
#define HAS_TEMP_ADC_CHAMBER HAS_ADC_TEST(CHAMBER)
|
||||
|
@ -1118,6 +1170,8 @@
|
|||
#define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
|
||||
#define HAS_HEATER_4 (PIN_EXISTS(HEATER_4))
|
||||
#define HAS_HEATER_5 (PIN_EXISTS(HEATER_5))
|
||||
#define HAS_HEATER_6 (PIN_EXISTS(HEATER_6))
|
||||
#define HAS_HEATER_7 (PIN_EXISTS(HEATER_7))
|
||||
#define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
|
||||
|
||||
// Shorthand for common combinations
|
||||
|
@ -1146,12 +1200,14 @@
|
|||
#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_FAN_6 (HOTENDS > 6 && PIN_EXISTS(E6_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_7 (HOTENDS > 7 && PIN_EXISTS(E7_AUTO_FAN))
|
||||
#define HAS_AUTO_CHAMBER_FAN (HAS_TEMP_CHAMBER && 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_FAN_4 || HAS_AUTO_FAN_5 || 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_FAN_6 || HAS_AUTO_FAN_7 || HAS_AUTO_CHAMBER_FAN)
|
||||
#define _FANOVERLAP(A,B) (A##_AUTO_FAN_PIN == E##B##_AUTO_FAN_PIN)
|
||||
#if HAS_AUTO_FAN
|
||||
#define AUTO_CHAMBER_IS_E (_FANOVERLAP(CHAMBER,0) || _FANOVERLAP(CHAMBER,1) || _FANOVERLAP(CHAMBER,2) || _FANOVERLAP(CHAMBER,3) || _FANOVERLAP(CHAMBER,4) || _FANOVERLAP(CHAMBER,5))
|
||||
#define AUTO_CHAMBER_IS_E (_FANOVERLAP(CHAMBER,0) || _FANOVERLAP(CHAMBER,1) || _FANOVERLAP(CHAMBER,2) || _FANOVERLAP(CHAMBER,3) || _FANOVERLAP(CHAMBER,4) || _FANOVERLAP(CHAMBER,5) || _FANOVERLAP(CHAMBER,6) || _FANOVERLAP(CHAMBER,7))
|
||||
#endif
|
||||
|
||||
#if !HAS_TEMP_SENSOR
|
||||
|
@ -1164,8 +1220,14 @@
|
|||
|
||||
// Other fans
|
||||
#define HAS_FAN0 (PIN_EXISTS(FAN))
|
||||
#define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLER_FAN_PIN != FAN1_PIN && E0_AUTO_FAN_PIN != FAN1_PIN && E1_AUTO_FAN_PIN != FAN1_PIN && E2_AUTO_FAN_PIN != FAN1_PIN && E3_AUTO_FAN_PIN != FAN1_PIN && E4_AUTO_FAN_PIN != FAN1_PIN && E5_AUTO_FAN_PIN != FAN1_PIN)
|
||||
#define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLER_FAN_PIN != FAN2_PIN && E0_AUTO_FAN_PIN != FAN2_PIN && E1_AUTO_FAN_PIN != FAN2_PIN && E2_AUTO_FAN_PIN != FAN2_PIN && E3_AUTO_FAN_PIN != FAN2_PIN && E4_AUTO_FAN_PIN != FAN2_PIN && E5_AUTO_FAN_PIN != FAN2_PIN)
|
||||
#define _HAS_FAN(P) (PIN_EXISTS(FAN_##P) && CONTROLLER_FAN_PIN != FAN_##P##_PIN && E0_AUTO_FAN_PIN != FAN_##P##_PIN && E1_AUTO_FAN_PIN != FAN_##P##_PIN && E2_AUTO_FAN_PIN != FAN_##P##_PIN && E3_AUTO_FAN_PIN != FAN_##P##_PIN && E4_AUTO_FAN_PIN != FAN_##P##_PIN && E5_AUTO_FAN_PIN != FAN_##P##_PIN && E6_AUTO_FAN_PIN != FAN_##P##_PIN && E7_AUTO_FAN_PIN != FAN_##P##_PIN)
|
||||
#define HAS_FAN1 _HAS_FAN(1)
|
||||
#define HAS_FAN2 _HAS_FAN(2)
|
||||
#define HAS_FAN3 _HAS_FAN(3)
|
||||
#define HAS_FAN4 _HAS_FAN(4)
|
||||
#define HAS_FAN5 _HAS_FAN(5)
|
||||
#define HAS_FAN6 _HAS_FAN(6)
|
||||
#define HAS_FAN7 _HAS_FAN(7)
|
||||
#define HAS_CONTROLLER_FAN (PIN_EXISTS(CONTROLLER_FAN))
|
||||
|
||||
// Servos
|
||||
|
@ -1203,7 +1265,7 @@
|
|||
#define HAS_MOTOR_CURRENT_PWM ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_Z, MOTOR_CURRENT_PWM_E)
|
||||
|
||||
#define HAS_SOME_Z_MICROSTEPS (HAS_Z_MICROSTEPS || HAS_Z2_MICROSTEPS || HAS_Z3_MICROSTEPS || HAS_Z4_MICROSTEPS)
|
||||
#define HAS_SOME_E_MICROSTEPS (HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS || HAS_E5_MICROSTEPS)
|
||||
#define HAS_SOME_E_MICROSTEPS (HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS || HAS_E5_MICROSTEPS || HAS_E6_MICROSTEPS || HAS_E7_MICROSTEPS)
|
||||
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_X2_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Y2_MICROSTEPS || HAS_SOME_Z_MICROSTEPS || HAS_SOME_E_MICROSTEPS)
|
||||
|
||||
#if HAS_MICROSTEPS
|
||||
|
@ -1278,26 +1340,27 @@
|
|||
#if HAS_HEATER_0 && !defined(HEATER_0_INVERTING)
|
||||
#define HEATER_0_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_HEATER_1 && !defined(HEATER_1_INVERTING)
|
||||
#define HEATER_1_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_HEATER_2 && !defined(HEATER_2_INVERTING)
|
||||
#define HEATER_2_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_HEATER_3 && !defined(HEATER_3_INVERTING)
|
||||
#define HEATER_3_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_HEATER_4 && !defined(HEATER_4_INVERTING)
|
||||
#define HEATER_4_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_HEATER_5 && !defined(HEATER_5_INVERTING)
|
||||
#define HEATER_5_INVERTING false
|
||||
#endif
|
||||
#if HAS_HEATER_6 && !defined(HEATER_6_INVERTING)
|
||||
#define HEATER_6_INVERTING false
|
||||
#endif
|
||||
#if HAS_HEATER_7 && !defined(HEATER_7_INVERTING)
|
||||
#define HEATER_7_INVERTING false
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Helper Macros for heaters and extruder fan
|
||||
|
@ -1314,6 +1377,12 @@
|
|||
#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)
|
||||
#if HOTENDS > 6
|
||||
#define WRITE_HEATER_6(v) WRITE(HEATER_6_PIN, (v) ^ HEATER_6_INVERTING)
|
||||
#if HOTENDS > 7
|
||||
#define WRITE_HEATER_7(v) WRITE(HEATER_7_PIN, (v) ^ HEATER_7_INVERTING)
|
||||
#endif // HOTENDS > 7
|
||||
#endif // HOTENDS > 6
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
|
@ -1365,7 +1434,17 @@
|
|||
#define FAN_INVERTING false
|
||||
#endif
|
||||
|
||||
#if HAS_FAN2
|
||||
#if HAS_FAN7
|
||||
#define FAN_COUNT 8
|
||||
#elif HAS_FAN6
|
||||
#define FAN_COUNT 7
|
||||
#elif HAS_FAN5
|
||||
#define FAN_COUNT 6
|
||||
#elif HAS_FAN4
|
||||
#define FAN_COUNT 5
|
||||
#elif HAS_FAN3
|
||||
#define FAN_COUNT 4
|
||||
#elif HAS_FAN2
|
||||
#define FAN_COUNT 3
|
||||
#elif HAS_FAN1
|
||||
#define FAN_COUNT 2
|
||||
|
@ -1640,7 +1719,6 @@
|
|||
#define HAS_FIXED_3POINT
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Buzzer/Speaker
|
||||
*/
|
||||
|
|
|
@ -294,19 +294,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(E5_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) || defined(E6_IS_TMC) || defined(E7_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(E5_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) || defined(E6_IS_TMC26X) || defined(E7_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(E5_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) || defined(E6_IS_TMC2130) || defined(E7_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(E5_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) || defined(E6_IS_TMC2208) || defined(E7_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(E5_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) || defined(E6_IS_L6470) || defined(E7_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."
|
||||
|
@ -752,8 +752,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
*/
|
||||
#if EXTRUDERS > 1
|
||||
|
||||
#if EXTRUDERS > 6
|
||||
#error "Marlin supports a maximum of 6 EXTRUDERS."
|
||||
#if EXTRUDERS > 8
|
||||
#error "Marlin supports a maximum of 8 EXTRUDERS."
|
||||
#endif
|
||||
|
||||
#if ENABLED(HEATERS_PARALLEL)
|
||||
|
@ -1494,6 +1494,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#error "TEMP_SENSOR_4 1000 requires HOTEND4_PULLUP_RESISTOR_OHMS, HOTEND4_RESISTANCE_25C_OHMS and HOTEND4_BETA in Configuration_adv.h."
|
||||
#elif ENABLED(HEATER_5_USER_THERMISTOR) && !(defined(HOTEND5_PULLUP_RESISTOR_OHMS) && defined(HOTEND5_RESISTANCE_25C_OHMS) && defined(HOTEND5_BETA))
|
||||
#error "TEMP_SENSOR_5 1000 requires HOTEND5_PULLUP_RESISTOR_OHMS, HOTEND5_RESISTANCE_25C_OHMS and HOTEND5_BETA in Configuration_adv.h."
|
||||
#elif ENABLED(HEATER_6_USER_THERMISTOR) && !(defined(HOTEND6_PULLUP_RESISTOR_OHMS) && defined(HOTEND6_RESISTANCE_25C_OHMS) && defined(HOTEND6_BETA))
|
||||
#error "TEMP_SENSOR_6 1000 requires HOTEND6_PULLUP_RESISTOR_OHMS, HOTEND6_RESISTANCE_25C_OHMS and HOTEND6_BETA in Configuration_adv.h."
|
||||
#elif ENABLED(HEATER_7_USER_THERMISTOR) && !(defined(HOTEND7_PULLUP_RESISTOR_OHMS) && defined(HOTEND7_RESISTANCE_25C_OHMS) && defined(HOTEND7_BETA))
|
||||
#error "TEMP_SENSOR_7 1000 requires HOTEND7_PULLUP_RESISTOR_OHMS, HOTEND7_RESISTANCE_25C_OHMS and HOTEND7_BETA in Configuration_adv.h."
|
||||
#elif ENABLED(HEATER_BED_USER_THERMISTOR) && !(defined(BED_PULLUP_RESISTOR_OHMS) && defined(BED_RESISTANCE_25C_OHMS) && defined(BED_BETA))
|
||||
#error "TEMP_SENSOR_BED 1000 requires BED_PULLUP_RESISTOR_OHMS, BED_RESISTANCE_25C_OHMS and BED_BETA in Configuration_adv.h."
|
||||
#elif ENABLED(HEATER_CHAMBER_USER_THERMISTOR) && !(defined(CHAMBER_PULLUP_RESISTOR_OHMS) && defined(CHAMBER_RESISTANCE_25C_OHMS) && defined(CHAMBER_BETA))
|
||||
|
@ -1564,13 +1568,45 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#elif !PIN_EXISTS(TEMP_5)
|
||||
#error "TEMP_5_PIN not defined for this board."
|
||||
#endif
|
||||
#if HOTENDS > 6
|
||||
#if TEMP_SENSOR_6 == 0
|
||||
#error "TEMP_SENSOR_6 is required with 6 HOTENDS."
|
||||
#elif !HAS_HEATER_6
|
||||
#error "HEATER_6_PIN not defined for this board."
|
||||
#elif !PIN_EXISTS(TEMP_6)
|
||||
#error "TEMP_6_PIN not defined for this board."
|
||||
#endif
|
||||
#if HOTENDS > 7
|
||||
#if TEMP_SENSOR_7 == 0
|
||||
#error "TEMP_SENSOR_7 is required with 7 HOTENDS."
|
||||
#elif !HAS_HEATER_7
|
||||
#error "HEATER_7_PIN not defined for this board."
|
||||
#elif !PIN_EXISTS(TEMP_7)
|
||||
#error "TEMP_7_PIN not defined for this board."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 shouldn't be set with only 7 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 6 HOTENDS."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 shouldn't be set with only 6 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_5 != 0
|
||||
#error "TEMP_SENSOR_5 shouldn't be set with only 5 HOTENDS."
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 5 HOTENDS."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 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 4 HOTENDS."
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 4 HOTENDS."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 shouldn't be set with only 4 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_3 != 0
|
||||
#error "TEMP_SENSOR_3 shouldn't be set with only 3 HOTENDS."
|
||||
|
@ -1578,6 +1614,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#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 3 HOTENDS."
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 3 HOTENDS."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 shouldn't be set with only 3 HOTENDS."
|
||||
#endif
|
||||
#elif TEMP_SENSOR_2 != 0
|
||||
#error "TEMP_SENSOR_2 shouldn't be set with only 2 HOTENDS."
|
||||
|
@ -1587,6 +1627,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#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."
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 2 HOTENDS."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 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."
|
||||
|
@ -1598,6 +1642,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#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."
|
||||
#elif TEMP_SENSOR_6 != 0
|
||||
#error "TEMP_SENSOR_6 shouldn't be set with only 1 HOTEND."
|
||||
#elif TEMP_SENSOR_7 != 0
|
||||
#error "TEMP_SENSOR_7 shouldn't be set with only 1 HOTEND."
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_PROBE
|
||||
|
@ -1680,6 +1728,16 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#if !(PIN_EXISTS(E5_STEP, E5_DIR) && HAS_E5_ENABLE)
|
||||
#error "E5_STEP_PIN, E5_DIR_PIN, or E5_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 6
|
||||
#if !(PIN_EXISTS(E6_STEP, E6_DIR) && HAS_E6_ENABLE)
|
||||
#error "E6_STEP_PIN, E6_DIR_PIN, or E6_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#if E_STEPPERS > 7
|
||||
#if !(PIN_EXISTS(E7_STEP, E7_DIR) && HAS_E7_ENABLE)
|
||||
#error "E7_STEP_PIN, E7_DIR_PIN, or E7_ENABLE_PIN not defined for this board."
|
||||
#endif
|
||||
#endif // E_STEPPERS > 7
|
||||
#endif // E_STEPPERS > 6
|
||||
#endif // E_STEPPERS > 5
|
||||
#endif // E_STEPPERS > 4
|
||||
#endif // E_STEPPERS > 3
|
||||
|
@ -2008,6 +2066,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#error "An SPI driven TMC driver on E4 requires E4_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(E5)
|
||||
#error "An SPI driven TMC driver on E5 requires E5_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(E6)
|
||||
#error "An SPI driven TMC driver on E6 requires E6_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(E7)
|
||||
#error "An SPI driven TMC driver on E7 requires E7_CS_PIN."
|
||||
#endif
|
||||
#undef INVALID_TMC_SPI
|
||||
|
||||
|
@ -2041,6 +2103,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#error "TMC2208 or TMC2209 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E5)
|
||||
#error "TMC2208 or TMC2209 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E6)
|
||||
#error "TMC2208 or TMC2209 on E6 requires E6_HARDWARE_SERIAL or E6_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E7)
|
||||
#error "TMC2208 or TMC2209 on E7 requires E7_HARDWARE_SERIAL or E7_SERIAL_(RX|TX)_PIN."
|
||||
#endif
|
||||
#undef INVALID_TMC_UART
|
||||
|
||||
|
@ -2192,7 +2258,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
|| (IN_CHAIN(Z3) && !PIN_EXISTS(Z3_CS)) || (IN_CHAIN(E0) && !PIN_EXISTS(E0_CS)) \
|
||||
|| (IN_CHAIN(E1) && !PIN_EXISTS(E1_CS)) || (IN_CHAIN(E2) && !PIN_EXISTS(E2_CS)) \
|
||||
|| (IN_CHAIN(E3) && !PIN_EXISTS(E3_CS)) || (IN_CHAIN(E4) && !PIN_EXISTS(E4_CS)) \
|
||||
|| (IN_CHAIN(E5) && !PIN_EXISTS(E5_CS))
|
||||
|| (IN_CHAIN(E5) && !PIN_EXISTS(E5_CS)) || (IN_CHAIN(E6) && !PIN_EXISTS(E6_CS)) \
|
||||
|| (IN_CHAIN(E7) && !PIN_EXISTS(E7_CS))
|
||||
#error "All chained TMC drivers need a CS pin."
|
||||
#else
|
||||
#if IN_CHAIN(X)
|
||||
|
@ -2221,6 +2288,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
#define CS_COMPARE E4_CS_PIN
|
||||
#elif IN_CHAIN(E5)
|
||||
#define CS_COMPARE E5_CS_PIN
|
||||
#elif IN_CHAIN(E6)
|
||||
#define CS_COMPARE E6_CS_PIN
|
||||
#elif IN_CHAIN(E7)
|
||||
#define CS_COMPARE E7_CS_PIN
|
||||
#endif
|
||||
#if (IN_CHAIN(X) && X_CS_PIN != CS_COMPARE) || (IN_CHAIN(Y) && Y_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(Z) && Z_CS_PIN != CS_COMPARE) || (IN_CHAIN(X2) && X2_CS_PIN != CS_COMPARE) \
|
||||
|
@ -2228,7 +2299,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||
|| (IN_CHAIN(Z3) && Z3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E0) && E0_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E1) && E1_CS_PIN != CS_COMPARE) || (IN_CHAIN(E2) && E2_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E3) && E3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E4) && E4_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E5) && E5_CS_PIN != CS_COMPARE)
|
||||
|| (IN_CHAIN(E5) && E5_CS_PIN != CS_COMPARE) || (IN_CHAIN(E6) && E6_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E7) && E7_CS_PIN != CS_COMPARE)
|
||||
#error "All chained TMC drivers must use the same CS pin."
|
||||
#endif
|
||||
#endif
|
||||
|
@ -2521,12 +2593,26 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
|
|||
#error "SPINDLE_LASER_PWM_PIN conflicts with E4_AUTO_FAN_PIN."
|
||||
#elif _PIN_CONFLICT(E5_AUTO_FAN)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with E5_AUTO_FAN_PIN."
|
||||
#elif _PIN_CONFLICT(E6_AUTO_FAN)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with E6_AUTO_FAN_PIN."
|
||||
#elif _PIN_CONFLICT(E7_AUTO_FAN)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with E7_AUTO_FAN_PIN."
|
||||
#elif _PIN_CONFLICT(FAN)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN_PIN."
|
||||
#elif _PIN_CONFLICT(FAN1)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN1_PIN."
|
||||
#elif _PIN_CONFLICT(FAN2)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN2_PIN."
|
||||
#elif _PIN_CONFLICT(FAN3)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN3_PIN."
|
||||
#elif _PIN_CONFLICT(FAN4)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN4_PIN."
|
||||
#elif _PIN_CONFLICT(FAN5)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN5_PIN."
|
||||
#elif _PIN_CONFLICT(FAN6)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN6_PIN."
|
||||
#elif _PIN_CONFLICT(FAN7)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with FAN7_PIN."
|
||||
#elif _PIN_CONFLICT(CONTROLLERFAN)
|
||||
#error "SPINDLE_LASER_PWM_PIN conflicts with CONTROLLERFAN_PIN."
|
||||
#elif _PIN_CONFLICT(MOTOR_CURRENT_PWM_XY)
|
||||
|
|
|
@ -1092,6 +1092,21 @@ void MarlinUI::draw_status_screen() {
|
|||
#if HAS_FAN2
|
||||
|| thermalManager.fan_speed[2]
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
|| thermalManager.fan_speed[3]
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
|| thermalManager.fan_speed[4]
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
|| thermalManager.fan_speed[5]
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
|| thermalManager.fan_speed[6]
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
|| thermalManager.fan_speed[7]
|
||||
#endif
|
||||
) leds |= LED_C;
|
||||
#endif // FAN_COUNT > 0
|
||||
|
||||
|
|
|
@ -912,7 +912,7 @@ namespace ExtUI {
|
|||
#endif
|
||||
{
|
||||
#if HOTENDS
|
||||
static constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP);
|
||||
static constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
|
||||
const int16_t e = heater - H0;
|
||||
thermalManager.setTargetHotend(LROUND(constrain(value, 0, heater_maxtemp[e] - 15)), e);
|
||||
#endif
|
||||
|
@ -924,7 +924,7 @@ namespace ExtUI {
|
|||
value *= TOUCH_UI_LCD_TEMP_SCALING;
|
||||
#endif
|
||||
#if HOTENDS
|
||||
constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP);
|
||||
constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
|
||||
const int16_t e = extruder - E0;
|
||||
enableHeater(extruder);
|
||||
thermalManager.setTargetHotend(LROUND(constrain(value, 0, heater_maxtemp[e] - 15)), e);
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace ExtUI {
|
|||
enum axis_t : uint8_t { X, Y, Z };
|
||||
enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5 };
|
||||
enum heater_t : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER };
|
||||
enum fan_t : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5 };
|
||||
enum fan_t : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };
|
||||
enum result_t : uint8_t { PID_BAD_EXTRUDER_NUM, PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, PID_DONE };
|
||||
|
||||
constexpr uint8_t extruderCount = EXTRUDERS;
|
||||
|
|
|
@ -93,7 +93,7 @@ namespace Language_an {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Boquilla ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Base");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ixoriador");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ixoriador =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ixoriador ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxo");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Fluxo ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
|
||||
|
|
|
@ -83,7 +83,7 @@ namespace Language_bg {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Дюза ~");
|
||||
PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Легло");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Вентилатор");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Вентилатор =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Вентилатор ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Поток");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Поток ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Управление");
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace Language_ca {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Nozzle ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Llit");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. Ventilador");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flux");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flux ~");
|
||||
PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VViatge min");
|
||||
|
|
|
@ -251,10 +251,10 @@ namespace Language_cz {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Podložka");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Komora");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Rychlost vent.");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Rychlost vent. =");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Ulož. vent. =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Rychlost vent. ~");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Ulož. vent. ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Rychlost ex. vent.");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Rychlost ex. vent. =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Rychlost ex. vent. ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Průtok");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Průtok ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Ovládaní");
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace Language_da {
|
|||
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Plade");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Blæser hastighed");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Blæser hastighed =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Blæser hastighed ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrol");
|
||||
PROGMEM Language_Str MSG_MIN = _UxGT(" \002 Min");
|
||||
PROGMEM Language_Str MSG_MAX = _UxGT(" \002 Max");
|
||||
|
|
|
@ -91,7 +91,7 @@ namespace Language_el {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Κλίνη");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Ροή");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Ροή ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Έλεγχος");
|
||||
|
|
|
@ -92,7 +92,7 @@ namespace Language_el_gr {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Κλίνη");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Ροή");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Ροή ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Έλεγχος");
|
||||
|
|
|
@ -242,10 +242,10 @@ namespace Language_en {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Bed");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Enclosure");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan Speed");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan Speed =");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Stored Fan =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan Speed ~");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Stored Fan ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra Fan Speed");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra Fan Speed =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra Fan Speed ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flow");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flow ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
|
||||
|
|
|
@ -240,9 +240,9 @@ namespace Language_es {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Cama");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Recinto");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ventilador");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ventilador =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Ventilador ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Ext. ventilador");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Ext. ventilador =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Ext. ventilador ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flujo");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flujo ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
|
||||
|
|
|
@ -147,9 +147,9 @@ namespace Language_eu {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Pita ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Ohea");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Haizagailu abiadura");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Haizagailu abiadura =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Haizagailu abiadura ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Haiz.gehig. abiadura");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Haiz.gehig. abiadura =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Haiz.gehig. abiadura ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxua");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Fluxua ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrola");
|
||||
|
|
|
@ -79,7 +79,7 @@ namespace Language_fi {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Suutin ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Alusta");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Tuul. nopeus");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Tuul. nopeus =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Tuul. nopeus ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Virtaus");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Virtaus ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrolli");
|
||||
|
|
|
@ -235,10 +235,10 @@ namespace Language_fr {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Lit");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Caisson");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // 15 car. max
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vit. ventil. =");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Vit. enreg. =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~");
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. ");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~");
|
||||
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flux");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flux ~");
|
||||
|
|
|
@ -240,10 +240,10 @@ namespace Language_it {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Piatto");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Camera");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. ventola ="); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Ventola mem. ="); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. ventola ~"); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_STORED_FAN_N = _UxGT("Ventola mem. ~"); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ="); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ~"); // Max 15 characters
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flusso");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flusso ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Controllo");
|
||||
|
|
|
@ -77,9 +77,9 @@ namespace Language_ko_KR {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("노즐 ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("베드");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("펜 속도");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("펜 속도 =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("펜 속도 ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("엑스트라 펜 속도");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("엑스트라 펜 속도 =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("엑스트라 펜 속도 ~");
|
||||
PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("온도");
|
||||
PROGMEM Language_Str MSG_MOTION = _UxGT("동작");
|
||||
PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("설정 저장하기");
|
||||
|
|
|
@ -99,7 +99,7 @@ namespace Language_nl {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Nozzle ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Bed");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan snelheid");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan snelheid =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan snelheid ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Flow");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Flow ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
|
||||
|
|
|
@ -240,9 +240,9 @@ namespace Language_pl {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Stół");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Obudowa");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Obroty wiatraka");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Obroty wiatraka =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Obroty wiatraka ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Obroty dodatkowego wiatraka");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wiatraka =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wiatraka ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Przepływ");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Przepływ ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Ustawienia");
|
||||
|
|
|
@ -89,7 +89,7 @@ namespace Language_pt {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Bico ~");
|
||||
PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Base");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. ventoinha");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. ventoinha =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. ventoinha ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxo");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Fluxo ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Controlo");
|
||||
|
|
|
@ -207,9 +207,9 @@ namespace Language_pt_br {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Bocal ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Mesa");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. Ventoinha");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. Ventoinha =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Vel. Ventoinha ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("+Vel. Ventoinha");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("+Vel. Ventoinha =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("+Vel. Ventoinha ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Vazão");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Vazão ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Controle");
|
||||
|
|
|
@ -243,9 +243,9 @@ namespace Language_sk {
|
|||
PROGMEM Language_Str MSG_BED = _UxGT("Podložka");
|
||||
PROGMEM Language_Str MSG_CHAMBER = _UxGT("Komora");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Rýchlosť vent.");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Rýchlosť vent. =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Rýchlosť vent. ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Rýchlosť ex. vent.");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Rýchlosť ex. vent. =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Rýchlosť ex. vent. ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Prietok");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Prietok ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Ovládanie");
|
||||
|
|
|
@ -210,9 +210,9 @@ namespace Language_tr {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Nozul ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Tabla");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan Hızı");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan Hızı =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Fan Hızı ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Ekstra Fan Hızı");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Ekstra Fan Hızı =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Ekstra Fan Hızı ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Akış");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Akış ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrol");
|
||||
|
|
|
@ -92,7 +92,7 @@ namespace Language_uk {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Сопло ~");
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Стіл");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Охолодж.");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Охолодж. =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Охолодж. ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Потік");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Потік ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Налаштування");
|
||||
|
|
|
@ -210,9 +210,9 @@ namespace Language_vi {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = _UxGT("Đầu phun ~"); // Nozzle
|
||||
PROGMEM Language_Str MSG_BED = _UxGT("Bàn"); // bed
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // fan speed
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Tốc độ quạt ="); // fan speed
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("Tốc độ quạt ~"); // fan speed
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Tốc độ quạt phụ"); // Extra fan speed
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Tốc độ quạt phụ ="); // Extra fan speed
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("Tốc độ quạt phụ ~"); // Extra fan speed
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("Lưu Lượng");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("Lưu Lượng ~");
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("Điều khiển"); // Control
|
||||
|
|
|
@ -187,9 +187,9 @@ namespace Language_zh_CN {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ~"); //"Nozzle" 噴嘴
|
||||
PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 热床"); //"Bed"
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("风扇速率"); //"Fan speed"
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("风扇速率 ="); //"Fan speed"
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("风扇速率 ~"); //"Fan speed"
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // "Extra fan speed"
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ="); // "Extra fan speed"
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ~"); // "Extra fan speed"
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("挤出速率"); //"Flow"
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("挤出速率 ~"); //"Flow"
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("控制"); //"Control"
|
||||
|
|
|
@ -187,9 +187,9 @@ namespace Language_zh_TW {
|
|||
PROGMEM Language_Str MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ~");
|
||||
PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); //"Bed"
|
||||
PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("風扇速率"); //"Fan speed"
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("風扇速率 =");
|
||||
PROGMEM Language_Str MSG_FAN_SPEED_N = _UxGT("風扇速率 ~");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed"
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 =");
|
||||
PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 ~");
|
||||
PROGMEM Language_Str MSG_FLOW = _UxGT("擠出速率");
|
||||
PROGMEM Language_Str MSG_FLOW_N = _UxGT("擠出速率 ~"); //"Flow"
|
||||
PROGMEM Language_Str MSG_CONTROL = _UxGT("控制"); //"Control"
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
extern int8_t encoderLine, encoderTopLine, screen_items;
|
||||
|
||||
#if HOTENDS
|
||||
constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP);
|
||||
constexpr int16_t heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP, HEATER_5_MAXTEMP, HEATER_6_MAXTEMP, HEATER_7_MAXTEMP);
|
||||
#endif
|
||||
|
||||
void scroll_screen(const uint8_t limit, const bool is_menu);
|
||||
|
|
|
@ -245,6 +245,12 @@ void menu_cancelobject();
|
|||
DEFINE_PIDTEMP_FUNCS(4);
|
||||
#if HOTENDS > 5
|
||||
DEFINE_PIDTEMP_FUNCS(5);
|
||||
#if HOTENDS > 6
|
||||
DEFINE_PIDTEMP_FUNCS(6);
|
||||
#if HOTENDS > 7
|
||||
DEFINE_PIDTEMP_FUNCS(7);
|
||||
#endif // HOTENDS > 7
|
||||
#endif // HOTENDS > 6
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
|
@ -330,6 +336,12 @@ void menu_cancelobject();
|
|||
PID_EDIT_MENU_ITEMS(4);
|
||||
#if HOTENDS > 5
|
||||
PID_EDIT_MENU_ITEMS(5);
|
||||
#if HOTENDS > 6
|
||||
PID_EDIT_MENU_ITEMS(6);
|
||||
#if HOTENDS > 7
|
||||
PID_EDIT_MENU_ITEMS(7);
|
||||
#endif // HOTENDS > 7
|
||||
#endif // HOTENDS > 6
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
|
|
|
@ -152,6 +152,24 @@ void menu_info_thermistors() {
|
|||
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_6 != 0
|
||||
#undef THERMISTOR_ID
|
||||
#define THERMISTOR_ID TEMP_SENSOR_6
|
||||
#include "../thermistornames.h"
|
||||
STATIC_ITEM_P(PSTR(LCD_STR_E6 ": " THERMISTOR_NAME), SS_INVERT);
|
||||
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_6_MINTEMP), SS_LEFT);
|
||||
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_6_MAXTEMP), SS_LEFT);
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_7 != 0
|
||||
#undef THERMISTOR_ID
|
||||
#define THERMISTOR_ID TEMP_SENSOR_7
|
||||
#include "../thermistornames.h"
|
||||
STATIC_ITEM_P(PSTR(LCD_STR_E7 ": " THERMISTOR_NAME), SS_INVERT);
|
||||
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_7_MINTEMP), SS_LEFT);
|
||||
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_7_MAXTEMP), SS_LEFT);
|
||||
#endif
|
||||
|
||||
#if EXTRUDERS
|
||||
{
|
||||
STATIC_ITEM(
|
||||
|
|
|
@ -198,33 +198,72 @@ void menu_temperature() {
|
|||
// Fan Speed:
|
||||
//
|
||||
#if FAN_COUNT > 0
|
||||
|
||||
auto on_fan_update = []{
|
||||
thermalManager.set_fan_speed(MenuItemBase::itemIndex, editable.uint8);
|
||||
};
|
||||
|
||||
#if HAS_FAN1 || HAS_FAN2 || HAS_FAN3 || HAS_FAN4 || HAS_FAN5 || HAS_FAN6 || HAS_FAN7
|
||||
auto fan_edit_items = [&](const uint8_t f) {
|
||||
editable.uint8 = thermalManager.fan_speed[f];
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, on_fan_update);
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[f], 3, 255);
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#define SNFAN(N) (ENABLED(SINGLENOZZLE) && !HAS_FAN##N && EXTRUDERS > N)
|
||||
#if SNFAN(1) || SNFAN(2) || SNFAN(3) || SNFAN(4) || SNFAN(5) || SNFAN(6) || SNFAN(7)
|
||||
auto singlenozzle_item = [&](const uint8_t f) {
|
||||
editable.uint8 = thermalManager.fan_speed[f];
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_STORED_FAN_N, &editable.uint8, 0, 255, on_fan_update);
|
||||
};
|
||||
#endif
|
||||
|
||||
#if HAS_FAN0
|
||||
editable.uint8 = thermalManager.fan_speed[0];
|
||||
EDIT_ITEM_FAST_N(percent, 1, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(0, editable.uint8); });
|
||||
EDIT_ITEM_FAST_N(percent, 0, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, on_fan_update);
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 1, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
|
||||
EDIT_ITEM_FAST_N(percent, 0, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
editable.uint8 = thermalManager.fan_speed[1];
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(1, editable.uint8); });
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[1], 3, 255);
|
||||
#endif
|
||||
#elif ENABLED(SINGLENOZZLE) && EXTRUDERS > 1
|
||||
editable.uint8 = thermalManager.fan_speed[1];
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_STORED_FAN_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(1, editable.uint8); });
|
||||
fan_edit_items(1);
|
||||
#elif SNFAN(1)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
editable.uint8 = thermalManager.fan_speed[2];
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(2, editable.uint8); });
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[2], 3, 255);
|
||||
fan_edit_items(2);
|
||||
#elif SNFAN(2)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#elif ENABLED(SINGLENOZZLE) && EXTRUDERS > 2
|
||||
editable.uint8 = thermalManager.fan_speed[2];
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_STORED_FAN_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(2, editable.uint8); });
|
||||
#if HAS_FAN3
|
||||
fan_edit_items(3);
|
||||
#elif SNFAN(3)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
fan_edit_items(4);
|
||||
#elif SNFAN(4)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
fan_edit_items(5);
|
||||
#elif SNFAN(5)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
fan_edit_items(6);
|
||||
#elif SNFAN(6)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
fan_edit_items(7);
|
||||
#elif SNFAN(7)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
|
||||
#endif // FAN_COUNT > 0
|
||||
|
||||
#if HAS_TEMP_HOTEND
|
||||
|
@ -232,7 +271,7 @@ void menu_temperature() {
|
|||
//
|
||||
// Preheat for Material 1 and 2
|
||||
//
|
||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || TEMP_SENSOR_5 != 0 || HAS_HEATED_BED
|
||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || TEMP_SENSOR_5 != 0 || TEMP_SENSOR_6 != 0 || TEMP_SENSOR_7 != 0 || HAS_HEATED_BED
|
||||
SUBMENU(MSG_PREHEAT_1, menu_preheat_m1);
|
||||
SUBMENU(MSG_PREHEAT_2, menu_preheat_m2);
|
||||
#else
|
||||
|
|
|
@ -79,6 +79,12 @@ void menu_tmc_current() {
|
|||
#if AXIS_IS_TMC(E5)
|
||||
TMC_EDIT_STORED_I_RMS(E5, LCD_STR_E5);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E6)
|
||||
TMC_EDIT_STORED_I_RMS(E6, LCD_STR_E6);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E7)
|
||||
TMC_EDIT_STORED_I_RMS(E7, LCD_STR_E7);
|
||||
#endif
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
|
@ -131,6 +137,12 @@ void menu_tmc_current() {
|
|||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_EDIT_STORED_HYBRID_THRS(E5, LCD_STR_E5);
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
TMC_EDIT_STORED_HYBRID_THRS(E6, LCD_STR_E6);
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
TMC_EDIT_STORED_HYBRID_THRS(E7, LCD_STR_E7);
|
||||
#endif
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
|
@ -210,6 +222,12 @@ void menu_tmc_current() {
|
|||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
TMC_EDIT_STEP_MODE(E5, LCD_STR_E5);
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
TMC_EDIT_STEP_MODE(E6, LCD_STR_E6);
|
||||
#endif
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
TMC_EDIT_STEP_MODE(E7, LCD_STR_E7);
|
||||
#endif
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
|
|
|
@ -147,33 +147,72 @@ void menu_tune() {
|
|||
// Fan Speed:
|
||||
//
|
||||
#if FAN_COUNT > 0
|
||||
|
||||
auto on_fan_update = []{
|
||||
thermalManager.set_fan_speed(MenuItemBase::itemIndex, editable.uint8);
|
||||
};
|
||||
|
||||
#if HAS_FAN1 || HAS_FAN2 || HAS_FAN3 || HAS_FAN4 || HAS_FAN5 || HAS_FAN6 || HAS_FAN7
|
||||
auto fan_edit_items = [&](const uint8_t f) {
|
||||
editable.uint8 = thermalManager.fan_speed[f];
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, on_fan_update);
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[f], 3, 255);
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#define SNFAN(N) (ENABLED(SINGLENOZZLE) && !HAS_FAN##N && EXTRUDERS > N)
|
||||
#if SNFAN(1) || SNFAN(2) || SNFAN(3) || SNFAN(4) || SNFAN(5) || SNFAN(6) || SNFAN(7)
|
||||
auto singlenozzle_item = [&](const uint8_t f) {
|
||||
editable.uint8 = thermalManager.fan_speed[f];
|
||||
EDIT_ITEM_FAST_N(percent, f, MSG_STORED_FAN_N, &editable.uint8, 0, 255, on_fan_update);
|
||||
};
|
||||
#endif
|
||||
|
||||
#if HAS_FAN0
|
||||
editable.uint8 = thermalManager.fan_speed[0];
|
||||
EDIT_ITEM_FAST_N(percent, 1, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(0, editable.uint8); });
|
||||
EDIT_ITEM_FAST_N(percent, 0, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, on_fan_update);
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 1, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
|
||||
EDIT_ITEM_FAST_N(percent, 0, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
editable.uint8 = thermalManager.fan_speed[1];
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(1, editable.uint8); });
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[1], 3, 255);
|
||||
#endif
|
||||
#elif ENABLED(SINGLENOZZLE) && EXTRUDERS > 1
|
||||
editable.uint8 = thermalManager.fan_speed[1];
|
||||
EDIT_ITEM_FAST_N(percent, 2, MSG_STORED_FAN_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(1, editable.uint8); });
|
||||
fan_edit_items(1);
|
||||
#elif SNFAN(1)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
editable.uint8 = thermalManager.fan_speed[2];
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_FAN_SPEED_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(2, editable.uint8); });
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_EXTRA_FAN_SPEED_N, &thermalManager.new_fan_speed[2], 3, 255);
|
||||
fan_edit_items(2);
|
||||
#elif SNFAN(2)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#elif ENABLED(SINGLENOZZLE) && EXTRUDERS > 2
|
||||
editable.uint8 = thermalManager.fan_speed[2];
|
||||
EDIT_ITEM_FAST_N(percent, 3, MSG_STORED_FAN_N, &editable.uint8, 0, 255, []{ thermalManager.set_fan_speed(2, editable.uint8); });
|
||||
#if HAS_FAN3
|
||||
fan_edit_items(3);
|
||||
#elif SNFAN(3)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
fan_edit_items(4);
|
||||
#elif SNFAN(4)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
fan_edit_items(5);
|
||||
#elif SNFAN(5)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
fan_edit_items(6);
|
||||
#elif SNFAN(6)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
fan_edit_items(7);
|
||||
#elif SNFAN(7)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
|
||||
#endif // FAN_COUNT > 0
|
||||
|
||||
//
|
||||
|
|
|
@ -39,7 +39,7 @@ L64XX_Marlin L64xxManager;
|
|||
|
||||
void echo_yes_no(const bool yes) { serialprintPGM(yes ? PSTR(" YES") : PSTR(" NO ")); }
|
||||
|
||||
char L64XX_Marlin::index_to_axis[MAX_L64XX][3] = { "X ", "Y ", "Z ", "X2", "Y2", "Z2", "Z3", "Z4", "E0", "E1", "E2", "E3", "E4", "E5" };
|
||||
char L64XX_Marlin::index_to_axis[MAX_L64XX][3] = { "X ", "Y ", "Z ", "X2", "Y2", "Z2", "Z3", "Z4", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7" };
|
||||
|
||||
#define DEBUG_OUT ENABLED(L6470_CHITCHAT)
|
||||
#include "../../core/debug_out.h"
|
||||
|
@ -69,6 +69,8 @@ uint8_t L64XX_Marlin::index_to_dir[MAX_L64XX] = { (INVERT_X_DIR),
|
|||
(INVERT_E3_DIR), // 11 E3
|
||||
(INVERT_E4_DIR), // 12 E4
|
||||
(INVERT_E5_DIR), // 13 E5
|
||||
(INVERT_E6_DIR), // 14 E6
|
||||
(INVERT_E7_DIR) // 15 E7
|
||||
};
|
||||
|
||||
volatile uint8_t L64XX_Marlin::spi_abort = false;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#define dSPIN_STEP_CLOCK_REV dSPIN_STEP_CLOCK+1
|
||||
#define HAS_L64XX_EXTRUDER (AXIS_IS_L64XX(E0) || AXIS_IS_L64XX(E1) || AXIS_IS_L64XX(E2) || AXIS_IS_L64XX(E3) || AXIS_IS_L64XX(E4) || AXIS_IS_L64XX(E5))
|
||||
|
||||
enum L64XX_axis_t : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E5, MAX_L64XX };
|
||||
enum L64XX_axis_t : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E5, E6, E7, MAX_L64XX };
|
||||
|
||||
class L64XX_Marlin : public L64XXHelper {
|
||||
public:
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
* @return value read
|
||||
*/
|
||||
FORCE_INLINE static bool fastDigitalRead(uint8_t pin) {
|
||||
return g_APinDescription[pin].pPort->PIO_PDSR & g_APinDescription[pin].ulPin;
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -75,10 +75,7 @@
|
|||
* @param[in] level value to write
|
||||
*/
|
||||
FORCE_INLINE static void fastDigitalWrite(uint8_t pin, bool value) {
|
||||
if (value)
|
||||
g_APinDescription[pin].pPort->PIO_SODR = g_APinDescription[pin].ulPin;
|
||||
else
|
||||
g_APinDescription[pin].pPort->PIO_CODR = g_APinDescription[pin].ulPin;
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
#endif // !CORE_TEENSY
|
||||
|
|
|
@ -1008,6 +1008,16 @@ void MarlinSettings::postprocess() {
|
|||
#if AXIS_IS_TMC(E5)
|
||||
tmc_stepper_current.E5 = stepperE5.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_IS_TMC(E6)
|
||||
tmc_stepper_current.E6 = stepperE6.getMilliamps();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_IS_TMC(E7)
|
||||
tmc_stepper_current.E7 = stepperE7.getMilliamps();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
|
@ -1074,6 +1084,16 @@ void MarlinSettings::postprocess() {
|
|||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_hybrid_threshold.E5 = stepperE5.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_hybrid_threshold.E6 = stepperE6.get_pwm_thrs();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_hybrid_threshold.E7 = stepperE7.get_pwm_thrs();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
|
@ -1170,6 +1190,16 @@ void MarlinSettings::postprocess() {
|
|||
#if AXIS_HAS_STEALTHCHOP(E5)
|
||||
tmc_stealth_enabled.E5 = stepperE5.get_stealthChop_status();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 6
|
||||
#if AXIS_HAS_STEALTHCHOP(E6)
|
||||
tmc_stealth_enabled.E6 = stepperE6.get_stealthChop_status();
|
||||
#endif
|
||||
#if MAX_EXTRUDERS > 7
|
||||
#if AXIS_HAS_STEALTHCHOP(E7)
|
||||
tmc_stealth_enabled.E7 = stepperE7.get_stealthChop_status();
|
||||
#endif
|
||||
#endif // MAX_EXTRUDERS > 7
|
||||
#endif // MAX_EXTRUDERS > 6
|
||||
#endif // MAX_EXTRUDERS > 5
|
||||
#endif // MAX_EXTRUDERS > 4
|
||||
#endif // MAX_EXTRUDERS > 3
|
||||
|
@ -2788,6 +2818,14 @@ void MarlinSettings::reset() {
|
|||
#if EXTRUDERS > 5
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(" M200 T5 D", LINEAR_UNIT(planner.filament_size[5]));
|
||||
#if EXTRUDERS > 6
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(" M200 T6 D", LINEAR_UNIT(planner.filament_size[6]));
|
||||
#if EXTRUDERS > 7
|
||||
CONFIG_ECHO_START();
|
||||
SERIAL_ECHOLNPAIR(" M200 T7 D", LINEAR_UNIT(planner.filament_size[7]));
|
||||
#endif // EXTRUDERS > 7
|
||||
#endif // EXTRUDERS > 6
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
|
@ -3528,6 +3566,12 @@ void MarlinSettings::reset() {
|
|||
_ECHO_603(4);
|
||||
#if EXTRUDERS > 5
|
||||
_ECHO_603(5);
|
||||
#if EXTRUDERS > 6
|
||||
_ECHO_603(6);
|
||||
#if EXTRUDERS > 7
|
||||
_ECHO_603(7);
|
||||
#endif // EXTRUDERS > 7
|
||||
#endif // EXTRUDERS > 6
|
||||
#endif // EXTRUDERS > 5
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
|
|
|
@ -486,14 +486,20 @@ void _O2 Endstops::report_states() {
|
|||
default: continue;
|
||||
case 1: pin = FIL_RUNOUT_PIN; break;
|
||||
case 2: pin = FIL_RUNOUT2_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 2
|
||||
#if NUM_RUNOUT_SENSORS >= 3
|
||||
case 3: pin = FIL_RUNOUT3_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 3
|
||||
#if NUM_RUNOUT_SENSORS >= 4
|
||||
case 4: pin = FIL_RUNOUT4_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 4
|
||||
#if NUM_RUNOUT_SENSORS >= 5
|
||||
case 5: pin = FIL_RUNOUT5_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 5
|
||||
#if NUM_RUNOUT_SENSORS >= 6
|
||||
case 6: pin = FIL_RUNOUT6_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS >= 7
|
||||
case 7: pin = FIL_RUNOUT7_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS >= 8
|
||||
case 8: pin = FIL_RUNOUT8_PIN; break;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1308,7 +1308,21 @@ void Planner::check_axes_activity() {
|
|||
#if HAS_FAN2
|
||||
FAN_SET(2);
|
||||
#endif
|
||||
|
||||
#if HAS_FAN3
|
||||
FAN_SET(3);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
FAN_SET(4);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
FAN_SET(5);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
FAN_SET(6);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
FAN_SET(7);
|
||||
#endif
|
||||
#endif // FAN_COUNT > 0
|
||||
|
||||
#if ENABLED(AUTOTEMP)
|
||||
|
|
|
@ -2140,6 +2140,12 @@ void Stepper::init() {
|
|||
#if HAS_E5_DIR
|
||||
E5_DIR_INIT();
|
||||
#endif
|
||||
#if HAS_E6_DIR
|
||||
E6_DIR_INIT();
|
||||
#endif
|
||||
#if HAS_E7_DIR
|
||||
E7_DIR_INIT();
|
||||
#endif
|
||||
|
||||
// Init Enable Pins - steppers default to disabled.
|
||||
#if HAS_X_ENABLE
|
||||
|
@ -2198,6 +2204,14 @@ void Stepper::init() {
|
|||
E5_ENABLE_INIT();
|
||||
if (!E_ENABLE_ON) E5_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
#if HAS_E6_ENABLE
|
||||
E6_ENABLE_INIT();
|
||||
if (!E_ENABLE_ON) E6_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
#if HAS_E7_ENABLE
|
||||
E7_ENABLE_INIT();
|
||||
if (!E_ENABLE_ON) E7_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
|
||||
#define _STEP_INIT(AXIS) AXIS ##_STEP_INIT()
|
||||
#define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW)
|
||||
|
@ -2261,6 +2275,12 @@ void Stepper::init() {
|
|||
#if E_STEPPERS > 5 && HAS_E5_STEP
|
||||
E_AXIS_INIT(5);
|
||||
#endif
|
||||
#if E_STEPPERS > 6 && HAS_E6_STEP
|
||||
E_AXIS_INIT(6);
|
||||
#endif
|
||||
#if E_STEPPERS > 7 && HAS_E7_STEP
|
||||
E_AXIS_INIT(7);
|
||||
#endif
|
||||
|
||||
#if DISABLED(I2S_STEPPER_STREAM)
|
||||
HAL_timer_start(STEP_TIMER_NUM, 122); // Init Stepper ISR to 122 Hz for quick starting
|
||||
|
@ -2802,6 +2822,20 @@ void Stepper::report_positions() {
|
|||
SET_OUTPUT(E5_MS3_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_E6_MICROSTEPS
|
||||
SET_OUTPUT(E6_MS1_PIN);
|
||||
SET_OUTPUT(E6_MS2_PIN);
|
||||
#if PIN_EXISTS(E6_MS3)
|
||||
SET_OUTPUT(E6_MS3_PIN);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_E7_MICROSTEPS
|
||||
SET_OUTPUT(E7_MS1_PIN);
|
||||
SET_OUTPUT(E7_MS2_PIN);
|
||||
#if PIN_EXISTS(E7_MS3)
|
||||
SET_OUTPUT(E7_MS3_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static const uint8_t microstep_modes[] = MICROSTEP_MODES;
|
||||
for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
|
||||
|
@ -2864,6 +2898,12 @@ void Stepper::report_positions() {
|
|||
#if HAS_E5_MICROSTEPS
|
||||
case 8: WRITE(E5_MS1_PIN, ms1); break;
|
||||
#endif
|
||||
#if HAS_E6_MICROSTEPS
|
||||
case 9: WRITE(E6_MS1_PIN, ms1); break;
|
||||
#endif
|
||||
#if HAS_E7_MICROSTEPS
|
||||
case 10: WRITE(E7_MS1_PIN, ms1); break;
|
||||
#endif
|
||||
}
|
||||
if (ms2 >= 0) switch (driver) {
|
||||
#if HAS_X_MICROSTEPS || HAS_X2_MICROSTEPS
|
||||
|
@ -2920,6 +2960,12 @@ void Stepper::report_positions() {
|
|||
#if HAS_E5_MICROSTEPS
|
||||
case 8: WRITE(E5_MS2_PIN, ms2); break;
|
||||
#endif
|
||||
#if HAS_E6_MICROSTEPS
|
||||
case 9: WRITE(E6_MS2_PIN, ms2); break;
|
||||
#endif
|
||||
#if HAS_E7_MICROSTEPS
|
||||
case 10: WRITE(E7_MS2_PIN, ms2); break;
|
||||
#endif
|
||||
}
|
||||
if (ms3 >= 0) switch (driver) {
|
||||
#if HAS_X_MICROSTEPS || HAS_X2_MICROSTEPS
|
||||
|
@ -2976,6 +3022,12 @@ void Stepper::report_positions() {
|
|||
#if HAS_E5_MICROSTEPS && PIN_EXISTS(E5_MS3)
|
||||
case 8: WRITE(E5_MS3_PIN, ms3); break;
|
||||
#endif
|
||||
#if HAS_E6_MICROSTEPS && PIN_EXISTS(E6_MS3)
|
||||
case 9: WRITE(E6_MS3_PIN, ms3); break;
|
||||
#endif
|
||||
#if HAS_E7_MICROSTEPS && PIN_EXISTS(E7_MS3)
|
||||
case 10: WRITE(E7_MS3_PIN, ms3); break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3084,6 +3136,22 @@ void Stepper::report_positions() {
|
|||
#endif
|
||||
);
|
||||
#endif
|
||||
#if HAS_E6_MICROSTEPS
|
||||
SERIAL_ECHOPGM("E6: ");
|
||||
SERIAL_CHAR('0' + READ(E6_MS1_PIN), '0' + READ(E6_MS2_PIN)
|
||||
#if PIN_EXISTS(E6_MS3)
|
||||
, '0' + READ(E6_MS3_PIN)
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#if HAS_E7_MICROSTEPS
|
||||
SERIAL_ECHOPGM("E7: ");
|
||||
SERIAL_CHAR('0' + READ(E7_MS1_PIN), '0' + READ(E7_MS2_PIN)
|
||||
#if PIN_EXISTS(E7_MS3)
|
||||
, '0' + READ(E7_MS3_PIN)
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // HAS_MICROSTEPS
|
||||
|
|
|
@ -278,3 +278,37 @@
|
|||
#define E5_DIR_READ() (stepper##E5.getStatus() & STATUS_DIR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// E6 Stepper
|
||||
#if AXIS_IS_L64XX(E6)
|
||||
extern L64XX_CLASS(E6) stepperE6;
|
||||
#define E6_ENABLE_INIT() NOOP
|
||||
#define E6_ENABLE_WRITE(STATE) (STATE ? NOOP : stepperE6.free())
|
||||
#define E6_ENABLE_READ() (stepperE6.getStatus() & STATUS_HIZ)
|
||||
#if AXIS_DRIVER_TYPE_E6(L6474)
|
||||
#define E6_DIR_INIT() SET_OUTPUT(E6_DIR_PIN)
|
||||
#define E6_DIR_WRITE(STATE) L6474_DIR_WRITE(E6, STATE)
|
||||
#define E6_DIR_READ() READ(E6_DIR_PIN)
|
||||
#else
|
||||
#define E6_DIR_INIT() NOOP
|
||||
#define E6_DIR_WRITE(STATE) L64XX_DIR_WRITE(E6, STATE)
|
||||
#define E6_DIR_READ() (stepper##E6.getStatus() & STATUS_DIR);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// E7 Stepper
|
||||
#if AXIS_IS_L64XX(E7)
|
||||
extern L64XX_CLASS(E7) stepperE7;
|
||||
#define E7_ENABLE_INIT() NOOP
|
||||
#define E7_ENABLE_WRITE(STATE) (STATE ? NOOP : stepperE7.free())
|
||||
#define E7_ENABLE_READ() (stepperE7.getStatus() & STATUS_HIZ)
|
||||
#if AXIS_DRIVER_TYPE_E7(L6474)
|
||||
#define E7_DIR_INIT() SET_OUTPUT(E7_DIR_PIN)
|
||||
#define E7_DIR_WRITE(STATE) L6474_DIR_WRITE(E7, STATE)
|
||||
#define E7_DIR_READ() READ(E7_DIR_PIN)
|
||||
#else
|
||||
#define E7_DIR_INIT() NOOP
|
||||
#define E7_DIR_WRITE(STATE) L64XX_DIR_WRITE(E7, STATE)
|
||||
#define E7_DIR_READ() (stepper##E7.getStatus() & STATUS_DIR);
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -150,3 +150,19 @@ void tmc26x_init_to_defaults();
|
|||
#define E5_ENABLE_WRITE(STATE) stepperE5.setEnabled(STATE)
|
||||
#define E5_ENABLE_READ() stepperE5.isEnabled()
|
||||
#endif
|
||||
|
||||
// E6 Stepper
|
||||
#if AXIS_DRIVER_TYPE_E6(TMC26X)
|
||||
extern TMC26XStepper stepperE6;
|
||||
#define E6_ENABLE_INIT() NOOP
|
||||
#define E6_ENABLE_WRITE(STATE) stepperE6.setEnabled(STATE)
|
||||
#define E6_ENABLE_READ() stepperE6.isEnabled()
|
||||
#endif
|
||||
|
||||
// E7 Stepper
|
||||
#if AXIS_DRIVER_TYPE_E7(TMC26X)
|
||||
extern TMC26XStepper stepperE7;
|
||||
#define E7_ENABLE_INIT() NOOP
|
||||
#define E7_ENABLE_WRITE(STATE) stepperE7.setEnabled(STATE)
|
||||
#define E7_ENABLE_READ() stepperE7.isEnabled()
|
||||
#endif
|
||||
|
|
|
@ -303,26 +303,115 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#endif
|
||||
#define E5_STEP_READ() bool(READ(E5_STEP_PIN))
|
||||
|
||||
// E6 Stepper
|
||||
#ifndef E6_ENABLE_INIT
|
||||
#define E6_ENABLE_INIT() SET_OUTPUT(E6_ENABLE_PIN)
|
||||
#define E6_ENABLE_WRITE(STATE) WRITE(E6_ENABLE_PIN,STATE)
|
||||
#define E6_ENABLE_READ() bool(READ(E6_ENABLE_PIN))
|
||||
#endif
|
||||
#ifndef E6_DIR_INIT
|
||||
#define E6_DIR_INIT() SET_OUTPUT(E6_DIR_PIN)
|
||||
#define E6_DIR_WRITE(STATE) WRITE(E6_DIR_PIN,STATE)
|
||||
#define E6_DIR_READ() bool(READ(E6_DIR_PIN))
|
||||
#endif
|
||||
#define E6_STEP_INIT() SET_OUTPUT(E6_STEP_PIN)
|
||||
#ifndef E6_STEP_WRITE
|
||||
#define E6_STEP_WRITE(STATE) WRITE(E6_STEP_PIN,STATE)
|
||||
#endif
|
||||
#define E6_STEP_READ() bool(READ(E6_STEP_PIN))
|
||||
|
||||
// E7 Stepper
|
||||
#ifndef E7_ENABLE_INIT
|
||||
#define E7_ENABLE_INIT() SET_OUTPUT(E7_ENABLE_PIN)
|
||||
#define E7_ENABLE_WRITE(STATE) WRITE(E7_ENABLE_PIN,STATE)
|
||||
#define E7_ENABLE_READ() bool(READ(E7_ENABLE_PIN))
|
||||
#endif
|
||||
#ifndef E7_DIR_INIT
|
||||
#define E7_DIR_INIT() SET_OUTPUT(E7_DIR_PIN)
|
||||
#define E7_DIR_WRITE(STATE) WRITE(E7_DIR_PIN,STATE)
|
||||
#define E7_DIR_READ() bool(READ(E7_DIR_PIN))
|
||||
#endif
|
||||
#define E7_STEP_INIT() SET_OUTPUT(E7_STEP_PIN)
|
||||
#ifndef E7_STEP_WRITE
|
||||
#define E7_STEP_WRITE(STATE) WRITE(E7_STEP_PIN,STATE)
|
||||
#endif
|
||||
#define E7_STEP_READ() bool(READ(E7_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 > 5
|
||||
#if EXTRUDERS > 7
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_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); break; case 5: E2_DIR_WRITE( INVERT_E2_DIR); break; \
|
||||
case 6: E3_DIR_WRITE( INVERT_E3_DIR); break; case 7: E3_DIR_WRITE( INVERT_E3_DIR); break; \
|
||||
} }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); break; case 5: E2_DIR_WRITE(!INVERT_E2_DIR); break; \
|
||||
case 6: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 7: E3_DIR_WRITE(!INVERT_E3_DIR); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 6
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_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); break; case 5: E2_DIR_WRITE( INVERT_E2_DIR); break; \
|
||||
case 6: E3_DIR_WRITE( INVERT_E3_DIR); break; \
|
||||
} }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); break; case 5: E2_DIR_WRITE(!INVERT_E2_DIR); break; \
|
||||
case 6: E3_DIR_WRITE(!INVERT_E3_DIR); } }while(0)
|
||||
#elif 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)
|
||||
#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); break; case 5: E2_DIR_WRITE( INVERT_E2_DIR); break; \
|
||||
} }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); break; case 5: E2_DIR_WRITE(!INVERT_E2_DIR); break; \
|
||||
} }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)
|
||||
#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); break; \
|
||||
} }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); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 3
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_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); } }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); } }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; \
|
||||
} }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; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 2
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_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); } }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); } }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; \
|
||||
} }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; \
|
||||
} }while(0)
|
||||
#else
|
||||
#define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
|
||||
#define NORM_E_DIR(E) do{ E0_DIR_WRITE(E ? INVERT_E0_DIR : !INVERT_E0_DIR); }while(0)
|
||||
|
@ -340,23 +429,100 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
|
||||
#elif E_STEPPERS > 1
|
||||
|
||||
#if 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)
|
||||
#if E_STEPPERS > 7
|
||||
|
||||
#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); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE(!INVERT_E5_DIR); break; \
|
||||
case 6: E6_DIR_WRITE(!INVERT_E6_DIR); break; case 7: E7_DIR_WRITE(!INVERT_E7_DIR); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE( INVERT_E5_DIR); break; \
|
||||
case 6: E6_DIR_WRITE( INVERT_E6_DIR); break; case 7: E7_DIR_WRITE( INVERT_E7_DIR); break; \
|
||||
} }while(0)
|
||||
|
||||
#elif E_STEPPERS > 6
|
||||
|
||||
#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); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE(!INVERT_E5_DIR); break; \
|
||||
case 6: E6_DIR_WRITE(!INVERT_E6_DIR); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE( INVERT_E5_DIR); break; \
|
||||
case 6: E6_DIR_WRITE( INVERT_E6_DIR); break; \
|
||||
} }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); break; case 5: E5_STEP_WRITE(V); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE(!INVERT_E5_DIR); break; \
|
||||
} }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); break; case 5: E5_DIR_WRITE( INVERT_E5_DIR); break; \
|
||||
} }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)
|
||||
#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); } }while(0)
|
||||
|
||||
#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); break; \
|
||||
} }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); break; \
|
||||
} }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); break; \
|
||||
} }while(0)
|
||||
|
||||
#elif E_STEPPERS > 3
|
||||
#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); } }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); } }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); } }while(0)
|
||||
|
||||
#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; \
|
||||
} }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; \
|
||||
} }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; \
|
||||
} }while(0)
|
||||
|
||||
#elif E_STEPPERS > 2
|
||||
|
||||
#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); } }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); } }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); } }while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
|
||||
#define _NORM_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } }while(0)
|
||||
#define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE( INVERT_E0_DIR); } else { E1_DIR_WRITE( INVERT_E1_DIR); } }while(0)
|
||||
|
@ -376,7 +542,15 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { DUPE(STEP,V); } else _E_STEP_WRITE(E,V); }while(0)
|
||||
|
||||
#if E_STEPPERS > 2
|
||||
#if E_STEPPERS > 5
|
||||
#if E_STEPPERS > 7
|
||||
#define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); _DUPE(6,T,V); _DUPE(7,T,V); }while(0)
|
||||
#define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); NDIR(6); NDIR(7); } else _NORM_E_DIR(E); }while(0)
|
||||
#define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); RDIR(6); RDIR(7); } else _REV_E_DIR(E); }while(0)
|
||||
#elif E_STEPPERS > 6
|
||||
#define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); _DUPE(6,T,V); }while(0)
|
||||
#define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); NDIR(6); } else _NORM_E_DIR(E); }while(0)
|
||||
#define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); RDIR(6); } else _REV_E_DIR(E); }while(0)
|
||||
#elif E_STEPPERS > 5
|
||||
#define DUPE(T,V) do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); }while(0)
|
||||
#define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); } else _NORM_E_DIR(E); }while(0)
|
||||
#define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); } else _REV_E_DIR(E); }while(0)
|
||||
|
@ -604,12 +778,42 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#define E5_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E6(L6470)
|
||||
extern L6470 stepperE6;
|
||||
#define E6_enable() NOOP
|
||||
#define E6_disable() do{ stepperE6.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define E6_enable() E6_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E6_disable() E6_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E6_enable() NOOP
|
||||
#define E6_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if AXIS_DRIVER_TYPE_E7(L6470)
|
||||
extern L6470 stepperE7;
|
||||
#define E7_enable() NOOP
|
||||
#define E7_disable() do{ stepperE7.free(); CBI(axis_known_position, E_AXIS); }while(0)
|
||||
#elif E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define E7_enable() E7_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define E7_disable() E7_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define E7_enable() NOOP
|
||||
#define E7_disable() NOOP
|
||||
#endif
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
|
||||
/**
|
||||
* Mixing steppers synchronize their enable (and direction) together
|
||||
*/
|
||||
#if MIXING_STEPPERS > 5
|
||||
#if MIXING_STEPPERS > 7
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); E6_enable(); E7_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); E6_disable(); E7_disable(); }
|
||||
#elif MIXING_STEPPERS > 6
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); E6_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); E6_disable(); }
|
||||
#elif MIXING_STEPPERS > 5
|
||||
#define enable_E0() { E0_enable(); E1_enable(); E2_enable(); E3_enable(); E4_enable(); E5_enable(); }
|
||||
#define disable_E0() { E0_disable(); E1_disable(); E2_disable(); E3_disable(); E4_disable(); E5_disable(); }
|
||||
#elif MIXING_STEPPERS > 4
|
||||
|
@ -635,6 +839,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#define disable_E4() NOOP
|
||||
#define enable_E5() NOOP
|
||||
#define disable_E5() NOOP
|
||||
#define enable_E6() NOOP
|
||||
#define disable_E6() NOOP
|
||||
#define enable_E7() NOOP
|
||||
#define disable_E7() NOOP
|
||||
|
||||
#else // !MIXING_EXTRUDER
|
||||
|
||||
|
@ -686,4 +894,20 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#define disable_E5() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 6 && HAS_E6_ENABLE
|
||||
#define enable_E6() E6_enable()
|
||||
#define disable_E6() E6_disable()
|
||||
#else
|
||||
#define enable_E6() NOOP
|
||||
#define disable_E6() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 7 && HAS_E7_ENABLE
|
||||
#define enable_E7() E7_enable()
|
||||
#define disable_E7() E7_disable()
|
||||
#else
|
||||
#define enable_E7() NOOP
|
||||
#define disable_E7() NOOP
|
||||
#endif
|
||||
|
||||
#endif // !MIXING_EXTRUDER
|
||||
|
|
|
@ -301,6 +301,20 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
|||
TMC_UART_DEFINE_E(SW, 5);
|
||||
#endif
|
||||
#endif
|
||||
#if AXIS_HAS_UART(E6)
|
||||
#ifdef E6_HARDWARE_SERIAL
|
||||
TMC_UART_DEFINE_E(HW, 6);
|
||||
#else
|
||||
TMC_UART_DEFINE_E(SW, 6);
|
||||
#endif
|
||||
#endif
|
||||
#if AXIS_HAS_UART(E7)
|
||||
#ifdef E7_HARDWARE_SERIAL
|
||||
TMC_UART_DEFINE_E(HW, 7);
|
||||
#else
|
||||
TMC_UART_DEFINE_E(SW, 7);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void tmc_serial_begin() {
|
||||
#if AXIS_HAS_UART(X)
|
||||
|
@ -401,6 +415,20 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
|||
stepperE5.beginSerial(TMC_BAUD_RATE);
|
||||
#endif
|
||||
#endif
|
||||
#if AXIS_HAS_UART(E6)
|
||||
#ifdef E6_HARDWARE_SERIAL
|
||||
E6_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
||||
#else
|
||||
stepperE6.beginSerial(TMC_BAUD_RATE);
|
||||
#endif
|
||||
#endif
|
||||
#if AXIS_HAS_UART(E7)
|
||||
#ifdef E7_HARDWARE_SERIAL
|
||||
E7_HARDWARE_SERIAL.begin(TMC_BAUD_RATE);
|
||||
#else
|
||||
stepperE7.beginSerial(TMC_BAUD_RATE);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -654,6 +682,12 @@ void restore_trinamic_drivers() {
|
|||
#if AXIS_IS_TMC(E5)
|
||||
stepperE5.push();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E6)
|
||||
stepperE6.push();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E7)
|
||||
stepperE7.push();
|
||||
#endif
|
||||
}
|
||||
|
||||
void reset_trinamic_drivers() {
|
||||
|
@ -719,6 +753,12 @@ void reset_trinamic_drivers() {
|
|||
#if AXIS_IS_TMC(E5)
|
||||
_TMC_INIT(E5, STEALTH_AXIS_E);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E6)
|
||||
_TMC_INIT(E6, STEALTH_AXIS_E);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E7)
|
||||
_TMC_INIT(E7, STEALTH_AXIS_E);
|
||||
#endif
|
||||
|
||||
#if USE_SENSORLESS
|
||||
#if X_SENSORLESS
|
||||
|
|
|
@ -58,6 +58,8 @@
|
|||
#define TMC_E3_LABEL 'E', '3'
|
||||
#define TMC_E4_LABEL 'E', '4'
|
||||
#define TMC_E5_LABEL 'E', '5'
|
||||
#define TMC_E6_LABEL 'E', '6'
|
||||
#define TMC_E7_LABEL 'E', '7'
|
||||
|
||||
#define __TMC_CLASS(TYPE, L, I, A) TMCMarlin<CLASS_##TYPE, L, I, A>
|
||||
#define _TMC_CLASS(TYPE, LandI, A) __TMC_CLASS(TYPE, LandI, A)
|
||||
|
@ -266,3 +268,29 @@ void reset_trinamic_drivers();
|
|||
#define E5_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(E5_STEP_PIN); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// E6 Stepper
|
||||
#if AXIS_IS_TMC(E6)
|
||||
extern TMC_CLASS_E(6) stepperE6;
|
||||
#if ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E6)
|
||||
#define E6_ENABLE_INIT() NOOP
|
||||
#define E6_ENABLE_WRITE(STATE) stepperE6.toff((STATE)==E_ENABLE_ON ? chopper_timing.toff : 0)
|
||||
#define E6_ENABLE_READ() stepperE6.isEnabled()
|
||||
#endif
|
||||
#if AXIS_HAS_SQUARE_WAVE(E6)
|
||||
#define E6_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(E6_STEP_PIN); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// E7 Stepper
|
||||
#if AXIS_IS_TMC(E7)
|
||||
extern TMC_CLASS_E(7) stepperE7;
|
||||
#if ENABLED(SOFTWARE_DRIVER_ENABLE) && AXIS_IS_TMC(E7)
|
||||
#define E7_ENABLE_INIT() NOOP
|
||||
#define E7_ENABLE_WRITE(STATE) stepperE7.toff((STATE)==E_ENABLE_ON ? chopper_timing.toff : 0)
|
||||
#define E7_ENABLE_READ() stepperE7.isEnabled()
|
||||
#endif
|
||||
#if AXIS_HAS_SQUARE_WAVE(E7)
|
||||
#define E7_STEP_WRITE(STATE) do{ if(STATE) TOGGLE(E7_STEP_PIN); }while(0)
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -303,9 +303,11 @@ volatile bool Temperature::temp_meas_ready = false;
|
|||
sensor_heater_2 { HEATER_2_RAW_LO_TEMP, HEATER_2_RAW_HI_TEMP, 0, 16383 },
|
||||
sensor_heater_3 { HEATER_3_RAW_LO_TEMP, HEATER_3_RAW_HI_TEMP, 0, 16383 },
|
||||
sensor_heater_4 { HEATER_4_RAW_LO_TEMP, HEATER_4_RAW_HI_TEMP, 0, 16383 },
|
||||
sensor_heater_5 { HEATER_5_RAW_LO_TEMP, HEATER_5_RAW_HI_TEMP, 0, 16383 };
|
||||
sensor_heater_5 { HEATER_5_RAW_LO_TEMP, HEATER_5_RAW_HI_TEMP, 0, 16383 },
|
||||
sensor_heater_6 { HEATER_6_RAW_LO_TEMP, HEATER_6_RAW_HI_TEMP, 0, 16383 },
|
||||
sensor_heater_7 { HEATER_7_RAW_LO_TEMP, HEATER_7_RAW_HI_TEMP, 0, 16383 };
|
||||
|
||||
temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0, sensor_heater_1, sensor_heater_2, sensor_heater_3, sensor_heater_4, sensor_heater_5);
|
||||
temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0, sensor_heater_1, sensor_heater_2, sensor_heater_3, sensor_heater_4, sensor_heater_5, sensor_heater_6, sensor_heater_7);
|
||||
#endif
|
||||
|
||||
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
||||
|
@ -686,6 +688,12 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
|
|||
, REPEAT2(4,_EFAN,4) 4
|
||||
#if HOTENDS > 5
|
||||
, REPEAT2(5,_EFAN,5) 5
|
||||
#if HOTENDS > 6
|
||||
, REPEAT2(6,_EFAN,6) 6
|
||||
#if HOTENDS > 7
|
||||
, REPEAT2(7,_EFAN,7) 7
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -751,6 +759,12 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
|
|||
#if HAS_AUTO_FAN_5
|
||||
case 5: _UPDATE_AUTO_FAN(E5, fan_on, EXTRUDER_AUTO_FAN_SPEED); break;
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_6
|
||||
case 6: _UPDATE_AUTO_FAN(E6, fan_on, EXTRUDER_AUTO_FAN_SPEED); break;
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_7
|
||||
case 7: _UPDATE_AUTO_FAN(E7, fan_on, EXTRUDER_AUTO_FAN_SPEED); break;
|
||||
#endif
|
||||
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E
|
||||
case CHAMBER_FAN_INDEX: _UPDATE_AUTO_FAN(CHAMBER, fan_on, CHAMBER_AUTO_FAN_SPEED); break;
|
||||
#endif
|
||||
|
@ -893,7 +907,6 @@ void Temperature::min_temp_error(const heater_ind_t heater) {
|
|||
pid_output += work_pid[ee].Kc;
|
||||
}
|
||||
#endif // PID_EXTRUSION_SCALING
|
||||
|
||||
#if ENABLED(PID_FAN_SCALING)
|
||||
if (thermalManager.fan_speed[active_extruder] > PID_FAN_SCALING_MIN_SPEED) {
|
||||
work_pid[ee].Kf = PID_PARAM(Kf, ee) + (PID_FAN_SCALING_LIN_FACTOR) * thermalManager.fan_speed[active_extruder];
|
||||
|
@ -902,7 +915,6 @@ void Temperature::min_temp_error(const heater_ind_t heater) {
|
|||
//pid_output -= work_pid[ee].Ki;
|
||||
//pid_output += work_pid[ee].Ki * work_pid[ee].Kf
|
||||
#endif // PID_FAN_SCALING
|
||||
|
||||
LIMIT(pid_output, 0, PID_MAX);
|
||||
}
|
||||
temp_dState[ee] = temp_hotend[ee].celsius;
|
||||
|
@ -1286,6 +1298,12 @@ void Temperature::manage_heater() {
|
|||
#if ENABLED(HEATER_5_USER_THERMISTOR)
|
||||
{ true, 0, 0, HOTEND5_PULLUP_RESISTOR_OHMS, HOTEND5_RESISTANCE_25C_OHMS, 0, 0, HOTEND5_BETA, 0 },
|
||||
#endif
|
||||
#if ENABLED(HEATER_6_USER_THERMISTOR)
|
||||
{ true, 0, 0, HOTEND6_PULLUP_RESISTOR_OHMS, HOTEND6_RESISTANCE_25C_OHMS, 0, 0, HOTEND6_BETA, 0 },
|
||||
#endif
|
||||
#if ENABLED(HEATER_7_USER_THERMISTOR)
|
||||
{ true, 0, 0, HOTEND7_PULLUP_RESISTOR_OHMS, HOTEND7_RESISTANCE_25C_OHMS, 0, 0, HOTEND7_BETA, 0 },
|
||||
#endif
|
||||
#if ENABLED(HEATER_BED_USER_THERMISTOR)
|
||||
{ true, 0, 0, BED_PULLUP_RESISTOR_OHMS, BED_RESISTANCE_25C_OHMS, 0, 0, BED_BETA, 0 },
|
||||
#endif
|
||||
|
@ -1331,6 +1349,12 @@ void Temperature::manage_heater() {
|
|||
#if ENABLED(HEATER_5_USER_THERMISTOR)
|
||||
t_index == CTI_HOTEND_5 ? PSTR("HOTEND 5") :
|
||||
#endif
|
||||
#if ENABLED(HEATER_6_USER_THERMISTOR)
|
||||
t_index == CTI_HOTEND_6 ? PSTR("HOTEND 6") :
|
||||
#endif
|
||||
#if ENABLED(HEATER_7_USER_THERMISTOR)
|
||||
t_index == CTI_HOTEND_7 ? PSTR("HOTEND 7") :
|
||||
#endif
|
||||
#if ENABLED(HEATER_BED_USER_THERMISTOR)
|
||||
t_index == CTI_BED ? PSTR("BED") :
|
||||
#endif
|
||||
|
@ -1476,6 +1500,26 @@ void Temperature::manage_heater() {
|
|||
#else
|
||||
break;
|
||||
#endif
|
||||
case 6:
|
||||
#if ENABLED(HEATER_6_USER_THERMISTOR)
|
||||
return user_thermistor_to_deg_c(CTI_HOTEND_6, raw);
|
||||
#elif ENABLED(HEATER_6_USES_AD595)
|
||||
return TEMP_AD595(raw);
|
||||
#elif ENABLED(HEATER_6_USES_AD8495)
|
||||
return TEMP_AD8495(raw);
|
||||
#else
|
||||
break;
|
||||
#endif
|
||||
case 7:
|
||||
#if ENABLED(HEATER_7_USER_THERMISTOR)
|
||||
return user_thermistor_to_deg_c(CTI_HOTEND_7, raw);
|
||||
#elif ENABLED(HEATER_7_USES_AD595)
|
||||
return TEMP_AD595(raw);
|
||||
#elif ENABLED(HEATER_7_USES_AD8495)
|
||||
return TEMP_AD8495(raw);
|
||||
#else
|
||||
break;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
@ -1633,8 +1677,9 @@ void Temperature::init() {
|
|||
#endif
|
||||
|
||||
#if MB(RUMBA)
|
||||
#define _AD(N) (ANY(HEATER_##N##_USES_AD595, HEATER_##N##_USES_AD8495))
|
||||
#if _AD(0) || _AD(1) || _AD(2) || _AD(3) || _AD(4) || _AD(5) || _AD(BED) || _AD(CHAMBER)
|
||||
#define _AD(N) ANY(HEATER_##N##_USES_AD595, HEATER_##N##_USES_AD8495)
|
||||
#if _AD(0) || _AD(1) || _AD(2) /* RUMBA has 3 E plugs // || _AD(3) || _AD(4) || _AD(5) || _AD(6) || _AD(7) */ \
|
||||
|| _AD(BED) || _AD(CHAMBER)
|
||||
// Disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector
|
||||
MCUCR = _BV(JTD);
|
||||
MCUCR = _BV(JTD);
|
||||
|
@ -1668,6 +1713,12 @@ void Temperature::init() {
|
|||
#if HAS_HEATER_5
|
||||
OUT_WRITE(HEATER_5_PIN, HEATER_5_INVERTING);
|
||||
#endif
|
||||
#if HAS_HEATER_6
|
||||
OUT_WRITE(HEATER_6_PIN, HEATER_6_INVERTING);
|
||||
#endif
|
||||
#if HAS_HEATER_7
|
||||
OUT_WRITE(HEATER_7_PIN, HEATER_7_INVERTING);
|
||||
#endif
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
#ifdef ALFAWISE_UX0
|
||||
|
@ -1690,6 +1741,21 @@ void Temperature::init() {
|
|||
#if HAS_FAN2
|
||||
INIT_FAN_PIN(FAN2_PIN);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
INIT_FAN_PIN(FAN3_PIN);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
INIT_FAN_PIN(FAN4_PIN);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
INIT_FAN_PIN(FAN5_PIN);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
INIT_FAN_PIN(FAN6_PIN);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
INIT_FAN_PIN(FAN7_PIN);
|
||||
#endif
|
||||
#if ENABLED(USE_CONTROLLER_FAN)
|
||||
INIT_FAN_PIN(CONTROLLER_FAN_PIN);
|
||||
#endif
|
||||
|
@ -1731,6 +1797,12 @@ void Temperature::init() {
|
|||
#if HAS_TEMP_ADC_5
|
||||
HAL_ANALOG_SELECT(TEMP_5_PIN);
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
HAL_ANALOG_SELECT(TEMP_6_PIN);
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
HAL_ANALOG_SELECT(TEMP_7_PIN);
|
||||
#endif
|
||||
#if HAS_JOY_ADC_X
|
||||
HAL_ANALOG_SELECT(JOY_X_PIN);
|
||||
#endif
|
||||
|
@ -1780,6 +1852,12 @@ void Temperature::init() {
|
|||
#if HAS_AUTO_FAN_5 && !(_EFANOVERLAP(5,0) || _EFANOVERLAP(5,1) || _EFANOVERLAP(5,2) || _EFANOVERLAP(5,3) || _EFANOVERLAP(5,4))
|
||||
INIT_E_AUTO_FAN_PIN(E5_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_6 && !(_EFANOVERLAP(6,0) || _EFANOVERLAP(6,1) || _EFANOVERLAP(6,2) || _EFANOVERLAP(6,3) || _EFANOVERLAP(6,4) || _EFANOVERLAP(6,5))
|
||||
INIT_E_AUTO_FAN_PIN(E6_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#if HAS_AUTO_FAN_7 && !(_EFANOVERLAP(7,0) || _EFANOVERLAP(7,1) || _EFANOVERLAP(7,2) || _EFANOVERLAP(7,3) || _EFANOVERLAP(7,4) || _EFANOVERLAP(7,5) || _EFANOVERLAP(7,6))
|
||||
INIT_E_AUTO_FAN_PIN(E7_AUTO_FAN_PIN);
|
||||
#endif
|
||||
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E
|
||||
INIT_CHAMBER_AUTO_FAN_PIN(CHAMBER_AUTO_FAN_PIN);
|
||||
#endif
|
||||
|
@ -1841,6 +1919,22 @@ void Temperature::init() {
|
|||
#ifdef HEATER_5_MAXTEMP
|
||||
_TEMP_MAX_E(5);
|
||||
#endif
|
||||
#if HOTENDS > 6
|
||||
#ifdef HEATER_6_MINTEMP
|
||||
_TEMP_MIN_E(6);
|
||||
#endif
|
||||
#ifdef HEATER_6_MAXTEMP
|
||||
_TEMP_MAX_E(6);
|
||||
#endif
|
||||
#if HOTENDS > 7
|
||||
#ifdef HEATER_7_MINTEMP
|
||||
_TEMP_MIN_E(7);
|
||||
#endif
|
||||
#ifdef HEATER_7_MAXTEMP
|
||||
_TEMP_MAX_E(7);
|
||||
#endif
|
||||
#endif // HOTENDS > 7
|
||||
#endif // HOTENDS > 6
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
|
@ -2232,6 +2326,12 @@ void Temperature::set_current_temp_raw() {
|
|||
temp_hotend[4].update();
|
||||
#if HAS_TEMP_ADC_5
|
||||
temp_hotend[5].update();
|
||||
#if HAS_TEMP_ADC_6
|
||||
temp_hotend[6].update();
|
||||
#if HAS_TEMP_ADC_7
|
||||
temp_hotend[7].update();
|
||||
#endif // HAS_TEMP_ADC_7
|
||||
#endif // HAS_TEMP_ADC_6
|
||||
#endif // HAS_TEMP_ADC_5
|
||||
#endif // HAS_TEMP_ADC_4
|
||||
#endif // HAS_TEMP_ADC_3
|
||||
|
@ -2508,6 +2608,21 @@ void Temperature::tick() {
|
|||
#if HAS_FAN2
|
||||
_FAN_PWM(2);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
_FAN_PWM(3);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
_FAN_PWM(4);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
_FAN_PWM(5);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
_FAN_PWM(6);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
_FAN_PWM(7);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
|
@ -2535,6 +2650,21 @@ void Temperature::tick() {
|
|||
#if HAS_FAN2
|
||||
if (soft_pwm_count_fan[2] <= pwm_count_tmp) WRITE_FAN(2, LOW);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
if (soft_pwm_count_fan[3] <= pwm_count_tmp) WRITE_FAN(3, LOW);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
if (soft_pwm_count_fan[4] <= pwm_count_tmp) WRITE_FAN(4, LOW);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
if (soft_pwm_count_fan[5] <= pwm_count_tmp) WRITE_FAN(5, LOW);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
if (soft_pwm_count_fan[6] <= pwm_count_tmp) WRITE_FAN(6, LOW);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
if (soft_pwm_count_fan[7] <= pwm_count_tmp) WRITE_FAN(7, LOW);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -2599,6 +2729,21 @@ void Temperature::tick() {
|
|||
#if HAS_FAN2
|
||||
_PWM_FAN(2);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
_FAN_PWM(3);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
_FAN_PWM(4);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
_FAN_PWM(5);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
_FAN_PWM(6);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
_FAN_PWM(7);
|
||||
#endif
|
||||
}
|
||||
#if HAS_FAN0
|
||||
if (soft_pwm_count_fan[0] <= pwm_count_tmp) WRITE_FAN(0, LOW);
|
||||
|
@ -2609,6 +2754,21 @@ void Temperature::tick() {
|
|||
#if HAS_FAN2
|
||||
if (soft_pwm_count_fan[2] <= pwm_count_tmp) WRITE_FAN(2, LOW);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
if (soft_pwm_count_fan[3] <= pwm_count_tmp) WRITE_FAN(3, LOW);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
if (soft_pwm_count_fan[4] <= pwm_count_tmp) WRITE_FAN(4, LOW);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
if (soft_pwm_count_fan[5] <= pwm_count_tmp) WRITE_FAN(5, LOW);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
if (soft_pwm_count_fan[6] <= pwm_count_tmp) WRITE_FAN(6, LOW);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
if (soft_pwm_count_fan[7] <= pwm_count_tmp) WRITE_FAN(7, LOW);
|
||||
#endif
|
||||
#endif // FAN_SOFT_PWM
|
||||
|
||||
// SOFT_PWM_SCALE to frequency:
|
||||
|
@ -2730,6 +2890,16 @@ void Temperature::tick() {
|
|||
case MeasureTemp_5: ACCUMULATE_ADC(temp_hotend[5]); break;
|
||||
#endif
|
||||
|
||||
#if HAS_TEMP_ADC_6
|
||||
case PrepareTemp_6: HAL_START_ADC(TEMP_6_PIN); break;
|
||||
case MeasureTemp_6: ACCUMULATE_ADC(temp_hotend[6]); break;
|
||||
#endif
|
||||
|
||||
#if HAS_TEMP_ADC_7
|
||||
case PrepareTemp_7: HAL_START_ADC(TEMP_7_PIN); break;
|
||||
case MeasureTemp_7: ACCUMULATE_ADC(temp_hotend[7]); break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
case Prepare_FILWIDTH: HAL_START_ADC(FILWIDTH_PIN); break;
|
||||
case Measure_FILWIDTH:
|
||||
|
|
|
@ -132,6 +132,12 @@ enum ADCSensorState : char {
|
|||
#if HAS_TEMP_ADC_5
|
||||
PrepareTemp_5, MeasureTemp_5,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_6
|
||||
PrepareTemp_6, MeasureTemp_6,
|
||||
#endif
|
||||
#if HAS_TEMP_ADC_7
|
||||
PrepareTemp_7, MeasureTemp_7,
|
||||
#endif
|
||||
#if HAS_JOY_ADC_X
|
||||
PrepareJoy_X, MeasureJoy_X,
|
||||
#endif
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
#define OV(N) int16_t((N) * (OVERSAMPLENR) * (THERMISTOR_TABLE_SCALE))
|
||||
|
||||
#define ANY_THERMISTOR_IS(n) (THERMISTOR_HEATER_0 == n || THERMISTOR_HEATER_1 == n || THERMISTOR_HEATER_2 == n || THERMISTOR_HEATER_3 == n || THERMISTOR_HEATER_4 == n || THERMISTOR_HEATER_5 == n || THERMISTORBED == n || THERMISTORCHAMBER == n || THERMISTORPROBE == n)
|
||||
#define ANY_THERMISTOR_IS(n) (THERMISTOR_HEATER_0 == n || THERMISTOR_HEATER_1 == n || THERMISTOR_HEATER_2 == n || THERMISTOR_HEATER_3 == n || THERMISTOR_HEATER_4 == n || THERMISTOR_HEATER_5 == n || THERMISTOR_HEATER_6 == n || THERMISTOR_HEATER_7 == n || THERMISTORBED == n || THERMISTORCHAMBER == n || THERMISTORPROBE == n)
|
||||
|
||||
// Pt1000 and Pt100 handling
|
||||
//
|
||||
|
@ -235,6 +235,26 @@
|
|||
#define HEATER_5_TEMPTABLE_LEN 0
|
||||
#endif
|
||||
|
||||
#if THERMISTOR_HEATER_6
|
||||
#define HEATER_6_TEMPTABLE TT_NAME(THERMISTOR_HEATER_6)
|
||||
#define HEATER_6_TEMPTABLE_LEN COUNT(HEATER_6_TEMPTABLE)
|
||||
#elif defined(HEATER_6_USES_THERMISTOR)
|
||||
#error "No heater 6 thermistor table specified"
|
||||
#else
|
||||
#define HEATER_6_TEMPTABLE nullptr
|
||||
#define HEATER_6_TEMPTABLE_LEN 0
|
||||
#endif
|
||||
|
||||
#if THERMISTOR_HEATER_7
|
||||
#define HEATER_7_TEMPTABLE TT_NAME(THERMISTOR_HEATER_7)
|
||||
#define HEATER_7_TEMPTABLE_LEN COUNT(HEATER_7_TEMPTABLE)
|
||||
#elif defined(HEATER_7_USES_THERMISTOR)
|
||||
#error "No heater 7 thermistor table specified"
|
||||
#else
|
||||
#define HEATER_7_TEMPTABLE nullptr
|
||||
#define HEATER_7_TEMPTABLE_LEN 0
|
||||
#endif
|
||||
|
||||
#ifdef THERMISTORBED
|
||||
#define BED_TEMPTABLE TT_NAME(THERMISTORBED)
|
||||
#define BED_TEMPTABLE_LEN COUNT(BED_TEMPTABLE)
|
||||
|
@ -264,6 +284,7 @@ static_assert(
|
|||
HEATER_0_TEMPTABLE_LEN < 256 && HEATER_1_TEMPTABLE_LEN < 256
|
||||
&& HEATER_2_TEMPTABLE_LEN < 256 && HEATER_3_TEMPTABLE_LEN < 256
|
||||
&& HEATER_4_TEMPTABLE_LEN < 256 && HEATER_5_TEMPTABLE_LEN < 256
|
||||
&& HEATER_6_TEMPTABLE_LEN < 258 && HEATER_7_TEMPTABLE_LEN < 258
|
||||
&& BED_TEMPTABLE_LEN < 256 && CHAMBER_TEMPTABLE_LEN < 256
|
||||
&& PROBE_TEMPTABLE_LEN < 256,
|
||||
"Temperature conversion tables over 255 entries need special consideration."
|
||||
|
@ -326,6 +347,24 @@ static_assert(
|
|||
#define HEATER_5_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HEATER_6_RAW_HI_TEMP
|
||||
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_6_USES_THERMISTOR)
|
||||
#define HEATER_6_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
#define HEATER_6_RAW_LO_TEMP 0
|
||||
#else
|
||||
#define HEATER_6_RAW_HI_TEMP 0
|
||||
#define HEATER_6_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HEATER_7_RAW_HI_TEMP
|
||||
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_7_USES_THERMISTOR)
|
||||
#define HEATER_7_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
#define HEATER_7_RAW_LO_TEMP 0
|
||||
#else
|
||||
#define HEATER_7_RAW_HI_TEMP 0
|
||||
#define HEATER_7_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HEATER_BED_RAW_HI_TEMP
|
||||
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_BED_USES_THERMISTOR)
|
||||
#define HEATER_BED_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
||||
|
|
|
@ -534,6 +534,8 @@
|
|||
#include "stm32/pins_STEVAL_3DP001V1.h" // STM32F4 env:STM32F401VE_STEVAL
|
||||
#elif MB(BIGTREE_SKR_PRO_V1_1)
|
||||
#include "stm32/pins_BTT_SKR_PRO_V1_1.h" // STM32F4 env:BIGTREE_SKR_PRO
|
||||
#elif MB(BIGTREE_GTR_V1_0)
|
||||
#include "stm32/pins_BTT_GTR_V1_0.h" // STM32F4 env:BIGTREE_GTR
|
||||
#elif MB(BIGTREE_BTT002_V1_0)
|
||||
#include "stm32/pins_BTT_BTT002_V1_0.h" // STM32F4 env:BIGTREE_BTT002
|
||||
#elif MB(LERDGE_K)
|
||||
|
@ -713,6 +715,24 @@
|
|||
#ifndef E5_MS3_PIN
|
||||
#define E5_MS3_PIN -1
|
||||
#endif
|
||||
#ifndef E6_MS1_PIN
|
||||
#define E6_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef E6_MS2_PIN
|
||||
#define E6_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef E6_MS3_PIN
|
||||
#define E6_MS3_PIN -1
|
||||
#endif
|
||||
#ifndef E7_MS1_PIN
|
||||
#define E7_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef E7_MS2_PIN
|
||||
#define E7_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef E7_MS3_PIN
|
||||
#define E7_MS3_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef E0_STEP_PIN
|
||||
#define E0_STEP_PIN -1
|
||||
|
@ -768,6 +788,24 @@
|
|||
#ifndef E5_ENABLE_PIN
|
||||
#define E5_ENABLE_PIN -1
|
||||
#endif
|
||||
#ifndef E6_STEP_PIN
|
||||
#define E6_STEP_PIN -1
|
||||
#endif
|
||||
#ifndef E6_DIR_PIN
|
||||
#define E6_DIR_PIN -1
|
||||
#endif
|
||||
#ifndef E6_ENABLE_PIN
|
||||
#define E6_ENABLE_PIN -1
|
||||
#endif
|
||||
#ifndef E7_STEP_PIN
|
||||
#define E7_STEP_PIN -1
|
||||
#endif
|
||||
#ifndef E7_DIR_PIN
|
||||
#define E7_DIR_PIN -1
|
||||
#endif
|
||||
#ifndef E7_ENABLE_PIN
|
||||
#define E7_ENABLE_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef X_CS_PIN
|
||||
#define X_CS_PIN -1
|
||||
|
@ -796,6 +834,12 @@
|
|||
#ifndef E5_CS_PIN
|
||||
#define E5_CS_PIN -1
|
||||
#endif
|
||||
#ifndef E6_CS_PIN
|
||||
#define E6_CS_PIN -1
|
||||
#endif
|
||||
#ifndef E7_CS_PIN
|
||||
#define E7_CS_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN -1
|
||||
|
@ -839,6 +883,12 @@
|
|||
#ifndef HEATER_5_PIN
|
||||
#define HEATER_5_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_6_PIN
|
||||
#define HEATER_6_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_7_PIN
|
||||
#define HEATER_7_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_BED_PIN
|
||||
#define HEATER_BED_PIN -1
|
||||
#endif
|
||||
|
@ -861,6 +911,12 @@
|
|||
#ifndef TEMP_5_PIN
|
||||
#define TEMP_5_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_6_PIN
|
||||
#define TEMP_6_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_7_PIN
|
||||
#define TEMP_7_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_BED_PIN
|
||||
#define TEMP_BED_PIN -1
|
||||
#endif
|
||||
|
@ -940,6 +996,20 @@
|
|||
#define E5_AUTO_FAN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#ifndef E6_AUTO_FAN_PIN
|
||||
#ifdef ORIG_E6_AUTO_FAN_PIN
|
||||
#define E6_AUTO_FAN_PIN ORIG_E6_AUTO_FAN_PIN
|
||||
#else
|
||||
#define E6_AUTO_FAN_PIN -1
|
||||
#endif
|
||||
#endif
|
||||
#ifndef E7_AUTO_FAN_PIN
|
||||
#ifdef ORIG_E7_AUTO_FAN_PIN
|
||||
#define E7_AUTO_FAN_PIN ORIG_E7_AUTO_FAN_PIN
|
||||
#else
|
||||
#define E7_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
|
||||
|
|
|
@ -153,6 +153,24 @@
|
|||
#if !PIN_EXISTS(E5_MS3)
|
||||
#undef E5_MS3_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_MS1)
|
||||
#undef E6_MS1_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_MS2)
|
||||
#undef E6_MS2_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_MS3)
|
||||
#undef E6_MS3_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_MS1)
|
||||
#undef E7_MS1_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_MS2)
|
||||
#undef E7_MS2_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_MS3)
|
||||
#undef E7_MS3_PIN
|
||||
#endif
|
||||
|
||||
#if !PIN_EXISTS(E0_STEP)
|
||||
#undef E0_STEP_PIN
|
||||
|
@ -208,6 +226,24 @@
|
|||
#if !PIN_EXISTS(E5_ENABLE)
|
||||
#undef E5_ENABLE_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_STEP)
|
||||
#undef E6_STEP_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_DIR)
|
||||
#undef E6_DIR_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_ENABLE)
|
||||
#undef E6_ENABLE_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_STEP)
|
||||
#undef E7_STEP_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_DIR)
|
||||
#undef E7_DIR_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_ENABLE)
|
||||
#undef E7_ENABLE_PIN
|
||||
#endif
|
||||
|
||||
#if !PIN_EXISTS(X_CS)
|
||||
#undef X_CS_PIN
|
||||
|
@ -236,6 +272,12 @@
|
|||
#if !PIN_EXISTS(E5_CS)
|
||||
#undef E5_CS_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E6_CS)
|
||||
#undef E6_CS_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(E7_CS)
|
||||
#undef E7_CS_PIN
|
||||
#endif
|
||||
|
||||
#if !PIN_EXISTS(FAN)
|
||||
#undef FAN_PIN
|
||||
|
@ -247,6 +289,21 @@
|
|||
#if !PIN_EXISTS(FAN2)
|
||||
#undef FAN2_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(FAN3)
|
||||
#undef FAN3_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(FAN4)
|
||||
#undef FAN4_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(FAN5)
|
||||
#undef FAN5_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(FAN6)
|
||||
#undef FAN6_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(FAN7)
|
||||
#undef FAN7_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(CONTROLLER_FAN)
|
||||
#undef CONTROLLER_FAN_PIN
|
||||
#endif
|
||||
|
@ -279,6 +336,12 @@
|
|||
#if !PIN_EXISTS(HEATER_5)
|
||||
#undef HEATER_5_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(HEATER_6)
|
||||
#undef HEATER_6_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(HEATER_7)
|
||||
#undef HEATER_7_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(HEATER_BED)
|
||||
#undef HEATER_BED_PIN
|
||||
#endif
|
||||
|
@ -301,6 +364,12 @@
|
|||
#if !PIN_EXISTS(TEMP_5)
|
||||
#undef TEMP_5_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(TEMP_6)
|
||||
#undef TEMP_6_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(TEMP_7)
|
||||
#undef TEMP_7_PIN
|
||||
#endif
|
||||
#if !PIN_EXISTS(TEMP_BED)
|
||||
#undef TEMP_BED_PIN
|
||||
#endif
|
||||
|
@ -363,6 +432,12 @@
|
|||
#if PIN_EXISTS(TEMP_5) && TEMP_5_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(__LINE__, TEMP_5_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_6) && TEMP_6_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(__LINE__, TEMP_6_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_7) && TEMP_7_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(__LINE__, TEMP_7_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_BED) && TEMP_BED_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(__LINE__, TEMP_BED_PIN)
|
||||
#endif
|
||||
|
@ -686,6 +761,54 @@
|
|||
#if PIN_EXISTS(E5_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_STEP_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_CS)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_CS_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_DIR)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_DIR_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_MS1_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS2)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_MS2_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS3)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_MS3_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_STEP_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_CS)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_CS_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_DIR)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_DIR_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_ENABLE)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_ENABLE_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS1)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_MS1_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS2)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_MS2_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS3)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_MS3_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_STEP)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_STEP_PIN)
|
||||
#endif
|
||||
#if defined(ENET_CRS) && ENET_CRS >= 0
|
||||
REPORT_NAME_DIGITAL(__LINE__, ENET_CRS)
|
||||
#endif
|
||||
|
@ -765,6 +888,18 @@
|
|||
#if PIN_EXISTS(FAN3)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FAN3_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN4)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FAN4_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN5)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FAN5_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN6)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FAN6_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN7)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FAN7_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(FIL_RUNOUT)
|
||||
REPORT_NAME_DIGITAL(__LINE__, FIL_RUNOUT_PIN)
|
||||
#endif
|
||||
|
@ -936,6 +1071,12 @@
|
|||
#if PIN_EXISTS(ORIG_E5_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ORIG_E5_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E6_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ORIG_E6_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E7_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(__LINE__, ORIG_E7_AUTO_FAN_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(PHOTOGRAPH)
|
||||
REPORT_NAME_DIGITAL(__LINE__, PHOTOGRAPH_PIN)
|
||||
#endif
|
||||
|
@ -1455,6 +1596,18 @@
|
|||
#if PIN_EXISTS(E5_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E5_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E6_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_SERIAL_TX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_SERIAL_TX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_SERIAL_RX)
|
||||
REPORT_NAME_DIGITAL(__LINE__, E7_SERIAL_RX_PIN)
|
||||
#endif
|
||||
#if PIN_EXISTS(L6470_CHAIN_SCK)
|
||||
REPORT_NAME_DIGITAL(__LINE__, L6470_CHAIN_SCK_PIN)
|
||||
#endif
|
||||
|
|
|
@ -277,6 +277,54 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#define _E6_CS
|
||||
#define _E6_MS2
|
||||
#define _E6_MS3
|
||||
#define _E6_MS4
|
||||
|
||||
#if E_NEEDED(6)
|
||||
#if PIN_EXISTS(E6_CS) && AXIS_HAS_SPI(E6)
|
||||
#undef _E6_CS
|
||||
#define _E6_CS E6_CS_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS2)
|
||||
#undef _E6_MS2
|
||||
#define _E6_MS2 E6_MS2_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS3)
|
||||
#undef _E6_MS3
|
||||
#define _E6_MS3 E6_MS3_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E6_MS4)
|
||||
#undef _E6_MS4
|
||||
#define _E6_MS4 E6_MS4_PIN,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define _E7_CS
|
||||
#define _E7_MS3
|
||||
#define _E7_MS4
|
||||
#define _E7_MS5
|
||||
|
||||
#if E_NEEDED(7)
|
||||
#if PIN_EXISTS(E7_CS) && AXIS_HAS_SPI(E7)
|
||||
#undef _E7_CS
|
||||
#define _E7_CS E7_CS_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS3)
|
||||
#undef _E7_MS3
|
||||
#define _E7_MS3 E7_MS3_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS4)
|
||||
#undef _E7_MS4
|
||||
#define _E7_MS4 E7_MS4_PIN,
|
||||
#endif
|
||||
#if PIN_EXISTS(E7_MS5)
|
||||
#undef _E7_MS5
|
||||
#define _E7_MS5 E7_MS5_PIN,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// E Steppers
|
||||
//
|
||||
|
@ -287,6 +335,8 @@
|
|||
#define _E3_PINS
|
||||
#define _E4_PINS
|
||||
#define _E5_PINS
|
||||
#define _E6_PINS
|
||||
#define _E7_PINS
|
||||
|
||||
#if EXTRUDERS
|
||||
#undef _E0_PINS
|
||||
|
@ -303,7 +353,9 @@
|
|||
#define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN, _E2_CS _E2_MS1 _E2_MS2 _E2_MS3
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif EXTRUDERS > 1 || ENABLED(MIXING_EXTRUDER)
|
||||
|
||||
#undef _E1_PINS
|
||||
#define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, _E1_CS _E1_MS1 _E1_MS2 _E1_MS3
|
||||
#if EXTRUDERS > 2 || (ENABLED(MIXING_EXTRUDER) && MIXING_STEPPERS > 2)
|
||||
|
@ -318,10 +370,19 @@
|
|||
#if EXTRUDERS > 5 || (ENABLED(MIXING_EXTRUDER) && MIXING_STEPPERS > 5)
|
||||
#undef _E5_PINS
|
||||
#define _E5_PINS E5_STEP_PIN, E5_DIR_PIN, E5_ENABLE_PIN, _E5_CS _E5_MS1 _E5_MS2 _E5_MS3
|
||||
#if EXTRUDERS > 6 || (ENABLED(MIXING_EXTRUDER) && MIXING_STEPPERS > 6)
|
||||
#undef _E6_PINS
|
||||
#define _E6_PINS E6_STEP_PIN, E6_DIR_PIN, E6_ENABLE_PIN, _E6_CS _E6_MS1 _E6_MS2 _E6_MS3
|
||||
#if EXTRUDERS > 7 || (ENABLED(MIXING_EXTRUDER) && MIXING_STEPPERS > 7)
|
||||
#undef _E7_PINS
|
||||
#define _E7_PINS E7_STEP_PIN, E7_DIR_PIN, E7_ENABLE_PIN, _E7_CS _E7_MS1 _E7_MS2 _E7_MS3
|
||||
#endif // EXTRUDERS > 7 || MIXING_EXTRUDER > 7
|
||||
#endif // EXTRUDERS > 6 || MIXING_EXTRUDER > 6
|
||||
#endif // EXTRUDERS > 5 || MIXING_EXTRUDER > 5
|
||||
#endif // EXTRUDERS > 4 || MIXING_EXTRUDER > 4
|
||||
#endif // EXTRUDERS > 3 || MIXING_EXTRUDER > 3
|
||||
#endif // EXTRUDERS > 2 || MIXING_EXTRUDER > 2
|
||||
|
||||
#endif // EXTRUDERS > 1 || MIXING_EXTRUDER
|
||||
|
||||
//
|
||||
|
@ -334,6 +395,8 @@
|
|||
#define _H3_PINS
|
||||
#define _H4_PINS
|
||||
#define _H5_PINS
|
||||
#define _H6_PINS
|
||||
#define _H7_PINS
|
||||
|
||||
#if HOTENDS
|
||||
#undef _H0_PINS
|
||||
|
@ -353,6 +416,14 @@
|
|||
#if HOTENDS > 5
|
||||
#undef _H5_PINS
|
||||
#define _H5_PINS HEATER_5_PIN, E5_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_5_PIN),
|
||||
#if HOTENDS > 6
|
||||
#undef _H6_PINS
|
||||
#define _H6_PINS HEATER_6_PIN, E6_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_6_PIN),
|
||||
#if HOTENDS > 7
|
||||
#undef _H7_PINS
|
||||
#define _H7_PINS HEATER_7_PIN, E7_AUTO_FAN_PIN, analogInputToDigitalPin(TEMP_7_PIN),
|
||||
#endif // HOTENDS > 7
|
||||
#endif // HOTENDS > 6
|
||||
#endif // HOTENDS > 5
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
|
@ -539,6 +610,31 @@
|
|||
#else
|
||||
#define _FAN2
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN3)
|
||||
#define _FAN3 FAN3_PIN,
|
||||
#else
|
||||
#define _FAN3
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN4)
|
||||
#define _FAN4 FAN4_PIN,
|
||||
#else
|
||||
#define _FAN4
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN5)
|
||||
#define _FAN5 FAN5_PIN,
|
||||
#else
|
||||
#define _FAN5
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN6)
|
||||
#define _FAN6 FAN6_PIN,
|
||||
#else
|
||||
#define _FAN6
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN7)
|
||||
#define _FAN7 FAN7_PIN,
|
||||
#else
|
||||
#define _FAN7
|
||||
#endif
|
||||
#if PIN_EXISTS(CONTROLLER_FAN)
|
||||
#define _FANC CONTROLLER_FAN_PIN,
|
||||
#else
|
||||
|
@ -550,9 +646,9 @@
|
|||
#endif
|
||||
|
||||
#define SENSITIVE_PINS { \
|
||||
_X_PINS _Y_PINS _Z_PINS _X2_PINS _Y2_PINS _Z2_PINS _Z3_PINS _Z4_PINS \
|
||||
_Z_PROBE _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 \
|
||||
_PS_ON _HEATER_BED _FAN0 _FAN1 _FAN2 _FANC \
|
||||
_X_PINS _Y_PINS _Z_PINS _X2_PINS _Y2_PINS _Z2_PINS _Z3_PINS _Z4_PINS _Z_PROBE \
|
||||
_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS _E5_PINS _E6_PINS _E7_PINS _BED_PINS \
|
||||
_H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS _H5_PINS _H6_PINS _H7_PINS \
|
||||
_PS_ON _HEATER_BED _FAN0 _FAN1 _FAN2 _FAN3 _FAN4 _FAN5 _FAN6 _FAN7 _FANC \
|
||||
HAL_SENSITIVE_PINS \
|
||||
}
|
||||
|
|
391
Marlin/src/pins/stm32/pins_BTT_GTR_V1_0.h
Normal file
391
Marlin/src/pins/stm32/pins_BTT_GTR_V1_0.h
Normal file
|
@ -0,0 +1,391 @@
|
|||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef TARGET_STM32F4
|
||||
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
|
||||
#elif HOTENDS > 8 || E_STEPPERS > 8
|
||||
#error "BIGTREE GTR V1.0 supports up to 8 hotends / E-steppers."
|
||||
#elif HOTENDS > MAX_EXTRUDERS || E_STEPPERS > MAX_EXTRUDERS
|
||||
#error "Marlin extruder/hotends limit! Increase MAX_EXTRUDERS to continue."
|
||||
#endif
|
||||
|
||||
#define BOARD_INFO_NAME "BIGTREE GTR 1.0"
|
||||
|
||||
// Use one of these or SDCard-based Emulation will be used
|
||||
//#define I2C_EEPROM
|
||||
//#define SRAM_EEPROM_EMULATION // Use BackSRAM-based EEPROM emulation
|
||||
//#define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation
|
||||
|
||||
#define TP // Enable to define servo and probe pins
|
||||
|
||||
//
|
||||
// Servos
|
||||
//
|
||||
#if ENABLED(TP)
|
||||
#define SERVO0_PIN PB11
|
||||
#endif
|
||||
|
||||
#define PS_ON_PIN PH6
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_MIN_PIN PF2
|
||||
#define X_MAX_PIN PG14
|
||||
#define Y_MIN_PIN PC13
|
||||
#define Y_MAX_PIN PG9
|
||||
#define Z_MIN_PIN PE0
|
||||
#define Z_MAX_PIN PD3
|
||||
|
||||
//
|
||||
// Pins on the extender
|
||||
//
|
||||
//#define X_MIN_PIN PI4
|
||||
//#define X2_MIN_PIN PF12
|
||||
//#define Y_MIN_PIN PF4
|
||||
//#define Y2_MIN_PIN PI7
|
||||
//#define Z_MIN_PIN PF6
|
||||
|
||||
#if ENABLED(TP) && !defined(Z_MIN_PROBE_PIN)
|
||||
#define Z_MIN_PROBE_PIN PH11 // Z Probe must be PH11
|
||||
#endif
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN PC15
|
||||
#define X_DIR_PIN PF0
|
||||
#define X_ENABLE_PIN PF1
|
||||
#ifndef X_CS_PIN
|
||||
#define X_CS_PIN PC14
|
||||
#endif
|
||||
|
||||
#define Y_STEP_PIN PE3
|
||||
#define Y_DIR_PIN PE2
|
||||
#define Y_ENABLE_PIN PE4
|
||||
#ifndef Y_CS_PIN
|
||||
#define Y_CS_PIN PE1
|
||||
#endif
|
||||
|
||||
#define Z_STEP_PIN PB8
|
||||
#define Z_DIR_PIN PB7 // PB7
|
||||
#define Z_ENABLE_PIN PB9
|
||||
#ifndef Z_CS_PIN
|
||||
#define Z_CS_PIN PB5
|
||||
#endif
|
||||
|
||||
#define E0_STEP_PIN PG12
|
||||
#define E0_DIR_PIN PG11
|
||||
#define E0_ENABLE_PIN PG13
|
||||
#ifndef E0_CS_PIN
|
||||
#define E0_CS_PIN PG10
|
||||
#endif
|
||||
|
||||
#define E1_STEP_PIN PD6
|
||||
#define E1_DIR_PIN PD5
|
||||
#define E1_ENABLE_PIN PD7
|
||||
#ifndef E1_CS_PIN
|
||||
#define E1_CS_PIN PD4
|
||||
#endif
|
||||
|
||||
#define E2_STEP_PIN PD1
|
||||
#define E2_DIR_PIN PD0
|
||||
#define E2_ENABLE_PIN PD2
|
||||
#ifndef E2_CS_PIN
|
||||
#define E2_CS_PIN PC12
|
||||
#endif
|
||||
|
||||
#define E3_STEP_PIN PF3
|
||||
#define E3_DIR_PIN PG3
|
||||
#define E3_ENABLE_PIN PF8
|
||||
#ifndef E3_CS_PIN
|
||||
#define E3_CS_PIN PG4
|
||||
#endif
|
||||
|
||||
#define E4_STEP_PIN PD14
|
||||
#define E4_DIR_PIN PD11
|
||||
#define E4_ENABLE_PIN PG2
|
||||
#ifndef E4_CS_PIN
|
||||
#define E4_CS_PIN PE15
|
||||
#endif
|
||||
|
||||
#define E5_STEP_PIN PE12
|
||||
#define E5_DIR_PIN PE10
|
||||
#define E5_ENABLE_PIN PF14
|
||||
#ifndef E5_CS_PIN
|
||||
#define E5_CS_PIN PE7
|
||||
#endif
|
||||
|
||||
#define E6_STEP_PIN PG0
|
||||
#define E6_DIR_PIN PG1
|
||||
#define E6_ENABLE_PIN PE8
|
||||
#ifndef E6_CS_PIN
|
||||
#define E6_CS_PIN PF15
|
||||
#endif
|
||||
|
||||
#define E7_STEP_PIN PH12
|
||||
#define E7_DIR_PIN PH15
|
||||
#define E7_ENABLE_PIN PI0
|
||||
#ifndef E7_CS_PIN
|
||||
#define E7_CS_PIN PH14
|
||||
#endif
|
||||
|
||||
//
|
||||
// Software SPI pins for TMC2130 stepper drivers
|
||||
//
|
||||
#if ENABLED(TMC_USE_SW_SPI)
|
||||
#ifndef TMC_SW_MOSI
|
||||
#define TMC_SW_MOSI PG15
|
||||
#endif
|
||||
#ifndef TMC_SW_MISO
|
||||
#define TMC_SW_MISO PB6
|
||||
#endif
|
||||
#ifndef TMC_SW_SCK
|
||||
#define TMC_SW_SCK PB3
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_TMC220x
|
||||
/**
|
||||
* TMC2208/TMC2209 stepper drivers
|
||||
*
|
||||
* Hardware serial communication ports.
|
||||
* If undefined software serial is used according to the pins below
|
||||
*/
|
||||
//#define X_HARDWARE_SERIAL Serial
|
||||
//#define X2_HARDWARE_SERIAL Serial1
|
||||
//#define Y_HARDWARE_SERIAL Serial1
|
||||
//#define Y2_HARDWARE_SERIAL Serial1
|
||||
//#define Z_HARDWARE_SERIAL Serial1
|
||||
//#define Z2_HARDWARE_SERIAL Serial1
|
||||
//#define E0_HARDWARE_SERIAL Serial1
|
||||
//#define E1_HARDWARE_SERIAL Serial1
|
||||
//#define E2_HARDWARE_SERIAL Serial1
|
||||
//#define E3_HARDWARE_SERIAL Serial1
|
||||
//#define E4_HARDWARE_SERIAL Serial1
|
||||
//#define E5_HARDWARE_SERIAL Serial1
|
||||
//#define E6_HARDWARE_SERIAL Serial1
|
||||
//#define E7_HARDWARE_SERIAL Serial1
|
||||
|
||||
//
|
||||
// Software serial
|
||||
//
|
||||
#define X_SERIAL_TX_PIN PC14
|
||||
#define X_SERIAL_RX_PIN PC14
|
||||
|
||||
#define Y_SERIAL_TX_PIN PE1
|
||||
#define Y_SERIAL_RX_PIN PE1
|
||||
|
||||
#define Z_SERIAL_TX_PIN PB5
|
||||
#define Z_SERIAL_RX_PIN PB5
|
||||
|
||||
#define E0_SERIAL_TX_PIN PG10
|
||||
#define E0_SERIAL_RX_PIN PG10
|
||||
|
||||
#define E1_SERIAL_TX_PIN PD4
|
||||
#define E1_SERIAL_RX_PIN PD4
|
||||
|
||||
#define E2_SERIAL_TX_PIN PC12
|
||||
#define E2_SERIAL_RX_PIN PC12
|
||||
|
||||
#define E3_SERIAL_TX_PIN PG4
|
||||
#define E3_SERIAL_RX_PIN PG4
|
||||
|
||||
#define E4_SERIAL_TX_PIN PE15
|
||||
#define E4_SERIAL_RX_PIN PE15
|
||||
|
||||
#define E5_SERIAL_TX_PIN PE7
|
||||
#define E5_SERIAL_RX_PIN PE7
|
||||
|
||||
#define E6_SERIAL_TX_PIN PF15
|
||||
#define E6_SERIAL_RX_PIN PF15
|
||||
|
||||
#define E7_SERIAL_TX_PIN PH14
|
||||
#define E7_SERIAL_RX_PIN PH14
|
||||
|
||||
// Reduce baud rate to improve software serial reliability
|
||||
#define TMC_BAUD_RATE 19200
|
||||
#endif
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN PC1 // T1 <-> E0
|
||||
#define TEMP_1_PIN PC2 // T2 <-> E1
|
||||
#define TEMP_2_PIN PC3 // T3 <-> E2
|
||||
|
||||
#define TEMP_3_PIN PA3 // T4 <-> E3
|
||||
#define TEMP_4_PIN PF9 // T5 <-> E4
|
||||
#define TEMP_5_PIN PF10 // T6 <-> E5
|
||||
//#define TEMP_6_PIN PF7 // T7 <-> E6
|
||||
//#define TEMP_7_PIN PF5 // T8 <-> E7
|
||||
|
||||
#define TEMP_BED_PIN PC0 // T0 <-> Bed
|
||||
|
||||
// SPI for Max6675 or Max31855 Thermocouple
|
||||
// Uses a separate SPI bus
|
||||
// If you have a two-way thermocouple, you can customize two THERMO_CSx_PIN pins (x:1~2)
|
||||
|
||||
#define THERMO_SCK_PIN PI1 // SCK
|
||||
#define THERMO_DO_PIN PI2 // MISO
|
||||
#define THERMO_CS1_PIN PH9 // CS1
|
||||
#define THERMO_CS2_PIN PH2 // CS2
|
||||
|
||||
#define MAX6675_SS_PIN THERMO_CS1_PIN
|
||||
#define MAX6675_SS2_PIN THERMO_CS2_PIN
|
||||
#define MAX6675_SCK_PIN THERMO_SCK_PIN
|
||||
#define MAX6675_DO_PIN THERMO_DO_PIN
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN PB1 // Heater0
|
||||
#define HEATER_1_PIN PA1 // Heater1
|
||||
#define HEATER_2_PIN PB0 // Heater2
|
||||
|
||||
#define HEATER_3_PIN PD15 // Heater3
|
||||
#define HEATER_4_PIN PD13 // Heater4
|
||||
#define HEATER_5_PIN PD12 // Heater5
|
||||
//#define HEATER_6_PIN PE13 // Heater6
|
||||
//#define HEATER_7_PIN PI6 // Heater7
|
||||
|
||||
#define HEATER_BED_PIN PA2 // Hotbed
|
||||
|
||||
#define FAN_PIN PE5 // Fan0
|
||||
#define FAN1_PIN PE6 // Fan1
|
||||
#define FAN2_PIN PC8 // Fan2
|
||||
|
||||
#define FAN3_PIN PI5 // Fan3
|
||||
#define FAN4_PIN PE9 // Fan4
|
||||
#define FAN5_PIN PE11 // Fan5
|
||||
//#define FAN6_PIN PC9 // Fan6
|
||||
//#define FAN7_PIN PE14 // Fan7
|
||||
|
||||
//
|
||||
// By default the onboard SD (SPI1) is enabled
|
||||
//
|
||||
#define CUSTOM_SPI_PINS
|
||||
#if DISABLED(CUSTOM_SPI_PINS)
|
||||
#define SDSS PB12
|
||||
#endif
|
||||
|
||||
// HAL SPI1 pins group
|
||||
#if ENABLED(CUSTOM_SPI_PINS)
|
||||
#define SDSS PA4
|
||||
#define SD_DETECT_PIN PC4
|
||||
#define LCD_SDSS PA4
|
||||
|
||||
#define SCK_PIN PA5
|
||||
#define MISO_PIN PA6
|
||||
#define MOSI_PIN PA7
|
||||
#define SS_PIN PA4 // Chip select for SD card used by Marlin
|
||||
#endif
|
||||
|
||||
/**
|
||||
* _____ _____
|
||||
* NC | · · | GND 5V | · · | GND
|
||||
* RESET | · · | PB10(SD_DETECT) (LCD_D7) PG5 | · · | PG6 (LCD_D6)
|
||||
* (MOSI)PB15 | · · | PH10(BTN_EN2) (LCD_D5) PG7 | · · | PG8 (LCD_D4)
|
||||
* (SD_SS)PB12 | · · | PD10(BTN_EN1) (LCD_RS) PA8 | · · | PC10 (LCD_EN)
|
||||
* (SCK)PB13 | · · | PB14(MISO) (BTN_ENC) PA15 | · · | PC11 (BEEPER)
|
||||
*  ̄ ̄  ̄ ̄
|
||||
* EXP2 EXP1
|
||||
*/
|
||||
|
||||
//
|
||||
// LCDs and Controllers
|
||||
//
|
||||
#if HAS_SPI_LCD
|
||||
#define BEEPER_PIN PC11
|
||||
#define BTN_ENC PA15
|
||||
|
||||
#if ENABLED(CR10_STOCKDISPLAY)
|
||||
|
||||
#define LCD_PINS_RS PA8
|
||||
|
||||
#define BTN_EN1 PD10
|
||||
#define BTN_EN2 PH10
|
||||
|
||||
#define LCD_PINS_ENABLE PG7
|
||||
#define LCD_PINS_D4 PG8
|
||||
|
||||
//#undef ST7920_DELAY_1
|
||||
//#undef ST7920_DELAY_2
|
||||
//#undef ST7920_DELAY_3
|
||||
|
||||
#else
|
||||
|
||||
#define LCD_PINS_RS PA8
|
||||
|
||||
#define BTN_EN1 PD10
|
||||
#define BTN_EN2 PH10
|
||||
|
||||
#if DISABLED(CUSTOM_SPI_PINS)
|
||||
#define SD_DETECT_PIN PB10
|
||||
#define LCD_SDSS PB12
|
||||
#endif
|
||||
|
||||
#define LCD_PINS_ENABLE PC10
|
||||
#define LCD_PINS_D4 PG8
|
||||
|
||||
#if ENABLED(FYSETC_MINI_12864)
|
||||
#define DOGLCD_CS PC10
|
||||
#define DOGLCD_A0 PA8
|
||||
//#define LCD_BACKLIGHT_PIN -1
|
||||
#define LCD_RESET_PIN PG8 // Must be high or open for LCD to operate normally.
|
||||
#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0)
|
||||
#ifndef RGB_LED_R_PIN
|
||||
#define RGB_LED_R_PIN PG7
|
||||
#endif
|
||||
#ifndef RGB_LED_G_PIN
|
||||
#define RGB_LED_G_PIN PG6
|
||||
#endif
|
||||
#ifndef RGB_LED_B_PIN
|
||||
#define RGB_LED_B_PIN PG5
|
||||
#endif
|
||||
#elif ENABLED(FYSETC_MINI_12864_2_1)
|
||||
#define NEOPIXEL_PIN PF13
|
||||
#endif
|
||||
#endif // !FYSETC_MINI_12864
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
#define LCD_PINS_D5 PG7
|
||||
#define LCD_PINS_D6 PG6
|
||||
#define LCD_PINS_D7 PG5
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
// Alter timing for graphical display
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#define BOARD_ST7920_DELAY_1 DELAY_NS(96)
|
||||
#define BOARD_ST7920_DELAY_2 DELAY_NS(48)
|
||||
#define BOARD_ST7920_DELAY_3 DELAY_NS(600)
|
||||
#endif
|
||||
|
||||
//#define DOGLCD_CS PB12
|
||||
//#define DOGLCD_A0 PA8
|
||||
//#define LCD_PINS_DC PB14
|
||||
//#define DOGLCD_MOSI PB15
|
||||
|
||||
#endif // HAS_SPI_LCD
|
|
@ -91,8 +91,13 @@ const PinMap PinMap_I2C_SDA[] = {
|
|||
{PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
{PC_9, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||
#if STM32F4X_PIN_NUM >= 144 // 144 pins mcu, 114 gpio
|
||||
#if STM32F4X_PIN_NUM >= 176
|
||||
{PH_5, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
{PH_8, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||
#else
|
||||
{PF_0, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
#endif
|
||||
#endif
|
||||
{NC, NP, 0}
|
||||
};
|
||||
#endif
|
||||
|
@ -104,8 +109,14 @@ const PinMap PinMap_I2C_SCL[] = {
|
|||
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||
{PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
#if STM32F4X_PIN_NUM >= 144 // 144 pins mcu, 114 gpio
|
||||
#if STM32F4X_PIN_NUM >= 176
|
||||
//{PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
{PH_4, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
{PH_7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||
#else
|
||||
{PF_1, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||
#endif
|
||||
#endif
|
||||
{NC, NP, 0}
|
||||
};
|
||||
#endif
|
||||
|
@ -141,8 +152,10 @@ const PinMap PinMap_PWM[] = {
|
|||
*/
|
||||
//{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||
//{PA_0, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1
|
||||
//{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
|
||||
//{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
|
||||
{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 is bltouch analog?
|
||||
{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 is bltouch analog?
|
||||
//{PA_1, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2
|
||||
//{PA_2, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3
|
||||
//{PA_2, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1
|
||||
//{PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
|
||||
//{PA_3, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4
|
||||
|
@ -173,7 +186,7 @@ const PinMap PinMap_PWM[] = {
|
|||
//{PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||
//{PB_9, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1
|
||||
//{PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
|
||||
//{PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
|
||||
{PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
|
||||
//{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||
//{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||
//{PB_14, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N
|
||||
|
@ -186,21 +199,28 @@ const PinMap PinMap_PWM[] = {
|
|||
//{PC_7, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2
|
||||
//{PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
|
||||
//{PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||
//{PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2
|
||||
//{PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||
{PD_13, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2
|
||||
{PD_15, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||
//{PE_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||
//{PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||
{PE_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||
//{PE_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||
//{PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
|
||||
{PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
|
||||
//{PE_12, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||
//{PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
|
||||
//{PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
|
||||
{PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
|
||||
{PE_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
|
||||
#if STM32F4X_PIN_NUM >= 144 //144 pins mcu, 114 gpio
|
||||
//{PF_6, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1
|
||||
//{PF_7, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1
|
||||
//{PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1
|
||||
//{PF_9, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1
|
||||
#endif
|
||||
#if STM32F4X_PIN_NUM >= 176 //176 pins mcu, 140 gpio
|
||||
{PH_10, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1
|
||||
{PH_6, TIM12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM12, 1, 0)}, // TIM12_CH1
|
||||
//{PH_11, TIM5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2
|
||||
{PI_5, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1
|
||||
{PI_6, TIM8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2
|
||||
#endif
|
||||
{NC, NP, 0}
|
||||
};
|
||||
#endif
|
||||
|
@ -275,7 +295,8 @@ const PinMap PinMap_UART_CTS[] = {
|
|||
|
||||
#ifdef HAL_SPI_MODULE_ENABLED
|
||||
const PinMap PinMap_SPI_MOSI[] = {
|
||||
{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
|
||||
//{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
|
||||
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
|
||||
{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
|
||||
{PC_12, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
|
||||
{NC, NP, 0}
|
||||
|
|
|
@ -586,7 +586,7 @@ lib_ignore = Adafruit NeoPixel
|
|||
|
||||
#
|
||||
# STM32F401VE
|
||||
# 'STEVAL-3DP001)' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html
|
||||
# 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html
|
||||
#
|
||||
[env:STM32F401VE_STEVAL]
|
||||
platform = ststm32
|
||||
|
@ -677,6 +677,37 @@ src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32>
|
|||
debug_tool = stlink
|
||||
debug_init_break =
|
||||
|
||||
#
|
||||
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4)
|
||||
#
|
||||
[env:BIGTREE_GTR_V1_0]
|
||||
platform = ststm32@>=5.7.0
|
||||
framework = arduino
|
||||
platform_packages = framework-arduinoststm32@>=3.10700.191028
|
||||
board = BigTree_SKR_Pro
|
||||
extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
|
||||
build_flags = ${common.build_flags}
|
||||
-DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407IG\"
|
||||
-DTARGET_STM32F4 -DSTM32F407IX -DVECT_TAB_OFFSET=0x8000
|
||||
-DHAVE_HWSERIAL3
|
||||
-DHAVE_HWSERIAL6
|
||||
-DPIN_SERIAL3_RX=PD_9
|
||||
-DPIN_SERIAL3_TX=PD_8
|
||||
-DPIN_SERIAL6_RX=PC_7
|
||||
-DPIN_SERIAL6_TX=PC_6
|
||||
|
||||
-IMarlin/src/HAL/HAL_STM32
|
||||
lib_deps =
|
||||
U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip
|
||||
LiquidCrystal
|
||||
TMCStepper@>=0.5.2,<1.0.0
|
||||
Adafruit NeoPixel
|
||||
LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip
|
||||
Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/dev.zip
|
||||
lib_ignore = SoftwareSerial, SoftwareSerialM
|
||||
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32>
|
||||
monitor_speed = 250000
|
||||
|
||||
#
|
||||
# BigTreeTech BTT002 (STM32F407VET6 ARM Cortex-M4)
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue