|
|
|
@ -435,18 +435,100 @@
|
|
|
|
|
/**
|
|
|
|
|
* Shorthand for pin tests, used wherever needed
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Steppers
|
|
|
|
|
#define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
|
|
|
|
|
#define HAS_X_DIR (PIN_EXISTS(X_DIR))
|
|
|
|
|
#define HAS_X_STEP (PIN_EXISTS(X_STEP))
|
|
|
|
|
#define HAS_X_MICROSTEPS (PIN_EXISTS(X_MS1))
|
|
|
|
|
|
|
|
|
|
#define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
|
|
|
|
|
#define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
|
|
|
|
|
#define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
|
|
|
|
|
#define HAS_Y_MICROSTEPS (PIN_EXISTS(Y_MS1))
|
|
|
|
|
|
|
|
|
|
#define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
|
|
|
|
|
#define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
|
|
|
|
|
#define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
|
|
|
|
|
#define HAS_Z_MICROSTEPS (PIN_EXISTS(Z_MS1))
|
|
|
|
|
|
|
|
|
|
#define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
|
|
|
|
|
#define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
|
|
|
|
|
#define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
|
|
|
|
|
|
|
|
|
|
#define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
|
|
|
|
|
#define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
|
|
|
|
|
#define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
|
|
|
|
|
|
|
|
|
|
#define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
|
|
|
|
|
#define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
|
|
|
|
|
#define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
|
|
|
|
|
|
|
|
|
|
// Extruder steppers and solenoids
|
|
|
|
|
#define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
|
|
|
|
|
#define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
|
|
|
|
|
#define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
|
|
|
|
|
#define HAS_E0_MICROSTEPS (PIN_EXISTS(E0_MS1))
|
|
|
|
|
#define HAS_SOLENOID_0 (PIN_EXISTS(SOL0))
|
|
|
|
|
|
|
|
|
|
#define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
|
|
|
|
|
#define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
|
|
|
|
|
#define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
|
|
|
|
|
#define HAS_E1_MICROSTEPS (PIN_EXISTS(E1_MS1))
|
|
|
|
|
#define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
|
|
|
|
|
|
|
|
|
|
#define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
|
|
|
|
|
#define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
|
|
|
|
|
#define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
|
|
|
|
|
#define HAS_E2_MICROSTEPS (PIN_EXISTS(E2_MS1))
|
|
|
|
|
#define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
|
|
|
|
|
|
|
|
|
|
#define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
|
|
|
|
|
#define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
|
|
|
|
|
#define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
|
|
|
|
|
#define HAS_E3_MICROSTEPS (PIN_EXISTS(E3_MS1))
|
|
|
|
|
#define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
|
|
|
|
|
|
|
|
|
|
#define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
|
|
|
|
|
#define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
|
|
|
|
|
#define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
|
|
|
|
|
#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
|
|
|
|
|
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
|
|
|
|
|
|
|
|
|
|
// Endstops and bed probe
|
|
|
|
|
#define HAS_X_MIN (PIN_EXISTS(X_MIN) && !IS_Z2_OR_PROBE(X_MIN_PIN))
|
|
|
|
|
#define HAS_X_MAX (PIN_EXISTS(X_MAX) && !IS_Z2_OR_PROBE(X_MAX_PIN))
|
|
|
|
|
#define HAS_Y_MIN (PIN_EXISTS(Y_MIN) && !IS_Z2_OR_PROBE(Y_MIN_PIN))
|
|
|
|
|
#define HAS_Y_MAX (PIN_EXISTS(Y_MAX) && !IS_Z2_OR_PROBE(Y_MAX_PIN))
|
|
|
|
|
#define HAS_Z_MIN (PIN_EXISTS(Z_MIN) && !IS_Z2_OR_PROBE(Z_MIN_PIN))
|
|
|
|
|
#define HAS_Z_MAX (PIN_EXISTS(Z_MAX) && !IS_Z2_OR_PROBE(Z_MAX_PIN))
|
|
|
|
|
#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
|
|
|
|
|
#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
|
|
|
|
|
#define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
|
|
|
|
|
|
|
|
|
|
// Thermistors
|
|
|
|
|
#define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
|
|
|
|
|
#define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
|
|
|
|
|
#define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
|
|
|
|
|
#define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
|
|
|
|
|
#define HAS_TEMP_4 (PIN_EXISTS(TEMP_4) && TEMP_SENSOR_4 != 0 && TEMP_SENSOR_4 > -2)
|
|
|
|
|
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
|
|
|
|
|
#define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
|
|
|
|
|
|
|
|
|
|
// Heaters
|
|
|
|
|
#define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
|
|
|
|
|
#define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
|
|
|
|
|
#define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
|
|
|
|
|
#define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
|
|
|
|
|
#define HAS_HEATER_4 (PIN_EXISTS(HEATER_4))
|
|
|
|
|
#define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
|
|
|
|
|
|
|
|
|
|
// Thermal protection
|
|
|
|
|
#define HAS_THERMALLY_PROTECTED_BED (ENABLED(THERMAL_PROTECTION_BED) && HAS_TEMP_BED && HAS_HEATER_BED)
|
|
|
|
|
#define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0)
|
|
|
|
|
#define WATCH_THE_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0)
|
|
|
|
|
|
|
|
|
|
// Auto fans
|
|
|
|
|
#define HAS_AUTO_FAN_0 (PIN_EXISTS(E0_AUTO_FAN))
|
|
|
|
|
#define HAS_AUTO_FAN_1 (HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN))
|
|
|
|
|
#define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN))
|
|
|
|
@ -463,91 +545,38 @@
|
|
|
|
|
#define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
|
|
|
|
#define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
|
|
|
|
#define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
|
|
|
|
|
|
|
|
|
|
// Other fans
|
|
|
|
|
#define HAS_FAN0 (PIN_EXISTS(FAN))
|
|
|
|
|
#define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_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)
|
|
|
|
|
#define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_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)
|
|
|
|
|
#define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN))
|
|
|
|
|
|
|
|
|
|
// Servos
|
|
|
|
|
#define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0)
|
|
|
|
|
#define HAS_SERVO_0 (PIN_EXISTS(SERVO0))
|
|
|
|
|
#define HAS_SERVO_1 (PIN_EXISTS(SERVO1))
|
|
|
|
|
#define HAS_SERVO_2 (PIN_EXISTS(SERVO2))
|
|
|
|
|
#define HAS_SERVO_3 (PIN_EXISTS(SERVO3))
|
|
|
|
|
|
|
|
|
|
// Sensors
|
|
|
|
|
#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
|
|
|
|
|
#define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT))
|
|
|
|
|
|
|
|
|
|
// User Interface
|
|
|
|
|
#define HAS_HOME (PIN_EXISTS(HOME))
|
|
|
|
|
#define HAS_KILL (PIN_EXISTS(KILL))
|
|
|
|
|
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
|
|
|
|
|
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
|
|
|
|
|
#define HAS_X_MIN (PIN_EXISTS(X_MIN) && !IS_Z2_OR_PROBE(X_MIN_PIN))
|
|
|
|
|
#define HAS_X_MAX (PIN_EXISTS(X_MAX) && !IS_Z2_OR_PROBE(X_MAX_PIN))
|
|
|
|
|
#define HAS_Y_MIN (PIN_EXISTS(Y_MIN) && !IS_Z2_OR_PROBE(Y_MIN_PIN))
|
|
|
|
|
#define HAS_Y_MAX (PIN_EXISTS(Y_MAX) && !IS_Z2_OR_PROBE(Y_MAX_PIN))
|
|
|
|
|
#define HAS_Z_MIN (PIN_EXISTS(Z_MIN) && !IS_Z2_OR_PROBE(Z_MIN_PIN))
|
|
|
|
|
#define HAS_Z_MAX (PIN_EXISTS(Z_MAX) && !IS_Z2_OR_PROBE(Z_MAX_PIN))
|
|
|
|
|
#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
|
|
|
|
|
#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
|
|
|
|
|
#define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
|
|
|
|
|
#define HAS_SOLENOID_0 (PIN_EXISTS(SOL0))
|
|
|
|
|
#define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
|
|
|
|
|
#define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
|
|
|
|
|
#define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
|
|
|
|
|
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
|
|
|
|
|
#define HAS_MICROSTEPS_X (PIN_EXISTS(X_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_Y (PIN_EXISTS(Y_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_Z (PIN_EXISTS(Z_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_E3 (PIN_EXISTS(E3_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS_E4 (PIN_EXISTS(E4_MS1))
|
|
|
|
|
#define HAS_MICROSTEPS (HAS_MICROSTEPS_X || HAS_MICROSTEPS_Y || HAS_MICROSTEPS_Z || HAS_MICROSTEPS_E0 || HAS_MICROSTEPS_E1 || HAS_MICROSTEPS_E2)
|
|
|
|
|
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
|
|
|
|
|
#define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
|
|
|
|
|
#define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
|
|
|
|
|
#define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
|
|
|
|
|
#define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
|
|
|
|
|
#define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
|
|
|
|
|
#define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
|
|
|
|
|
#define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
|
|
|
|
|
#define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
|
|
|
|
|
#define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
|
|
|
|
|
#define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
|
|
|
|
|
#define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
|
|
|
|
|
#define HAS_X_DIR (PIN_EXISTS(X_DIR))
|
|
|
|
|
#define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
|
|
|
|
|
#define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
|
|
|
|
|
#define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
|
|
|
|
|
#define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
|
|
|
|
|
#define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
|
|
|
|
|
#define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
|
|
|
|
|
#define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
|
|
|
|
|
#define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
|
|
|
|
|
#define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
|
|
|
|
|
#define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
|
|
|
|
|
#define HAS_X_STEP (PIN_EXISTS(X_STEP))
|
|
|
|
|
#define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
|
|
|
|
|
#define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
|
|
|
|
|
#define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
|
|
|
|
|
#define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
|
|
|
|
|
#define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
|
|
|
|
|
#define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
|
|
|
|
|
#define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
|
|
|
|
|
#define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
|
|
|
|
|
#define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
|
|
|
|
|
#define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
|
|
|
|
|
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
|
|
|
|
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER))
|
|
|
|
|
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT))
|
|
|
|
|
|
|
|
|
|
// Digital control
|
|
|
|
|
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS)
|
|
|
|
|
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
|
|
|
|
|
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
|
|
|
|
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
|
|
|
|
|
|
|
|
|
|
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
|
|
|
|
|
|
|
|
|
|
#define HAS_THERMALLY_PROTECTED_BED (HAS_TEMP_BED && HAS_HEATER_BED && ENABLED(THERMAL_PROTECTION_BED))
|
|
|
|
|
|
|
|
|
|
#define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0)
|
|
|
|
|
#define WATCH_THE_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This setting is also used by M109 when trying to calculate
|
|
|
|
|
* a ballpark safe margin to prevent wait-forever situation.
|
|
|
|
|