Compare commits
No commits in common. "b663bc21d8c30069d40c2af776957d4687288ad2" and "8465818754884c6aeed668a6f9eed31196aa00ba" have entirely different histories.
b663bc21d8
...
8465818754
@ -35,7 +35,7 @@
|
|||||||
*
|
*
|
||||||
* Advanced settings can be found in Configuration_adv.h
|
* Advanced settings can be found in Configuration_adv.h
|
||||||
*/
|
*/
|
||||||
#define CONFIGURATION_H_VERSION 02010000
|
#define CONFIGURATION_H_VERSION 02000904
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Getting Started =============================
|
//============================= Getting Started =============================
|
||||||
@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
// Choose the name from boards.h that matches your setup
|
// Choose the name from boards.h that matches your setup
|
||||||
#ifndef MOTHERBOARD
|
#ifndef MOTHERBOARD
|
||||||
#define MOTHERBOARD BOARD_MKS_GEN_13
|
#define MOTHERBOARD BOARD_RAMPS_14_EFB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -120,7 +120,7 @@
|
|||||||
*
|
*
|
||||||
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
|
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
|
||||||
*/
|
*/
|
||||||
#define BAUDRATE 115200
|
#define BAUDRATE 250000
|
||||||
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
|
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,12 +165,12 @@
|
|||||||
* TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
|
* TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
|
||||||
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
|
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
|
||||||
*/
|
*/
|
||||||
#define X_DRIVER_TYPE TMC2209
|
#define X_DRIVER_TYPE A4988
|
||||||
#define Y_DRIVER_TYPE TMC2209
|
#define Y_DRIVER_TYPE A4988
|
||||||
#define Z_DRIVER_TYPE DRV8825
|
#define Z_DRIVER_TYPE A4988
|
||||||
//#define X2_DRIVER_TYPE A4988
|
//#define X2_DRIVER_TYPE A4988
|
||||||
//#define Y2_DRIVER_TYPE A4988
|
//#define Y2_DRIVER_TYPE A4988
|
||||||
#define Z2_DRIVER_TYPE DRV8825
|
//#define Z2_DRIVER_TYPE A4988
|
||||||
//#define Z3_DRIVER_TYPE A4988
|
//#define Z3_DRIVER_TYPE A4988
|
||||||
//#define Z4_DRIVER_TYPE A4988
|
//#define Z4_DRIVER_TYPE A4988
|
||||||
//#define I_DRIVER_TYPE A4988
|
//#define I_DRIVER_TYPE A4988
|
||||||
@ -179,7 +179,7 @@
|
|||||||
//#define U_DRIVER_TYPE A4988
|
//#define U_DRIVER_TYPE A4988
|
||||||
//#define V_DRIVER_TYPE A4988
|
//#define V_DRIVER_TYPE A4988
|
||||||
//#define W_DRIVER_TYPE A4988
|
//#define W_DRIVER_TYPE A4988
|
||||||
#define E0_DRIVER_TYPE TMC2209
|
#define E0_DRIVER_TYPE A4988
|
||||||
//#define E1_DRIVER_TYPE A4988
|
//#define E1_DRIVER_TYPE A4988
|
||||||
//#define E2_DRIVER_TYPE A4988
|
//#define E2_DRIVER_TYPE A4988
|
||||||
//#define E3_DRIVER_TYPE A4988
|
//#define E3_DRIVER_TYPE A4988
|
||||||
@ -546,7 +546,7 @@
|
|||||||
#define TEMP_SENSOR_5 0
|
#define TEMP_SENSOR_5 0
|
||||||
#define TEMP_SENSOR_6 0
|
#define TEMP_SENSOR_6 0
|
||||||
#define TEMP_SENSOR_7 0
|
#define TEMP_SENSOR_7 0
|
||||||
#define TEMP_SENSOR_BED 1
|
#define TEMP_SENSOR_BED 0
|
||||||
#define TEMP_SENSOR_PROBE 0
|
#define TEMP_SENSOR_PROBE 0
|
||||||
#define TEMP_SENSOR_CHAMBER 0
|
#define TEMP_SENSOR_CHAMBER 0
|
||||||
#define TEMP_SENSOR_COOLER 0
|
#define TEMP_SENSOR_COOLER 0
|
||||||
@ -652,9 +652,9 @@
|
|||||||
#define DEFAULT_Ki_LIST { 1.08, 1.08 }
|
#define DEFAULT_Ki_LIST { 1.08, 1.08 }
|
||||||
#define DEFAULT_Kd_LIST { 114.00, 114.00 }
|
#define DEFAULT_Kd_LIST { 114.00, 114.00 }
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_Kp 10.71
|
#define DEFAULT_Kp 22.20
|
||||||
#define DEFAULT_Ki 0.51
|
#define DEFAULT_Ki 1.08
|
||||||
#define DEFAULT_Kd 56.57
|
#define DEFAULT_Kd 114.00
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -717,7 +717,7 @@
|
|||||||
* heater. If your configuration is significantly different than this and you don't understand
|
* heater. If your configuration is significantly different than this and you don't understand
|
||||||
* the issues involved, don't use bed PID until someone else verifies that your hardware works.
|
* the issues involved, don't use bed PID until someone else verifies that your hardware works.
|
||||||
*/
|
*/
|
||||||
#define PIDTEMPBED
|
//#define PIDTEMPBED
|
||||||
|
|
||||||
//#define BED_LIMIT_SWITCHING
|
//#define BED_LIMIT_SWITCHING
|
||||||
|
|
||||||
@ -733,22 +733,11 @@
|
|||||||
//#define MIN_BED_POWER 0
|
//#define MIN_BED_POWER 0
|
||||||
//#define PID_BED_DEBUG // Sends debug data to the serial port.
|
//#define PID_BED_DEBUG // Sends debug data to the serial port.
|
||||||
|
|
||||||
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
// 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||||
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
// from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
||||||
// #define DEFAULT_bedKp 10.00
|
#define DEFAULT_bedKp 10.00
|
||||||
// #define DEFAULT_bedKi .023
|
#define DEFAULT_bedKi .023
|
||||||
// #define DEFAULT_bedKd 305.4
|
#define DEFAULT_bedKd 305.4
|
||||||
|
|
||||||
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
|
||||||
//from pidautotune
|
|
||||||
//#define DEFAULT_bedKp 97.1
|
|
||||||
//#define DEFAULT_bedKi 1.41
|
|
||||||
//#define DEFAULT_bedKd 1675.16
|
|
||||||
|
|
||||||
// RigidBot
|
|
||||||
#define DEFAULT_bedKp 355
|
|
||||||
#define DEFAULT_bedKi 66.5
|
|
||||||
#define DEFAULT_bedKd 480
|
|
||||||
|
|
||||||
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
||||||
#endif // PIDTEMPBED
|
#endif // PIDTEMPBED
|
||||||
@ -955,8 +944,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
|
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
|
||||||
#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
|
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||||
#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
|
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||||
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||||
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||||
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
|
||||||
@ -1021,14 +1010,14 @@
|
|||||||
* Override with M92
|
* Override with M92
|
||||||
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80.8, 80, 3200, 114.3 } // 1/16 1/16 1/32 1/16 microsteps
|
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default Max Feed Rate (linear=mm/s, rotational=°/s)
|
* Default Max Feed Rate (linear=mm/s, rotational=°/s)
|
||||||
* Override with M203
|
* Override with M203
|
||||||
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_MAX_FEEDRATE { 500, 500, 4, 40 }
|
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
|
||||||
|
|
||||||
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
|
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
|
||||||
#if ENABLED(LIMITED_MAX_FR_EDITING)
|
#if ENABLED(LIMITED_MAX_FR_EDITING)
|
||||||
@ -1041,7 +1030,7 @@
|
|||||||
* Override with M201
|
* Override with M201
|
||||||
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_MAX_ACCELERATION { 600, 600, 100, 10000 }
|
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
|
||||||
|
|
||||||
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
|
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
|
||||||
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
|
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
|
||||||
@ -1056,8 +1045,8 @@
|
|||||||
* M204 R Retract Acceleration
|
* M204 R Retract Acceleration
|
||||||
* M204 T Travel Acceleration
|
* M204 T Travel Acceleration
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_ACCELERATION 600 // X, Y, Z and E acceleration for printing moves
|
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts
|
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
|
||||||
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
|
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1068,11 +1057,11 @@
|
|||||||
* When changing speed and direction, if the difference is less than the
|
* When changing speed and direction, if the difference is less than the
|
||||||
* value set here, it may happen instantaneously.
|
* value set here, it may happen instantaneously.
|
||||||
*/
|
*/
|
||||||
#define CLASSIC_JERK
|
//#define CLASSIC_JERK
|
||||||
#if ENABLED(CLASSIC_JERK)
|
#if ENABLED(CLASSIC_JERK)
|
||||||
#define DEFAULT_YJERK 10
|
#define DEFAULT_XJERK 10.0
|
||||||
#define DEFAULT_XJERK 10
|
#define DEFAULT_YJERK 10.0
|
||||||
#define DEFAULT_ZJERK 0.4
|
#define DEFAULT_ZJERK 0.3
|
||||||
//#define DEFAULT_IJERK 0.3
|
//#define DEFAULT_IJERK 0.3
|
||||||
//#define DEFAULT_JJERK 0.3
|
//#define DEFAULT_JJERK 0.3
|
||||||
//#define DEFAULT_KJERK 0.3
|
//#define DEFAULT_KJERK 0.3
|
||||||
@ -1111,7 +1100,7 @@
|
|||||||
*
|
*
|
||||||
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
|
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
|
||||||
*/
|
*/
|
||||||
#define S_CURVE_ACCELERATION
|
//#define S_CURVE_ACCELERATION
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Z Probe Options =============================
|
//============================= Z Probe Options =============================
|
||||||
@ -1184,7 +1173,7 @@
|
|||||||
/**
|
/**
|
||||||
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
|
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
|
||||||
*/
|
*/
|
||||||
#define BLTOUCH
|
//#define BLTOUCH
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MagLev V4 probe by MDD
|
* MagLev V4 probe by MDD
|
||||||
@ -1287,7 +1276,7 @@
|
|||||||
* | [-] |
|
* | [-] |
|
||||||
* O-- FRONT --+
|
* O-- FRONT --+
|
||||||
*/
|
*/
|
||||||
#define NOZZLE_TO_PROBE_OFFSET { -61, -3, -3.875 }
|
#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
|
||||||
|
|
||||||
// Most probes should stay away from the edges of the bed, but
|
// Most probes should stay away from the edges of the bed, but
|
||||||
// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
|
// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
|
||||||
@ -1444,9 +1433,9 @@
|
|||||||
// @section machine
|
// @section machine
|
||||||
|
|
||||||
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
|
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
|
||||||
#define INVERT_X_DIR true
|
#define INVERT_X_DIR false
|
||||||
#define INVERT_Y_DIR false
|
#define INVERT_Y_DIR true
|
||||||
#define INVERT_Z_DIR true
|
#define INVERT_Z_DIR false
|
||||||
//#define INVERT_I_DIR false
|
//#define INVERT_I_DIR false
|
||||||
//#define INVERT_J_DIR false
|
//#define INVERT_J_DIR false
|
||||||
//#define INVERT_K_DIR false
|
//#define INVERT_K_DIR false
|
||||||
@ -1457,7 +1446,7 @@
|
|||||||
// @section extruder
|
// @section extruder
|
||||||
|
|
||||||
// For direct drive extruder v9 set to true, for geared extruder set to false.
|
// For direct drive extruder v9 set to true, for geared extruder set to false.
|
||||||
#define INVERT_E0_DIR true
|
#define INVERT_E0_DIR false
|
||||||
#define INVERT_E1_DIR false
|
#define INVERT_E1_DIR false
|
||||||
#define INVERT_E2_DIR false
|
#define INVERT_E2_DIR false
|
||||||
#define INVERT_E3_DIR false
|
#define INVERT_E3_DIR false
|
||||||
@ -1497,9 +1486,9 @@
|
|||||||
|
|
||||||
// @section machine
|
// @section machine
|
||||||
|
|
||||||
// The size of the print bed
|
// The size of the printable area
|
||||||
#define X_BED_SIZE 220
|
#define X_BED_SIZE 200
|
||||||
#define Y_BED_SIZE 240
|
#define Y_BED_SIZE 200
|
||||||
|
|
||||||
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
|
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
|
||||||
#define X_MIN_POS 0
|
#define X_MIN_POS 0
|
||||||
@ -1507,7 +1496,7 @@
|
|||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
#define X_MAX_POS X_BED_SIZE
|
#define X_MAX_POS X_BED_SIZE
|
||||||
#define Y_MAX_POS Y_BED_SIZE
|
#define Y_MAX_POS Y_BED_SIZE
|
||||||
#define Z_MAX_POS 250
|
#define Z_MAX_POS 200
|
||||||
//#define I_MIN_POS 0
|
//#define I_MIN_POS 0
|
||||||
//#define I_MAX_POS 50
|
//#define I_MAX_POS 50
|
||||||
//#define J_MIN_POS 0
|
//#define J_MIN_POS 0
|
||||||
@ -1677,7 +1666,7 @@
|
|||||||
*/
|
*/
|
||||||
//#define AUTO_BED_LEVELING_3POINT
|
//#define AUTO_BED_LEVELING_3POINT
|
||||||
//#define AUTO_BED_LEVELING_LINEAR
|
//#define AUTO_BED_LEVELING_LINEAR
|
||||||
#define AUTO_BED_LEVELING_BILINEAR
|
//#define AUTO_BED_LEVELING_BILINEAR
|
||||||
//#define AUTO_BED_LEVELING_UBL
|
//#define AUTO_BED_LEVELING_UBL
|
||||||
//#define MESH_BED_LEVELING
|
//#define MESH_BED_LEVELING
|
||||||
|
|
||||||
@ -1686,7 +1675,7 @@
|
|||||||
* these options to restore the prior leveling state or to always enable
|
* these options to restore the prior leveling state or to always enable
|
||||||
* leveling immediately after G28.
|
* leveling immediately after G28.
|
||||||
*/
|
*/
|
||||||
#define RESTORE_LEVELING_AFTER_G28
|
//#define RESTORE_LEVELING_AFTER_G28
|
||||||
//#define ENABLE_LEVELING_AFTER_G28
|
//#define ENABLE_LEVELING_AFTER_G28
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1728,7 +1717,7 @@
|
|||||||
/**
|
/**
|
||||||
* Enable the G26 Mesh Validation Pattern tool.
|
* Enable the G26 Mesh Validation Pattern tool.
|
||||||
*/
|
*/
|
||||||
#define G26_MESH_VALIDATION
|
//#define G26_MESH_VALIDATION
|
||||||
#if ENABLED(G26_MESH_VALIDATION)
|
#if ENABLED(G26_MESH_VALIDATION)
|
||||||
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
|
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
|
||||||
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
|
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
|
||||||
@ -1754,7 +1743,7 @@
|
|||||||
|
|
||||||
// Beyond the probed grid, continue the implied tilt?
|
// Beyond the probed grid, continue the implied tilt?
|
||||||
// Default is to maintain the height of the nearest edge.
|
// Default is to maintain the height of the nearest edge.
|
||||||
#define EXTRAPOLATE_BEYOND_GRID
|
//#define EXTRAPOLATE_BEYOND_GRID
|
||||||
|
|
||||||
//
|
//
|
||||||
// Experimental Subdivision of the grid by Catmull-Rom method.
|
// Experimental Subdivision of the grid by Catmull-Rom method.
|
||||||
@ -1808,7 +1797,7 @@
|
|||||||
* Add a bed leveling sub-menu for ABL or MBL.
|
* Add a bed leveling sub-menu for ABL or MBL.
|
||||||
* Include a guided procedure if manual probing is enabled.
|
* Include a guided procedure if manual probing is enabled.
|
||||||
*/
|
*/
|
||||||
#define LCD_BED_LEVELING
|
//#define LCD_BED_LEVELING
|
||||||
|
|
||||||
#if ENABLED(LCD_BED_LEVELING)
|
#if ENABLED(LCD_BED_LEVELING)
|
||||||
#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
|
#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
|
||||||
@ -1881,7 +1870,7 @@
|
|||||||
* - Allows Z homing only when XY positions are known and trusted.
|
* - Allows Z homing only when XY positions are known and trusted.
|
||||||
* - If stepper drivers sleep, XY homing may be required again before Z homing.
|
* - If stepper drivers sleep, XY homing may be required again before Z homing.
|
||||||
*/
|
*/
|
||||||
#define Z_SAFE_HOMING
|
//#define Z_SAFE_HOMING
|
||||||
|
|
||||||
#if ENABLED(Z_SAFE_HOMING)
|
#if ENABLED(Z_SAFE_HOMING)
|
||||||
#define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing
|
#define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing
|
||||||
@ -1966,8 +1955,8 @@
|
|||||||
* M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
|
* M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
|
||||||
* M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
|
* M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
|
||||||
*/
|
*/
|
||||||
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
|
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501
|
||||||
//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
|
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
|
||||||
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
|
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
|
||||||
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
|
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
|
||||||
#if ENABLED(EEPROM_SETTINGS)
|
#if ENABLED(EEPROM_SETTINGS)
|
||||||
@ -2239,7 +2228,7 @@
|
|||||||
* SD Card support is disabled by default. If your controller has an SD slot,
|
* SD Card support is disabled by default. If your controller has an SD slot,
|
||||||
* you must uncomment the following option or it won't work.
|
* you must uncomment the following option or it won't work.
|
||||||
*/
|
*/
|
||||||
#define SDSUPPORT
|
//#define SDSUPPORT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SD CARD: ENABLE CRC
|
* SD CARD: ENABLE CRC
|
||||||
@ -2286,7 +2275,7 @@
|
|||||||
//
|
//
|
||||||
// Set this option if CLOCKWISE causes values to DECREASE
|
// Set this option if CLOCKWISE causes values to DECREASE
|
||||||
//
|
//
|
||||||
#define REVERSE_ENCODER_DIRECTION
|
//#define REVERSE_ENCODER_DIRECTION
|
||||||
|
|
||||||
//
|
//
|
||||||
// This option reverses the encoder direction for navigating LCD menus.
|
// This option reverses the encoder direction for navigating LCD menus.
|
||||||
@ -2309,7 +2298,7 @@
|
|||||||
//
|
//
|
||||||
// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
|
// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
|
||||||
//
|
//
|
||||||
#define INDIVIDUAL_AXIS_HOMING_MENU
|
//#define INDIVIDUAL_AXIS_HOMING_MENU
|
||||||
//#define INDIVIDUAL_AXIS_HOMING_SUBMENU
|
//#define INDIVIDUAL_AXIS_HOMING_SUBMENU
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -2318,7 +2307,7 @@
|
|||||||
// If you have a speaker that can produce tones, enable it here.
|
// If you have a speaker that can produce tones, enable it here.
|
||||||
// By default Marlin assumes you have a buzzer with a fixed frequency.
|
// By default Marlin assumes you have a buzzer with a fixed frequency.
|
||||||
//
|
//
|
||||||
#define SPEAKER
|
//#define SPEAKER
|
||||||
|
|
||||||
//
|
//
|
||||||
// The duration and frequency for the UI feedback sound.
|
// The duration and frequency for the UI feedback sound.
|
||||||
@ -2341,7 +2330,7 @@
|
|||||||
//
|
//
|
||||||
// Note: Usually sold with a white PCB.
|
// Note: Usually sold with a white PCB.
|
||||||
//
|
//
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||||
|
|
||||||
//
|
//
|
||||||
// GT2560 (YHCB2004) LCD Display
|
// GT2560 (YHCB2004) LCD Display
|
||||||
@ -2971,7 +2960,7 @@
|
|||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
#define FAN_SOFT_PWM
|
//#define FAN_SOFT_PWM
|
||||||
|
|
||||||
// Incrementing this by 1 will double the software PWM frequency,
|
// Incrementing this by 1 will double the software PWM frequency,
|
||||||
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
|
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
*
|
*
|
||||||
* Basic settings can be found in Configuration.h
|
* Basic settings can be found in Configuration.h
|
||||||
*/
|
*/
|
||||||
#define CONFIGURATION_ADV_H_VERSION 02010000
|
#define CONFIGURATION_ADV_H_VERSION 02000904
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Thermal Settings ============================
|
//============================= Thermal Settings ============================
|
||||||
@ -266,8 +266,8 @@
|
|||||||
* THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
|
* THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
|
||||||
*/
|
*/
|
||||||
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
||||||
#define THERMAL_PROTECTION_PERIOD 60 // Seconds
|
#define THERMAL_PROTECTION_PERIOD 40 // Seconds
|
||||||
#define THERMAL_PROTECTION_HYSTERESIS 10 // Degrees Celsius
|
#define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius
|
||||||
|
|
||||||
//#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
|
//#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
|
||||||
#if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
|
#if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
|
||||||
@ -596,7 +596,7 @@
|
|||||||
* Multiple extruders can be assigned to the same pin in which case
|
* Multiple extruders can be assigned to the same pin in which case
|
||||||
* the fan will turn on when any selected extruder is above the threshold.
|
* the fan will turn on when any selected extruder is above the threshold.
|
||||||
*/
|
*/
|
||||||
#define E0_AUTO_FAN_PIN 7
|
#define E0_AUTO_FAN_PIN -1
|
||||||
#define E1_AUTO_FAN_PIN -1
|
#define E1_AUTO_FAN_PIN -1
|
||||||
#define E2_AUTO_FAN_PIN -1
|
#define E2_AUTO_FAN_PIN -1
|
||||||
#define E3_AUTO_FAN_PIN -1
|
#define E3_AUTO_FAN_PIN -1
|
||||||
@ -608,9 +608,9 @@
|
|||||||
#define COOLER_AUTO_FAN_PIN -1
|
#define COOLER_AUTO_FAN_PIN -1
|
||||||
|
|
||||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||||
#define EXTRUDER_AUTO_FAN_SPEED 165 // 255 == full speed
|
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
|
||||||
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
|
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
|
||||||
#define CHAMBER_AUTO_FAN_SPEED 165
|
#define CHAMBER_AUTO_FAN_SPEED 255
|
||||||
#define COOLER_AUTO_FAN_TEMPERATURE 18
|
#define COOLER_AUTO_FAN_TEMPERATURE 18
|
||||||
#define COOLER_AUTO_FAN_SPEED 255
|
#define COOLER_AUTO_FAN_SPEED 255
|
||||||
|
|
||||||
@ -1966,7 +1966,7 @@
|
|||||||
*
|
*
|
||||||
* Warning: Does not respect endstops!
|
* Warning: Does not respect endstops!
|
||||||
*/
|
*/
|
||||||
#define BABYSTEPPING
|
//#define BABYSTEPPING
|
||||||
#if ENABLED(BABYSTEPPING)
|
#if ENABLED(BABYSTEPPING)
|
||||||
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
|
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
|
||||||
//#define BABYSTEP_WITHOUT_HOMING
|
//#define BABYSTEP_WITHOUT_HOMING
|
||||||
@ -1989,7 +1989,7 @@
|
|||||||
|
|
||||||
//#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
|
//#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
|
||||||
|
|
||||||
#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
|
//#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
|
||||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||||
//#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
|
//#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
|
||||||
//#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
|
//#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
|
||||||
@ -2592,7 +2592,7 @@
|
|||||||
#if HAS_DRIVER(TMC26X)
|
#if HAS_DRIVER(TMC26X)
|
||||||
|
|
||||||
#if AXIS_DRIVER_TYPE_X(TMC26X)
|
#if AXIS_DRIVER_TYPE_X(TMC26X)
|
||||||
#define X_MAX_CURRENT 1330 // (mA)
|
#define X_MAX_CURRENT 1000 // (mA)
|
||||||
#define X_SENSE_RESISTOR 91 // (mOhms)
|
#define X_SENSE_RESISTOR 91 // (mOhms)
|
||||||
#define X_MICROSTEPS 16 // Number of microsteps
|
#define X_MICROSTEPS 16 // Number of microsteps
|
||||||
#endif
|
#endif
|
||||||
@ -2604,7 +2604,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if AXIS_DRIVER_TYPE_Y(TMC26X)
|
#if AXIS_DRIVER_TYPE_Y(TMC26X)
|
||||||
#define Y_MAX_CURRENT 1680
|
#define Y_MAX_CURRENT 1000
|
||||||
#define Y_SENSE_RESISTOR 91
|
#define Y_SENSE_RESISTOR 91
|
||||||
#define Y_MICROSTEPS 16
|
#define Y_MICROSTEPS 16
|
||||||
#endif
|
#endif
|
||||||
@ -2676,7 +2676,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if AXIS_DRIVER_TYPE_E0(TMC26X)
|
#if AXIS_DRIVER_TYPE_E0(TMC26X)
|
||||||
#define E0_MAX_CURRENT 1330
|
#define E0_MAX_CURRENT 1000
|
||||||
#define E0_SENSE_RESISTOR 91
|
#define E0_SENSE_RESISTOR 91
|
||||||
#define E0_MICROSTEPS 16
|
#define E0_MICROSTEPS 16
|
||||||
#endif
|
#endif
|
||||||
@ -2754,7 +2754,7 @@
|
|||||||
#define INTERPOLATE true
|
#define INTERPOLATE true
|
||||||
|
|
||||||
#if AXIS_IS_TMC(X)
|
#if AXIS_IS_TMC(X)
|
||||||
#define X_CURRENT 846 // (mA) RMS current. Multiply by 1.414 for peak current.
|
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
|
||||||
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
|
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
|
||||||
#define X_MICROSTEPS 16 // 0..256
|
#define X_MICROSTEPS 16 // 0..256
|
||||||
#define X_RSENSE 0.11
|
#define X_RSENSE 0.11
|
||||||
@ -2774,7 +2774,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if AXIS_IS_TMC(Y)
|
#if AXIS_IS_TMC(Y)
|
||||||
#define Y_CURRENT 1069
|
#define Y_CURRENT 800
|
||||||
#define Y_CURRENT_HOME Y_CURRENT
|
#define Y_CURRENT_HOME Y_CURRENT
|
||||||
#define Y_MICROSTEPS 16
|
#define Y_MICROSTEPS 16
|
||||||
#define Y_RSENSE 0.11
|
#define Y_RSENSE 0.11
|
||||||
@ -2894,7 +2894,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if AXIS_IS_TMC(E0)
|
#if AXIS_IS_TMC(E0)
|
||||||
#define E0_CURRENT 846
|
#define E0_CURRENT 800
|
||||||
#define E0_MICROSTEPS 16
|
#define E0_MICROSTEPS 16
|
||||||
#define E0_RSENSE 0.11
|
#define E0_RSENSE 0.11
|
||||||
#define E0_CHAIN_POS -1
|
#define E0_CHAIN_POS -1
|
||||||
@ -3219,7 +3219,7 @@
|
|||||||
* Enable M122 debugging command for TMC stepper drivers.
|
* Enable M122 debugging command for TMC stepper drivers.
|
||||||
* M122 S0/1 will enable continuous reporting.
|
* M122 S0/1 will enable continuous reporting.
|
||||||
*/
|
*/
|
||||||
#define TMC_DEBUG
|
//#define TMC_DEBUG
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* You can set your own advanced settings by filling in predefined functions.
|
* You can set your own advanced settings by filling in predefined functions.
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
/**
|
/**
|
||||||
* Marlin release version identifier
|
* Marlin release version identifier
|
||||||
*/
|
*/
|
||||||
//#define SHORT_BUILD_VERSION "2.1"
|
//#define SHORT_BUILD_VERSION "2.0.9.4"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verbose version identifier which should contain a reference to the location
|
* Verbose version identifier which should contain a reference to the location
|
||||||
|
|||||||
@ -30,15 +30,12 @@
|
|||||||
uint8_t marlin_debug_flags = MARLIN_DEBUG_NONE;
|
uint8_t marlin_debug_flags = MARLIN_DEBUG_NONE;
|
||||||
|
|
||||||
// Commonly-used strings in serial output
|
// Commonly-used strings in serial output
|
||||||
PGMSTR(SP_A_STR, " A"); PGMSTR(SP_B_STR, " B"); PGMSTR(SP_C_STR, " C");
|
PGMSTR(NUL_STR, ""); PGMSTR(SP_P_STR, " P"); PGMSTR(SP_T_STR, " T");
|
||||||
PGMSTR(SP_P_STR, " P"); PGMSTR(SP_T_STR, " T"); PGMSTR(NUL_STR, "");
|
PGMSTR(SP_A_STR, " A"); PGMSTR(SP_B_STR, " B"); PGMSTR(SP_C_STR, " C");
|
||||||
|
LOGICAL_AXIS_CODE(PGMSTR(SP_E_STR, " E"), PGMSTR(SP_X_STR, " X"), PGMSTR(SP_Y_STR, " Y"), PGMSTR(SP_Z_STR, " Z"), PGMSTR(SP_I_STR, " " STR_I), PGMSTR(SP_J_STR, " " STR_J), PGMSTR(SP_K_STR, " " STR_K), PGMSTR(SP_U_STR, " " STR_U), PGMSTR(SP_V_STR, " " STR_V), PGMSTR(SP_W_STR, " " STR_W));
|
||||||
#define _N_STR(N) PGMSTR(N##_STR, STR_##N);
|
LOGICAL_AXIS_CODE(PGMSTR(SP_E_LBL, " E:"), PGMSTR(SP_X_LBL, " X:"), PGMSTR(SP_Y_LBL, " Y:"), PGMSTR(SP_Z_LBL, " Z:"), PGMSTR(SP_I_LBL, " " STR_I ":"), PGMSTR(SP_J_LBL, " " STR_J ":"), PGMSTR(SP_K_LBL, " " STR_K ":"), PGMSTR(SP_U_LBL, " " STR_U ":"), PGMSTR(SP_V_LBL, " " STR_V ":"), PGMSTR(SP_W_LBL, " " STR_W ":"));
|
||||||
#define _N_LBL(N) PGMSTR(N##_LBL, STR_##N ":");
|
LOGICAL_AXIS_CODE(PGMSTR(E_STR, "E"), PGMSTR(X_STR, "X"), PGMSTR(Y_STR, "Y"), PGMSTR(Z_STR, "Z"), PGMSTR(I_STR, STR_I), PGMSTR(J_STR, STR_J), PGMSTR(K_STR, STR_K), PGMSTR(U_STR, STR_U), PGMSTR(V_STR, STR_V), PGMSTR(W_STR, STR_W));
|
||||||
#define _SP_N_STR(N) PGMSTR(SP_##N##_STR, " " STR_##N);
|
LOGICAL_AXIS_CODE(PGMSTR(E_LBL, "E:"), PGMSTR(X_LBL, "X:"), PGMSTR(Y_LBL, "Y:"), PGMSTR(Z_LBL, "Z:"), PGMSTR(I_LBL, STR_I ":"), PGMSTR(J_LBL, STR_J ":"), PGMSTR(K_LBL, STR_K ":"), PGMSTR(U_LBL, STR_U ":"), PGMSTR(V_LBL, STR_V ":"), PGMSTR(W_LBL, STR_W ":"));
|
||||||
#define _SP_N_LBL(N) PGMSTR(SP_##N##_LBL, " " STR_##N ":");
|
|
||||||
MAP(_N_STR, LOGICAL_AXIS_NAMES); MAP(_SP_N_STR, LOGICAL_AXIS_NAMES);
|
|
||||||
MAP(_N_LBL, LOGICAL_AXIS_NAMES); MAP(_SP_N_LBL, LOGICAL_AXIS_NAMES);
|
|
||||||
|
|
||||||
// Hook Meatpack if it's enabled on the first leaf
|
// Hook Meatpack if it's enabled on the first leaf
|
||||||
#if ENABLED(MEATPACK_ON_SERIAL_PORT_1)
|
#if ENABLED(MEATPACK_ON_SERIAL_PORT_1)
|
||||||
|
|||||||
@ -28,6 +28,17 @@
|
|||||||
#include "../feature/meatpack.h"
|
#include "../feature/meatpack.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Commonly-used strings in serial output
|
||||||
|
extern const char NUL_STR[], SP_P_STR[], SP_T_STR[],
|
||||||
|
SP_A_STR[], SP_B_STR[], SP_C_STR[],
|
||||||
|
LOGICAL_AXIS_LIST(SP_E_STR[], SP_X_STR[], SP_Y_STR[], SP_Z_STR[], SP_I_STR[], SP_J_STR[], SP_K_STR[], SP_U_STR[], SP_V_STR[], SP_W_STR[]),
|
||||||
|
LOGICAL_AXIS_LIST(SP_E_LBL[], SP_X_LBL[], SP_Y_LBL[], SP_Z_LBL[], SP_I_LBL[], SP_J_LBL[], SP_K_LBL[], SP_U_LBL[], SP_V_LBL[], SP_W_LBL[]),
|
||||||
|
LOGICAL_AXIS_LIST(E_STR[], X_STR[], Y_STR[], Z_STR[], I_STR[], J_STR[], K_STR[], U_STR[], V_STR[], W_STR[]),
|
||||||
|
LOGICAL_AXIS_LIST(E_LBL[], X_LBL[], Y_LBL[], Z_LBL[], I_LBL[], J_LBL[], K_LBL[], U_LBL[], V_LBL[], W_LBL[]);
|
||||||
|
|
||||||
|
PGM_P const SP_AXIS_LBL[] PROGMEM = LOGICAL_AXIS_ARRAY(SP_E_LBL, SP_X_LBL, SP_Y_LBL, SP_Z_LBL, SP_I_LBL, SP_J_LBL, SP_K_LBL, SP_U_LBL, SP_V_LBL, SP_W_LBL);
|
||||||
|
PGM_P const SP_AXIS_STR[] PROGMEM = LOGICAL_AXIS_ARRAY(SP_E_STR, SP_X_STR, SP_Y_STR, SP_Z_STR, SP_I_STR, SP_J_STR, SP_K_STR, SP_U_STR, SP_V_STR, SP_W_STR);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Debugging flags for use by M111
|
// Debugging flags for use by M111
|
||||||
//
|
//
|
||||||
@ -343,32 +354,3 @@ inline void print_pos(const xyz_pos_t &xyz, FSTR_P const prefix=nullptr, FSTR_P
|
|||||||
|
|
||||||
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0)
|
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0)
|
||||||
#define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, F(PREFIX)); }while(0)
|
#define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, F(PREFIX)); }while(0)
|
||||||
|
|
||||||
//
|
|
||||||
// Commonly-used strings in serial output
|
|
||||||
//
|
|
||||||
|
|
||||||
#define _N_STR(N) N##_STR
|
|
||||||
#define _N_LBL(N) N##_LBL
|
|
||||||
#define _N_STR_A(N) _N_STR(N)[]
|
|
||||||
#define _N_LBL_A(N) _N_LBL(N)[]
|
|
||||||
#define _SP_N_STR(N) SP_##N##_STR
|
|
||||||
#define _SP_N_LBL(N) SP_##N##_LBL
|
|
||||||
#define _SP_N_STR_A(N) _SP_N_STR(N)[]
|
|
||||||
#define _SP_N_LBL_A(N) _SP_N_LBL(N)[]
|
|
||||||
|
|
||||||
extern const char SP_A_STR[], SP_B_STR[], SP_C_STR[], SP_P_STR[], SP_T_STR[], NUL_STR[],
|
|
||||||
MAPLIST(_N_STR_A, LOGICAL_AXIS_NAMES), MAPLIST(_SP_N_STR_A, LOGICAL_AXIS_NAMES),
|
|
||||||
MAPLIST(_N_LBL_A, LOGICAL_AXIS_NAMES), MAPLIST(_SP_N_LBL_A, LOGICAL_AXIS_NAMES);
|
|
||||||
|
|
||||||
PGM_P const SP_AXIS_LBL[] PROGMEM = { MAPLIST(_SP_N_LBL, LOGICAL_AXIS_NAMES) };
|
|
||||||
PGM_P const SP_AXIS_STR[] PROGMEM = { MAPLIST(_SP_N_STR, LOGICAL_AXIS_NAMES) };
|
|
||||||
|
|
||||||
#undef _N_STR
|
|
||||||
#undef _N_LBL
|
|
||||||
#undef _N_STR_A
|
|
||||||
#undef _N_LBL_A
|
|
||||||
#undef _SP_N_STR
|
|
||||||
#undef _SP_N_LBL
|
|
||||||
#undef _SP_N_STR_A
|
|
||||||
#undef _SP_N_LBL_A
|
|
||||||
|
|||||||
@ -47,7 +47,6 @@ struct IF<true, L, R> { typedef L type; };
|
|||||||
#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
|
#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
|
||||||
#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W)
|
#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W)
|
||||||
#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES)
|
#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES)
|
||||||
#define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
|
|
||||||
|
|
||||||
#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E)
|
#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E)
|
||||||
#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E)
|
#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E)
|
||||||
@ -60,7 +59,8 @@ struct IF<true, L, R> { typedef L type; };
|
|||||||
#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
|
#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
|
||||||
#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W)
|
#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W)
|
||||||
#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES)
|
#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES)
|
||||||
#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
|
|
||||||
|
#define LOGICAL_AXES_STRING LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
|
||||||
|
|
||||||
#define XYZ_GANG(V...) GANG_N(PRIMARY_LINEAR_AXES, V)
|
#define XYZ_GANG(V...) GANG_N(PRIMARY_LINEAR_AXES, V)
|
||||||
#define XYZ_CODE(V...) CODE_N(PRIMARY_LINEAR_AXES, V)
|
#define XYZ_CODE(V...) CODE_N(PRIMARY_LINEAR_AXES, V)
|
||||||
@ -181,6 +181,7 @@ enum AxisEnum : uint8_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t;
|
typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t;
|
||||||
|
typedef IF<(NUM_AXES > 8), uint16_t, uint8_t>::type linear_axis_bits_t;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Loop over axes
|
// Loop over axes
|
||||||
|
|||||||
@ -122,7 +122,7 @@
|
|||||||
* S<percent> : Speed factor percentage.
|
* S<percent> : Speed factor percentage.
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::M201() {
|
void GcodeSuite::M201() {
|
||||||
if (!parser.seen("T" STR_AXES_LOGICAL TERN_(XY_FREQUENCY_LIMIT, "FS")))
|
if (!parser.seen("T" LOGICAL_AXES_STRING TERN_(XY_FREQUENCY_LIMIT, "FS")))
|
||||||
return M201_report();
|
return M201_report();
|
||||||
|
|
||||||
const int8_t target_extruder = get_target_extruder_from_command();
|
const int8_t target_extruder = get_target_extruder_from_command();
|
||||||
@ -176,7 +176,7 @@ void GcodeSuite::M201_report(const bool forReplay/*=true*/) {
|
|||||||
* With multiple extruders use T to specify which one.
|
* With multiple extruders use T to specify which one.
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::M203() {
|
void GcodeSuite::M203() {
|
||||||
if (!parser.seen("T" STR_AXES_LOGICAL))
|
if (!parser.seen("T" LOGICAL_AXES_STRING))
|
||||||
return M203_report();
|
return M203_report();
|
||||||
|
|
||||||
const int8_t target_extruder = get_target_extruder_from_command();
|
const int8_t target_extruder = get_target_extruder_from_command();
|
||||||
|
|||||||
@ -43,7 +43,7 @@ void GcodeSuite::M92() {
|
|||||||
if (target_extruder < 0) return;
|
if (target_extruder < 0) return;
|
||||||
|
|
||||||
// No arguments? Show M92 report.
|
// No arguments? Show M92 report.
|
||||||
if (!parser.seen(STR_AXES_LOGICAL TERN_(MAGIC_NUMBERS_GCODE, "HL")))
|
if (!parser.seen(LOGICAL_AXES_STRING TERN_(MAGIC_NUMBERS_GCODE, "HL")))
|
||||||
return M92_report(true, target_extruder);
|
return M92_report(true, target_extruder);
|
||||||
|
|
||||||
LOOP_LOGICAL_AXES(i) {
|
LOOP_LOGICAL_AXES(i) {
|
||||||
|
|||||||
@ -23,7 +23,6 @@
|
|||||||
#include "../gcode.h"
|
#include "../gcode.h"
|
||||||
#include "../../MarlinCore.h" // for stepper_inactive_time, disable_e_steppers
|
#include "../../MarlinCore.h" // for stepper_inactive_time, disable_e_steppers
|
||||||
#include "../../lcd/marlinui.h"
|
#include "../../lcd/marlinui.h"
|
||||||
#include "../../module/motion.h" // for e_axis_mask
|
|
||||||
#include "../../module/stepper.h"
|
#include "../../module/stepper.h"
|
||||||
|
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
@ -44,7 +43,7 @@ inline stepper_flags_t selected_axis_bits() {
|
|||||||
selected.bits = _BV(INDEX_OF_AXIS(E_AXIS, e));
|
selected.bits = _BV(INDEX_OF_AXIS(E_AXIS, e));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
selected.bits = e_axis_mask;
|
selected.bits = selected.e_bits();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
selected.bits |= NUM_AXIS_GANG(
|
selected.bits |= NUM_AXIS_GANG(
|
||||||
|
|||||||
@ -45,10 +45,9 @@
|
|||||||
* X, Y, Z : Specify axes to move during cleaning. Default: ALL.
|
* X, Y, Z : Specify axes to move during cleaning. Default: ALL.
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::G12() {
|
void GcodeSuite::G12() {
|
||||||
|
|
||||||
// Don't allow nozzle cleaning without homing first
|
// Don't allow nozzle cleaning without homing first
|
||||||
constexpr main_axes_bits_t clean_axis_mask = main_axes_mask & ~TERN0(NOZZLE_CLEAN_NO_Z, Z_AXIS) & ~TERN0(NOZZLE_CLEAN_NO_Y, Y_AXIS);
|
if (homing_needed_error(linear_bits & ~TERN0(NOZZLE_CLEAN_NO_Z, Z_AXIS) & ~TERN0(NOZZLE_CLEAN_NO_Y, Y_AXIS)))
|
||||||
if (homing_needed_error(clean_axis_mask)) return;
|
return;
|
||||||
|
|
||||||
#ifdef WIPE_SEQUENCE_COMMANDS
|
#ifdef WIPE_SEQUENCE_COMMANDS
|
||||||
if (!parser.seen_any()) {
|
if (!parser.seen_any()) {
|
||||||
|
|||||||
@ -48,7 +48,7 @@
|
|||||||
void GcodeSuite::M907() {
|
void GcodeSuite::M907() {
|
||||||
#if HAS_MOTOR_CURRENT_SPI
|
#if HAS_MOTOR_CURRENT_SPI
|
||||||
|
|
||||||
if (!parser.seen("BS" STR_AXES_LOGICAL))
|
if (!parser.seen("BS" LOGICAL_AXES_STRING))
|
||||||
return M907_report();
|
return M907_report();
|
||||||
|
|
||||||
if (parser.seenval('S')) LOOP_L_N(i, MOTOR_CURRENT_COUNT) stepper.set_digipot_current(i, parser.value_int());
|
if (parser.seenval('S')) LOOP_L_N(i, MOTOR_CURRENT_COUNT) stepper.set_digipot_current(i, parser.value_int());
|
||||||
|
|||||||
@ -68,7 +68,7 @@ void GcodeSuite::G61() {
|
|||||||
SYNC_E(stored_position[slot].e);
|
SYNC_E(stored_position[slot].e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (parser.seen(STR_AXES_MAIN)) {
|
if (parser.seen(NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W))) {
|
||||||
DEBUG_ECHOPGM(STR_RESTORING_POS " S", slot);
|
DEBUG_ECHOPGM(STR_RESTORING_POS " S", slot);
|
||||||
LOOP_NUM_AXES(i) {
|
LOOP_NUM_AXES(i) {
|
||||||
destination[i] = parser.seenval(AXIS_CHAR(i))
|
destination[i] = parser.seenval(AXIS_CHAR(i))
|
||||||
|
|||||||
@ -92,7 +92,7 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) {
|
|||||||
if (MIN_AUTORETRACT <= MAX_AUTORETRACT) {
|
if (MIN_AUTORETRACT <= MAX_AUTORETRACT) {
|
||||||
// When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves
|
// When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves
|
||||||
if (fwretract.autoretract_enabled && parser.seen_test('E')
|
if (fwretract.autoretract_enabled && parser.seen_test('E')
|
||||||
&& !parser.seen(STR_AXES_MAIN)
|
&& !parser.seen(NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W))
|
||||||
) {
|
) {
|
||||||
const float echange = destination.e - current_position.e;
|
const float echange = destination.e - current_position.e;
|
||||||
// Is this a retract or recover move?
|
// Is this a retract or recover move?
|
||||||
|
|||||||
@ -87,7 +87,7 @@ void GcodeSuite::M290() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!parser.seen(STR_AXES_MAIN) || parser.seen('R')) {
|
if (!parser.seen(NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)) || parser.seen('R')) {
|
||||||
SERIAL_ECHO_START();
|
SERIAL_ECHO_START();
|
||||||
|
|
||||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||||
|
|||||||
@ -225,7 +225,7 @@ public:
|
|||||||
#endif // !FASTER_GCODE_PARSER
|
#endif // !FASTER_GCODE_PARSER
|
||||||
|
|
||||||
// Seen any axis parameter
|
// Seen any axis parameter
|
||||||
static bool seen_axis() { return seen(STR_AXES_LOGICAL); }
|
static bool seen_axis() { return seen(LOGICAL_AXES_STRING); }
|
||||||
|
|
||||||
#if ENABLED(GCODE_QUOTED_STRINGS)
|
#if ENABLED(GCODE_QUOTED_STRINGS)
|
||||||
static char* unescape_string(char* &src);
|
static char* unescape_string(char* &src);
|
||||||
|
|||||||
@ -74,7 +74,7 @@ void GcodeSuite::M306_report(const bool forReplay/*=true*/) {
|
|||||||
#if ENABLED(MPC_INCLUDE_FAN)
|
#if ENABLED(MPC_INCLUDE_FAN)
|
||||||
SERIAL_ECHOPAIR_F(" F", constants.ambient_xfer_coeff_fan0 + constants.fan255_adjustment, 4);
|
SERIAL_ECHOPAIR_F(" F", constants.ambient_xfer_coeff_fan0 + constants.fan255_adjustment, 4);
|
||||||
#endif
|
#endif
|
||||||
SERIAL_ECHOPAIR_F(" H", constants.filament_heat_capacity_permm, 4);
|
SERIAL_ECHOPAIR_F(" M", constants.filament_heat_capacity_permm, 4);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4147,8 +4147,3 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive.");
|
|||||||
#elif ENABLED(DISABLE_JTAG) && !defined(JTAG_DISABLE)
|
#elif ENABLED(DISABLE_JTAG) && !defined(JTAG_DISABLE)
|
||||||
#error "DISABLE_JTAG is not supported for the selected MCU/Board."
|
#error "DISABLE_JTAG is not supported for the selected MCU/Board."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Check requirements for upload.py
|
|
||||||
#if ENABLED(XFER_BUILD) && !BOTH(BINARY_FILE_TRANSFER, CUSTOM_FIRMWARE_UPLOAD)
|
|
||||||
#error "BINARY_FILE_TRANSFER and CUSTOM_FIRMWARE_UPLOAD are required for custom upload."
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
* Release version. Leave the Marlin version or apply a custom scheme.
|
* Release version. Leave the Marlin version or apply a custom scheme.
|
||||||
*/
|
*/
|
||||||
#ifndef SHORT_BUILD_VERSION
|
#ifndef SHORT_BUILD_VERSION
|
||||||
#define SHORT_BUILD_VERSION "2.1"
|
#define SHORT_BUILD_VERSION "2.0.9.4"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,7 +52,7 @@
|
|||||||
* to alert users to major changes.
|
* to alert users to major changes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MARLIN_HEX_VERSION 02010000
|
#define MARLIN_HEX_VERSION 02000904
|
||||||
#ifndef REQUIRED_CONFIGURATION_H_VERSION
|
#ifndef REQUIRED_CONFIGURATION_H_VERSION
|
||||||
#define REQUIRED_CONFIGURATION_H_VERSION MARLIN_HEX_VERSION
|
#define REQUIRED_CONFIGURATION_H_VERSION MARLIN_HEX_VERSION
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -79,9 +79,9 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
|||||||
dwin_string.set();
|
dwin_string.set();
|
||||||
if (blink)
|
if (blink)
|
||||||
dwin_string.add(value);
|
dwin_string.add(value);
|
||||||
else if (!TEST(axes_homed, axis))
|
else if (!TEST(axis_homed, axis))
|
||||||
while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?');
|
while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?');
|
||||||
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(axes_trusted, axis))
|
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(axis_trusted, axis))
|
||||||
dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" "));
|
dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" "));
|
||||||
else
|
else
|
||||||
dwin_string.add(value);
|
dwin_string.add(value);
|
||||||
@ -103,11 +103,11 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
|||||||
if (blink)
|
if (blink)
|
||||||
dwin_string.add(value);
|
dwin_string.add(value);
|
||||||
else {
|
else {
|
||||||
if (!TEST(axes_homed, axis))
|
if (!TEST(axis_homed, axis))
|
||||||
while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?');
|
while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?');
|
||||||
else {
|
else {
|
||||||
#if NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING)
|
#if NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING)
|
||||||
if (!TEST(axes_trusted, axis))
|
if (!TEST(axis_trusted, axis))
|
||||||
dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" "));
|
dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" "));
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -31,37 +31,6 @@
|
|||||||
|
|
||||||
#if ENABLED(DWIN_LCD_PROUI)
|
#if ENABLED(DWIN_LCD_PROUI)
|
||||||
|
|
||||||
#if DISABLED(LIMITED_MAX_FR_EDITING)
|
|
||||||
#warning "LIMITED_MAX_FR_EDITING is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(LIMITED_MAX_ACCEL_EDITING)
|
|
||||||
#warning "LIMITED_MAX_ACCEL_EDITING is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if ENABLED(CLASSIC_JERK) && DISABLED(LIMITED_JERK_EDITING)
|
|
||||||
#warning "LIMITED_JERK_EDITING is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
|
|
||||||
#warning "INDIVIDUAL_AXIS_HOMING_SUBMENU is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(LCD_SET_PROGRESS_MANUALLY)
|
|
||||||
#warning "LCD_SET_PROGRESS_MANUALLY is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(STATUS_MESSAGE_SCROLLING)
|
|
||||||
#warning "STATUS_MESSAGE_SCROLLING is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(BAUD_RATE_GCODE)
|
|
||||||
#warning "BAUD_RATE_GCODE is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(SOUND_MENU_ITEM)
|
|
||||||
#warning "SOUND_MENU_ITEM is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if DISABLED(PRINTCOUNTER)
|
|
||||||
#warning "PRINTCOUNTER is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
#if HAS_MESH && DISABLED(MESH_EDIT_MENU)
|
|
||||||
#warning "MESH_EDIT_MENU is recommended with ProUI."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "dwin.h"
|
#include "dwin.h"
|
||||||
#include "menus.h"
|
#include "menus.h"
|
||||||
#include "dwin_popup.h"
|
#include "dwin_popup.h"
|
||||||
@ -193,12 +162,7 @@
|
|||||||
#define DWIN_SCROLL_UPDATE_INTERVAL SEC_TO_MS(2)
|
#define DWIN_SCROLL_UPDATE_INTERVAL SEC_TO_MS(2)
|
||||||
#define DWIN_REMAIN_TIME_UPDATE_INTERVAL SEC_TO_MS(20)
|
#define DWIN_REMAIN_TIME_UPDATE_INTERVAL SEC_TO_MS(20)
|
||||||
|
|
||||||
#if HAS_MESH
|
#define BABY_Z_VAR TERN(HAS_BED_PROBE, probe.offset.z, HMI_data.ManualZOffset)
|
||||||
#define BABY_Z_VAR TERN(HAS_BED_PROBE, probe.offset.z, HMI_data.ManualZOffset)
|
|
||||||
#else
|
|
||||||
float z_offset = 0;
|
|
||||||
#define BABY_Z_VAR z_offset
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Structs
|
// Structs
|
||||||
HMI_value_t HMI_value;
|
HMI_value_t HMI_value;
|
||||||
@ -236,28 +200,11 @@ uint8_t index_file = MROWS;
|
|||||||
|
|
||||||
bool hash_changed = true; // Flag to know if message status was changed
|
bool hash_changed = true; // Flag to know if message status was changed
|
||||||
|
|
||||||
constexpr float max_feedrate_edit_values[] =
|
constexpr float max_feedrate_edit_values[] = MAX_FEEDRATE_EDIT_VALUES;
|
||||||
#ifdef MAX_FEEDRATE_EDIT_VALUES
|
constexpr float max_acceleration_edit_values[] = MAX_ACCEL_EDIT_VALUES;
|
||||||
MAX_FEEDRATE_EDIT_VALUES
|
|
||||||
#else
|
|
||||||
{ 1000, 1000, 10, 50 }
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
constexpr float max_acceleration_edit_values[] =
|
|
||||||
#ifdef MAX_ACCEL_EDIT_VALUES
|
|
||||||
MAX_ACCEL_EDIT_VALUES
|
|
||||||
#else
|
|
||||||
{ 1000, 1000, 200, 2000 }
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
#if HAS_CLASSIC_JERK
|
#if HAS_CLASSIC_JERK
|
||||||
constexpr float max_jerk_edit_values[] =
|
constexpr float max_jerk_edit_values[] = MAX_JERK_EDIT_VALUES;
|
||||||
#ifdef MAX_JERK_EDIT_VALUES
|
|
||||||
MAX_JERK_EDIT_VALUES
|
|
||||||
#else
|
|
||||||
{ DEFAULT_XJERK * 2, DEFAULT_YJERK * 2, DEFAULT_ZJERK * 2, DEFAULT_EJERK * 2 }
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static uint8_t _percent_done = 0;
|
static uint8_t _percent_done = 0;
|
||||||
@ -868,8 +815,6 @@ void update_variable() {
|
|||||||
else
|
else
|
||||||
DWINUI::Draw_Icon(ICON_Zoffset, 187, 416);
|
DWINUI::Draw_Icon(ICON_Zoffset, 187, 416);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
DWINUI::Draw_Icon(ICON_Zoffset, 187, 416);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_draw_xyz_position(false);
|
_draw_xyz_position(false);
|
||||||
@ -2347,45 +2292,48 @@ void ApplyFlow() { planner.refresh_e_factor(0); }
|
|||||||
void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, ApplyFlow); }
|
void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, ApplyFlow); }
|
||||||
|
|
||||||
// Bed Tramming
|
// Bed Tramming
|
||||||
|
TERN(HAS_BED_PROBE, float, void) Tram(uint8_t point) {
|
||||||
void TramXY(const uint8_t point, const float &margin, float &x, float &y) {
|
char cmd[100] = "";
|
||||||
switch (point) {
|
#if HAS_BED_PROBE
|
||||||
case 0:
|
|
||||||
LCD_MESSAGE(MSG_LEVBED_FL);
|
|
||||||
x = y = margin;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
LCD_MESSAGE(MSG_LEVBED_FR);
|
|
||||||
x = X_BED_SIZE - margin; y = margin;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
LCD_MESSAGE(MSG_LEVBED_BR);
|
|
||||||
x = X_BED_SIZE - margin; y = Y_BED_SIZE - margin;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
LCD_MESSAGE(MSG_LEVBED_BL);
|
|
||||||
x = margin; y = Y_BED_SIZE - margin;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
LCD_MESSAGE(MSG_LEVBED_C);
|
|
||||||
x = X_CENTER; y = Y_CENTER;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HAS_BED_PROBE
|
|
||||||
|
|
||||||
float Tram(const uint8_t point) {
|
|
||||||
char cmd[100] = "";
|
|
||||||
static bool inLev = false;
|
static bool inLev = false;
|
||||||
float xpos = 0, ypos = 0, zval = 0, margin = 0;
|
float xpos = 0, ypos = 0, zval = 0, margin = 0;
|
||||||
char str_1[6] = "", str_2[6] = "", str_3[6] = "";
|
char str_1[6] = "", str_2[6] = "", str_3[6] = "";
|
||||||
if (inLev) return NAN;
|
if (inLev) return NAN;
|
||||||
margin = HMI_data.FullManualTramming ? 30 : PROBING_MARGIN;
|
margin = HMI_data.FullManualTramming ? 30 : PROBING_MARGIN;
|
||||||
|
#else
|
||||||
|
int16_t xpos = 0, ypos = 0;
|
||||||
|
int16_t margin = 30;
|
||||||
|
#endif
|
||||||
|
|
||||||
TramXY(point, margin, xpos, ypos);
|
switch (point) {
|
||||||
|
case 0:
|
||||||
|
LCD_MESSAGE(MSG_LEVBED_FL);
|
||||||
|
xpos = ypos = margin;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
LCD_MESSAGE(MSG_LEVBED_FR);
|
||||||
|
xpos = X_BED_SIZE - margin; ypos = margin;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
LCD_MESSAGE(MSG_LEVBED_BR);
|
||||||
|
xpos = X_BED_SIZE - margin; ypos = Y_BED_SIZE - margin;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
LCD_MESSAGE(MSG_LEVBED_BL);
|
||||||
|
xpos = margin; ypos = Y_BED_SIZE - margin;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
LCD_MESSAGE(MSG_LEVBED_C);
|
||||||
|
xpos = X_BED_SIZE / 2; ypos = Y_BED_SIZE / 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
planner.synchronize();
|
||||||
|
|
||||||
|
#if HAS_BED_PROBE
|
||||||
|
|
||||||
if (HMI_data.FullManualTramming) {
|
if (HMI_data.FullManualTramming) {
|
||||||
|
planner.synchronize();
|
||||||
sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"),
|
sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"),
|
||||||
dtostrf(xpos, 1, 1, str_1),
|
dtostrf(xpos, 1, 1, str_1),
|
||||||
dtostrf(ypos, 1, 1, str_2)
|
dtostrf(ypos, 1, 1, str_2)
|
||||||
@ -2393,20 +2341,6 @@ void TramXY(const uint8_t point, const float &margin, float &x, float &y) {
|
|||||||
queue.inject(cmd);
|
queue.inject(cmd);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// AUTO_BED_LEVELING_BILINEAR does not define MESH_INSET
|
|
||||||
#ifndef MESH_MIN_X
|
|
||||||
#define MESH_MIN_X (_MAX(X_MIN_BED + PROBING_MARGIN, X_MIN_POS))
|
|
||||||
#endif
|
|
||||||
#ifndef MESH_MIN_Y
|
|
||||||
#define MESH_MIN_Y (_MAX(Y_MIN_BED + PROBING_MARGIN, Y_MIN_POS))
|
|
||||||
#endif
|
|
||||||
#ifndef MESH_MAX_X
|
|
||||||
#define MESH_MAX_X (_MIN(X_MAX_BED - (PROBING_MARGIN), X_MAX_POS))
|
|
||||||
#endif
|
|
||||||
#ifndef MESH_MAX_Y
|
|
||||||
#define MESH_MAX_Y (_MIN(Y_MAX_BED - (PROBING_MARGIN), Y_MAX_POS))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LIMIT(xpos, MESH_MIN_X, MESH_MAX_X);
|
LIMIT(xpos, MESH_MIN_X, MESH_MAX_X);
|
||||||
LIMIT(ypos, MESH_MIN_Y, MESH_MAX_Y);
|
LIMIT(ypos, MESH_MIN_Y, MESH_MAX_Y);
|
||||||
probe.stow();
|
probe.stow();
|
||||||
@ -2426,20 +2360,14 @@ void TramXY(const uint8_t point, const float &margin, float &x, float &y) {
|
|||||||
inLev = false;
|
inLev = false;
|
||||||
}
|
}
|
||||||
return zval;
|
return zval;
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else // !HAS_BED_PROBE
|
||||||
|
|
||||||
void Tram(const uint8_t point) {
|
sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%iY%iF5000\nG0Z0F300"), xpos, ypos);
|
||||||
float xpos = 0, ypos = 0, margin = 30;
|
|
||||||
TramXY(point, margin, xpos, ypos);
|
|
||||||
|
|
||||||
char cmd[100] = "", str_1[6] = "", str_2[6] = "";
|
|
||||||
sprintf_P(cmd, PSTR("M420S0\nG28O\nG90\nG0Z5F300\nG0X%sY%sF5000\nG0Z0F300"), dtostrf(xpos, 1, 1, str_1), dtostrf(ypos, 1, 1, str_2));
|
|
||||||
queue.inject(cmd);
|
queue.inject(cmd);
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void TramFL() { Tram(0); }
|
void TramFL() { Tram(0); }
|
||||||
void TramFR() { Tram(1); }
|
void TramFR() { Tram(1); }
|
||||||
@ -3678,18 +3606,18 @@ void Draw_Steps_Menu() {
|
|||||||
void SetBedLevT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); }
|
void SetBedLevT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(MESH_EDIT_MENU)
|
uint8_t mesh_x = 0;
|
||||||
uint8_t mesh_x = 0, mesh_y = 0;
|
uint8_t mesh_y = 0;
|
||||||
#define Z_OFFSET_MIN -3
|
#define Z_OFFSET_MIN -3
|
||||||
#define Z_OFFSET_MAX 3
|
#define Z_OFFSET_MAX 3
|
||||||
|
|
||||||
|
void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : mesh_y]; EditZValueItem->redraw(); }
|
||||||
|
void ApplyEditMeshX() { mesh_x = MenuData.Value; }
|
||||||
|
void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, mesh_x, ApplyEditMeshX, LiveEditMesh); }
|
||||||
|
void ApplyEditMeshY() { mesh_y = MenuData.Value; }
|
||||||
|
void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, mesh_y, ApplyEditMeshY, LiveEditMesh); }
|
||||||
|
void SetEditZValue() { SetPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); }
|
||||||
|
|
||||||
void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : mesh_y]; EditZValueItem->redraw(); }
|
|
||||||
void ApplyEditMeshX() { mesh_x = MenuData.Value; }
|
|
||||||
void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, mesh_x, ApplyEditMeshX, LiveEditMesh); }
|
|
||||||
void ApplyEditMeshY() { mesh_y = MenuData.Value; }
|
|
||||||
void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, mesh_y, ApplyEditMeshY, LiveEditMesh); }
|
|
||||||
void SetEditZValue() { SetPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); }
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
|
|||||||
@ -238,7 +238,9 @@ void Draw_Tramming_Menu();
|
|||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
void Draw_ProbeSet_Menu();
|
void Draw_ProbeSet_Menu();
|
||||||
#endif
|
#endif
|
||||||
void Draw_FilSet_Menu();
|
#if HAS_FILAMENT_SENSOR
|
||||||
|
void Draw_FilSet_Menu();
|
||||||
|
#endif
|
||||||
#if ENABLED(NOZZLE_PARK_FEATURE)
|
#if ENABLED(NOZZLE_PARK_FEATURE)
|
||||||
void Draw_ParkPos_Menu();
|
void Draw_ParkPos_Menu();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -39,6 +39,37 @@
|
|||||||
#define DASH_REDRAW 1
|
#define DASH_REDRAW 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if DISABLED(LIMITED_MAX_FR_EDITING)
|
||||||
|
#error "LIMITED_MAX_FR_EDITING is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(LIMITED_MAX_ACCEL_EDITING)
|
||||||
|
#error "LIMITED_MAX_ACCEL_EDITING is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if ENABLED(CLASSIC_JERK) && DISABLED(LIMITED_JERK_EDITING)
|
||||||
|
#error "LIMITED_JERK_EDITING is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
|
#error "FILAMENT_RUNOUT_SENSOR is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
|
||||||
|
#error "INDIVIDUAL_AXIS_HOMING_SUBMENU is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||||
|
#error "LCD_SET_PROGRESS_MANUALLY is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(STATUS_MESSAGE_SCROLLING)
|
||||||
|
#error "STATUS_MESSAGE_SCROLLING is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(BAUD_RATE_GCODE)
|
||||||
|
#error "BAUD_RATE_GCODE is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(SOUND_MENU_ITEM)
|
||||||
|
#error "SOUND_MENU_ITEM is required with ProUI."
|
||||||
|
#endif
|
||||||
|
#if DISABLED(PRINTCOUNTER)
|
||||||
|
#error "PRINTCOUNTER is required with ProUI."
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../common/dwin_color.h"
|
#include "../common/dwin_color.h"
|
||||||
#if ENABLED(LED_CONTROL_MENU)
|
#if ENABLED(LED_CONTROL_MENU)
|
||||||
#include "../../../feature/leds/leds.h"
|
#include "../../../feature/leds/leds.h"
|
||||||
|
|||||||
@ -22,10 +22,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../../../inc/MarlinConfigPre.h"
|
#include "../../../inc/MarlinConfigPre.h"
|
||||||
|
|
||||||
#if BOTH(DWIN_LCD_PROUI, AUTO_BED_LEVELING_UBL)
|
|
||||||
|
|
||||||
#include "ubl_tools.h"
|
#include "ubl_tools.h"
|
||||||
|
|
||||||
|
#if ENABLED(DWIN_LCD_PROUI)
|
||||||
|
|
||||||
#include "../../marlinui.h"
|
#include "../../marlinui.h"
|
||||||
#include "../../../core/types.h"
|
#include "../../../core/types.h"
|
||||||
#include "dwin.h"
|
#include "dwin.h"
|
||||||
@ -249,4 +249,4 @@ bool UBLMeshToolsClass::validate() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // DWIN_LCD_PROUI && AUTO_BED_LEVELING_UBL
|
#endif // DWIN_LCD_PROUI
|
||||||
|
|||||||
@ -35,12 +35,15 @@
|
|||||||
|
|
||||||
#include "../../module/motion.h"
|
#include "../../module/motion.h"
|
||||||
#include "../../gcode/parser.h" // for inch support
|
#include "../../gcode/parser.h" // for inch support
|
||||||
#include "../../module/temperature.h"
|
|
||||||
|
|
||||||
#if ENABLED(DELTA)
|
#if ENABLED(DELTA)
|
||||||
#include "../../module/delta.h"
|
#include "../../module/delta.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||||
|
#include "../../module/temperature.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAS_LEVELING
|
#if HAS_LEVELING
|
||||||
#include "../../module/planner.h"
|
#include "../../module/planner.h"
|
||||||
#include "../../feature/bedlevel/bedlevel.h"
|
#include "../../feature/bedlevel/bedlevel.h"
|
||||||
@ -207,20 +210,23 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void _menu_move_distance_e_maybe() {
|
inline void _menu_move_distance_e_maybe() {
|
||||||
if (thermalManager.tooColdToExtrude(active_extruder)) {
|
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||||
ui.goto_screen([]{
|
const bool too_cold = thermalManager.tooColdToExtrude(active_extruder);
|
||||||
MenuItem_confirm::select_screen(
|
if (too_cold) {
|
||||||
GET_TEXT_F(MSG_BUTTON_PROCEED), GET_TEXT_F(MSG_BACK),
|
ui.goto_screen([]{
|
||||||
_goto_menu_move_distance_e, nullptr,
|
MenuItem_confirm::select_screen(
|
||||||
GET_TEXT_F(MSG_HOTEND_TOO_COLD), (const char *)nullptr, F("!")
|
GET_TEXT_F(MSG_BUTTON_PROCEED), GET_TEXT_F(MSG_BACK),
|
||||||
);
|
_goto_menu_move_distance_e, nullptr,
|
||||||
});
|
GET_TEXT_F(MSG_HOTEND_TOO_COLD), (const char *)nullptr, F("!")
|
||||||
}
|
);
|
||||||
else
|
});
|
||||||
_goto_menu_move_distance_e();
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
_goto_menu_move_distance_e();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // E_MANUAL
|
||||||
|
|
||||||
void menu_move() {
|
void menu_move() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
|
|||||||
@ -1382,10 +1382,10 @@ void prepare_line_to_destination() {
|
|||||||
|
|
||||||
#if HAS_ENDSTOPS
|
#if HAS_ENDSTOPS
|
||||||
|
|
||||||
main_axes_bits_t axes_homed, axes_trusted; // = 0
|
linear_axis_bits_t axis_homed, axis_trusted; // = 0
|
||||||
|
|
||||||
main_axes_bits_t axes_should_home(main_axes_bits_t axis_bits/*=main_axes_mask*/) {
|
linear_axis_bits_t axes_should_home(linear_axis_bits_t axis_bits/*=linear_bits*/) {
|
||||||
auto set_should = [](main_axes_bits_t &b, AxisEnum a) {
|
auto set_should = [](linear_axis_bits_t &b, AxisEnum a) {
|
||||||
if (TEST(b, a) && TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(a))
|
if (TEST(b, a) && TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(a))
|
||||||
CBI(b, a);
|
CBI(b, a);
|
||||||
};
|
};
|
||||||
@ -1398,12 +1398,23 @@ void prepare_line_to_destination() {
|
|||||||
return axis_bits;
|
return axis_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool homing_needed_error(main_axes_bits_t axis_bits/*=main_axes_mask*/) {
|
bool homing_needed_error(linear_axis_bits_t axis_bits/*=linear_bits*/) {
|
||||||
if ((axis_bits = axes_should_home(axis_bits))) {
|
if ((axis_bits = axes_should_home(axis_bits))) {
|
||||||
PGM_P home_first = GET_TEXT(MSG_HOME_FIRST);
|
PGM_P home_first = GET_TEXT(MSG_HOME_FIRST);
|
||||||
char msg[30];
|
char msg[30];
|
||||||
#define _AXIS_CHAR(N) TEST(axis_bits, _AXIS(N)) ? STR_##N : ""
|
sprintf_P(msg, home_first,
|
||||||
sprintf_P(msg, home_first, MAPLIST(_AXIS_CHAR, MAIN_AXIS_NAMES));
|
NUM_AXIS_LIST(
|
||||||
|
TEST(axis_bits, X_AXIS) ? STR_A : "",
|
||||||
|
TEST(axis_bits, Y_AXIS) ? STR_B : "",
|
||||||
|
TEST(axis_bits, Z_AXIS) ? STR_C : "",
|
||||||
|
TEST(axis_bits, I_AXIS) ? STR_I : "",
|
||||||
|
TEST(axis_bits, J_AXIS) ? STR_J : "",
|
||||||
|
TEST(axis_bits, K_AXIS) ? STR_K : "",
|
||||||
|
TEST(axis_bits, U_AXIS) ? STR_U : "",
|
||||||
|
TEST(axis_bits, V_AXIS) ? STR_V : "",
|
||||||
|
TEST(axis_bits, W_AXIS) ? STR_W : ""
|
||||||
|
)
|
||||||
|
);
|
||||||
SERIAL_ECHO_START();
|
SERIAL_ECHO_START();
|
||||||
SERIAL_ECHOLN(msg);
|
SERIAL_ECHOLN(msg);
|
||||||
ui.set_status(msg);
|
ui.set_status(msg);
|
||||||
|
|||||||
@ -407,41 +407,38 @@ void restore_feedrate_and_scaling();
|
|||||||
/**
|
/**
|
||||||
* Homing and Trusted Axes
|
* Homing and Trusted Axes
|
||||||
*/
|
*/
|
||||||
typedef IF<(NUM_AXES > 8), uint16_t, uint8_t>::type main_axes_bits_t;
|
typedef IF<(NUM_AXES > 8), uint16_t, uint8_t>::type linear_axis_bits_t;
|
||||||
constexpr main_axes_bits_t main_axes_mask = _BV(NUM_AXES) - 1;
|
constexpr linear_axis_bits_t linear_bits = _BV(NUM_AXES) - 1;
|
||||||
|
|
||||||
typedef IF<(NUM_AXES + EXTRUDERS > 8), uint16_t, uint8_t>::type e_axis_bits_t;
|
|
||||||
constexpr e_axis_bits_t e_axis_mask = (_BV(EXTRUDERS) - 1) << NUM_AXES;
|
|
||||||
|
|
||||||
void set_axis_is_at_home(const AxisEnum axis);
|
void set_axis_is_at_home(const AxisEnum axis);
|
||||||
|
|
||||||
#if HAS_ENDSTOPS
|
#if HAS_ENDSTOPS
|
||||||
/**
|
/**
|
||||||
* axes_homed
|
* axis_homed
|
||||||
* Flags that each linear axis was homed.
|
* Flags that each linear axis was homed.
|
||||||
* XYZ on cartesian, ABC on delta, ABZ on SCARA.
|
* XYZ on cartesian, ABC on delta, ABZ on SCARA.
|
||||||
*
|
*
|
||||||
* axes_trusted
|
* axis_trusted
|
||||||
* Flags that the position is trusted in each linear axis. Set when homed.
|
* Flags that the position is trusted in each linear axis. Set when homed.
|
||||||
* Cleared whenever a stepper powers off, potentially losing its position.
|
* Cleared whenever a stepper powers off, potentially losing its position.
|
||||||
*/
|
*/
|
||||||
extern main_axes_bits_t axes_homed, axes_trusted;
|
extern linear_axis_bits_t axis_homed, axis_trusted;
|
||||||
void homeaxis(const AxisEnum axis);
|
void homeaxis(const AxisEnum axis);
|
||||||
void set_axis_never_homed(const AxisEnum axis);
|
void set_axis_never_homed(const AxisEnum axis);
|
||||||
main_axes_bits_t axes_should_home(main_axes_bits_t axes_mask=main_axes_mask);
|
linear_axis_bits_t axes_should_home(linear_axis_bits_t axis_bits=linear_bits);
|
||||||
bool homing_needed_error(main_axes_bits_t axes_mask=main_axes_mask);
|
bool homing_needed_error(linear_axis_bits_t axis_bits=linear_bits);
|
||||||
inline void set_axis_unhomed(const AxisEnum axis) { CBI(axes_homed, axis); }
|
inline void set_axis_unhomed(const AxisEnum axis) { CBI(axis_homed, axis); }
|
||||||
inline void set_axis_untrusted(const AxisEnum axis) { CBI(axes_trusted, axis); }
|
inline void set_axis_untrusted(const AxisEnum axis) { CBI(axis_trusted, axis); }
|
||||||
inline void set_all_unhomed() { axes_homed = axes_trusted = 0; }
|
inline void set_all_unhomed() { axis_homed = axis_trusted = 0; }
|
||||||
inline void set_axis_homed(const AxisEnum axis) { SBI(axes_homed, axis); }
|
inline void set_axis_homed(const AxisEnum axis) { SBI(axis_homed, axis); }
|
||||||
inline void set_axis_trusted(const AxisEnum axis) { SBI(axes_trusted, axis); }
|
inline void set_axis_trusted(const AxisEnum axis) { SBI(axis_trusted, axis); }
|
||||||
inline void set_all_homed() { axes_homed = axes_trusted = main_axes_mask; }
|
inline void set_all_homed() { axis_homed = axis_trusted = linear_bits; }
|
||||||
#else
|
#else
|
||||||
constexpr main_axes_bits_t axes_homed = main_axes_mask, axes_trusted = main_axes_mask; // Zero-endstop machines are always homed and trusted
|
constexpr linear_axis_bits_t axis_homed = linear_bits, axis_trusted = linear_bits; // Zero-endstop machines are always homed and trusted
|
||||||
inline void homeaxis(const AxisEnum axis) {}
|
inline void homeaxis(const AxisEnum axis) {}
|
||||||
inline void set_axis_never_homed(const AxisEnum) {}
|
inline void set_axis_never_homed(const AxisEnum) {}
|
||||||
inline main_axes_bits_t axes_should_home(main_axes_bits_t=main_axes_mask) { return 0; }
|
inline linear_axis_bits_t axes_should_home(linear_axis_bits_t=linear_bits) { return 0; }
|
||||||
inline bool homing_needed_error(main_axes_bits_t=main_axes_mask) { return false; }
|
inline bool homing_needed_error(linear_axis_bits_t=linear_bits) { return false; }
|
||||||
inline void set_axis_unhomed(const AxisEnum axis) {}
|
inline void set_axis_unhomed(const AxisEnum axis) {}
|
||||||
inline void set_axis_untrusted(const AxisEnum axis) {}
|
inline void set_axis_untrusted(const AxisEnum axis) {}
|
||||||
inline void set_all_unhomed() {}
|
inline void set_all_unhomed() {}
|
||||||
@ -450,13 +447,13 @@ void set_axis_is_at_home(const AxisEnum axis);
|
|||||||
inline void set_all_homed() {}
|
inline void set_all_homed() {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline bool axis_was_homed(const AxisEnum axis) { return TEST(axes_homed, axis); }
|
inline bool axis_was_homed(const AxisEnum axis) { return TEST(axis_homed, axis); }
|
||||||
inline bool axis_is_trusted(const AxisEnum axis) { return TEST(axes_trusted, axis); }
|
inline bool axis_is_trusted(const AxisEnum axis) { return TEST(axis_trusted, axis); }
|
||||||
inline bool axis_should_home(const AxisEnum axis) { return (axes_should_home() & _BV(axis)) != 0; }
|
inline bool axis_should_home(const AxisEnum axis) { return (axes_should_home() & _BV(axis)) != 0; }
|
||||||
inline bool no_axes_homed() { return !axes_homed; }
|
inline bool no_axes_homed() { return !axis_homed; }
|
||||||
inline bool all_axes_homed() { return main_axes_mask == (axes_homed & main_axes_mask); }
|
inline bool all_axes_homed() { return linear_bits == (axis_homed & linear_bits); }
|
||||||
inline bool homing_needed() { return !all_axes_homed(); }
|
inline bool homing_needed() { return !all_axes_homed(); }
|
||||||
inline bool all_axes_trusted() { return main_axes_mask == (axes_trusted & main_axes_mask); }
|
inline bool all_axes_trusted() { return linear_bits == (axis_trusted & linear_bits); }
|
||||||
|
|
||||||
void home_if_needed(const bool keeplev=false);
|
void home_if_needed(const bool keeplev=false);
|
||||||
|
|
||||||
|
|||||||
@ -274,14 +274,14 @@ xyz_pos_t Probe::offset; // Initialized by settings.load()
|
|||||||
#if ENABLED(PROBING_STEPPERS_OFF) && DISABLED(DELTA)
|
#if ENABLED(PROBING_STEPPERS_OFF) && DISABLED(DELTA)
|
||||||
static uint8_t old_trusted;
|
static uint8_t old_trusted;
|
||||||
if (dopause) {
|
if (dopause) {
|
||||||
old_trusted = axes_trusted;
|
old_trusted = axis_trusted;
|
||||||
stepper.disable_axis(X_AXIS);
|
stepper.disable_axis(X_AXIS);
|
||||||
stepper.disable_axis(Y_AXIS);
|
stepper.disable_axis(Y_AXIS);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (TEST(old_trusted, X_AXIS)) stepper.enable_axis(X_AXIS);
|
if (TEST(old_trusted, X_AXIS)) stepper.enable_axis(X_AXIS);
|
||||||
if (TEST(old_trusted, Y_AXIS)) stepper.enable_axis(Y_AXIS);
|
if (TEST(old_trusted, Y_AXIS)) stepper.enable_axis(Y_AXIS);
|
||||||
axes_trusted = old_trusted;
|
axis_trusted = old_trusted;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (dopause) safe_delay(_MAX(DELAY_BEFORE_PROBING, 25));
|
if (dopause) safe_delay(_MAX(DELAY_BEFORE_PROBING, 25));
|
||||||
|
|||||||
@ -246,11 +246,7 @@
|
|||||||
#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X / 2)
|
#define MIN_STEP_ISR_FREQUENCY (MAX_STEP_ISR_FREQUENCY_1X / 2)
|
||||||
|
|
||||||
#define ENABLE_COUNT (NUM_AXES + E_STEPPERS)
|
#define ENABLE_COUNT (NUM_AXES + E_STEPPERS)
|
||||||
#if ENABLE_COUNT > 16
|
typedef IF<(ENABLE_COUNT > 8), uint16_t, uint8_t>::type ena_mask_t;
|
||||||
typedef uint32_t ena_mask_t;
|
|
||||||
#else
|
|
||||||
typedef IF<(ENABLE_COUNT > 8), uint16_t, uint8_t>::type ena_mask_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Axis flags type, for enabled state or other simple state
|
// Axis flags type, for enabled state or other simple state
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -263,6 +259,8 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
constexpr ena_mask_t linear_bits() { return _BV(NUM_AXES) - 1; }
|
||||||
|
constexpr ena_mask_t e_bits() { return (_BV(EXTRUDERS) - 1) << NUM_AXES; }
|
||||||
} stepper_flags_t;
|
} stepper_flags_t;
|
||||||
|
|
||||||
// All the stepper enable pins
|
// All the stepper enable pins
|
||||||
|
|||||||
@ -103,7 +103,7 @@ hotend_pid_t;
|
|||||||
#if ENABLED(MPC_INCLUDE_FAN)
|
#if ENABLED(MPC_INCLUDE_FAN)
|
||||||
float fan255_adjustment; // M306 F
|
float fan255_adjustment; // M306 F
|
||||||
#endif
|
#endif
|
||||||
float filament_heat_capacity_permm; // M306 H
|
float filament_heat_capacity_permm; // M306 M
|
||||||
} MPC_t;
|
} MPC_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -538,7 +538,7 @@
|
|||||||
#elif MB(BTT_SKR_MINI_E3_V2_0)
|
#elif MB(BTT_SKR_MINI_E3_V2_0)
|
||||||
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple
|
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple
|
||||||
#elif MB(BTT_SKR_MINI_E3_V3_0)
|
#elif MB(BTT_SKR_MINI_E3_V3_0)
|
||||||
#include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt env:STM32G0B1RE_btt_xfer
|
#include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h" // STM32G0 env:STM32G0B1RE_btt
|
||||||
#elif MB(BTT_SKR_MINI_MZ_V1_0)
|
#elif MB(BTT_SKR_MINI_MZ_V1_0)
|
||||||
#include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple
|
#include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple
|
||||||
#elif MB(BTT_SKR_E3_DIP)
|
#elif MB(BTT_SKR_E3_DIP)
|
||||||
|
|||||||
12
README.md
12
README.md
@ -15,9 +15,9 @@
|
|||||||
Additional documentation can be found at the [Marlin Home Page](https://marlinfw.org/).
|
Additional documentation can be found at the [Marlin Home Page](https://marlinfw.org/).
|
||||||
Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by!
|
Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by!
|
||||||
|
|
||||||
## Marlin 2.1
|
## Marlin 2.0
|
||||||
|
|
||||||
Marlin 2.1 continues to support both 32-bit ARM and 8-bit AVR boards while adding support for up to 9 coordinated axes and to up to 8 extruders.
|
Marlin 2.0 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below.
|
||||||
|
|
||||||
Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases).
|
Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases).
|
||||||
|
|
||||||
@ -25,9 +25,9 @@ Download earlier versions of Marlin on the [Releases page](https://github.com/Ma
|
|||||||
|
|
||||||
Before building Marlin you'll need to configure it for your specific hardware. Your vendor should have already provided source code with configurations for the installed firmware, but if you ever decide to upgrade you'll need updated configuration files. Marlin users have contributed dozens of tested example configurations to get you started. Visit the [MarlinFirmware/Configurations](https://github.com/MarlinFirmware/Configurations) repository to find the right configuration for your hardware.
|
Before building Marlin you'll need to configure it for your specific hardware. Your vendor should have already provided source code with configurations for the installed firmware, but if you ever decide to upgrade you'll need updated configuration files. Marlin users have contributed dozens of tested example configurations to get you started. Visit the [MarlinFirmware/Configurations](https://github.com/MarlinFirmware/Configurations) repository to find the right configuration for your hardware.
|
||||||
|
|
||||||
## Building Marlin 2.1
|
## Building Marlin 2.0
|
||||||
|
|
||||||
To build Marlin 2.1 you'll need [Arduino IDE 1.8.8 or newer](https://www.arduino.cc/en/main/software) or [PlatformIO](http://docs.platformio.org/en/latest/ide.html#platformio-ide). Detailed build and install instructions are posted at:
|
To build Marlin 2.0 you'll need [Arduino IDE 1.8.8 or newer](https://www.arduino.cc/en/main/software) or [PlatformIO](http://docs.platformio.org/en/latest/ide.html#platformio-ide). Detailed build and install instructions are posted at:
|
||||||
|
|
||||||
- [Installing Marlin (Arduino)](http://marlinfw.org/docs/basics/install_arduino.html)
|
- [Installing Marlin (Arduino)](http://marlinfw.org/docs/basics/install_arduino.html)
|
||||||
- [Installing Marlin (VSCode)](http://marlinfw.org/docs/basics/install_platformio_vscode.html).
|
- [Installing Marlin (VSCode)](http://marlinfw.org/docs/basics/install_platformio_vscode.html).
|
||||||
@ -52,9 +52,9 @@ To build Marlin 2.1 you'll need [Arduino IDE 1.8.8 or newer](https://www.arduino
|
|||||||
[Teensy 4.1](https://www.pjrc.com/store/teensy41.html)|ARM® Cortex-M7|
|
[Teensy 4.1](https://www.pjrc.com/store/teensy41.html)|ARM® Cortex-M7|
|
||||||
Linux Native|x86/ARM/etc.|Raspberry Pi
|
Linux Native|x86/ARM/etc.|Raspberry Pi
|
||||||
|
|
||||||
## Submitting Patches
|
## Submitting Changes
|
||||||
|
|
||||||
- Submit **Bug Fixes** as Pull Requests to the ([bugfix-2.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.1.x)) branch.
|
- Submit **Bug Fixes** as Pull Requests to the ([bugfix-2.0.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.0.x)) branch.
|
||||||
- Follow the [Coding Standards](http://marlinfw.org/docs/development/coding_standards.html) to gain points with the maintainers.
|
- Follow the [Coding Standards](http://marlinfw.org/docs/development/coding_standards.html) to gain points with the maintainers.
|
||||||
- Please submit your questions and concerns to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues).
|
- Please submit your questions and concerns to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues).
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
# Where have all the configurations gone?
|
# Where have all the configurations gone?
|
||||||
|
|
||||||
## https://github.com/MarlinFirmware/Configurations/archive/release-2.1.zip
|
## https://github.com/MarlinFirmware/Configurations/archive/release-2.0.9.4.zip
|
||||||
|
|||||||
@ -138,7 +138,6 @@ upload_protocol = jlink
|
|||||||
#
|
#
|
||||||
[STM32F103Rx_creality_xfer]
|
[STM32F103Rx_creality_xfer]
|
||||||
extends = STM32F103Rx_creality
|
extends = STM32F103Rx_creality
|
||||||
build_flags = ${STM32F103Rx_creality.build_flags} -DXFER_BUILD
|
|
||||||
extra_scripts = ${STM32F103Rx_creality.extra_scripts}
|
extra_scripts = ${STM32F103Rx_creality.extra_scripts}
|
||||||
pre:buildroot/share/scripts/upload.py
|
pre:buildroot/share/scripts/upload.py
|
||||||
upload_protocol = custom
|
upload_protocol = custom
|
||||||
|
|||||||
@ -36,13 +36,3 @@ build_flags = ${stm32_variant.build_flags}
|
|||||||
-DSTEP_TIMER_IRQ_PRIO=0
|
-DSTEP_TIMER_IRQ_PRIO=0
|
||||||
upload_protocol = stlink
|
upload_protocol = stlink
|
||||||
debug_tool = stlink
|
debug_tool = stlink
|
||||||
|
|
||||||
#
|
|
||||||
# Custom upload to SD via Marlin with Binary Protocol
|
|
||||||
#
|
|
||||||
[env:STM32G0B1RE_btt_xfer]
|
|
||||||
extends = env:STM32G0B1RE_btt
|
|
||||||
build_flags = ${env:STM32G0B1RE_btt.build_flags} -DXFER_BUILD
|
|
||||||
extra_scripts = ${env:STM32G0B1RE_btt.extra_scripts}
|
|
||||||
pre:buildroot/share/scripts/upload.py
|
|
||||||
upload_protocol = custom
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user