diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h index 9ab609ad5f..baa822d7f5 100644 --- a/Marlin/Conditionals.h +++ b/Marlin/Conditionals.h @@ -22,906 +22,6 @@ /** * Conditionals.h - * Defines that depend on configuration but are not editable. + * OBSOLETE: Replaced by Conditionals_LCD.h and Conditionals_post.h */ - -#ifndef CONDITIONALS_H - -/** -* Miscellaneous -*/ -#ifndef M_PI - #define M_PI 3.1415926536 -#endif - -/** - * This value is used by M109 when tying to calculate a ballpark safe margin - * to prevent wait-forever situation. - */ -#ifndef EXTRUDE_MINTEMP - #define EXTRUDE_MINTEMP 170 -#endif - -#ifndef CONFIGURATION_LCD // Get the LCD defines which are needed first -#define CONFIGURATION_LCD - - #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT)) - - #if ENABLED(CARTESIO_UI) - #define DOGLCD - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 90 - #define LCD_CONTRAST_MIN 60 - #define LCD_CONTRAST_MAX 140 - #endif - - #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL) - #define DOGLCD - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 - #endif - - #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #if ENABLED(miniVIKI) - #define LCD_CONTRAST_MIN 75 - #define LCD_CONTRAST_MAX 115 - #define DEFAULT_LCD_CONTRAST 95 - #elif ENABLED(VIKI2) - #define DEFAULT_LCD_CONTRAST 40 - #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #define LCD_CONTRAST_MIN 90 - #define LCD_CONTRAST_MAX 130 - #define DEFAULT_LCD_CONTRAST 110 - #define U8GLIB_LM6059_AF - #define SD_DETECT_INVERTED - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - // Generic support for SSD1306 / SH1106 OLED based LCDs. - #if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family) - #endif - - #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106) - #define ULTIMAKERCONTROLLER - #endif - - #if ENABLED(BQ_LCD_SMART_CONTROLLER) - #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - #ifndef LONG_FILENAME_HOST_SUPPORT - #define LONG_FILENAME_HOST_SUPPORT - #endif - #endif - - #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER - #endif - - #if ENABLED(ULTIMAKERCONTROLLER) \ - || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \ - || ENABLED(G3D_PANEL) \ - || ENABLED(RIGIDBOT_PANEL) \ - || ENABLED(REPRAPWORLD_KEYPAD) - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(RA_CONTROL_PANEL) - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - #define DOGLCD - #define U8GLIB_ST7920 - #define ULTIPANEL - #define NEWPANEL - #endif - - /** - * I2C PANELS - */ - - #if ENABLED(LCD_I2C_SAINSMART_YWROBOT) - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define ULTIPANEL - #define NEWPANEL - #endif - - // PANELOLU2 LCD with status LEDs, separate encoder and click inputs - #if ENABLED(LCD_I2C_PANELOLU2) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - #define ULTIPANEL - #define NEWPANEL - #endif - - // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs - #if ENABLED(LCD_I2C_VIKI) - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define ULTIPANEL - #define NEWPANEL - #endif - - // Shift register panels - // --------------------- - // 2 wire Non-latching LCD SR from: - // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection - - #if ENABLED(SAV_3DLCD) - #define SR_LCD_2W_NL // Non latching 2 wire shift register - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display - #ifndef LCD_WIDTH - #define LCD_WIDTH 22 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 5 - #endif - #endif - - #if ENABLED(ULTIPANEL) - #define NEWPANEL //enable this if you have a click-encoder panel - #define ULTRA_LCD - #ifndef LCD_WIDTH - #define LCD_WIDTH 20 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 4 - #endif - #else //no panel but just LCD - #if ENABLED(ULTRA_LCD) - #ifndef LCD_WIDTH - #define LCD_WIDTH 16 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 2 - #endif - #endif - #endif - - #if ENABLED(DOGLCD) - /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */ - // \x00 intentionally skipped to avoid problems in strings - #define LCD_STR_REFRESH "\x01" - #define LCD_STR_FOLDER "\x02" - #define LCD_STR_ARROW_RIGHT "\x03" - #define LCD_STR_UPLEVEL "\x04" - #define LCD_STR_CLOCK "\x05" - #define LCD_STR_FEEDRATE "\x06" - #define LCD_STR_BEDTEMP "\x07" - #define LCD_STR_THERMOMETER "\x08" - #define LCD_STR_DEGREE "\x09" - - #define LCD_STR_SPECIAL_MAX '\x09' - // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin. - // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here. - #else - /* Custom characters defined in the first 8 characters of the LCD */ - #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string! - #define LCD_STR_DEGREE "\x01" - #define LCD_STR_THERMOMETER "\x02" - #define LCD_STR_UPLEVEL "\x03" - #define LCD_STR_REFRESH "\x04" - #define LCD_STR_FOLDER "\x05" - #define LCD_STR_FEEDRATE "\x06" - #define LCD_STR_CLOCK "\x07" - #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */ - #endif - - /** - * Default LCD contrast for dogm-like LCD displays - */ - #if ENABLED(DOGLCD) - - #define HAS_LCD_CONTRAST ( \ - ENABLED(MAKRPANEL) \ - || ENABLED(CARTESIO_UI) \ - || ENABLED(VIKI2) \ - || ENABLED(miniVIKI) \ - || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \ - ) - - #if HAS_LCD_CONTRAST - #ifndef LCD_CONTRAST_MIN - #define LCD_CONTRAST_MIN 0 - #endif - #ifndef LCD_CONTRAST_MAX - #define LCD_CONTRAST_MAX 63 - #endif - #ifndef DEFAULT_LCD_CONTRAST - #define DEFAULT_LCD_CONTRAST 32 - #endif - #endif - #endif - - #ifndef BOOTSCREEN_TIMEOUT - #define BOOTSCREEN_TIMEOUT 2500 - #endif - -#else // CONFIGURATION_LCD - - #define CONDITIONALS_H - - #include "pins.h" - - #ifndef USBCON - #define HardwareSerial_h // trick to disable the standard HWserial - #endif - - #if ENABLED(EMERGENCY_PARSER) - #define EMERGENCY_PARSER_CAPABILITIES " EMERGENCY_CODES:M108,M112,M410" - #else - #define EMERGENCY_PARSER_CAPABILITIES "" - #endif - - #include "Arduino.h" - - /** - * Set ENDSTOPPULLUPS for unused endstop switches - */ - #if ENABLED(ENDSTOPPULLUPS) - #if ENABLED(USE_XMAX_PLUG) - #define ENDSTOPPULLUP_XMAX - #endif - #if ENABLED(USE_YMAX_PLUG) - #define ENDSTOPPULLUP_YMAX - #endif - #if ENABLED(USE_ZMAX_PLUG) - #define ENDSTOPPULLUP_ZMAX - #endif - #if ENABLED(USE_XMIN_PLUG) - #define ENDSTOPPULLUP_XMIN - #endif - #if ENABLED(USE_YMIN_PLUG) - #define ENDSTOPPULLUP_YMIN - #endif - #if ENABLED(USE_ZMIN_PLUG) - #define ENDSTOPPULLUP_ZMIN - #endif - #if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) - #define ENDSTOPPULLUP_ZMIN_PROBE - #endif - #endif - - /** - * Axis lengths - */ - #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) - #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS)) - #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS)) - - /** - * CoreXY and CoreXZ - */ - #if ENABLED(COREXY) - #define CORE_AXIS_1 A_AXIS // XY from A + B - #define CORE_AXIS_2 B_AXIS - #define NORMAL_AXIS Z_AXIS - #elif ENABLED(COREXZ) - #define CORE_AXIS_1 A_AXIS // XZ from A + C - #define CORE_AXIS_2 C_AXIS - #define NORMAL_AXIS Y_AXIS - #elif ENABLED(COREYZ) - #define CORE_AXIS_1 B_AXIS // YZ from B + C - #define CORE_AXIS_2 C_AXIS - #define NORMAL_AXIS X_AXIS - #endif - - /** - * SCARA - */ - #if ENABLED(SCARA) - #undef SLOWDOWN - #define QUICK_HOME //SCARA needs Quickhome - #endif - - /** - * AUTOSET LOCATIONS OF LIMIT SWITCHES - */ - #if ENABLED(MANUAL_HOME_POSITIONS) // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS - #else //!MANUAL_HOME_POSITIONS – Use home switch positions based on homing direction and travel limits - #if ENABLED(BED_CENTER_AT_0_0) - #define X_HOME_POS (X_MAX_LENGTH) * (X_HOME_DIR) * 0.5 - #define Y_HOME_POS (Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5 - #else - #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS) - #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS) - #endif - #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS) - #endif //!MANUAL_HOME_POSITIONS - - /** - * The BLTouch Probe emulates a servo probe - */ - #if ENABLED(BLTOUCH) - #undef Z_ENDSTOP_SERVO_NR - #undef Z_SERVO_ANGLES - #define Z_ENDSTOP_SERVO_NR 0 - #define Z_SERVO_ANGLES {10,90} // For BLTouch 10=deploy, 90=retract - #undef DEACTIVATE_SERVOS_AFTER_MOVE - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #undef Z_MIN_ENDSTOP_INVERTING - #define Z_MIN_ENDSTOP_INVERTING false - #endif - #endif - - /** - * Auto Bed Leveling and Z Probe Repeatability Test - */ - #define HAS_PROBING_PROCEDURE (ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) - - // Boundaries for probing based on set limits - #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) - #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) - #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) - #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) - - #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0) - - /** - * Z Sled Probe requires Z_SAFE_HOMING - */ - #if ENABLED(Z_PROBE_SLED) - #define Z_SAFE_HOMING - #endif - - /** - * Safe Homing Options - */ - #if ENABLED(Z_SAFE_HOMING) - #ifndef Z_SAFE_HOMING_X_POINT - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) - #endif - #ifndef Z_SAFE_HOMING_Y_POINT - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) - #endif - #endif - - /** - * Host keep alive - */ - #ifndef DEFAULT_KEEPALIVE_INTERVAL - #define DEFAULT_KEEPALIVE_INTERVAL 2 - #endif - - /** - * MAX_STEP_FREQUENCY differs for TOSHIBA - */ - #if ENABLED(CONFIG_STEPPERS_TOSHIBA) - #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers - #else - #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) - #endif - - // MS1 MS2 Stepper Driver Microstepping mode table - #define MICROSTEP1 LOW,LOW - #define MICROSTEP2 HIGH,LOW - #define MICROSTEP4 LOW,HIGH - #define MICROSTEP8 HIGH,HIGH - #define MICROSTEP16 HIGH,HIGH - - /** - * Advance calculated values - */ - #if ENABLED(ADVANCE) - #define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_mm[E_AXIS] / (EXTRUSION_AREA)) - #endif - - #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #undef SD_DETECT_INVERTED - #endif - - /** - * Set defaults for missing (newer) options - */ - #ifndef DISABLE_INACTIVE_X - #define DISABLE_INACTIVE_X DISABLE_X - #endif - #ifndef DISABLE_INACTIVE_Y - #define DISABLE_INACTIVE_Y DISABLE_Y - #endif - #ifndef DISABLE_INACTIVE_Z - #define DISABLE_INACTIVE_Z DISABLE_Z - #endif - #ifndef DISABLE_INACTIVE_E - #define DISABLE_INACTIVE_E DISABLE_E - #endif - - // Power Signal Control Definitions - // By default use ATX definition - #ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 - #endif - #if (POWER_SUPPLY == 1) // 1 = ATX - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH - #elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW - #endif - #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON)) - - /** - * Temp Sensor defines - */ - #if TEMP_SENSOR_0 == -3 - #define HEATER_0_USES_MAX6675 - #define MAX6675_IS_MAX31855 - #elif TEMP_SENSOR_0 == -2 - #define HEATER_0_USES_MAX6675 - #elif TEMP_SENSOR_0 == -1 - #define HEATER_0_USES_AD595 - #elif TEMP_SENSOR_0 == 0 - #undef HEATER_0_MINTEMP - #undef HEATER_0_MAXTEMP - #elif TEMP_SENSOR_0 > 0 - #define THERMISTORHEATER_0 TEMP_SENSOR_0 - #define HEATER_0_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_1 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1" - #elif TEMP_SENSOR_1 == -1 - #define HEATER_1_USES_AD595 - #elif TEMP_SENSOR_1 == 0 - #undef HEATER_1_MINTEMP - #undef HEATER_1_MAXTEMP - #elif TEMP_SENSOR_1 > 0 - #define THERMISTORHEATER_1 TEMP_SENSOR_1 - #define HEATER_1_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_2 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2" - #elif TEMP_SENSOR_2 == -1 - #define HEATER_2_USES_AD595 - #elif TEMP_SENSOR_2 == 0 - #undef HEATER_2_MINTEMP - #undef HEATER_2_MAXTEMP - #elif TEMP_SENSOR_2 > 0 - #define THERMISTORHEATER_2 TEMP_SENSOR_2 - #define HEATER_2_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_3 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3" - #elif TEMP_SENSOR_3 == -1 - #define HEATER_3_USES_AD595 - #elif TEMP_SENSOR_3 == 0 - #undef HEATER_3_MINTEMP - #undef HEATER_3_MAXTEMP - #elif TEMP_SENSOR_3 > 0 - #define THERMISTORHEATER_3 TEMP_SENSOR_3 - #define HEATER_3_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_BED <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED" - #elif TEMP_SENSOR_BED == -1 - #define BED_USES_AD595 - #elif TEMP_SENSOR_BED == 0 - #undef BED_MINTEMP - #undef BED_MAXTEMP - #elif TEMP_SENSOR_BED > 0 - #define THERMISTORBED TEMP_SENSOR_BED - #define BED_USES_THERMISTOR - #endif - - /** - * Flags for PID handling - */ - #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)) - #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED)) - - /** - * Extruders have some combination of stepper motors and hotends - * so we separate these concepts into the defines: - * - * EXTRUDERS - Number of Selectable Tools - * HOTENDS - Number of hotends, whether connected or separate - * E_STEPPERS - Number of actual E stepper motors - * TOOL_E_INDEX - Index to use when getting/setting the tool state - * - */ - #if ENABLED(SINGLENOZZLE) // One hotend, multi-extruder - #define HOTENDS 1 - #define E_STEPPERS EXTRUDERS - #define TOOL_E_INDEX current_block->active_extruder - #undef TEMP_SENSOR_1_AS_REDUNDANT - #undef HOTEND_OFFSET_X - #undef HOTEND_OFFSET_Y - #elif ENABLED(SWITCHING_EXTRUDER) // One E stepper, unified E axis, two hotends - #define HOTENDS EXTRUDERS - #define E_STEPPERS 1 - #define TOOL_E_INDEX 0 - #ifndef HOTEND_OFFSET_Z - #define HOTEND_OFFSET_Z { 0 } - #endif - #elif ENABLED(MIXING_EXTRUDER) // Multi-stepper, unified E axis, one hotend - #define HOTENDS 1 - #define E_STEPPERS MIXING_STEPPERS - #define TOOL_E_INDEX 0 - #else // One stepper, E axis, and hotend per tool - #define HOTENDS EXTRUDERS - #define E_STEPPERS EXTRUDERS - #define TOOL_E_INDEX current_block->active_extruder - #endif - - /** - * Default hotend offsets, if not defined - */ - #if HOTENDS > 1 - #ifndef HOTEND_OFFSET_X - #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder - #endif - #ifndef HOTEND_OFFSET_Y - #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder - #endif - #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER)) - #define HOTEND_OFFSET_Z { 0 } - #endif - #endif - - /** - * ARRAY_BY_EXTRUDERS based on EXTRUDERS - */ - #define ARRAY_BY_EXTRUDERS(args...) ARRAY_N(EXTRUDERS, args) - #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1) - - /** - * ARRAY_BY_HOTENDS based on HOTENDS - */ - #define ARRAY_BY_HOTENDS(args...) ARRAY_N(HOTENDS, args) - #define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1) - - /** - * Z_DUAL_ENDSTOPS endstop reassignment - */ - #if ENABLED(Z_DUAL_ENDSTOPS) - #define _XMIN_ 100 - #define _YMIN_ 200 - #define _ZMIN_ 300 - #define _XMAX_ 101 - #define _YMAX_ 201 - #define _ZMAX_ 301 - #if Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN X_MAX_PIN - #undef USE_XMAX_PLUG - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN Y_MAX_PIN - #undef USE_YMAX_PLUG - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN Z_MAX_PIN - #undef USE_ZMAX_PLUG - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN X_MIN_PIN - #undef USE_XMIN_PLUG - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN Y_MIN_PIN - #undef USE_YMIN_PLUG - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN Z_MIN_PIN - #undef USE_ZMIN_PLUG - #else - #define Z2_MAX_ENDSTOP_INVERTING false - #endif - #endif - - /** - * Shorthand for pin tests, used wherever needed - */ - #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_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2) - #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_BED (PIN_EXISTS(HEATER_BED)) - #define HAS_AUTO_FAN_0 (PIN_EXISTS(EXTRUDER_0_AUTO_FAN)) - #define HAS_AUTO_FAN_1 (PIN_EXISTS(EXTRUDER_1_AUTO_FAN)) - #define HAS_AUTO_FAN_2 (PIN_EXISTS(EXTRUDER_2_AUTO_FAN)) - #define HAS_AUTO_FAN_3 (PIN_EXISTS(EXTRUDER_3_AUTO_FAN)) - #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3) - #define HAS_FAN0 (PIN_EXISTS(FAN)) - #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_PIN != FAN1_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN1_PIN) - #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_PIN != FAN2_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN2_PIN) - #define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN)) - #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)) - #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH)) - #define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT)) - #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)) - #define HAS_X_MAX (PIN_EXISTS(X_MAX)) - #define HAS_Y_MIN (PIN_EXISTS(Y_MIN)) - #define HAS_Y_MAX (PIN_EXISTS(Y_MAX)) - #define HAS_Z_MIN (PIN_EXISTS(Z_MIN)) - #define HAS_Z_MAX (PIN_EXISTS(Z_MAX)) - #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_1 (PIN_EXISTS(SOL1)) - #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2)) - #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3)) - #define HAS_MICROSTEPS (PIN_EXISTS(X_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_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_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)) - - /** - * Helper Macros for heaters and extruder fan - */ - #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) - #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) - #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) - #if HOTENDS > 2 - #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) - #if HOTENDS > 3 - #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v) - #endif - #endif - #endif - #if ENABLED(HEATERS_PARALLEL) - #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } - #else - #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) - #endif - #if HAS_HEATER_BED - #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v) - #endif - - /** - * Up to 3 PWM fans - */ - #if HAS_FAN2 - #define FAN_COUNT 3 - #elif HAS_FAN1 - #define FAN_COUNT 2 - #elif HAS_FAN0 - #define FAN_COUNT 1 - #else - #define FAN_COUNT 0 - #endif - - #if HAS_FAN0 - #define WRITE_FAN(v) WRITE(FAN_PIN, v) - #define WRITE_FAN0(v) WRITE_FAN(v) - #endif - #if HAS_FAN1 - #define WRITE_FAN1(v) WRITE(FAN1_PIN, v) - #endif - #if HAS_FAN2 - #define WRITE_FAN2(v) WRITE(FAN2_PIN, v) - #endif - #define WRITE_FAN_N(n, v) WRITE_FAN##n(v) - - #define HAS_BUZZER (PIN_EXISTS(BEEPER) || defined(LCD_USE_I2C_BUZZER)) - - #if HAS_SERVOS - #ifndef Z_ENDSTOP_SERVO_NR - #define Z_ENDSTOP_SERVO_NR -1 - #endif - #endif - - #define PROBE_SELECTED (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED)) - - #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))) - - #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED) - - #if ENABLED(Z_PROBE_ALLEN_KEY) - #define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST - #endif - - /** - * Bed Probe dependencies - */ - #if HAS_BED_PROBE - #ifndef X_PROBE_OFFSET_FROM_EXTRUDER - #define X_PROBE_OFFSET_FROM_EXTRUDER 0 - #endif - #ifndef Y_PROBE_OFFSET_FROM_EXTRUDER - #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 - #endif - #ifndef Z_PROBE_OFFSET_FROM_EXTRUDER - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 - #endif - #ifndef Z_PROBE_OFFSET_RANGE_MIN - #define Z_PROBE_OFFSET_RANGE_MIN -20 - #endif - #ifndef Z_PROBE_OFFSET_RANGE_MAX - #define Z_PROBE_OFFSET_RANGE_MAX 20 - #endif - #ifndef XY_PROBE_SPEED - #ifdef HOMING_FEEDRATE_XY - #define XY_PROBE_SPEED HOMING_FEEDRATE_XY - #else - #define XY_PROBE_SPEED 4000 - #endif - #endif - #if Z_RAISE_BETWEEN_PROBINGS > Z_RAISE_PROBE_DEPLOY_STOW - #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_BETWEEN_PROBINGS - #else - #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_PROBE_DEPLOY_STOW - #endif - #endif - - /** - * Delta radius/rod trimmers - */ - #if ENABLED(DELTA) - #ifndef DELTA_RADIUS_TRIM_TOWER_1 - #define DELTA_RADIUS_TRIM_TOWER_1 0.0 - #endif - #ifndef DELTA_RADIUS_TRIM_TOWER_2 - #define DELTA_RADIUS_TRIM_TOWER_2 0.0 - #endif - #ifndef DELTA_RADIUS_TRIM_TOWER_3 - #define DELTA_RADIUS_TRIM_TOWER_3 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0 - #endif - #if ENABLED(AUTO_BED_LEVELING_GRID) - #define DELTA_BED_LEVELING_GRID - #endif - #endif - - /** - * When not using other bed leveling... - */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) && DISABLED(AUTO_BED_LEVELING_GRID) && DISABLED(DELTA_BED_LEVELING_GRID) - #define AUTO_BED_LEVELING_3POINT - #endif - - /** - * Buzzer/Speaker - */ - #if ENABLED(LCD_USE_I2C_BUZZER) - #ifndef LCD_FEEDBACK_FREQUENCY_HZ - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #endif - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - #elif PIN_EXISTS(BEEPER) - #ifndef LCD_FEEDBACK_FREQUENCY_HZ - #define LCD_FEEDBACK_FREQUENCY_HZ 5000 - #endif - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 - #endif - #else - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 - #endif - #endif - - /** - * MIN_Z_HEIGHT_FOR_HOMING / Z_RAISE_BETWEEN_PROBINGS - */ - #ifndef MIN_Z_HEIGHT_FOR_HOMING - #ifndef Z_RAISE_BETWEEN_PROBINGS - #define MIN_Z_HEIGHT_FOR_HOMING 0 - #else - #define MIN_Z_HEIGHT_FOR_HOMING Z_RAISE_BETWEEN_PROBINGS - #endif - #endif - #ifndef Z_RAISE_BETWEEN_PROBINGS - #define Z_RAISE_BETWEEN_PROBING MIN_Z_HEIGHT_FOR_HOMING - #endif - -#endif //CONFIGURATION_LCD -#endif //CONDITIONALS_H +#include "SanityCheck.h" diff --git a/Marlin/Conditionals_LCD.h b/Marlin/Conditionals_LCD.h new file mode 100644 index 0000000000..60ed5ce6e1 --- /dev/null +++ b/Marlin/Conditionals_LCD.h @@ -0,0 +1,270 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ + +/** + * Conditionals_LCD.h + * LCD Defines that depend on configuration but are not editable. + */ + +#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first +#define CONDITIONALS_LCD_H + + #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT)) + + #if ENABLED(CARTESIO_UI) + #define DOGLCD + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 90 + #define LCD_CONTRAST_MIN 60 + #define LCD_CONTRAST_MAX 140 + #endif + + #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL) + #define DOGLCD + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 + #endif + + #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #if ENABLED(miniVIKI) + #define LCD_CONTRAST_MIN 75 + #define LCD_CONTRAST_MAX 115 + #define DEFAULT_LCD_CONTRAST 95 + #elif ENABLED(VIKI2) + #define DEFAULT_LCD_CONTRAST 40 + #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) + #define LCD_CONTRAST_MIN 90 + #define LCD_CONTRAST_MAX 130 + #define DEFAULT_LCD_CONTRAST 110 + #define U8GLIB_LM6059_AF + #define SD_DETECT_INVERTED + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + // Generic support for SSD1306 / SH1106 OLED based LCDs. + #if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family) + #endif + + #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106) + #define ULTIMAKERCONTROLLER + #endif + + #if ENABLED(BQ_LCD_SMART_CONTROLLER) + #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + #ifndef LONG_FILENAME_HOST_SUPPORT + #define LONG_FILENAME_HOST_SUPPORT + #endif + #endif + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER + #endif + + #if ENABLED(ULTIMAKERCONTROLLER) \ + || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \ + || ENABLED(G3D_PANEL) \ + || ENABLED(RIGIDBOT_PANEL) \ + || ENABLED(REPRAPWORLD_KEYPAD) + #define ULTIPANEL + #define NEWPANEL + #endif + + #if ENABLED(RA_CONTROL_PANEL) + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define ULTIPANEL + #define NEWPANEL + #endif + + #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) + #define DOGLCD + #define U8GLIB_ST7920 + #define ULTIPANEL + #define NEWPANEL + #endif + + /** + * I2C PANELS + */ + + #if ENABLED(LCD_I2C_SAINSMART_YWROBOT) + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define ULTIPANEL + #define NEWPANEL + #endif + + // PANELOLU2 LCD with status LEDs, separate encoder and click inputs + #if ENABLED(LCD_I2C_PANELOLU2) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + #define ULTIPANEL + #define NEWPANEL + #endif + + // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs + #if ENABLED(LCD_I2C_VIKI) + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define ULTIPANEL + #define NEWPANEL + #endif + + // Shift register panels + // --------------------- + // 2 wire Non-latching LCD SR from: + // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + + #if ENABLED(SAV_3DLCD) + #define SR_LCD_2W_NL // Non latching 2 wire shift register + #define ULTIPANEL + #define NEWPANEL + #endif + + #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display + #ifndef LCD_WIDTH + #define LCD_WIDTH 22 + #endif + #ifndef LCD_HEIGHT + #define LCD_HEIGHT 5 + #endif + #endif + + #if ENABLED(ULTIPANEL) + #define NEWPANEL //enable this if you have a click-encoder panel + #define ULTRA_LCD + #ifndef LCD_WIDTH + #define LCD_WIDTH 20 + #endif + #ifndef LCD_HEIGHT + #define LCD_HEIGHT 4 + #endif + #else //no panel but just LCD + #if ENABLED(ULTRA_LCD) + #ifndef LCD_WIDTH + #define LCD_WIDTH 16 + #endif + #ifndef LCD_HEIGHT + #define LCD_HEIGHT 2 + #endif + #endif + #endif + + #if ENABLED(DOGLCD) + /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */ + // \x00 intentionally skipped to avoid problems in strings + #define LCD_STR_REFRESH "\x01" + #define LCD_STR_FOLDER "\x02" + #define LCD_STR_ARROW_RIGHT "\x03" + #define LCD_STR_UPLEVEL "\x04" + #define LCD_STR_CLOCK "\x05" + #define LCD_STR_FEEDRATE "\x06" + #define LCD_STR_BEDTEMP "\x07" + #define LCD_STR_THERMOMETER "\x08" + #define LCD_STR_DEGREE "\x09" + + #define LCD_STR_SPECIAL_MAX '\x09' + // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin. + // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here. + #else + /* Custom characters defined in the first 8 characters of the LCD */ + #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string! + #define LCD_STR_DEGREE "\x01" + #define LCD_STR_THERMOMETER "\x02" + #define LCD_STR_UPLEVEL "\x03" + #define LCD_STR_REFRESH "\x04" + #define LCD_STR_FOLDER "\x05" + #define LCD_STR_FEEDRATE "\x06" + #define LCD_STR_CLOCK "\x07" + #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */ + #endif + + /** + * Default LCD contrast for dogm-like LCD displays + */ + #if ENABLED(DOGLCD) + + #define HAS_LCD_CONTRAST ( \ + ENABLED(MAKRPANEL) \ + || ENABLED(CARTESIO_UI) \ + || ENABLED(VIKI2) \ + || ENABLED(miniVIKI) \ + || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \ + ) + + #if HAS_LCD_CONTRAST + #ifndef LCD_CONTRAST_MIN + #define LCD_CONTRAST_MIN 0 + #endif + #ifndef LCD_CONTRAST_MAX + #define LCD_CONTRAST_MAX 63 + #endif + #ifndef DEFAULT_LCD_CONTRAST + #define DEFAULT_LCD_CONTRAST 32 + #endif + #endif + #endif + + #ifndef BOOTSCREEN_TIMEOUT + #define BOOTSCREEN_TIMEOUT 2500 + #endif + +#endif //CONDITIONALS_LCD_H diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h new file mode 100644 index 0000000000..3ff131de2e --- /dev/null +++ b/Marlin/Conditionals_post.h @@ -0,0 +1,669 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ + +/** + * Conditionals_post.h + * Defines that depend on configuration but are not editable. + */ + +#ifndef CONDITIONALS_POST_H +#define CONDITIONALS_POST_H + + #if ENABLED(EMERGENCY_PARSER) + #define EMERGENCY_PARSER_CAPABILITIES " EMERGENCY_CODES:M108,M112,M410" + #else + #define EMERGENCY_PARSER_CAPABILITIES "" + #endif + + /** + * Set ENDSTOPPULLUPS for unused endstop switches + */ + #if ENABLED(ENDSTOPPULLUPS) + #if ENABLED(USE_XMAX_PLUG) + #define ENDSTOPPULLUP_XMAX + #endif + #if ENABLED(USE_YMAX_PLUG) + #define ENDSTOPPULLUP_YMAX + #endif + #if ENABLED(USE_ZMAX_PLUG) + #define ENDSTOPPULLUP_ZMAX + #endif + #if ENABLED(USE_XMIN_PLUG) + #define ENDSTOPPULLUP_XMIN + #endif + #if ENABLED(USE_YMIN_PLUG) + #define ENDSTOPPULLUP_YMIN + #endif + #if ENABLED(USE_ZMIN_PLUG) + #define ENDSTOPPULLUP_ZMIN + #endif + #if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) + #define ENDSTOPPULLUP_ZMIN_PROBE + #endif + #endif + + /** + * Axis lengths + */ + #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) + #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS)) + #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS)) + + /** + * CoreXY and CoreXZ + */ + #if ENABLED(COREXY) + #define CORE_AXIS_1 A_AXIS // XY from A + B + #define CORE_AXIS_2 B_AXIS + #define NORMAL_AXIS Z_AXIS + #elif ENABLED(COREXZ) + #define CORE_AXIS_1 A_AXIS // XZ from A + C + #define CORE_AXIS_2 C_AXIS + #define NORMAL_AXIS Y_AXIS + #elif ENABLED(COREYZ) + #define CORE_AXIS_1 B_AXIS // YZ from B + C + #define CORE_AXIS_2 C_AXIS + #define NORMAL_AXIS X_AXIS + #endif + + /** + * SCARA + */ + #if ENABLED(SCARA) + #undef SLOWDOWN + #define QUICK_HOME //SCARA needs Quickhome + #endif + + /** + * AUTOSET LOCATIONS OF LIMIT SWITCHES + */ + #if ENABLED(MANUAL_HOME_POSITIONS) // Use manual limit switch locations + #define X_HOME_POS MANUAL_X_HOME_POS + #define Y_HOME_POS MANUAL_Y_HOME_POS + #define Z_HOME_POS MANUAL_Z_HOME_POS + #else //!MANUAL_HOME_POSITIONS – Use home switch positions based on homing direction and travel limits + #if ENABLED(BED_CENTER_AT_0_0) + #define X_HOME_POS (X_MAX_LENGTH) * (X_HOME_DIR) * 0.5 + #define Y_HOME_POS (Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5 + #else + #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS) + #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS) + #endif + #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS) + #endif //!MANUAL_HOME_POSITIONS + + /** + * The BLTouch Probe emulates a servo probe + */ + #if ENABLED(BLTOUCH) + #undef Z_ENDSTOP_SERVO_NR + #undef Z_SERVO_ANGLES + #define Z_ENDSTOP_SERVO_NR 0 + #define Z_SERVO_ANGLES {10,90} // For BLTouch 10=deploy, 90=retract + #undef DEACTIVATE_SERVOS_AFTER_MOVE + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #undef Z_MIN_ENDSTOP_INVERTING + #define Z_MIN_ENDSTOP_INVERTING false + #endif + #endif + + /** + * Auto Bed Leveling and Z Probe Repeatability Test + */ + #define HAS_PROBING_PROCEDURE (ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) + + // Boundaries for probing based on set limits + #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + + #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0) + + /** + * Z Sled Probe requires Z_SAFE_HOMING + */ + #if ENABLED(Z_PROBE_SLED) + #define Z_SAFE_HOMING + #endif + + /** + * Safe Homing Options + */ + #if ENABLED(Z_SAFE_HOMING) + #ifndef Z_SAFE_HOMING_X_POINT + #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) + #endif + #ifndef Z_SAFE_HOMING_Y_POINT + #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) + #endif + #endif + + /** + * Host keep alive + */ + #ifndef DEFAULT_KEEPALIVE_INTERVAL + #define DEFAULT_KEEPALIVE_INTERVAL 2 + #endif + + /** + * MAX_STEP_FREQUENCY differs for TOSHIBA + */ + #if ENABLED(CONFIG_STEPPERS_TOSHIBA) + #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers + #else + #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) + #endif + + // MS1 MS2 Stepper Driver Microstepping mode table + #define MICROSTEP1 LOW,LOW + #define MICROSTEP2 HIGH,LOW + #define MICROSTEP4 LOW,HIGH + #define MICROSTEP8 HIGH,HIGH + #define MICROSTEP16 HIGH,HIGH + + /** + * Advance calculated values + */ + #if ENABLED(ADVANCE) + #define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_mm[E_AXIS] / (EXTRUSION_AREA)) + #endif + + #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) + #undef SD_DETECT_INVERTED + #endif + + /** + * Set defaults for missing (newer) options + */ + #ifndef DISABLE_INACTIVE_X + #define DISABLE_INACTIVE_X DISABLE_X + #endif + #ifndef DISABLE_INACTIVE_Y + #define DISABLE_INACTIVE_Y DISABLE_Y + #endif + #ifndef DISABLE_INACTIVE_Z + #define DISABLE_INACTIVE_Z DISABLE_Z + #endif + #ifndef DISABLE_INACTIVE_E + #define DISABLE_INACTIVE_E DISABLE_E + #endif + + // Power Signal Control Definitions + // By default use ATX definition + #ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 + #endif + #if (POWER_SUPPLY == 1) // 1 = ATX + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH + #elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW + #endif + #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON)) + + /** + * Temp Sensor defines + */ + #if TEMP_SENSOR_0 == -3 + #define HEATER_0_USES_MAX6675 + #define MAX6675_IS_MAX31855 + #elif TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 + #elif TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 + #elif TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP + #elif TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_1 <= -2 + #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1" + #elif TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 + #elif TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP + #elif TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_2 <= -2 + #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2" + #elif TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 + #elif TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP + #elif TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_3 <= -2 + #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3" + #elif TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 + #elif TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP + #elif TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_BED <= -2 + #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED" + #elif TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 + #elif TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP + #elif TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR + #endif + + /** + * Flags for PID handling + */ + #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)) + #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED)) + + /** + * Extruders have some combination of stepper motors and hotends + * so we separate these concepts into the defines: + * + * EXTRUDERS - Number of Selectable Tools + * HOTENDS - Number of hotends, whether connected or separate + * E_STEPPERS - Number of actual E stepper motors + * TOOL_E_INDEX - Index to use when getting/setting the tool state + * + */ + #if ENABLED(SINGLENOZZLE) // One hotend, multi-extruder + #define HOTENDS 1 + #define E_STEPPERS EXTRUDERS + #define TOOL_E_INDEX current_block->active_extruder + #undef TEMP_SENSOR_1_AS_REDUNDANT + #undef HOTEND_OFFSET_X + #undef HOTEND_OFFSET_Y + #elif ENABLED(SWITCHING_EXTRUDER) // One E stepper, unified E axis, two hotends + #define HOTENDS EXTRUDERS + #define E_STEPPERS 1 + #define TOOL_E_INDEX 0 + #ifndef HOTEND_OFFSET_Z + #define HOTEND_OFFSET_Z { 0 } + #endif + #elif ENABLED(MIXING_EXTRUDER) // Multi-stepper, unified E axis, one hotend + #define HOTENDS 1 + #define E_STEPPERS MIXING_STEPPERS + #define TOOL_E_INDEX 0 + #else // One stepper, E axis, and hotend per tool + #define HOTENDS EXTRUDERS + #define E_STEPPERS EXTRUDERS + #define TOOL_E_INDEX current_block->active_extruder + #endif + + /** + * Default hotend offsets, if not defined + */ + #if HOTENDS > 1 + #ifndef HOTEND_OFFSET_X + #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder + #endif + #ifndef HOTEND_OFFSET_Y + #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder + #endif + #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER)) + #define HOTEND_OFFSET_Z { 0 } + #endif + #endif + + /** + * ARRAY_BY_EXTRUDERS based on EXTRUDERS + */ + #define ARRAY_BY_EXTRUDERS(args...) ARRAY_N(EXTRUDERS, args) + #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1) + + /** + * ARRAY_BY_HOTENDS based on HOTENDS + */ + #define ARRAY_BY_HOTENDS(args...) ARRAY_N(HOTENDS, args) + #define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1) + + /** + * Z_DUAL_ENDSTOPS endstop reassignment + */ + #if ENABLED(Z_DUAL_ENDSTOPS) + #define _XMIN_ 100 + #define _YMIN_ 200 + #define _ZMIN_ 300 + #define _XMAX_ 101 + #define _YMAX_ 201 + #define _ZMAX_ 301 + #if Z2_USE_ENDSTOP == _XMAX_ + #define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING + #define Z2_MAX_PIN X_MAX_PIN + #undef USE_XMAX_PLUG + #elif Z2_USE_ENDSTOP == _YMAX_ + #define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING + #define Z2_MAX_PIN Y_MAX_PIN + #undef USE_YMAX_PLUG + #elif Z2_USE_ENDSTOP == _ZMAX_ + #define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING + #define Z2_MAX_PIN Z_MAX_PIN + #undef USE_ZMAX_PLUG + #elif Z2_USE_ENDSTOP == _XMIN_ + #define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING + #define Z2_MAX_PIN X_MIN_PIN + #undef USE_XMIN_PLUG + #elif Z2_USE_ENDSTOP == _YMIN_ + #define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING + #define Z2_MAX_PIN Y_MIN_PIN + #undef USE_YMIN_PLUG + #elif Z2_USE_ENDSTOP == _ZMIN_ + #define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING + #define Z2_MAX_PIN Z_MIN_PIN + #undef USE_ZMIN_PLUG + #else + #define Z2_MAX_ENDSTOP_INVERTING false + #endif + #endif + + /** + * Shorthand for pin tests, used wherever needed + */ + #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_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2) + #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_BED (PIN_EXISTS(HEATER_BED)) + #define HAS_AUTO_FAN_0 (PIN_EXISTS(EXTRUDER_0_AUTO_FAN)) + #define HAS_AUTO_FAN_1 (PIN_EXISTS(EXTRUDER_1_AUTO_FAN)) + #define HAS_AUTO_FAN_2 (PIN_EXISTS(EXTRUDER_2_AUTO_FAN)) + #define HAS_AUTO_FAN_3 (PIN_EXISTS(EXTRUDER_3_AUTO_FAN)) + #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3) + #define HAS_FAN0 (PIN_EXISTS(FAN)) + #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_PIN != FAN1_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN1_PIN) + #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_PIN != FAN2_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN2_PIN) + #define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN)) + #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)) + #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH)) + #define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT)) + #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)) + #define HAS_X_MAX (PIN_EXISTS(X_MAX)) + #define HAS_Y_MIN (PIN_EXISTS(Y_MIN)) + #define HAS_Y_MAX (PIN_EXISTS(Y_MAX)) + #define HAS_Z_MIN (PIN_EXISTS(Z_MIN)) + #define HAS_Z_MAX (PIN_EXISTS(Z_MAX)) + #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_1 (PIN_EXISTS(SOL1)) + #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2)) + #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3)) + #define HAS_MICROSTEPS (PIN_EXISTS(X_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_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_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)) + + /** + * This value is used by M109 when trying to calculate a ballpark safe margin + * to prevent wait-forever situation. + */ + #ifndef EXTRUDE_MINTEMP + #define EXTRUDE_MINTEMP 170 + #endif + + /** + * Helper Macros for heaters and extruder fan + */ + #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) + #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) + #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) + #if HOTENDS > 2 + #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) + #if HOTENDS > 3 + #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v) + #endif + #endif + #endif + #if ENABLED(HEATERS_PARALLEL) + #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } + #else + #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) + #endif + #if HAS_HEATER_BED + #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v) + #endif + + /** + * Up to 3 PWM fans + */ + #if HAS_FAN2 + #define FAN_COUNT 3 + #elif HAS_FAN1 + #define FAN_COUNT 2 + #elif HAS_FAN0 + #define FAN_COUNT 1 + #else + #define FAN_COUNT 0 + #endif + + #if HAS_FAN0 + #define WRITE_FAN(v) WRITE(FAN_PIN, v) + #define WRITE_FAN0(v) WRITE_FAN(v) + #endif + #if HAS_FAN1 + #define WRITE_FAN1(v) WRITE(FAN1_PIN, v) + #endif + #if HAS_FAN2 + #define WRITE_FAN2(v) WRITE(FAN2_PIN, v) + #endif + #define WRITE_FAN_N(n, v) WRITE_FAN##n(v) + + /** + * Servos and probes + */ + + #if HAS_SERVOS + #ifndef Z_ENDSTOP_SERVO_NR + #define Z_ENDSTOP_SERVO_NR -1 + #endif + #endif + + #define PROBE_SELECTED (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED)) + + #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))) + + #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED) + + #if ENABLED(Z_PROBE_ALLEN_KEY) + #define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST + #endif + + /** + * Bed Probe dependencies + */ + #if HAS_BED_PROBE + #ifndef X_PROBE_OFFSET_FROM_EXTRUDER + #define X_PROBE_OFFSET_FROM_EXTRUDER 0 + #endif + #ifndef Y_PROBE_OFFSET_FROM_EXTRUDER + #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 + #endif + #ifndef Z_PROBE_OFFSET_FROM_EXTRUDER + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 + #endif + #ifndef Z_PROBE_OFFSET_RANGE_MIN + #define Z_PROBE_OFFSET_RANGE_MIN -20 + #endif + #ifndef Z_PROBE_OFFSET_RANGE_MAX + #define Z_PROBE_OFFSET_RANGE_MAX 20 + #endif + #ifndef XY_PROBE_SPEED + #ifdef HOMING_FEEDRATE_XY + #define XY_PROBE_SPEED HOMING_FEEDRATE_XY + #else + #define XY_PROBE_SPEED 4000 + #endif + #endif + #if Z_RAISE_BETWEEN_PROBINGS > Z_RAISE_PROBE_DEPLOY_STOW + #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_BETWEEN_PROBINGS + #else + #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_PROBE_DEPLOY_STOW + #endif + #endif + + /** + * Delta radius/rod trimmers + */ + #if ENABLED(DELTA) + #ifndef DELTA_RADIUS_TRIM_TOWER_1 + #define DELTA_RADIUS_TRIM_TOWER_1 0.0 + #endif + #ifndef DELTA_RADIUS_TRIM_TOWER_2 + #define DELTA_RADIUS_TRIM_TOWER_2 0.0 + #endif + #ifndef DELTA_RADIUS_TRIM_TOWER_3 + #define DELTA_RADIUS_TRIM_TOWER_3 0.0 + #endif + #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1 + #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0 + #endif + #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2 + #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0 + #endif + #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3 + #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0 + #endif + #if ENABLED(AUTO_BED_LEVELING_GRID) + #define DELTA_BED_LEVELING_GRID + #endif + #endif + + /** + * When not using other bed leveling... + */ + #if ENABLED(AUTO_BED_LEVELING_FEATURE) && DISABLED(AUTO_BED_LEVELING_GRID) && DISABLED(DELTA_BED_LEVELING_GRID) + #define AUTO_BED_LEVELING_3POINT + #endif + + /** + * Buzzer/Speaker + */ + #if ENABLED(LCD_USE_I2C_BUZZER) + #ifndef LCD_FEEDBACK_FREQUENCY_HZ + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #endif + #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + #elif PIN_EXISTS(BEEPER) + #ifndef LCD_FEEDBACK_FREQUENCY_HZ + #define LCD_FEEDBACK_FREQUENCY_HZ 5000 + #endif + #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 + #endif + #else + #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 + #endif + #endif + + /** + * MIN_Z_HEIGHT_FOR_HOMING / Z_RAISE_BETWEEN_PROBINGS + */ + #ifndef MIN_Z_HEIGHT_FOR_HOMING + #ifndef Z_RAISE_BETWEEN_PROBINGS + #define MIN_Z_HEIGHT_FOR_HOMING 0 + #else + #define MIN_Z_HEIGHT_FOR_HOMING Z_RAISE_BETWEEN_PROBINGS + #endif + #endif + #ifndef Z_RAISE_BETWEEN_PROBINGS + #define Z_RAISE_BETWEEN_PROBING MIN_Z_HEIGHT_FOR_HOMING + #endif + +#endif // CONDITIONALS_POST_H diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1ab5eddb14..8b5e3394cc 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,10 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif - // @section machine // SERIAL_PORT selects which serial port should be used for communication with the host. @@ -1343,7 +1330,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index fde6524e80..410ee36ec1 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 53a66edfb7..1b1bffaec1 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -22,12 +22,6 @@ #ifndef MARLIN_H #define MARLIN_H -#define FORCE_INLINE __attribute__((always_inline)) inline -/** - * Compiler warning on unused variable. - */ -#define UNUSED(x) (void) (x) - #include #include #include @@ -39,28 +33,27 @@ #include #include -#include "fastio.h" -#include "Configuration.h" -#include "pins.h" - -#include "utility.h" - -#ifndef SANITYCHECK_H - #error "Your Configuration.h and Configuration_adv.h files are outdated!" -#endif +#include "MarlinConfig.h" -#include "Arduino.h" +#include "fastio.h" #include "enum.h" +#include "utility.h" typedef unsigned long millis_t; #ifdef USBCON #include "HardwareSerial.h" + #if ENABLED(BLUETOOTH) + #define MYSERIAL bluetoothSerial + #else + #define MYSERIAL Serial + #endif // BLUETOOTH +#else + #include "MarlinSerial.h" + #define MYSERIAL customizedSerial #endif -#include "MarlinSerial.h" - #include "WString.h" #if ENABLED(PRINTCOUNTER) @@ -69,16 +62,6 @@ typedef unsigned long millis_t; #include "stopwatch.h" #endif -#ifdef USBCON - #if ENABLED(BLUETOOTH) - #define MYSERIAL bluetoothSerial - #else - #define MYSERIAL Serial - #endif // BLUETOOTH -#else - #define MYSERIAL customizedSerial -#endif - #define SERIAL_CHAR(x) MYSERIAL.write(x) #define SERIAL_EOL SERIAL_CHAR('\n') @@ -272,11 +255,6 @@ inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); } void setPwmFrequency(uint8_t pin, int val); #endif -#ifndef CRITICAL_SECTION_START - #define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli(); - #define CRITICAL_SECTION_END SREG = _sreg; -#endif - /** * Feedrate scaling and conversion */ diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino index 1869d33b5f..70fd8adfc2 100644 --- a/Marlin/Marlin.ino +++ b/Marlin/Marlin.ino @@ -34,8 +34,7 @@ /* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ /* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ -#include "Configuration.h" -#include "pins.h" +#include "MarlinConfig.h" #if ENABLED(ULTRA_LCD) #if ENABLED(LCD_I2C_TYPE_PCF8575) diff --git a/Marlin/MarlinConfig.h b/Marlin/MarlinConfig.h new file mode 100644 index 0000000000..5ead4a11b5 --- /dev/null +++ b/Marlin/MarlinConfig.h @@ -0,0 +1,39 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ + +#ifndef MARLIN_CONFIG_H +#define MARLIN_CONFIG_H + +#include "macros.h" +#include "boards.h" +#include "Version.h" +#include "Configuration.h" +#include "Conditionals_LCD.h" +#include "Configuration_adv.h" +#include "pins.h" +#ifndef USBCON + #define HardwareSerial_h // trick to disable the standard HWserial +#endif +#include "Arduino.h" +#include "Conditionals_post.h" + +#endif // MARLIN_CONFIG_H diff --git a/Marlin/SanityCheck.cpp b/Marlin/SanityCheck.cpp new file mode 100644 index 0000000000..3660907228 --- /dev/null +++ b/Marlin/SanityCheck.cpp @@ -0,0 +1,729 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ + +/** + * SanityCheck.cpp + * + * Test configuration values for errors at compile-time. + * This is done only once, here, to speed up compilation time. + */ +#include "MarlinConfig.h" + +/** + * Due to the high number of issues related with old versions of Arduino IDE + * we are now warning our users to update their toolkits. In a future Marlin + * release we will stop supporting old IDE versions and will require user + * action to proceed with compilation in such environments. + */ +#if !defined(ARDUINO) || ARDUINO < 10600 + #error "Versions of Arduino IDE prior to 1.6.0 are no longer supported, please update your toolkit." +#endif + +/** + * We try our best to include sanity checks for all the changes configuration + * directives because people have a tendency to use outdated config files with + * the bleding edge source code, but sometimes this is not enough. This check + * will force a minimum config file revision, otherwise Marlin will not build. + */ +#if ! defined(CONFIGURATION_H_VERSION) || CONFIGURATION_H_VERSION < REQUIRED_CONFIGURATION_H_VERSION + #error "You are using an old Configuration.h file, update it before building Marlin." +#endif + +#if ! defined(CONFIGURATION_ADV_H_VERSION) || CONFIGURATION_ADV_H_VERSION < REQUIRED_CONFIGURATION_ADV_H_VERSION + #error "You are using an old Configuration_adv.h file, update it before building Marlin." +#endif + +/** + * Marlin release, version and default string + */ +#ifndef SHORT_BUILD_VERSION + #error "SHORT_BUILD_VERSION must be specified." +#elif !defined(DETAILED_BUILD_VERSION) + #error "BUILD_VERSION must be specified." +#elif !defined(STRING_DISTRIBUTION_DATE) + #error "STRING_DISTRIBUTION_DATE must be specified." +#elif !defined(PROTOCOL_VERSION) + #error "PROTOCOL_VERSION must be specified." +#elif !defined(MACHINE_NAME) + #error "MACHINE_NAME must be specified." +#elif !defined(SOURCE_CODE_URL) + #error "SOURCE_CODE_URL must be specified." +#elif !defined(DEFAULT_MACHINE_UUID) + #error "DEFAULT_MACHINE_UUID must be specified." +#elif !defined(WEBSITE_URL) + #error "WEBSITE_URL must be specified." +#endif + +/** + * Dual Stepper Drivers + */ +#if ENABLED(X_DUAL_STEPPER_DRIVERS) && ENABLED(DUAL_X_CARRIAGE) + #error "DUAL_X_CARRIAGE is not compatible with X_DUAL_STEPPER_DRIVERS." +#elif ENABLED(X_DUAL_STEPPER_DRIVERS) && (!HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR) + #error "X_DUAL_STEPPER_DRIVERS requires X2 pins (and an extra E plug)." +#elif ENABLED(Y_DUAL_STEPPER_DRIVERS) && (!HAS_Y2_ENABLE || !HAS_Y2_STEP || !HAS_Y2_DIR) + #error "Y_DUAL_STEPPER_DRIVERS requires Y2 pins (and an extra E plug)." +#elif ENABLED(Z_DUAL_STEPPER_DRIVERS) && (!HAS_Z2_ENABLE || !HAS_Z2_STEP || !HAS_Z2_DIR) + #error "Z_DUAL_STEPPER_DRIVERS requires Z2 pins (and an extra E plug)." +#endif + +/** + * Progress Bar + */ +#if ENABLED(LCD_PROGRESS_BAR) + #if DISABLED(SDSUPPORT) + #error "LCD_PROGRESS_BAR requires SDSUPPORT." + #endif + #if ENABLED(DOGLCD) + #error "LCD_PROGRESS_BAR does not apply to graphical displays." + #endif + #if ENABLED(FILAMENT_LCD_DISPLAY) + #error "LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both." + #endif +#endif + +/** + * Babystepping + */ +#if ENABLED(BABYSTEPPING) + #if DISABLED(ULTRA_LCD) + #error "BABYSTEPPING requires an LCD controller." + #endif + #if ENABLED(SCARA) + #error "BABYSTEPPING is not implemented for SCARA yet." + #endif + #if ENABLED(DELTA) && ENABLED(BABYSTEP_XY) + #error "BABYSTEPPING only implemented for Z axis on deltabots." + #endif +#endif + +/** + * Filament Runout needs a pin and either SD Support or Auto print start detection + */ +#if ENABLED(FILAMENT_RUNOUT_SENSOR) + #if !HAS_FIL_RUNOUT + #error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN." + #elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART) + #error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART." + #endif +#endif + +/** + * Filament Change with Extruder Runout Prevention + */ +#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(EXTRUDER_RUNOUT_PREVENT) + #error "EXTRUDER_RUNOUT_PREVENT is incompatible with FILAMENT_CHANGE_FEATURE." +#endif + +/** + * Individual axis homing is useless for DELTAS + */ +#if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU) && ENABLED(DELTA) + #error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics." +#endif + +/** + * Options only for EXTRUDERS > 1 + */ +#if EXTRUDERS > 1 + + #if EXTRUDERS > 4 + #error "The maximum number of EXTRUDERS in Marlin is 4." + #endif + + #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) + #error "EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT." + #endif + + #if ENABLED(HEATERS_PARALLEL) + #error "EXTRUDERS must be 1 with HEATERS_PARALLEL." + #endif + +#elif ENABLED(SINGLENOZZLE) + #error "SINGLENOZZLE requires 2 or more EXTRUDERS." +#endif + +/** + * Only one type of extruder allowed + */ +#if (ENABLED(SWITCHING_EXTRUDER) && (ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER))) \ + || (ENABLED(SINGLENOZZLE) && ENABLED(MIXING_EXTRUDER)) + #error "Please define only one type of extruder: SINGLENOZZLE, SWITCHING_EXTRUDER, or MIXING_EXTRUDER." +#endif + +/** + * Single Stepper Dual Extruder with switching servo + */ +#if ENABLED(SWITCHING_EXTRUDER) + #if ENABLED(DUAL_X_CARRIAGE) + #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible." + #elif EXTRUDERS != 2 + #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS." + #elif NUM_SERVOS < 1 + #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1." + #endif +#endif + +/** + * Mixing Extruder requirements + */ +#if ENABLED(MIXING_EXTRUDER) + #if EXTRUDERS > 1 + #error "MIXING_EXTRUDER currently only supports one extruder." + #endif + #if MIXING_STEPPERS < 2 + #error "You must set MIXING_STEPPERS >= 2 for a mixing extruder." + #endif + #if ENABLED(FILAMENT_SENSOR) + #error "MIXING_EXTRUDER is incompatible with FILAMENT_SENSOR. Comment out this line to use it anyway." + #endif +#endif + +/** + * Limited number of servos + */ +#if defined(NUM_SERVOS) && NUM_SERVOS > 0 + #if NUM_SERVOS > 4 + #error "The maximum number of SERVOS in Marlin is 4." + #elif HAS_Z_SERVO_ENDSTOP && Z_ENDSTOP_SERVO_NR >= NUM_SERVOS + #error "Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS." + #endif +#endif + +/** + * Servo deactivation depends on servo endstops + */ +#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_ENDSTOP + #error "Z_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE." +#endif + +/** + * Required LCD language + */ +#if DISABLED(DOGLCD) && ENABLED(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780) + #error "You must set DISPLAY_CHARSET_HD44780 to JAPANESE, WESTERN or CYRILLIC for your LCD controller." +#endif + +/** + * Bed Heating Options - PID vs Limit Switching + */ +#if ENABLED(PIDTEMPBED) && ENABLED(BED_LIMIT_SWITCHING) + #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." +#endif + +/** + * Mesh Bed Leveling + */ +#if ENABLED(MESH_BED_LEVELING) + #if ENABLED(DELTA) + #error "MESH_BED_LEVELING does not yet support DELTA printers." + #elif ENABLED(AUTO_BED_LEVELING_FEATURE) + #error "Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both." + #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9 + #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10." + #endif +#elif ENABLED(MANUAL_BED_LEVELING) + #error "MESH_BED_LEVELING is required for MANUAL_BED_LEVELING." +#endif + +/** + * Probes + */ + +#if PROBE_SELECTED + + #if ENABLED(Z_PROBE_SLED) && ENABLED(DELTA) + #error "You cannot use Z_PROBE_SLED with DELTA." + #endif + + /** + * NUM_SERVOS is required for a Z servo probe + */ + #if HAS_Z_SERVO_ENDSTOP + #ifndef NUM_SERVOS + #error "You must set NUM_SERVOS for a Z servo probe (Z_ENDSTOP_SERVO_NR)." + #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS + #error "Z_ENDSTOP_SERVO_NR must be less than NUM_SERVOS." + #endif + #endif + + /** + * A probe needs a pin + */ + #if !PROBE_PIN_CONFIGURED + #error "A probe needs a pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." + #endif + + /** + * Z_MIN_PIN and Z_MIN_PROBE_PIN can't co-exist when Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + */ + #if HAS_Z_MIN && HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #error "A probe cannot have more than one pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." + #endif + + /** + * Make sure the plug is enabled if it's used + */ + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && DISABLED(USE_ZMIN_PLUG) + #error "You must enable USE_ZMIN_PLUG if any probe or endstop is connected to the ZMIN plug." + #endif + + /** + * Only allow one probe option to be defined + */ + #if (ENABLED(FIX_MOUNTED_PROBE) && (ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ + || (ENABLED(Z_PROBE_ALLEN_KEY) && (HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ + || (HAS_Z_SERVO_ENDSTOP && ENABLED(Z_PROBE_SLED)) + #error "Please define only one type of probe: Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." + #endif + + /** + * Don't allow nonsense probe-pin settings + */ + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(Z_MIN_PROBE_ENDSTOP) + #error "You can't enable both Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN and Z_MIN_PROBE_ENDSTOP." + #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) + #error "Don't enable DISABLE_Z_MIN_PROBE_ENDSTOP with Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN." + #elif ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) && DISABLED(Z_MIN_PROBE_ENDSTOP) + #error "DISABLE_Z_MIN_PROBE_ENDSTOP requires Z_MIN_PROBE_ENDSTOP to be set." + #endif + + /** + * Require a Z probe pin if Z_MIN_PROBE_ENDSTOP is enabled. + */ + #if ENABLED(Z_MIN_PROBE_ENDSTOP) + #if !HAS_Z_MIN_PROBE_PIN + #error "Z_MIN_PROBE_ENDSTOP requires a Z_MIN_PROBE_PIN in your board's pins_XXXX.h file." + #endif + // Forcing Servo definitions can break some hall effect sensor setups. Leaving these here for further comment. + //#ifndef NUM_SERVOS + // #error "You must have NUM_SERVOS defined and there must be at least 1 configured to use Z_MIN_PROBE_ENDSTOP." + //#endif + //#if defined(NUM_SERVOS) && NUM_SERVOS < 1 + // #error "You must have at least 1 servo defined for NUM_SERVOS to use Z_MIN_PROBE_ENDSTOP." + //#endif + //#if Z_ENDSTOP_SERVO_NR < 0 + // #error "You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP." + //#endif + //#ifndef Z_SERVO_ANGLES + // #error "You must have Z_SERVO_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP." + //#endif + #endif + + /** + * Make sure Z raise values are set + */ + #if defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) + #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_RAISE_PROBE_DEPLOY_STOW instead." + #elif !defined(Z_RAISE_PROBE_DEPLOY_STOW) + #error "You must set Z_RAISE_PROBE_DEPLOY_STOW in your configuration." + #elif !defined(Z_RAISE_BETWEEN_PROBINGS) + #error "You must set Z_RAISE_BETWEEN_PROBINGS in your configuration." + #elif Z_RAISE_PROBE_DEPLOY_STOW < 1 + #error "Probes need Z_RAISE_PROBE_DEPLOY_STOW >= 1." + #elif Z_RAISE_BETWEEN_PROBINGS < 1 + #error "Probes need Z_RAISE_BETWEEN_PROBINGS >= 1." + #endif + +#else + + /** + * Require some kind of probe for bed leveling and probe testing + */ + #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." + #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) + #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." + #elif ENABLED(Z_SAFE_HOMING) + #error "Z_SAFE_HOMING currently requires a probe." + #endif + +#endif + +/** + * Make sure Z_SAFE_HOMING point is reachable + */ +#if ENABLED(Z_SAFE_HOMING) + #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X + #error "The given Z_SAFE_HOMING_X_POINT can't be reached by the Z probe." + #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y + #error "The given Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe." + #endif +#endif // Z_SAFE_HOMING + +/** + * Auto Bed Leveling + */ +#if ENABLED(AUTO_BED_LEVELING_FEATURE) + + /** + * Delta has limited bed leveling options + */ + #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID) + #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling." + #endif + + /** + * Require a Z min pin + */ + #if !PIN_EXISTS(Z_MIN) + #if !PIN_EXISTS(Z_MIN_PROBE) || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) // It's possible for someone to set a pin for the Z probe, but not enable it. + #error "AUTO_BED_LEVELING_FEATURE requires a Z_MIN or Z_PROBE endstop. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin." + #endif + #endif + + /** + * Check if Probe_Offset * Grid Points is greater than Probing Range + */ + #if ENABLED(AUTO_BED_LEVELING_GRID) + #ifndef DELTA_PROBEABLE_RADIUS + // Be sure points are in the right order + #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION + #error "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION." + #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION + #error "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION." + #endif + // Make sure probing points are reachable + #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X + #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe." + #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X + #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe." + #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y + #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe." + #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y + #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe." + #endif + #endif + #else // !AUTO_BED_LEVELING_GRID + + // Check the triangulation points + #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe." + #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe." + #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe." + #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe." + #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe." + #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe." + #endif + + #endif // !AUTO_BED_LEVELING_GRID + +#endif // AUTO_BED_LEVELING_FEATURE + +/** + * Advance Extrusion + */ +#if ENABLED(ADVANCE) && ENABLED(LIN_ADVANCE) + #error "You can enable ADVANCE or LIN_ADVANCE, but not both." +#endif + +/** + * Filament Width Sensor + */ +#if ENABLED(FILAMENT_WIDTH_SENSOR) && !HAS_FILAMENT_WIDTH_SENSOR + #error "FILAMENT_WIDTH_SENSOR requires a FILWIDTH_PIN to be defined." +#endif + +/** + * ULTIPANEL encoder + */ +#if ENABLED(ULTIPANEL) && DISABLED(NEWPANEL) && DISABLED(SR_LCD_2W_NL) && !defined(SHIFT_CLK) + #error "ULTIPANEL requires some kind of encoder." +#endif + +#if ENCODER_PULSES_PER_STEP < 0 + #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead." +#endif + +/** + * SAV_3DGLCD display options + */ +#if ENABLED(U8GLIB_SSD1306) && ENABLED(U8GLIB_SH1106) + #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106." +#endif + +/** + * Don't set more than one kinematic type + */ +#if (ENABLED(DELTA) && (ENABLED(SCARA) || ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ + || (ENABLED(SCARA) && (ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ + || (ENABLED(COREXY) && (ENABLED(COREXZ) || ENABLED(COREYZ))) \ + || (ENABLED(COREXZ) && ENABLED(COREYZ)) + #error "Please enable only one of DELTA, SCARA, COREXY, COREXZ, or COREYZ." +#endif + +/** + * Allen Key + * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis. + */ +#if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY" +#endif + +/** + * Dual X Carriage requirements + */ +#if ENABLED(DUAL_X_CARRIAGE) + #if EXTRUDERS == 1 + #error "DUAL_X_CARRIAGE requires 2 (or more) extruders." + #elif ENABLED(COREXY) || ENABLED(COREXZ) + #error "DUAL_X_CARRIAGE cannot be used with COREXY or COREXZ." + #elif !HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR + #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." + #elif !HAS_X_MAX + #error "DUAL_X_CARRIAGE requires USE_XMAX_PLUG and an X Max Endstop." + #elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) + #error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS." + #elif X_HOME_DIR != -1 || X2_HOME_DIR != 1 + #error "DUAL_X_CARRIAGE requires X_HOME_DIR -1 and X2_HOME_DIR 1." + #endif +#endif // DUAL_X_CARRIAGE + +/** + * Make sure auto fan pins don't conflict with the fan pin + */ +#if HAS_AUTO_FAN + #if HAS_FAN0 + #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN." + #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN." + #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN." + #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN." + #endif + #endif +#endif + +#if HAS_FAN0 && CONTROLLERFAN_PIN == FAN_PIN + #error "You cannot set CONTROLLERFAN_PIN equal to FAN_PIN." +#endif + +#if HAS_CONTROLLERFAN + #if EXTRUDER_0_AUTO_FAN_PIN == CONTROLLERFAN_PIN + #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." + #elif EXTRUDER_1_AUTO_FAN_PIN == CONTROLLERFAN_PIN + #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." + #elif EXTRUDER_2_AUTO_FAN_PIN == CONTROLLERFAN_PIN + #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." + #elif EXTRUDER_3_AUTO_FAN_PIN == CONTROLLERFAN_PIN + #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." + #endif +#endif + +/** + * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set. + */ +#if !HAS_HEATER_0 + #error "HEATER_0_PIN not defined for this board." +#elif !PIN_EXISTS(TEMP_0) + #error "TEMP_0_PIN not defined for this board." +#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE) + #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board." +#elif TEMP_SENSOR_0 == 0 + #error "TEMP_SENSOR_0 is required." +#endif + +#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) + #if !HAS_HEATER_1 + #error "HEATER_1_PIN not defined for this board." + #endif +#endif + +#if HOTENDS > 1 + #if TEMP_SENSOR_1 == 0 + #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." + #elif !PIN_EXISTS(TEMP_1) + #error "TEMP_1_PIN not defined for this board." + #endif + #if HOTENDS > 2 + #if TEMP_SENSOR_2 == 0 + #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." + #elif !HAS_HEATER_2 + #error "HEATER_2_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_2) + #error "TEMP_2_PIN not defined for this board." + #endif + #if HOTENDS > 3 + #if TEMP_SENSOR_3 == 0 + #error "TEMP_SENSOR_3 is required with 4 HOTENDS." + #elif !HAS_HEATER_3 + #error "HEATER_3_PIN not defined for this board." + #elif !PIN_EXISTS(TEMP_3) + #error "TEMP_3_PIN not defined for this board." + #endif + #elif TEMP_SENSOR_3 != 0 + #error "TEMP_SENSOR_3 shouldn't be set with only 3 extruders." + #endif + #elif TEMP_SENSOR_2 != 0 + #error "TEMP_SENSOR_2 shouldn't be set with only 2 extruders." + #elif TEMP_SENSOR_3 != 0 + #error "TEMP_SENSOR_3 shouldn't be set with only 2 extruders." + #endif +#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT) + #error "TEMP_SENSOR_1 shouldn't be set with only 1 extruder." +#elif TEMP_SENSOR_2 != 0 + #error "TEMP_SENSOR_2 shouldn't be set with only 1 extruder." +#elif TEMP_SENSOR_3 != 0 + #error "TEMP_SENSOR_3 shouldn't be set with only 1 extruder." +#endif + +#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0 + #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT." +#endif + +/** + * Basic 2-nozzle duplication mode + */ +#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) + #if HOTENDS != 2 + #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends." + #elif ENABLED(DUAL_X_CARRIAGE) + #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE." + #elif ENABLED(SINGLENOZZLE) + #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE." + #elif ENABLED(MIXING_EXTRUDER) + #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER." + #elif ENABLED(SWITCHING_EXTRUDER) + #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER." + #endif +#endif + +/** + * Test Extruder Pins + */ +#if EXTRUDERS > 3 + #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE) + #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board." + #endif +#elif EXTRUDERS > 2 + #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE) + #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board." + #endif +#elif EXTRUDERS > 1 + #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE) + #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board." + #endif +#endif + +/** + * Endstops + */ +#if DISABLED(USE_XMIN_PLUG) && DISABLED(USE_XMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _XMAX_ && Z2_USE_ENDSTOP <= _XMIN_) + #error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG" +#elif DISABLED(USE_YMIN_PLUG) && DISABLED(USE_YMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _YMAX_ && Z2_USE_ENDSTOP <= _YMIN_) + #error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG" +#elif DISABLED(USE_ZMIN_PLUG) && DISABLED(USE_ZMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _ZMAX_ && Z2_USE_ENDSTOP <= _ZMIN_) + #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG" +#elif ENABLED(Z_DUAL_ENDSTOPS) && !Z2_USE_ENDSTOP + #error "You must set Z2_USE_ENDSTOP with Z_DUAL_ENDSTOPS" +#endif + +/** + * emergency-command parser + */ +#if ENABLED(EMERGENCY_PARSER) && ENABLED(USBCON) + #error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)." +#endif + + /** + * Warnings for old configurations + */ +#if WATCH_TEMP_PERIOD > 500 + #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." +#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) + #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." +#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD) + #error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED." +#elif ENABLED(COREXZ) && ENABLED(Z_LATE_ENABLE) + #error "Z_LATE_ENABLE can't be used with COREXZ." +#elif defined(X_HOME_RETRACT_MM) + #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM." +#elif defined(BEEPER) + #error "BEEPER is now BEEPER_PIN. Please update your pins definitions." +#elif defined(SDCARDDETECT) + #error "SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions." +#elif defined(SDCARDDETECTINVERTED) + #error "SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration." +#elif defined(BTENABLED) + #error "BTENABLED is now BLUETOOTH. Please update your configuration." +#elif defined(CUSTOM_MENDEL_NAME) + #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration." +#elif defined(HAS_AUTOMATIC_VERSIONING) + #error "HAS_AUTOMATIC_VERSIONING is now USE_AUTOMATIC_VERSIONING. Please update your configuration." +#elif defined(ENABLE_AUTO_BED_LEVELING) + #error "ENABLE_AUTO_BED_LEVELING is now AUTO_BED_LEVELING_FEATURE. Please update your configuration." +#elif defined(SDSLOW) + #error "SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead." +#elif defined(SDEXTRASLOW) + #error "SDEXTRASLOW deprecated. Set SPI_SPEED to SPI_QUARTER_SPEED instead." +#elif defined(Z_RAISE_BEFORE_HOMING) + #error "Z_RAISE_BEFORE_HOMING is deprecated. Use MIN_Z_HEIGHT_FOR_HOMING instead." +#elif defined(FILAMENT_SENSOR) + #error "FILAMENT_SENSOR is deprecated. Use FILAMENT_WIDTH_SENSOR instead." +#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) + #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." +#elif ENABLED(Z_DUAL_ENDSTOPS) && !defined(Z2_USE_ENDSTOP) + #error "Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2" +#elif defined(LANGUAGE_INCLUDE) + #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE. Please update your configuration." +#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) + #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead." +#elif defined(PID_PARAMS_PER_EXTRUDER) + #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead." +#elif defined(EXTRUDER_WATTS) + #error "EXTRUDER_WATTS is deprecated. Use HOTEND_WATTS instead." +#elif defined(SERVO_ENDSTOP_ANGLES) + #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." +#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) + #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." +#elif defined(XY_TRAVEL_SPEED) + #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead." +#elif defined(PROBE_SERVO_DEACTIVATION_DELAY) + #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead." +#elif defined(SERVO_DEACTIVATION_DELAY) + #error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead." +#elif ENABLED(FILAMENTCHANGEENABLE) + #error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration." +#elif defined(PLA_PREHEAT_HOTEND_TEMP) + #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration." +#elif defined(PLA_PREHEAT_HPB_TEMP) + #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED. Please update your configuration." +#elif defined(PLA_PREHEAT_FAN_SPEED) + #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED. Please update your configuration." +#elif defined(ABS_PREHEAT_HOTEND_TEMP) + #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND. Please update your configuration." +#elif defined(ABS_PREHEAT_HPB_TEMP) + #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED. Please update your configuration." +#elif defined(ABS_PREHEAT_FAN_SPEED) + #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED. Please update your configuration." +#elif defined(ENDSTOPS_ONLY_FOR_HOMING) + #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead." +#elif defined(HOMING_FEEDRATE) + #error "HOMING_FEEDRATE is deprecated. Set individual rates with HOMING_FEEDRATE_(XY|Z|E) instead." +#endif diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h index 129a43561e..fcf258475e 100644 --- a/Marlin/SanityCheck.h +++ b/Marlin/SanityCheck.h @@ -22,710 +22,6 @@ /** * SanityCheck.h - * - * Test configuration values for errors at compile-time. - */ -#ifndef SANITYCHECK_H -#define SANITYCHECK_H - -/** - * Due to the high number of issues related with old versions of Arduino IDE - * we are now warning our users to update their toolkits. In a future Marlin - * release we will stop supporting old IDE versions and will require user - * action to proceed with compilation in such environments. - */ -#if !defined(ARDUINO) || ARDUINO < 10600 - #error "Versions of Arduino IDE prior to 1.6.0 are no longer supported, please update your toolkit." -#endif - -/** - * We try our best to include sanity checks for all the changes configuration - * directives because people have a tendency to use outdated config files with - * the bleding edge source code, but sometimes this is not enough. This check - * will force a minimum config file revision, otherwise Marlin will not build. - */ -#if ! defined(CONFIGURATION_H_VERSION) || CONFIGURATION_H_VERSION < REQUIRED_CONFIGURATION_H_VERSION - #error "You are using an old Configuration.h file, update it before building Marlin." -#endif - -#if ! defined(CONFIGURATION_ADV_H_VERSION) || CONFIGURATION_ADV_H_VERSION < REQUIRED_CONFIGURATION_ADV_H_VERSION - #error "You are using an old Configuration_adv.h file, update it before building Marlin." -#endif - -/** - * Marlin release, version and default string - */ -#ifndef SHORT_BUILD_VERSION - #error "SHORT_BUILD_VERSION must be specified." -#elif !defined(DETAILED_BUILD_VERSION) - #error "BUILD_VERSION must be specified." -#elif !defined(STRING_DISTRIBUTION_DATE) - #error "STRING_DISTRIBUTION_DATE must be specified." -#elif !defined(PROTOCOL_VERSION) - #error "PROTOCOL_VERSION must be specified." -#elif !defined(MACHINE_NAME) - #error "MACHINE_NAME must be specified." -#elif !defined(SOURCE_CODE_URL) - #error "SOURCE_CODE_URL must be specified." -#elif !defined(DEFAULT_MACHINE_UUID) - #error "DEFAULT_MACHINE_UUID must be specified." -#elif !defined(WEBSITE_URL) - #error "WEBSITE_URL must be specified." -#endif - -/** - * Dual Stepper Drivers - */ -#if ENABLED(X_DUAL_STEPPER_DRIVERS) && ENABLED(DUAL_X_CARRIAGE) - #error "DUAL_X_CARRIAGE is not compatible with X_DUAL_STEPPER_DRIVERS." -#elif ENABLED(X_DUAL_STEPPER_DRIVERS) && (!HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR) - #error "X_DUAL_STEPPER_DRIVERS requires X2 pins (and an extra E plug)." -#elif ENABLED(Y_DUAL_STEPPER_DRIVERS) && (!HAS_Y2_ENABLE || !HAS_Y2_STEP || !HAS_Y2_DIR) - #error "Y_DUAL_STEPPER_DRIVERS requires Y2 pins (and an extra E plug)." -#elif ENABLED(Z_DUAL_STEPPER_DRIVERS) && (!HAS_Z2_ENABLE || !HAS_Z2_STEP || !HAS_Z2_DIR) - #error "Z_DUAL_STEPPER_DRIVERS requires Z2 pins (and an extra E plug)." -#endif - -/** - * Progress Bar - */ -#if ENABLED(LCD_PROGRESS_BAR) - #if DISABLED(SDSUPPORT) - #error "LCD_PROGRESS_BAR requires SDSUPPORT." - #endif - #if ENABLED(DOGLCD) - #error "LCD_PROGRESS_BAR does not apply to graphical displays." - #endif - #if ENABLED(FILAMENT_LCD_DISPLAY) - #error "LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both." - #endif -#endif - -/** - * Babystepping - */ -#if ENABLED(BABYSTEPPING) - #if DISABLED(ULTRA_LCD) - #error "BABYSTEPPING requires an LCD controller." - #endif - #if ENABLED(SCARA) - #error "BABYSTEPPING is not implemented for SCARA yet." - #endif - #if ENABLED(DELTA) && ENABLED(BABYSTEP_XY) - #error "BABYSTEPPING only implemented for Z axis on deltabots." - #endif -#endif - -/** - * Filament Runout needs a pin and either SD Support or Auto print start detection - */ -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - #if !HAS_FIL_RUNOUT - #error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN." - #elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART) - #error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART." - #endif -#endif - -/** - * Filament Change with Extruder Runout Prevention - */ -#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(EXTRUDER_RUNOUT_PREVENT) - #error "EXTRUDER_RUNOUT_PREVENT is incompatible with FILAMENT_CHANGE_FEATURE." -#endif - -/** - * Individual axis homing is useless for DELTAS - */ -#if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU) && ENABLED(DELTA) - #error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics." -#endif - -/** - * Options only for EXTRUDERS > 1 - */ -#if EXTRUDERS > 1 - - #if EXTRUDERS > 4 - #error "The maximum number of EXTRUDERS in Marlin is 4." - #endif - - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - #error "EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT." - #endif - - #if ENABLED(HEATERS_PARALLEL) - #error "EXTRUDERS must be 1 with HEATERS_PARALLEL." - #endif - -#elif ENABLED(SINGLENOZZLE) - #error "SINGLENOZZLE requires 2 or more EXTRUDERS." -#endif - -/** - * Only one type of extruder allowed - */ -#if (ENABLED(SWITCHING_EXTRUDER) && (ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER))) \ - || (ENABLED(SINGLENOZZLE) && ENABLED(MIXING_EXTRUDER)) - #error "Please define only one type of extruder: SINGLENOZZLE, SWITCHING_EXTRUDER, or MIXING_EXTRUDER." -#endif - -/** - * Single Stepper Dual Extruder with switching servo - */ -#if ENABLED(SWITCHING_EXTRUDER) - #if ENABLED(DUAL_X_CARRIAGE) - #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible." - #elif EXTRUDERS != 2 - #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS." - #elif NUM_SERVOS < 1 - #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1." - #endif -#endif - -/** - * Mixing Extruder requirements - */ -#if ENABLED(MIXING_EXTRUDER) - #if EXTRUDERS > 1 - #error "MIXING_EXTRUDER currently only supports one extruder." - #endif - #if MIXING_STEPPERS < 2 - #error "You must set MIXING_STEPPERS >= 2 for a mixing extruder." - #endif - #if ENABLED(FILAMENT_SENSOR) - #error "MIXING_EXTRUDER is incompatible with FILAMENT_SENSOR. Comment out this line to use it anyway." - #endif -#endif - -/** - * Limited number of servos - */ -#if defined(NUM_SERVOS) && NUM_SERVOS > 0 - #if NUM_SERVOS > 4 - #error "The maximum number of SERVOS in Marlin is 4." - #elif HAS_Z_SERVO_ENDSTOP && Z_ENDSTOP_SERVO_NR >= NUM_SERVOS - #error "Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS." - #endif -#endif - -/** - * Servo deactivation depends on servo endstops - */ -#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_ENDSTOP - #error "Z_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE." -#endif - -/** - * Required LCD language - */ -#if DISABLED(DOGLCD) && ENABLED(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780) - #error "You must set DISPLAY_CHARSET_HD44780 to JAPANESE, WESTERN or CYRILLIC for your LCD controller." -#endif - -/** - * Bed Heating Options - PID vs Limit Switching - */ -#if ENABLED(PIDTEMPBED) && ENABLED(BED_LIMIT_SWITCHING) - #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." -#endif - -/** - * Mesh Bed Leveling - */ -#if ENABLED(MESH_BED_LEVELING) - #if ENABLED(DELTA) - #error "MESH_BED_LEVELING does not yet support DELTA printers." - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both." - #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9 - #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10." - #endif -#elif ENABLED(MANUAL_BED_LEVELING) - #error "MESH_BED_LEVELING is required for MANUAL_BED_LEVELING." -#endif - -/** - * Probes - */ - -#if PROBE_SELECTED - - #if ENABLED(Z_PROBE_SLED) && ENABLED(DELTA) - #error "You cannot use Z_PROBE_SLED with DELTA." - #endif - - /** - * NUM_SERVOS is required for a Z servo probe - */ - #if HAS_Z_SERVO_ENDSTOP - #ifndef NUM_SERVOS - #error "You must set NUM_SERVOS for a Z servo probe (Z_ENDSTOP_SERVO_NR)." - #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS - #error "Z_ENDSTOP_SERVO_NR must be less than NUM_SERVOS." - #endif - #endif - - /** - * A probe needs a pin - */ - #if !PROBE_PIN_CONFIGURED - #error "A probe needs a pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." - #endif - - /** - * Z_MIN_PIN and Z_MIN_PROBE_PIN can't co-exist when Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - */ - #if HAS_Z_MIN && HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #error "A probe cannot have more than one pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." - #endif - - /** - * Make sure the plug is enabled if it's used - */ - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && DISABLED(USE_ZMIN_PLUG) - #error "You must enable USE_ZMIN_PLUG if any probe or endstop is connected to the ZMIN plug." - #endif - - /** - * Only allow one probe option to be defined - */ - #if (ENABLED(FIX_MOUNTED_PROBE) && (ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ - || (ENABLED(Z_PROBE_ALLEN_KEY) && (HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ - || (HAS_Z_SERVO_ENDSTOP && ENABLED(Z_PROBE_SLED)) - #error "Please define only one type of probe: Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #endif - - /** - * Don't allow nonsense probe-pin settings - */ - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(Z_MIN_PROBE_ENDSTOP) - #error "You can't enable both Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN and Z_MIN_PROBE_ENDSTOP." - #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) - #error "Don't enable DISABLE_Z_MIN_PROBE_ENDSTOP with Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN." - #elif ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) && DISABLED(Z_MIN_PROBE_ENDSTOP) - #error "DISABLE_Z_MIN_PROBE_ENDSTOP requires Z_MIN_PROBE_ENDSTOP to be set." - #endif - - /** - * Require a Z probe pin if Z_MIN_PROBE_ENDSTOP is enabled. - */ - #if ENABLED(Z_MIN_PROBE_ENDSTOP) - #if !HAS_Z_MIN_PROBE_PIN - #error "Z_MIN_PROBE_ENDSTOP requires a Z_MIN_PROBE_PIN in your board's pins_XXXX.h file." - #endif - // Forcing Servo definitions can break some hall effect sensor setups. Leaving these here for further comment. - //#ifndef NUM_SERVOS - // #error "You must have NUM_SERVOS defined and there must be at least 1 configured to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#if defined(NUM_SERVOS) && NUM_SERVOS < 1 - // #error "You must have at least 1 servo defined for NUM_SERVOS to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#if Z_ENDSTOP_SERVO_NR < 0 - // #error "You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#ifndef Z_SERVO_ANGLES - // #error "You must have Z_SERVO_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP." - //#endif - #endif - - /** - * Make sure Z raise values are set - */ - #if defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) - #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_RAISE_PROBE_DEPLOY_STOW instead." - #elif !defined(Z_RAISE_PROBE_DEPLOY_STOW) - #error "You must set Z_RAISE_PROBE_DEPLOY_STOW in your configuration." - #elif !defined(Z_RAISE_BETWEEN_PROBINGS) - #error "You must set Z_RAISE_BETWEEN_PROBINGS in your configuration." - #elif Z_RAISE_PROBE_DEPLOY_STOW < 1 - #error "Probes need Z_RAISE_PROBE_DEPLOY_STOW >= 1." - #elif Z_RAISE_BETWEEN_PROBINGS < 1 - #error "Probes need Z_RAISE_BETWEEN_PROBINGS >= 1." - #endif - -#else - - /** - * Require some kind of probe for bed leveling and probe testing - */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) - #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #elif ENABLED(Z_SAFE_HOMING) - #error "Z_SAFE_HOMING currently requires a probe." - #endif - -#endif - -/** - * Make sure Z_SAFE_HOMING point is reachable - */ -#if ENABLED(Z_SAFE_HOMING) - #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X - #error "The given Z_SAFE_HOMING_X_POINT can't be reached by the Z probe." - #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y - #error "The given Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe." - #endif -#endif // Z_SAFE_HOMING - -/** - * Auto Bed Leveling - */ -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - /** - * Delta has limited bed leveling options - */ - #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID) - #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling." - #endif - - /** - * Require a Z min pin - */ - #if !PIN_EXISTS(Z_MIN) - #if !PIN_EXISTS(Z_MIN_PROBE) || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) // It's possible for someone to set a pin for the Z probe, but not enable it. - #error "AUTO_BED_LEVELING_FEATURE requires a Z_MIN or Z_PROBE endstop. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin." - #endif - #endif - - /** - * Check if Probe_Offset * Grid Points is greater than Probing Range - */ - #if ENABLED(AUTO_BED_LEVELING_GRID) - #ifndef DELTA_PROBEABLE_RADIUS - // Be sure points are in the right order - #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION - #error "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION." - #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION - #error "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION." - #endif - // Make sure probing points are reachable - #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X - #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X - #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y - #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y - #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe." - #endif - #endif - #else // !AUTO_BED_LEVELING_GRID - - // Check the triangulation points - #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe." - #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe." - #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe." - #endif - - #endif // !AUTO_BED_LEVELING_GRID - -#endif // AUTO_BED_LEVELING_FEATURE - -/** - * Advance Extrusion - */ -#if ENABLED(ADVANCE) && ENABLED(LIN_ADVANCE) - #error "You can enable ADVANCE or LIN_ADVANCE, but not both." -#endif - -/** - * Filament Width Sensor - */ -#if ENABLED(FILAMENT_WIDTH_SENSOR) && !HAS_FILAMENT_WIDTH_SENSOR - #error "FILAMENT_WIDTH_SENSOR requires a FILWIDTH_PIN to be defined." -#endif - -/** - * ULTIPANEL encoder - */ -#if ENABLED(ULTIPANEL) && DISABLED(NEWPANEL) && DISABLED(SR_LCD_2W_NL) && !defined(SHIFT_CLK) - #error "ULTIPANEL requires some kind of encoder." -#endif - -#if ENCODER_PULSES_PER_STEP < 0 - #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead." -#endif - -/** - * SAV_3DGLCD display options - */ -#if ENABLED(U8GLIB_SSD1306) && ENABLED(U8GLIB_SH1106) - #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106." -#endif - -/** - * Don't set more than one kinematic type - */ -#if (ENABLED(DELTA) && (ENABLED(SCARA) || ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(SCARA) && (ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(COREXY) && (ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(COREXZ) && ENABLED(COREYZ)) - #error "Please enable only one of DELTA, SCARA, COREXY, COREXZ, or COREYZ." -#endif - -/** - * Allen Key - * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis. - */ -#if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY" -#endif - -/** - * Dual X Carriage requirements - */ -#if ENABLED(DUAL_X_CARRIAGE) - #if EXTRUDERS == 1 - #error "DUAL_X_CARRIAGE requires 2 (or more) extruders." - #elif ENABLED(COREXY) || ENABLED(COREXZ) - #error "DUAL_X_CARRIAGE cannot be used with COREXY or COREXZ." - #elif !HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR - #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." - #elif !HAS_X_MAX - #error "DUAL_X_CARRIAGE requires USE_XMAX_PLUG and an X Max Endstop." - #elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) - #error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS." - #elif X_HOME_DIR != -1 || X2_HOME_DIR != 1 - #error "DUAL_X_CARRIAGE requires X_HOME_DIR -1 and X2_HOME_DIR 1." - #endif -#endif // DUAL_X_CARRIAGE - -/** - * Make sure auto fan pins don't conflict with the fan pin - */ -#if HAS_AUTO_FAN - #if HAS_FAN0 - #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN." - #endif - #endif -#endif - -#if HAS_FAN0 && CONTROLLERFAN_PIN == FAN_PIN - #error "You cannot set CONTROLLERFAN_PIN equal to FAN_PIN." -#endif - -#if HAS_CONTROLLERFAN - #if EXTRUDER_0_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_1_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_2_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_3_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #endif -#endif - -/** - * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set. - */ -#if !HAS_HEATER_0 - #error "HEATER_0_PIN not defined for this board." -#elif !PIN_EXISTS(TEMP_0) - #error "TEMP_0_PIN not defined for this board." -#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE) - #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board." -#elif TEMP_SENSOR_0 == 0 - #error "TEMP_SENSOR_0 is required." -#endif - -#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) - #if !HAS_HEATER_1 - #error "HEATER_1_PIN not defined for this board." - #endif -#endif - -#if HOTENDS > 1 - #if TEMP_SENSOR_1 == 0 - #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." - #elif !PIN_EXISTS(TEMP_1) - #error "TEMP_1_PIN not defined for this board." - #endif - #if HOTENDS > 2 - #if TEMP_SENSOR_2 == 0 - #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." - #elif !HAS_HEATER_2 - #error "HEATER_2_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_2) - #error "TEMP_2_PIN not defined for this board." - #endif - #if HOTENDS > 3 - #if TEMP_SENSOR_3 == 0 - #error "TEMP_SENSOR_3 is required with 4 HOTENDS." - #elif !HAS_HEATER_3 - #error "HEATER_3_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_3) - #error "TEMP_3_PIN not defined for this board." - #endif - #elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 3 extruders." - #endif - #elif TEMP_SENSOR_2 != 0 - #error "TEMP_SENSOR_2 shouldn't be set with only 2 extruders." - #elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 2 extruders." - #endif -#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT) - #error "TEMP_SENSOR_1 shouldn't be set with only 1 extruder." -#elif TEMP_SENSOR_2 != 0 - #error "TEMP_SENSOR_2 shouldn't be set with only 1 extruder." -#elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 1 extruder." -#endif - -#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0 - #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT." -#endif - -/** - * Basic 2-nozzle duplication mode + * OBSOLETE: Moved to SanityCheck.cpp */ -#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - #if HOTENDS != 2 - #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends." - #elif ENABLED(DUAL_X_CARRIAGE) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE." - #elif ENABLED(SINGLENOZZLE) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE." - #elif ENABLED(MIXING_EXTRUDER) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER." - #elif ENABLED(SWITCHING_EXTRUDER) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER." - #endif -#endif - -/** - * Test Extruder Pins - */ -#if EXTRUDERS > 3 - #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE) - #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board." - #endif -#elif EXTRUDERS > 2 - #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE) - #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board." - #endif -#elif EXTRUDERS > 1 - #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE) - #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board." - #endif -#endif - -/** - * Endstops - */ -#if DISABLED(USE_XMIN_PLUG) && DISABLED(USE_XMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _XMAX_ && Z2_USE_ENDSTOP <= _XMIN_) - #error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG" -#elif DISABLED(USE_YMIN_PLUG) && DISABLED(USE_YMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _YMAX_ && Z2_USE_ENDSTOP <= _YMIN_) - #error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG" -#elif DISABLED(USE_ZMIN_PLUG) && DISABLED(USE_ZMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _ZMAX_ && Z2_USE_ENDSTOP <= _ZMIN_) - #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG" -#elif ENABLED(Z_DUAL_ENDSTOPS) && !Z2_USE_ENDSTOP - #error "You must set Z2_USE_ENDSTOP with Z_DUAL_ENDSTOPS" -#endif - -/** - * emergency-command parser - */ -#if ENABLED(EMERGENCY_PARSER) && ENABLED(USBCON) - #error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)." -#endif - - /** - * Warnings for old configurations - */ -#if WATCH_TEMP_PERIOD > 500 - #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." -#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) - #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." -#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD) - #error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED." -#elif ENABLED(COREXZ) && ENABLED(Z_LATE_ENABLE) - #error "Z_LATE_ENABLE can't be used with COREXZ." -#elif defined(X_HOME_RETRACT_MM) - #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM." -#elif defined(BEEPER) - #error "BEEPER is now BEEPER_PIN. Please update your pins definitions." -#elif defined(SDCARDDETECT) - #error "SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions." -#elif defined(SDCARDDETECTINVERTED) - #error "SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration." -#elif defined(BTENABLED) - #error "BTENABLED is now BLUETOOTH. Please update your configuration." -#elif defined(CUSTOM_MENDEL_NAME) - #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration." -#elif defined(HAS_AUTOMATIC_VERSIONING) - #error "HAS_AUTOMATIC_VERSIONING is now USE_AUTOMATIC_VERSIONING. Please update your configuration." -#elif defined(ENABLE_AUTO_BED_LEVELING) - #error "ENABLE_AUTO_BED_LEVELING is now AUTO_BED_LEVELING_FEATURE. Please update your configuration." -#elif defined(SDSLOW) - #error "SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead." -#elif defined(SDEXTRASLOW) - #error "SDEXTRASLOW deprecated. Set SPI_SPEED to SPI_QUARTER_SPEED instead." -#elif defined(Z_RAISE_BEFORE_HOMING) - #error "Z_RAISE_BEFORE_HOMING is deprecated. Use MIN_Z_HEIGHT_FOR_HOMING instead." -#elif defined(FILAMENT_SENSOR) - #error "FILAMENT_SENSOR is deprecated. Use FILAMENT_WIDTH_SENSOR instead." -#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) - #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." -#elif ENABLED(Z_DUAL_ENDSTOPS) && !defined(Z2_USE_ENDSTOP) - #error "Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2" -#elif defined(LANGUAGE_INCLUDE) - #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE. Please update your configuration." -#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) - #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead." -#elif defined(PID_PARAMS_PER_EXTRUDER) - #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead." -#elif defined(EXTRUDER_WATTS) - #error "EXTRUDER_WATTS is deprecated. Use HOTEND_WATTS instead." -#elif defined(SERVO_ENDSTOP_ANGLES) - #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." -#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) - #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." -#elif defined(XY_TRAVEL_SPEED) - #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead." -#elif defined(PROBE_SERVO_DEACTIVATION_DELAY) - #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead." -#elif defined(SERVO_DEACTIVATION_DELAY) - #error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead." -#elif ENABLED(FILAMENTCHANGEENABLE) - #error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration." -#elif defined(PLA_PREHEAT_HOTEND_TEMP) - #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration." -#elif defined(PLA_PREHEAT_HPB_TEMP) - #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED. Please update your configuration." -#elif defined(PLA_PREHEAT_FAN_SPEED) - #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED. Please update your configuration." -#elif defined(ABS_PREHEAT_HOTEND_TEMP) - #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND. Please update your configuration." -#elif defined(ABS_PREHEAT_HPB_TEMP) - #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED. Please update your configuration." -#elif defined(ABS_PREHEAT_FAN_SPEED) - #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED. Please update your configuration." -#elif defined(ENDSTOPS_ONLY_FOR_HOMING) - #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead." -#elif defined(HOMING_FEEDRATE) - #error "HOMING_FEEDRATE is deprecated. Set individual rates with HOMING_FEEDRATE_(XY|Z|E) instead." -#endif - -#endif //SANITYCHECK_H +#error "Please remove all #include lines from your Configuration.h and Configuration_adv.h files!" diff --git a/Marlin/Version.h b/Marlin/Version.h index d17564b42a..6a34f6fd8e 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -26,59 +26,67 @@ * directive USE_AUTOMATIC_VERSIONING. */ -/** - * Marlin release version identifier - */ -#define SHORT_BUILD_VERSION "1.1.0-RCBugFix" +#if ENABLED(USE_AUTOMATIC_VERSIONING) -/** - * Verbose version identifier which should contain a reference to the location - * from where the binary was downloaded or the source code was compiled. - */ -#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (Github)" + #include "_Version.h" -/** - * The STRING_DISTRIBUTION_DATE represents when the binary file was built, - * here we define this default string as the date where the latest release - * version was tagged. - */ -#define STRING_DISTRIBUTION_DATE "2016-04-27 12:00" +#else -/** - * Required minimum Configuration.h and Configuration_adv.h file versions. - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option on - * the configuration files. - */ -#define REQUIRED_CONFIGURATION_H_VERSION 010100 -#define REQUIRED_CONFIGURATION_ADV_H_VERSION 010100 + /** + * Marlin release version identifier + */ + #define SHORT_BUILD_VERSION "1.1.0-RCBugFix" -/** - * @todo: Missing documentation block - */ -#define PROTOCOL_VERSION "1.0" + /** + * Verbose version identifier which should contain a reference to the location + * from where the binary was downloaded or the source code was compiled. + */ + #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (Github)" -/** - * Defines a generic printer name to be output to the LCD after booting Marlin. - */ -#define MACHINE_NAME "3D Printer" + /** + * The STRING_DISTRIBUTION_DATE represents when the binary file was built, + * here we define this default string as the date where the latest release + * version was tagged. + */ + #define STRING_DISTRIBUTION_DATE "2016-04-27 12:00" -/** - * The SOURCE_CODE_URL is the location where users will find the Marlin Source - * Code which is installed on the device. In most cases —unless the manufacturer - * has a distinct Github fork— the Source Code URL should just be the main - * Marlin repository. - */ -#define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin" + /** + * Required minimum Configuration.h and Configuration_adv.h file versions. + * + * You must increment this version number for every significant change such as, + * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option on + * the configuration files. + */ + #define REQUIRED_CONFIGURATION_H_VERSION 010100 + #define REQUIRED_CONFIGURATION_ADV_H_VERSION 010100 -/** - * Default generic printer UUID. - */ -#define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff" + /** + * @todo: Missing documentation block + */ + #define PROTOCOL_VERSION "1.0" -/** - * The WEBSITE_URL is the location where users can get more information such as - * documentation about a specific Marlin release. - */ -#define WEBSITE_URL "http://marlinfw.org" + /** + * Defines a generic printer name to be output to the LCD after booting Marlin. + */ + #define MACHINE_NAME "3D Printer" + + /** + * The SOURCE_CODE_URL is the location where users will find the Marlin Source + * Code which is installed on the device. In most cases —unless the manufacturer + * has a distinct Github fork— the Source Code URL should just be the main + * Marlin repository. + */ + #define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin" + + /** + * Default generic printer UUID. + */ + #define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff" + + /** + * The WEBSITE_URL is the location where users can get more information such as + * documentation about a specific Marlin release. + */ + #define WEBSITE_URL "http://marlinfw.org" + +#endif // USE_AUTOMATIC_VERSIONING diff --git a/Marlin/configuration_store.h b/Marlin/configuration_store.h index 2b2680607a..891f19fb97 100644 --- a/Marlin/configuration_store.h +++ b/Marlin/configuration_store.h @@ -23,7 +23,7 @@ #ifndef CONFIGURATION_STORE_H #define CONFIGURATION_STORE_H -#include "Configuration.h" +#include "MarlinConfig.h" void Config_ResetDefault(); diff --git a/Marlin/dac_mcp4728.h b/Marlin/dac_mcp4728.h index 26c54840fe..c096c856a9 100644 --- a/Marlin/dac_mcp4728.h +++ b/Marlin/dac_mcp4728.h @@ -27,8 +27,7 @@ #ifndef mcp4728_h #define mcp4728_h -#include "Configuration.h" -#include "Configuration_adv.h" +#include "MarlinConfig.h" #if ENABLED(DAC_STEPPER_CURRENT) #include "Wire.h" diff --git a/Marlin/digipot_mcp4451.cpp b/Marlin/digipot_mcp4451.cpp index 771581341a..c6a01915f3 100644 --- a/Marlin/digipot_mcp4451.cpp +++ b/Marlin/digipot_mcp4451.cpp @@ -20,7 +20,7 @@ * */ -#include "Configuration.h" +#include "MarlinConfig.h" #if ENABLED(DIGIPOT_I2C) diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index feaaefa172..2ac06d1e81 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // #define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/Cartesio/Configuration_adv.h b/Marlin/example_configurations/Cartesio/Configuration_adv.h index 4229d54876..1c75864f27 100644 --- a/Marlin/example_configurations/Cartesio/Configuration_adv.h +++ b/Marlin/example_configurations/Cartesio/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/Cartesio/_Bootscreen.h b/Marlin/example_configurations/Cartesio/_Bootscreen.h index 93de4f143f..a365caee75 100644 --- a/Marlin/example_configurations/Cartesio/_Bootscreen.h +++ b/Marlin/example_configurations/Cartesio/_Bootscreen.h @@ -35,7 +35,7 @@ #define CUSTOM_BOOTSCREEN_BMPWIDTH 63 #define CUSTOM_BOOTSCREEN_BMPHEIGHT 64 -const unsigned char 81x0i84fkcmoqbu7vte29[512] PROGMEM = { +const unsigned char custom_start_bmp[512] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 0fc8563084..7bd240eda2 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1320,7 +1308,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index bc9b589fe1..84df934685 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index 602a1b55e3..09a97f1e1d 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1318,7 +1306,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index f6a2f1def2..47b72e461c 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1329,7 +1317,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index bd6f99e8b3..76fdb6b6fe 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index 73878728da..a4eb3a30d4 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,10 +103,6 @@ // example configuration folder. // #define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif - // @section machine // SERIAL_PORT selects which serial port should be used for communication with the host. @@ -1331,7 +1318,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h index 6d017cde38..e5fbb00718 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 61d704467b..933b229d4e 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -58,9 +58,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -93,12 +90,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -119,9 +110,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1354,7 +1342,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index 45c8cfb801..8a30f6bfb6 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -52,8 +52,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -804,7 +802,4 @@ const unsigned int dropsegments = 2; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h index b86d146f01..4cbf03c11c 100644 --- a/Marlin/example_configurations/K8400/Configuration.h +++ b/Marlin/example_configurations/K8400/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/K8400/Configuration_adv.h b/Marlin/example_configurations/K8400/Configuration_adv.h index 4cb3565204..f2b93daca5 100644 --- a/Marlin/example_configurations/K8400/Configuration_adv.h +++ b/Marlin/example_configurations/K8400/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h index a1d4d7d616..390b07e2da 100644 --- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index d09a463145..7fe8a6a5f0 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index 57f0f455ee..ac2411b678 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/RigidBot/Configuration_adv.h b/Marlin/example_configurations/RigidBot/Configuration_adv.h index 686a9d5f1c..f8d8223a48 100644 --- a/Marlin/example_configurations/RigidBot/Configuration_adv.h +++ b/Marlin/example_configurations/RigidBot/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 6c3e2de8f1..52a56937c8 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -111,12 +108,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -137,9 +128,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1345,7 +1333,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index e6f63af5f9..a142085ee5 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index 6cac78e91a..b3ac585452 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1358,7 +1346,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/TAZ4/Configuration_adv.h b/Marlin/example_configurations/TAZ4/Configuration_adv.h index 93c0418605..e3546f0fd2 100644 --- a/Marlin/example_configurations/TAZ4/Configuration_adv.h +++ b/Marlin/example_configurations/TAZ4/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -806,7 +804,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 8f15e51e6d..ad08e0e022 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,10 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif - // @section machine // SERIAL_PORT selects which serial port should be used for communication with the host. @@ -1329,7 +1316,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index bd6f99e8b3..76fdb6b6fe 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 0ec16f57bc..b733bd6af3 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1337,7 +1325,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 67c55aaadd..673e167ff6 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1429,7 +1417,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h b/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h index 91b4ac3f21..d79183abf1 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -800,7 +798,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index e257309522..f321eafebb 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1423,7 +1411,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 5995579ee0..bf4fe71265 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -800,7 +798,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index fa7aabddce..50e42936d9 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1426,7 +1414,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index a29745937b..33f5d35ffc 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -799,7 +797,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 13898efc0f..2726e9a2cf 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -57,9 +57,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -92,12 +89,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -118,9 +109,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1426,7 +1414,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h index 534779c181..d54a8ac3b8 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h @@ -51,8 +51,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -804,7 +802,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index f7a5d84746..7a0ff37ba8 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -79,12 +76,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -105,9 +96,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1429,7 +1417,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h index 38a0542b6c..0b1d206354 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -800,7 +798,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 6c91f2888e..79907874f4 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,9 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_bootscreen.h" -#endif // @section machine @@ -1340,7 +1328,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index 0c5b2da028..e21cbf3c52 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index a7e3f04f8c..36f6d3c5f5 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -51,9 +51,6 @@ */ #define CONFIGURATION_H_VERSION 010100 -#include "boards.h" -#include "macros.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== @@ -86,12 +83,6 @@ // @section info -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -112,10 +103,6 @@ // example configuration folder. // //#define SHOW_CUSTOM_BOOTSCREEN -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif - // @section machine // SERIAL_PORT selects which serial port should be used for communication with the host. @@ -1331,7 +1318,4 @@ //#define FILAMENT_LCD_DISPLAY #endif -#include "Configuration_adv.h" -#include "thermistortables.h" - -#endif //CONFIGURATION_H +#endif // CONFIGURATION_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index 28269ec263..83bc8899f7 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -46,8 +46,6 @@ */ #define CONFIGURATION_ADV_H_VERSION 010100 -#include "Conditionals.h" - // @section temperature //=========================================================================== @@ -798,7 +796,4 @@ const unsigned int dropsegments = 5; //everything with less than this number of //#define EXPERIMENTAL_I2CBUS -#include "Conditionals.h" -#include "SanityCheck.h" - -#endif //CONFIGURATION_ADV_H +#endif // CONFIGURATION_ADV_H diff --git a/Marlin/language.h b/Marlin/language.h index 4e53c48903..496fed5c96 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -23,7 +23,7 @@ #ifndef LANGUAGE_H #define LANGUAGE_H -#include "Configuration.h" +#include "MarlinConfig.h" // Fallback if no language is set. DON'T CHANGE #ifndef LCD_LANGUAGE @@ -68,12 +68,6 @@ // pt_utf8 Portuguese (UTF8) // ru Russian -#if ENABLED(USE_AUTOMATIC_VERSIONING) - #include "_Version.h" -#else - #include "Version.h" -#endif - #ifdef DEFAULT_SOURCE_CODE_URL #undef SOURCE_CODE_URL #define SOURCE_CODE_URL DEFAULT_SOURCE_CODE_URL diff --git a/Marlin/macros.h b/Marlin/macros.h index bf2d07180b..c228ac3ed0 100644 --- a/Marlin/macros.h +++ b/Marlin/macros.h @@ -23,6 +23,17 @@ #ifndef MACROS_H #define MACROS_H +#define FORCE_INLINE __attribute__((always_inline)) inline + +// Bracket code that shouldn't be interrupted +#ifndef CRITICAL_SECTION_START + #define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli(); + #define CRITICAL_SECTION_END SREG = _sreg; +#endif + +// Remove compiler warning on an unused variable +#define UNUSED(x) (void) (x) + // Macros to make a string from a macro #define STRINGIFY_(M) #M #define STRINGIFY(M) STRINGIFY_(M) @@ -34,6 +45,9 @@ #define SET_BIT(n,b,value) (n) ^= ((-value)^(n)) & (_BV(b)) // Macros for maths shortcuts +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif #define RADIANS(d) ((d)*M_PI/180.0) #define DEGREES(r) ((r)*180.0/M_PI) #define HYPOT(x,y) sqrt(sq(x)+sq(y)) diff --git a/Marlin/qr_solve.h b/Marlin/qr_solve.h index b985d622f2..3ea30e9e7d 100644 --- a/Marlin/qr_solve.h +++ b/Marlin/qr_solve.h @@ -20,7 +20,7 @@ * */ -#include "Configuration.h" +#include "MarlinConfig.h" #if ENABLED(AUTO_BED_LEVELING_GRID) diff --git a/Marlin/servo.cpp b/Marlin/servo.cpp index c9708b8d84..b5f9ed86da 100644 --- a/Marlin/servo.cpp +++ b/Marlin/servo.cpp @@ -50,7 +50,7 @@ * detach() - Stop an attached servo from pulsing its i/o pin. * */ -#include "Configuration.h" +#include "MarlinConfig.h" #if HAS_SERVOS diff --git a/Marlin/stepper_indirection.cpp b/Marlin/stepper_indirection.cpp index d7d627a02d..101249e3c8 100644 --- a/Marlin/stepper_indirection.cpp +++ b/Marlin/stepper_indirection.cpp @@ -43,7 +43,7 @@ #include "stepper_indirection.h" -#include "Configuration.h" +#include "MarlinConfig.h" #if ENABLED(HAVE_TMCDRIVER) #include diff --git a/Marlin/stepper_indirection.h b/Marlin/stepper_indirection.h index 6326663683..6fd19dd4d5 100644 --- a/Marlin/stepper_indirection.h +++ b/Marlin/stepper_indirection.h @@ -44,7 +44,7 @@ #ifndef STEPPER_INDIRECTION_H #define STEPPER_INDIRECTION_H -#include "Configuration.h" +#include "MarlinConfig.h" // TMC26X drivers have STEP/DIR on normal pins, but ENABLE via SPI #if ENABLED(HAVE_TMCDRIVER) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 666edd90f9..172014e7f1 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -27,6 +27,7 @@ #include "Marlin.h" #include "ultralcd.h" #include "temperature.h" +#include "thermistortables.h" #include "language.h" #include "Sd2PinMap.h" diff --git a/Marlin/temperature.h b/Marlin/temperature.h index 8fab0db3dd..47d6af2738 100644 --- a/Marlin/temperature.h +++ b/Marlin/temperature.h @@ -29,6 +29,7 @@ #include "Marlin.h" #include "planner.h" +#include "thermistortables.h" #if ENABLED(PID_ADD_EXTRUSION_RATE) #include "stepper.h" diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h index 218f3217bc..43b76a9957 100644 --- a/Marlin/ultralcd_impl_DOGM.h +++ b/Marlin/ultralcd_impl_DOGM.h @@ -36,6 +36,8 @@ #ifndef ULTRALCD_IMPL_DOGM_H #define ULTRALCD_IMPL_DOGM_H +#include "MarlinConfig.h" + /** * Implementation of the LCD display routines for a DOGM128 graphic display. * These are common LCD 128x64 pixel graphic displays. @@ -51,20 +53,21 @@ #define LCD_CLICKED (buttons&EN_C) #endif -#include #include "dogm_bitmaps.h" - #include "ultralcd.h" #include "ultralcd_st7920_u8glib_rrd.h" -#include "Configuration.h" - #include "duration_t.h" +#include + +#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) + #include "_Bootscreen.h" +#endif + #if DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_NON) && ENABLED(USE_BIG_EDIT_FONT) #undef USE_BIG_EDIT_FONT #endif - #if ENABLED(USE_SMALL_INFOFONT) #include "dogm_font_data_6x9_marlin.h" #define FONT_STATUSMENU_NAME u8g_font_6x9 @@ -146,7 +149,7 @@ #elif ENABLED(U8GLIB_ST7920) //U8GLIB_ST7920_128X64_RRD u8g(0,0,0); U8GLIB_ST7920_128X64_RRD u8g(0); -#elif defined(CARTESIO_UI) +#elif ENABLED(CARTESIO_UI) // The CartesioUI display #if DOGLCD_MOSI != -1 && DOGLCD_SCK != -1 // using SW-SPI