Merge remote-tracking branch 'upstream/1.1.x' into 1.1.x
This commit is contained in:
commit
3e664c5e5a
@ -113,7 +113,8 @@ script:
|
||||
- opt_set TEMP_SENSOR_BED 1
|
||||
- opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION
|
||||
- opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
- opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING BABYSTEP_XY LIN_ADVANCE NANODLP_Z_SYNC QUICK_HOME JUNCTION_DEVIATION
|
||||
- opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING BABYSTEP_XY LIN_ADVANCE NANODLP_Z_SYNC QUICK_HOME JUNCTION_DEVIATION MAX7219_DEBUG
|
||||
- opt_set_adv MAX7219_ROTATE 270
|
||||
- build_marlin
|
||||
#
|
||||
# Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language
|
||||
|
@ -439,10 +439,20 @@
|
||||
*/
|
||||
#if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1
|
||||
#define XYZE_N (XYZ + E_STEPPERS)
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#define NUM_AXIS_N (ABCD + E_STEPPERS)
|
||||
#else
|
||||
#define NUM_AXIS_N (XYZ + E_STEPPERS)
|
||||
#endif
|
||||
#define E_AXIS_N (E_AXIS + extruder)
|
||||
#else
|
||||
#undef DISTINCT_E_FACTORS
|
||||
#define XYZE_N XYZE
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#define NUM_AXIS_N ABCDE
|
||||
#else
|
||||
#define NUM_AXIS_N XYZE
|
||||
#endif
|
||||
#define E_AXIS_N E_AXIS
|
||||
#endif
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
#define CONDITIONALS_POST_H
|
||||
|
||||
#define IS_SCARA (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA))
|
||||
#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
|
||||
#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA || ENABLED(HANGPRINTER))
|
||||
#define IS_CARTESIAN !IS_KINEMATIC
|
||||
|
||||
/**
|
||||
@ -47,7 +47,7 @@
|
||||
#define Y_BED_SIZE Y_MAX_LENGTH
|
||||
#endif
|
||||
|
||||
// Require 0,0 bed center for Delta and SCARA
|
||||
// Require 0,0 bed center for Delta, SCARA, and HANGPRINTER
|
||||
#if IS_KINEMATIC
|
||||
#define BED_CENTER_AT_0_0
|
||||
#endif
|
||||
@ -68,6 +68,18 @@
|
||||
#define Y_MIN_BED (Y_CENTER - (Y_BED_SIZE) / 2)
|
||||
#define Y_MAX_BED (Y_CENTER + (Y_BED_SIZE) / 2)
|
||||
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*/
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
#ifndef X1_MIN_POS
|
||||
#define X1_MIN_POS X_MIN_POS
|
||||
#endif
|
||||
#ifndef X1_MAX_POS
|
||||
#define X1_MAX_POS X_BED_SIZE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* CoreXY, CoreXZ, and CoreYZ - and their reverse
|
||||
*/
|
||||
@ -117,7 +129,7 @@
|
||||
#ifdef MANUAL_X_HOME_POS
|
||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#if ENABLED(DELTA) || ENABLED(HANGPRINTER)
|
||||
#define X_HOME_POS 0
|
||||
#else
|
||||
#define X_HOME_POS ((X_BED_SIZE) * (X_HOME_DIR) * 0.5)
|
||||
@ -133,7 +145,7 @@
|
||||
#ifdef MANUAL_Y_HOME_POS
|
||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#if (ENABLED(DELTA) || ENABLED(HANGPRINTER))
|
||||
#define Y_HOME_POS 0
|
||||
#else
|
||||
#define Y_HOME_POS ((Y_BED_SIZE) * (Y_HOME_DIR) * 0.5)
|
||||
@ -409,17 +421,17 @@
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 15000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 1500
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 1500
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 500
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 500
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 200
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 20
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 200
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 20
|
||||
#else
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 0 // Expect at least 10µS since one Stepper ISR must transpire
|
||||
#define MINIMUM_STEPPER_DIR_DELAY 200 // Expect at least 10µS since one Stepper ISR must transpire
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -427,33 +439,33 @@
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_PULSE 30
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_PULSE 3
|
||||
#define MINIMUM_STEPPER_PULSE 3
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#elif HAS_DRIVER(A4988) || HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#else
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MAXIMUM_STEPPER_RATE
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MAXIMUM_STEPPER_RATE 15000
|
||||
#define MAXIMUM_STEPPER_RATE 15000
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MAXIMUM_STEPPER_RATE 130000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MAXIMUM_STEPPER_RATE 150000
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#elif HAS_TRINAMIC || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE)
|
||||
#define MAXIMUM_STEPPER_RATE 400000
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MAXIMUM_STEPPER_RATE 500000
|
||||
#else
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#define MAXIMUM_STEPPER_RATE 500000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -717,11 +729,33 @@
|
||||
#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
|
||||
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
|
||||
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#define HAS_A_ENABLE (PIN_EXISTS(A_ENABLE))
|
||||
#define HAS_A_DIR (PIN_EXISTS(A_DIR))
|
||||
#define HAS_A_STEP (PIN_EXISTS(A_STEP))
|
||||
#define HAS_A_MICROSTEPS (PIN_EXISTS(A_MS1))
|
||||
|
||||
#define HAS_B_ENABLE (PIN_EXISTS(B_ENABLE))
|
||||
#define HAS_B_DIR (PIN_EXISTS(B_DIR))
|
||||
#define HAS_B_STEP (PIN_EXISTS(B_STEP))
|
||||
#define HAS_B_MICROSTEPS (PIN_EXISTS(B_MS1))
|
||||
|
||||
#define HAS_C_ENABLE (PIN_EXISTS(C_ENABLE))
|
||||
#define HAS_C_DIR (PIN_EXISTS(C_DIR))
|
||||
#define HAS_C_STEP (PIN_EXISTS(C_STEP))
|
||||
#define HAS_C_MICROSTEPS (PIN_EXISTS(C_MS1))
|
||||
|
||||
#define HAS_D_ENABLE (PIN_EXISTS(D_ENABLE))
|
||||
#define HAS_D_DIR (PIN_EXISTS(D_DIR))
|
||||
#define HAS_D_STEP (PIN_EXISTS(D_STEP))
|
||||
#define HAS_D_MICROSTEPS (PIN_EXISTS(D_MS1))
|
||||
#endif
|
||||
|
||||
// Trinamic Stepper Drivers
|
||||
#define HAS_STEALTHCHOP (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2208))
|
||||
#define HAS_STALLGUARD (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2660))
|
||||
#define HAS_STALLGUARD HAS_DRIVER(TMC2130)
|
||||
#define AXIS_HAS_STEALTHCHOP(ST) ( AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2208) )
|
||||
#define AXIS_HAS_STALLGUARD(ST) ( AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2660) )
|
||||
#define AXIS_HAS_STALLGUARD(ST) AXIS_DRIVER_TYPE(ST, TMC2130)
|
||||
|
||||
#if ENABLED(SENSORLESS_HOMING)
|
||||
// Disable Z axis sensorless homing if a probe is used to home the Z axis
|
||||
@ -1367,4 +1401,17 @@
|
||||
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
|
||||
#endif
|
||||
|
||||
/**
|
||||
* MOV_AXIS: number of independent axes driving the tool head's translational movement
|
||||
* NUM_AXIS: number of movement axes + 1
|
||||
* NUM_AXIS_N: number of movement axes + number of extruders (defined elsewhere)
|
||||
*/
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#define MOV_AXIS ABCD
|
||||
#define NUM_AXIS ABCDE
|
||||
#else
|
||||
#define MOV_AXIS XYZ
|
||||
#define NUM_AXIS XYZE
|
||||
#endif
|
||||
|
||||
#endif // CONDITIONALS_POST_H
|
||||
|
@ -71,6 +71,13 @@
|
||||
// example_configurations/SCARA and customize for your machine.
|
||||
//
|
||||
|
||||
//===========================================================================
|
||||
//============================= HANGPRINTER =================================
|
||||
//===========================================================================
|
||||
// For a Hangprinter start with the configuration file in the
|
||||
// example_configurations/hangprinter directory and customize for your machine.
|
||||
//
|
||||
|
||||
// @section info
|
||||
|
||||
// User-specified version info of this build to display in [Pronterface, etc] terminal window during
|
||||
@ -203,11 +210,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -532,9 +539,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -1913,9 +1923,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
|
@ -198,7 +198,7 @@
|
||||
destination[X_AXIS] = current_position[X_AXIS];
|
||||
destination[Y_AXIS] = current_position[Y_AXIS];
|
||||
destination[Z_AXIS] = z; // We know the last_z==z or we wouldn't be in this block of code.
|
||||
destination[E_AXIS] = current_position[E_AXIS];
|
||||
destination[E_CART] = current_position[E_CART];
|
||||
|
||||
G26_line_to_destination(feed_value);
|
||||
set_destination_from_current();
|
||||
@ -212,7 +212,7 @@
|
||||
|
||||
destination[X_AXIS] = rx;
|
||||
destination[Y_AXIS] = ry;
|
||||
destination[E_AXIS] += e_delta;
|
||||
destination[E_CART] += e_delta;
|
||||
|
||||
G26_line_to_destination(feed_value);
|
||||
set_destination_from_current();
|
||||
@ -254,7 +254,7 @@
|
||||
|
||||
while (!is_lcd_clicked()) {
|
||||
lcd_chirp();
|
||||
destination[E_AXIS] += 0.25;
|
||||
destination[E_CART] += 0.25;
|
||||
#ifdef PREVENT_LENGTHY_EXTRUDE
|
||||
Total_Prime += 0.25;
|
||||
if (Total_Prime >= EXTRUDE_MAXLENGTH) return G26_ERR;
|
||||
@ -283,7 +283,7 @@
|
||||
lcd_quick_feedback(true);
|
||||
#endif
|
||||
set_destination_from_current();
|
||||
destination[E_AXIS] += g26_prime_length;
|
||||
destination[E_CART] += g26_prime_length;
|
||||
G26_line_to_destination(planner.max_feedrate_mm_s[E_AXIS] / 15.0);
|
||||
set_destination_from_current();
|
||||
retract_filament(destination);
|
||||
@ -697,7 +697,7 @@
|
||||
|
||||
if (turn_on_heaters() != G26_OK) goto LEAVE;
|
||||
|
||||
current_position[E_AXIS] = 0.0;
|
||||
current_position[E_CART] = 0.0;
|
||||
sync_plan_position_e();
|
||||
|
||||
if (g26_prime_flag && prime_nozzle() != G26_OK) goto LEAVE;
|
||||
@ -812,7 +812,7 @@
|
||||
const float endpoint[XYZE] = {
|
||||
ex, ey,
|
||||
g26_layer_height,
|
||||
current_position[E_AXIS] + (arc_length * g26_e_axis_feedrate * g26_extrusion_multiplier)
|
||||
current_position[E_CART] + (arc_length * g26_e_axis_feedrate * g26_extrusion_multiplier)
|
||||
};
|
||||
|
||||
if (dist_start > 2.0) {
|
||||
|
@ -152,8 +152,6 @@ FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t freque
|
||||
|
||||
#define _CAT(a, ...) a ## __VA_ARGS__
|
||||
#define HAL_timer_set_compare(timer, compare) (_CAT(TIMER_OCR_, timer) = compare)
|
||||
#define HAL_timer_restrain(timer, interval_ticks) NOLESS(_CAT(TIMER_OCR_, timer), _CAT(TIMER_COUNTER_, timer) + interval_ticks)
|
||||
|
||||
#define HAL_timer_get_compare(timer) _CAT(TIMER_OCR_, timer)
|
||||
#define HAL_timer_get_count(timer) _CAT(TIMER_COUNTER_, timer)
|
||||
|
||||
|
@ -530,9 +530,8 @@ CSTANDARD = -std=gnu99
|
||||
CXXSTANDARD = -std=gnu++11
|
||||
CDEBUG = -g$(DEBUG)
|
||||
CWARN = -Wall -Wstrict-prototypes
|
||||
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct \
|
||||
-fshort-enums -w -ffunction-sections -fdata-sections \
|
||||
-flto \
|
||||
CTUNING = -w -fsigned-char -funsigned-bitfields -fpack-struct \
|
||||
-fshort-enums -ffunction-sections -fdata-sections -flto \
|
||||
-DARDUINO=$(ARDUINO_VERSION)
|
||||
ifneq ($(HARDWARE_MOTHERBOARD),)
|
||||
CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
|
||||
|
@ -96,7 +96,10 @@ extern const char axis_codes[XYZE];
|
||||
/**
|
||||
* Mixing steppers synchronize their enable (and direction) together
|
||||
*/
|
||||
#if MIXING_STEPPERS > 3
|
||||
#if MIXING_STEPPERS > 4
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); E4_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); E4_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#elif MIXING_STEPPERS > 3
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#elif MIXING_STEPPERS > 2
|
||||
@ -159,6 +162,42 @@ extern const char axis_codes[XYZE];
|
||||
|
||||
#endif // !MIXING_EXTRUDER
|
||||
|
||||
#if ENABLED(HANGPRINTER)
|
||||
|
||||
#define enable_A() enable_X()
|
||||
#define enable_B() enable_Y()
|
||||
#define enable_C() enable_Z()
|
||||
#define __D_ENABLE(p) E##p##_ENABLE_WRITE(E_ENABLE_ON)
|
||||
#define _D_ENABLE(p) __D_ENABLE(p)
|
||||
#define enable_D() _D_ENABLE(EXTRUDERS)
|
||||
|
||||
// Don't allow any axes to be disabled
|
||||
#undef disable_X
|
||||
#undef disable_Y
|
||||
#undef disable_Z
|
||||
#define disable_X() NOOP
|
||||
#define disable_Y() NOOP
|
||||
#define disable_Z() NOOP
|
||||
|
||||
#if EXTRUDERS >= 1
|
||||
#undef disable_E1
|
||||
#define disable_E1() NOOP
|
||||
#if EXTRUDERS >= 2
|
||||
#undef disable_E2
|
||||
#define disable_E2() NOOP
|
||||
#if EXTRUDERS >= 3
|
||||
#undef disable_E3
|
||||
#define disable_E3() NOOP
|
||||
#if EXTRUDERS >= 4
|
||||
#undef disable_E4
|
||||
#define disable_E4() NOOP
|
||||
#endif // EXTRUDERS >= 4
|
||||
#endif // EXTRUDERS >= 3
|
||||
#endif // EXTRUDERS >= 2
|
||||
#endif // EXTRUDERS >= 1
|
||||
|
||||
#endif // HANGPRINTER
|
||||
|
||||
#if ENABLED(G38_PROBE_TARGET)
|
||||
extern bool G38_move, // flag to tell the interrupt handler that a G38 command is being run
|
||||
G38_endstop_hit; // flag from the interrupt handler to indicate if the endstop went active
|
||||
@ -301,12 +340,16 @@ extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ];
|
||||
|
||||
void tool_change(const uint8_t tmp_extruder, const float fr_mm_s=0.0, bool no_move=false);
|
||||
|
||||
void home_all_axes();
|
||||
void home_all_axes();
|
||||
|
||||
void report_current_position();
|
||||
|
||||
#if IS_KINEMATIC
|
||||
extern float delta[ABC];
|
||||
#if ENABLED(HANGPRINTER)
|
||||
extern float line_lengths[ABCD];
|
||||
#else
|
||||
extern float delta[ABC];
|
||||
#endif
|
||||
void inverse_kinematics(const float raw[XYZ]);
|
||||
#endif
|
||||
|
||||
@ -339,6 +382,51 @@ void report_current_position();
|
||||
delta[C_AXIS] = DELTA_Z(V, C_AXIS); \
|
||||
}while(0)
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
|
||||
// Don't collect anchor positions in array because there are no A_x, D_x or D_y
|
||||
extern float anchor_A_y,
|
||||
anchor_A_z,
|
||||
anchor_B_x,
|
||||
anchor_B_y,
|
||||
anchor_B_z,
|
||||
anchor_C_x,
|
||||
anchor_C_y,
|
||||
anchor_C_z,
|
||||
anchor_D_z,
|
||||
delta_segments_per_second,
|
||||
line_lengths_origin[ABCD];
|
||||
|
||||
void recalc_hangprinter_settings();
|
||||
|
||||
#define HANGPRINTER_IK(V) do { \
|
||||
line_lengths[A_AXIS] = SQRT(sq(anchor_A_z - V[Z_AXIS]) \
|
||||
+ sq(anchor_A_y - V[Y_AXIS]) \
|
||||
+ sq( V[X_AXIS])); \
|
||||
line_lengths[B_AXIS] = SQRT(sq(anchor_B_z - V[Z_AXIS]) \
|
||||
+ sq(anchor_B_y - V[Y_AXIS]) \
|
||||
+ sq(anchor_B_x - V[X_AXIS])); \
|
||||
line_lengths[C_AXIS] = SQRT(sq(anchor_C_z - V[Z_AXIS]) \
|
||||
+ sq(anchor_C_y - V[Y_AXIS]) \
|
||||
+ sq(anchor_C_x - V[X_AXIS])); \
|
||||
line_lengths[D_AXIS] = SQRT(sq( V[X_AXIS]) \
|
||||
+ sq( V[Y_AXIS]) \
|
||||
+ sq(anchor_D_z - V[Z_AXIS])); \
|
||||
}while(0)
|
||||
|
||||
// Inverse kinematics at origin
|
||||
#define HANGPRINTER_IK_ORIGIN(LL) do { \
|
||||
LL[A_AXIS] = SQRT(sq(anchor_A_z) \
|
||||
+ sq(anchor_A_y)); \
|
||||
LL[B_AXIS] = SQRT(sq(anchor_B_z) \
|
||||
+ sq(anchor_B_y) \
|
||||
+ sq(anchor_B_x)); \
|
||||
LL[C_AXIS] = SQRT(sq(anchor_C_z) \
|
||||
+ sq(anchor_C_y) \
|
||||
+ sq(anchor_C_x)); \
|
||||
LL[D_AXIS] = anchor_D_z; \
|
||||
}while(0)
|
||||
|
||||
#elif IS_SCARA
|
||||
void forward_kinematics_SCARA(const float &a, const float &b);
|
||||
#endif
|
||||
@ -503,6 +591,9 @@ void do_blocking_move_to_xy(const float &rx, const float &ry, const float &fr_mm
|
||||
inline bool position_is_reachable(const float &rx, const float &ry, const float inset=0) {
|
||||
#if ENABLED(DELTA)
|
||||
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS - inset);
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
// TODO: This is over simplified. Hangprinter's build volume is _not_ cylindrical.
|
||||
return HYPOT2(rx, ry) <= sq(HANGPRINTER_PRINTABLE_RADIUS - inset);
|
||||
#elif IS_SCARA
|
||||
const float R2 = HYPOT2(rx - SCARA_OFFSET_X, ry - SCARA_OFFSET_Y);
|
||||
return (
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
================================================================================
|
||||
|
||||
Greetings! Thank you for choosing Marlin 2 as your 3D printer firmware.
|
||||
Greetings! Thank you for choosing Marlin as your 3D printer firmware.
|
||||
|
||||
To configure Marlin you must edit Configuration.h and Configuration_adv.h
|
||||
located in the root 'Marlin' folder. Check the example_configurations folder to
|
||||
|
@ -25,10 +25,10 @@
|
||||
|
||||
#include "boards.h"
|
||||
#include "macros.h"
|
||||
#include "drivers.h"
|
||||
#include "Version.h"
|
||||
#include "Configuration.h"
|
||||
#include "Conditionals_LCD.h"
|
||||
#include "drivers.h"
|
||||
#include "Configuration_adv.h"
|
||||
|
||||
#if USE_MARLINSERIAL
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -31,7 +31,7 @@
|
||||
* #define MAX7219_DIN_PIN 78
|
||||
* #define MAX7219_LOAD_PIN 79
|
||||
*
|
||||
* Max7219_init() is called automatically at startup, and then there are a number of
|
||||
* send() is called automatically at startup, and then there are a number of
|
||||
* support functions available to control the LEDs in the 8x8 grid.
|
||||
*/
|
||||
|
||||
@ -48,12 +48,92 @@
|
||||
#include "Marlin.h"
|
||||
#include "delay.h"
|
||||
|
||||
uint8_t LEDs[8 * MAX7219_NUMBER_UNITS] = { 0 };
|
||||
Max7219 max7219;
|
||||
|
||||
// Delay for 0.1875µs (16MHz AVR) or 0.15µs (20MHz AVR)
|
||||
#define SIG_DELAY() DELAY_NS(188)
|
||||
uint8_t Max7219::led_line[MAX7219_LINES]; // = { 0 };
|
||||
|
||||
void Max7219_PutByte(uint8_t data) {
|
||||
#define LINE_REG(Q) (max7219_reg_digit0 + ((Q) & 0x7))
|
||||
#if _ROT == 0 || _ROT == 270
|
||||
#define _LED_BIT(Q) (7 - ((Q) & 0x7))
|
||||
#define _LED_UNIT(Q) ((Q) & ~0x7)
|
||||
#else
|
||||
#define _LED_BIT(Q) ((Q) & 0x7)
|
||||
#define _LED_UNIT(Q) ((MAX7219_NUMBER_UNITS - 1 - ((Q) >> 3)) << 3)
|
||||
#endif
|
||||
#if _ROT < 180
|
||||
#define _LED_IND(P,Q) (_LED_UNIT(P) + (Q))
|
||||
#else
|
||||
#define _LED_IND(P,Q) (_LED_UNIT(P) + (7 - ((Q) & 0x7)))
|
||||
#endif
|
||||
#if _ROT == 0 || _ROT == 180
|
||||
#define LED_IND(X,Y) _LED_IND(X,Y)
|
||||
#define LED_BIT(X,Y) _LED_BIT(X)
|
||||
#elif _ROT == 90 || _ROT == 270
|
||||
#define LED_IND(X,Y) _LED_IND(Y,X)
|
||||
#define LED_BIT(X,Y) _LED_BIT(Y)
|
||||
#endif
|
||||
#define XOR_7219(X,Y) do{ led_line[LED_IND(X,Y)] ^= _BV(LED_BIT(X,Y)); }while(0)
|
||||
#define SET_7219(X,Y) do{ led_line[LED_IND(X,Y)] |= _BV(LED_BIT(X,Y)); }while(0)
|
||||
#define CLR_7219(X,Y) do{ led_line[LED_IND(X,Y)] &= ~_BV(LED_BIT(X,Y)); }while(0)
|
||||
#define BIT_7219(X,Y) TEST(led_line[LED_IND(X,Y)], LED_BIT(X,Y))
|
||||
|
||||
#ifdef CPU_32_BIT
|
||||
#define SIG_DELAY() DELAY_US(1) // Approximate a 1µs delay on 32-bit ARM
|
||||
#undef CRITICAL_SECTION_START
|
||||
#undef CRITICAL_SECTION_END
|
||||
#define CRITICAL_SECTION_START NOOP
|
||||
#define CRITICAL_SECTION_END NOOP
|
||||
#else
|
||||
#define SIG_DELAY() DELAY_NS(188) // Delay for 0.1875µs (16MHz AVR) or 0.15µs (20MHz AVR)
|
||||
#endif
|
||||
|
||||
void Max7219::error(const char * const func, const int32_t v1, const int32_t v2/*=-1*/) {
|
||||
#if ENABLED(MAX7219_ERRORS)
|
||||
SERIAL_ECHOPGM("??? Max7219::");
|
||||
serialprintPGM(func);
|
||||
SERIAL_CHAR('(');
|
||||
SERIAL_ECHO(v1);
|
||||
if (v2 > 0) SERIAL_ECHOPAIR(", ", v2);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL();
|
||||
#else
|
||||
UNUSED(func); UNUSED(v1); UNUSED(v2);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Flip the lowest n_bytes of the supplied bits:
|
||||
* flipped(x, 1) flips the low 8 bits of x.
|
||||
* flipped(x, 2) flips the low 16 bits of x.
|
||||
* flipped(x, 3) flips the low 24 bits of x.
|
||||
* flipped(x, 4) flips the low 32 bits of x.
|
||||
*/
|
||||
inline uint32_t flipped(const uint32_t bits, const uint8_t n_bytes) {
|
||||
uint32_t mask = 1, outbits = 0;
|
||||
for (uint8_t b = 0; b < n_bytes * 8; b++) {
|
||||
outbits <<= 1;
|
||||
if (bits & mask) outbits |= 1;
|
||||
mask <<= 1;
|
||||
}
|
||||
return outbits;
|
||||
}
|
||||
|
||||
void Max7219::noop() {
|
||||
CRITICAL_SECTION_START;
|
||||
SIG_DELAY();
|
||||
WRITE(MAX7219_DIN_PIN, LOW);
|
||||
for (uint8_t i = 16; i--;) {
|
||||
SIG_DELAY();
|
||||
WRITE(MAX7219_CLK_PIN, LOW);
|
||||
SIG_DELAY();
|
||||
SIG_DELAY();
|
||||
WRITE(MAX7219_CLK_PIN, HIGH);
|
||||
SIG_DELAY();
|
||||
}
|
||||
CRITICAL_SECTION_END;
|
||||
}
|
||||
|
||||
void Max7219::putbyte(uint8_t data) {
|
||||
CRITICAL_SECTION_START;
|
||||
for (uint8_t i = 8; i--;) {
|
||||
SIG_DELAY();
|
||||
@ -68,7 +148,7 @@ void Max7219_PutByte(uint8_t data) {
|
||||
CRITICAL_SECTION_END;
|
||||
}
|
||||
|
||||
void Max7219_pulse_load() {
|
||||
void Max7219::pulse_load() {
|
||||
SIG_DELAY();
|
||||
WRITE(MAX7219_LOAD_PIN, LOW); // tell the chip to load the data
|
||||
SIG_DELAY();
|
||||
@ -76,20 +156,39 @@ void Max7219_pulse_load() {
|
||||
SIG_DELAY();
|
||||
}
|
||||
|
||||
void Max7219(const uint8_t reg, const uint8_t data) {
|
||||
void Max7219::send(const uint8_t reg, const uint8_t data) {
|
||||
SIG_DELAY();
|
||||
CRITICAL_SECTION_START;
|
||||
SIG_DELAY();
|
||||
Max7219_PutByte(reg); // specify register
|
||||
putbyte(reg); // specify register
|
||||
SIG_DELAY();
|
||||
Max7219_PutByte(data); // put data
|
||||
putbyte(data); // put data
|
||||
CRITICAL_SECTION_END;
|
||||
}
|
||||
|
||||
// Send out a single native row of bits to all units
|
||||
void Max7219::refresh_line(const uint8_t line) {
|
||||
for (uint8_t u = MAX7219_NUMBER_UNITS; u--;)
|
||||
send(LINE_REG(line), led_line[(u << 3) | (line & 0x7)]);
|
||||
pulse_load();
|
||||
}
|
||||
|
||||
// Send out a single native row of bits to just one unit
|
||||
void Max7219::refresh_unit_line(const uint8_t line) {
|
||||
for (uint8_t u = MAX7219_NUMBER_UNITS; u--;)
|
||||
if (u == (line >> 3)) send(LINE_REG(line), led_line[line]); else noop();
|
||||
pulse_load();
|
||||
}
|
||||
|
||||
void Max7219::set(const uint8_t line, const uint8_t bits) {
|
||||
led_line[line] = bits;
|
||||
refresh_line(line);
|
||||
}
|
||||
|
||||
#if ENABLED(MAX7219_NUMERIC)
|
||||
|
||||
// Draw an integer with optional leading zeros and optional decimal point
|
||||
void Max7219_Print(const uint8_t start, int16_t value, uint8_t size, const bool leadzero=false, bool dec=false) {
|
||||
void Max7219::print(const uint8_t start, int16_t value, uint8_t size, const bool leadzero=false, bool dec=false) {
|
||||
constexpr uint8_t led_numeral[10] = { 0x7E, 0x60, 0x6D, 0x79, 0x63, 0x5B, 0x5F, 0x70, 0x7F, 0x7A },
|
||||
led_decimal = 0x80, led_minus = 0x01;
|
||||
|
||||
@ -98,11 +197,11 @@ void Max7219(const uint8_t reg, const uint8_t data) {
|
||||
while (size--) {
|
||||
const bool minus = neg && blank;
|
||||
if (minus) neg = false;
|
||||
Max7219(
|
||||
send(
|
||||
max7219_reg_digit0 + start + size,
|
||||
minus ? led_minus : blank ? 0x00 : led_numeral[value % 10] | (dec ? led_decimal : 0x00)
|
||||
);
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
value /= 10;
|
||||
if (!value && !leadzero) blank = true;
|
||||
dec = false;
|
||||
@ -110,247 +209,197 @@ void Max7219(const uint8_t reg, const uint8_t data) {
|
||||
}
|
||||
|
||||
// Draw a float with a decimal point and optional digits
|
||||
void Max7219_Print(const uint8_t start, const float value, const uint8_t pre_size, const uint8_t post_size, const bool leadzero=false) {
|
||||
if (pre_size) Max7219_Print(start, value, pre_size, leadzero, !!post_size);
|
||||
void Max7219::print(const uint8_t start, const float value, const uint8_t pre_size, const uint8_t post_size, const bool leadzero=false) {
|
||||
if (pre_size) print(start, value, pre_size, leadzero, !!post_size);
|
||||
if (post_size) {
|
||||
const int16_t after = ABS(value) * (10 ^ post_size);
|
||||
Max7219_Print(start + pre_size, after, post_size, true);
|
||||
print(start + pre_size, after, post_size, true);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // MAX7219_NUMERIC
|
||||
|
||||
inline void Max7219_Error(const char * const func, const int32_t v1, const int32_t v2=-1) {
|
||||
#if ENABLED(MAX7219_ERRORS)
|
||||
SERIAL_ECHOPGM("??? ");
|
||||
serialprintPGM(func);
|
||||
SERIAL_CHAR('(');
|
||||
SERIAL_ECHO(v1);
|
||||
if (v2 > 0) SERIAL_ECHOPAIR(", ", v2);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL();
|
||||
// Modify a single LED bit and send the changed line
|
||||
void Max7219::led_set(const uint8_t x, const uint8_t y, const bool on) {
|
||||
if (x > MAX7219_X_LEDS - 1 || y > MAX7219_Y_LEDS - 1) return error(PSTR("led_set"), x, y);
|
||||
if (BIT_7219(x, y) == on) return;
|
||||
XOR_7219(x, y);
|
||||
refresh_line(LED_IND(x, y));
|
||||
}
|
||||
|
||||
void Max7219::led_on(const uint8_t x, const uint8_t y) {
|
||||
if (x > MAX7219_X_LEDS - 1 || y > MAX7219_Y_LEDS - 1) return error(PSTR("led_on"), x, y);
|
||||
led_set(x, y, true);
|
||||
}
|
||||
|
||||
void Max7219::led_off(const uint8_t x, const uint8_t y) {
|
||||
if (x > MAX7219_X_LEDS - 1 || y > MAX7219_Y_LEDS - 1) return error(PSTR("led_off"), x, y);
|
||||
led_set(x, y, false);
|
||||
}
|
||||
|
||||
void Max7219::led_toggle(const uint8_t x, const uint8_t y) {
|
||||
if (x > MAX7219_X_LEDS - 1 || y > MAX7219_Y_LEDS - 1) return error(PSTR("led_toggle"), x, y);
|
||||
led_set(x, y, !BIT_7219(x, y));
|
||||
}
|
||||
|
||||
void Max7219::send_row(const uint8_t row) {
|
||||
#if _ROT == 0 || _ROT == 180
|
||||
refresh_line(LED_IND(0, row));
|
||||
#else
|
||||
UNUSED(func); UNUSED(v1); UNUSED(v2);
|
||||
UNUSED(row);
|
||||
refresh();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219::send_column(const uint8_t col) {
|
||||
#if _ROT == 90 || _ROT == 270
|
||||
refresh_line(LED_IND(col, 0));
|
||||
#else
|
||||
UNUSED(col);
|
||||
refresh();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219::clear() {
|
||||
ZERO(led_line);
|
||||
refresh();
|
||||
}
|
||||
|
||||
void Max7219::fill() {
|
||||
memset(led_line, 0xFF, sizeof(led_line));
|
||||
refresh();
|
||||
}
|
||||
|
||||
void Max7219::clear_row(const uint8_t row) {
|
||||
if (row >= MAX7219_Y_LEDS) return error(PSTR("clear_row"), row);
|
||||
for (uint8_t x = 0; x < MAX7219_X_LEDS; x++) CLR_7219(x, row);
|
||||
send_row(row);
|
||||
}
|
||||
|
||||
void Max7219::clear_column(const uint8_t col) {
|
||||
if (col >= MAX7219_X_LEDS) return error(PSTR("set_column"), col);
|
||||
for (uint8_t y = 0; y < MAX7219_Y_LEDS; y++) CLR_7219(col, y);
|
||||
send_column(col);
|
||||
}
|
||||
|
||||
/**
|
||||
* uint32_t flipped(const uint32_t bits, const uint8_t n_bytes) operates on the number
|
||||
* of bytes specified in n_bytes. The lower order bits of the supplied bits are flipped.
|
||||
* flipped( x, 1) flips the low 8 bits of x.
|
||||
* flipped( x, 2) flips the low 16 bits of x.
|
||||
* flipped( x, 3) flips the low 24 bits of x.
|
||||
* flipped( x, 4) flips the low 32 bits of x.
|
||||
* Plot the low order bits of val to the specified row of the matrix.
|
||||
* With 4 Max7219 units in the chain, it's possible to set 32 bits at once with
|
||||
* one call to the function (if rotated 90° or 180°).
|
||||
*/
|
||||
|
||||
inline uint32_t flipped(const uint32_t bits, const uint8_t n_bytes) {
|
||||
uint32_t mask = 1, outbits = 0;
|
||||
for (uint8_t b = 0; b < n_bytes * 8; b++) {
|
||||
outbits = (outbits << 1);
|
||||
if (bits & mask)
|
||||
outbits |= 1;
|
||||
mask <<= 1;
|
||||
}
|
||||
return outbits;
|
||||
}
|
||||
|
||||
// Modify a single LED bit and send the changed line
|
||||
void Max7219_LED_Set(const uint8_t x, const uint8_t y, const bool on) {
|
||||
if (x > (MAX7219_X_LEDS - 1) || y > (MAX7219_Y_LEDS - 1)) return Max7219_Error(PSTR("Max7219_LED_Set"), x, y);
|
||||
if (BIT_7219(x, y) == on) return;
|
||||
XOR_7219(x, y);
|
||||
SEND_7219(MAX7219_UPDATE_AXIS);
|
||||
}
|
||||
|
||||
void Max7219_LED_On(const uint8_t x, const uint8_t y) {
|
||||
if (x > (MAX7219_X_LEDS - 1) || y > (MAX7219_Y_LEDS - 1)) return Max7219_Error(PSTR("Max7219_LED_On"), x, y);
|
||||
Max7219_LED_Set(x, y, true);
|
||||
}
|
||||
|
||||
void Max7219_LED_Off(const uint8_t x, const uint8_t y) {
|
||||
if (x > (MAX7219_X_LEDS - 1) || y > (MAX7219_Y_LEDS - 1)) return Max7219_Error(PSTR("Max7219_LED_Off"), x, y);
|
||||
Max7219_LED_Set(x, y, false);
|
||||
}
|
||||
|
||||
void Max7219_LED_Toggle(const uint8_t x, const uint8_t y) {
|
||||
if (x > (MAX7219_X_LEDS - 1) || y > (MAX7219_Y_LEDS - 1)) return Max7219_Error(PSTR("Max7219_LED_Toggle"), x, y);
|
||||
Max7219_LED_Set(x, y, !BIT_7219(x, y));
|
||||
}
|
||||
|
||||
inline void _Max7219_Set_Digit_Segments(const uint8_t digit, const uint8_t val) {
|
||||
LEDs[digit] = val;
|
||||
SEND_7219(digit);
|
||||
}
|
||||
|
||||
/*
|
||||
* void Max7219_Set_Row( const uint8_t col, const uint32_t val) plots the low order bits of
|
||||
* val to the specified row of the Max7219 matrix. With 4 Max7219 units in the chain, it
|
||||
* is possible to display an entire 32-bit number with one call to the function (if appropriately
|
||||
* orientated).
|
||||
*/
|
||||
void Max7219_Set_Row(const uint8_t row, const uint32_t val) {
|
||||
if (row >= MAX7219_Y_LEDS) return Max7219_Error(PSTR("Max7219_Set_Row"), row);
|
||||
uint32_t mask = 0x0000001;
|
||||
void Max7219::set_row(const uint8_t row, const uint32_t val) {
|
||||
if (row >= MAX7219_Y_LEDS) return error(PSTR("set_row"), row);
|
||||
uint32_t mask = _BV32(MAX7219_X_LEDS - 1);
|
||||
for (uint8_t x = 0; x < MAX7219_X_LEDS; x++) {
|
||||
if (val & mask)
|
||||
SET_PIXEL_7219(MAX7219_X_LEDS-1-x, row);
|
||||
else
|
||||
CLEAR_PIXEL_7219(MAX7219_X_LEDS-1-x, row);
|
||||
mask <<= 1;
|
||||
if (val & mask) SET_7219(x, row); else CLR_7219(x, row);
|
||||
mask >>= 1;
|
||||
}
|
||||
#if _ROT == 90 || _ROT == 270
|
||||
for (uint8_t x = 0; x < 8; x++)
|
||||
SEND_7219(x); // force all columns out to the Max7219 chips and strobe them
|
||||
#else
|
||||
SEND_7219(row); // force the single column out to the Max7219 chips and strobe them
|
||||
#endif
|
||||
return;
|
||||
send_row(row);
|
||||
}
|
||||
|
||||
void Max7219_Clear_Row(const uint8_t row) {
|
||||
if (row > 7) return Max7219_Error(PSTR("Max7219_Clear_Row"), row);
|
||||
#if _ROT == 90 || _ROT == 270
|
||||
for (uint8_t col = 0; col < 8; col++) Max7219_LED_Off(col, row);
|
||||
#else
|
||||
_Max7219_Set_Digit_Segments(row, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* void Max7219_Set_Column( const uint8_t col, const uint32_t val) plots the low order bits of
|
||||
* val to the specified column of the Max7219 matrix. With 4 Max7219 units in the chain, it
|
||||
* is possible to display an entire 32-bit number with one call to the function (if appropriately
|
||||
* orientated).
|
||||
/**
|
||||
* Plot the low order bits of val to the specified column of the matrix.
|
||||
* With 4 Max7219 units in the chain, it's possible to set 32 bits at once with
|
||||
* one call to the function (if rotated 90° or 180°).
|
||||
*/
|
||||
void Max7219_Set_Column(const uint8_t col, const uint32_t val) {
|
||||
if (col >= MAX7219_X_LEDS) return Max7219_Error(PSTR("Max7219_Set_Column"), col);
|
||||
uint32_t mask = 0x0000001;
|
||||
void Max7219::set_column(const uint8_t col, const uint32_t val) {
|
||||
if (col >= MAX7219_X_LEDS) return error(PSTR("set_column"), col);
|
||||
uint32_t mask = _BV32(MAX7219_Y_LEDS - 1);
|
||||
for (uint8_t y = 0; y < MAX7219_Y_LEDS; y++) {
|
||||
if (val & mask)
|
||||
SET_PIXEL_7219(col, MAX7219_Y_LEDS-1-y);
|
||||
else
|
||||
CLEAR_PIXEL_7219(col, MAX7219_Y_LEDS-1-y);
|
||||
mask <<= 1;
|
||||
if (val & mask) SET_7219(col, y); else CLR_7219(col, y);
|
||||
mask >>= 1;
|
||||
}
|
||||
#if _ROT == 90 || _ROT == 270
|
||||
SEND_7219(col); // force the column out to the Max7219 chips and strobe them
|
||||
#else
|
||||
for (uint8_t yy = 0; yy < 8; yy++)
|
||||
SEND_7219(yy); // force all columns out to the Max7219 chips and strobe them
|
||||
#endif
|
||||
return;
|
||||
send_column(col);
|
||||
}
|
||||
|
||||
void Max7219_Clear_Column(const uint8_t col) {
|
||||
if (col >= MAX7219_X_LEDS) return Max7219_Error(PSTR("Max7219_Clear_Column"), col);
|
||||
|
||||
for (uint8_t yy = 0; yy < MAX7219_Y_LEDS; yy++)
|
||||
CLEAR_PIXEL_7219(col, yy);
|
||||
|
||||
#if _ROT == 90 || _ROT == 270
|
||||
SEND_7219(col); // force the column out to the Max7219 chips and strobe them
|
||||
#else
|
||||
for (uint8_t y = 0; y < 8; y++)
|
||||
SEND_7219(y); // force all columns out to the Max7219 chips and strobe them
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
void Max7219_Clear() {
|
||||
for (uint8_t i = 0; i <= 7; i++) { // Clear LED bitmap
|
||||
for (uint8_t j = 0; j < MAX7219_NUMBER_UNITS; j++)
|
||||
LEDs[i + j * 8] = 0x00;
|
||||
SEND_7219(i);
|
||||
}
|
||||
}
|
||||
|
||||
void Max7219_Set_Rows_16bits(const uint8_t y, uint32_t val) {
|
||||
void Max7219::set_rows_16bits(const uint8_t y, uint32_t val) {
|
||||
#if MAX7219_X_LEDS == 8
|
||||
if (y > MAX7219_Y_LEDS - 2) return Max7219_Error(PSTR("Max7219_Set_Rows_16bits"), y, val);
|
||||
Max7219_Set_Row(y + 1, val); val >>= 8;
|
||||
Max7219_Set_Row(y + 0, val);
|
||||
if (y > MAX7219_Y_LEDS - 2) return error(PSTR("set_rows_16bits"), y, val);
|
||||
set_row(y + 1, val); val >>= 8;
|
||||
set_row(y + 0, val);
|
||||
#else // at least 16 bits on each row
|
||||
if (y > MAX7219_Y_LEDS - 1) return Max7219_Error(PSTR("Max7219_Set_Rows_16bits"), y, val);
|
||||
Max7219_Set_Row(y, val);
|
||||
if (y > MAX7219_Y_LEDS - 1) return error(PSTR("set_rows_16bits"), y, val);
|
||||
set_row(y, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219_Set_Rows_32bits(const uint8_t y, uint32_t val) {
|
||||
void Max7219::set_rows_32bits(const uint8_t y, uint32_t val) {
|
||||
#if MAX7219_X_LEDS == 8
|
||||
if (y > MAX7219_Y_LEDS - 4) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), y, val);
|
||||
Max7219_Set_Row(y + 3, val); val >>= 8;
|
||||
Max7219_Set_Row(y + 2, val); val >>= 8;
|
||||
Max7219_Set_Row(y + 1, val); val >>= 8;
|
||||
Max7219_Set_Row(y + 0, val);
|
||||
if (y > MAX7219_Y_LEDS - 4) return error(PSTR("set_rows_32bits"), y, val);
|
||||
set_row(y + 3, val); val >>= 8;
|
||||
set_row(y + 2, val); val >>= 8;
|
||||
set_row(y + 1, val); val >>= 8;
|
||||
set_row(y + 0, val);
|
||||
#elif MAX7219_X_LEDS == 16
|
||||
if (y > MAX7219_Y_LEDS - 2) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), y, val);
|
||||
Max7219_Set_Row(y + 1, val); val >>= 16;
|
||||
Max7219_Set_Row(y + 0, val);
|
||||
if (y > MAX7219_Y_LEDS - 2) return error(PSTR("set_rows_32bits"), y, val);
|
||||
set_row(y + 1, val); val >>= 16;
|
||||
set_row(y + 0, val);
|
||||
#else // at least 24 bits on each row. In the 3 matrix case, just display the low 24 bits
|
||||
if (y > MAX7219_Y_LEDS - 1) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), y, val);
|
||||
Max7219_Set_Row(y, val);
|
||||
if (y > MAX7219_Y_LEDS - 1) return error(PSTR("set_rows_32bits"), y, val);
|
||||
set_row(y, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219_Set_Columns_16bits(const uint8_t x, uint32_t val) {
|
||||
void Max7219::set_columns_16bits(const uint8_t x, uint32_t val) {
|
||||
#if MAX7219_Y_LEDS == 8
|
||||
if (x > MAX7219_X_LEDS - 2) return Max7219_Error(PSTR("Max7219_Set_Columns_16bits"), x, val);
|
||||
Max7219_Set_Column(x + 0, val); val >>= 8;
|
||||
Max7219_Set_Column(x + 1, val);
|
||||
if (x > MAX7219_X_LEDS - 2) return error(PSTR("set_columns_16bits"), x, val);
|
||||
set_column(x + 0, val); val >>= 8;
|
||||
set_column(x + 1, val);
|
||||
#else // at least 16 bits in each column
|
||||
if (x > MAX7219_X_LEDS - 1) return Max7219_Error(PSTR("Max7219_Set_Columns_16bits"), x, val);
|
||||
Max7219_Set_Column(x, val);
|
||||
if (x > MAX7219_X_LEDS - 1) return error(PSTR("set_columns_16bits"), x, val);
|
||||
set_column(x, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219_Set_Columns_32bits(const uint8_t x, uint32_t val) {
|
||||
void Max7219::set_columns_32bits(const uint8_t x, uint32_t val) {
|
||||
#if MAX7219_Y_LEDS == 8
|
||||
if (x > MAX7219_X_LEDS - 4) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), x, val);
|
||||
Max7219_Set_Column(x + 3, val); val >>= 8;
|
||||
Max7219_Set_Column(x + 2, val); val >>= 8;
|
||||
Max7219_Set_Column(x + 1, val); val >>= 8;
|
||||
Max7219_Set_Column(x + 0, val);
|
||||
if (x > MAX7219_X_LEDS - 4) return error(PSTR("set_rows_32bits"), x, val);
|
||||
set_column(x + 3, val); val >>= 8;
|
||||
set_column(x + 2, val); val >>= 8;
|
||||
set_column(x + 1, val); val >>= 8;
|
||||
set_column(x + 0, val);
|
||||
#elif MAX7219_Y_LEDS == 16
|
||||
if (x > MAX7219_X_LEDS - 2) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), x, val);
|
||||
Max7219_Set_Column(x + 1, val); val >>= 16;
|
||||
Max7219_Set_Column(x + 0, val);
|
||||
if (x > MAX7219_X_LEDS - 2) return error(PSTR("set_rows_32bits"), x, val);
|
||||
set_column(x + 1, val); val >>= 16;
|
||||
set_column(x + 0, val);
|
||||
#else // at least 24 bits on each row. In the 3 matrix case, just display the low 24 bits
|
||||
if (x > MAX7219_X_LEDS - 1) return Max7219_Error(PSTR("Max7219_Set_Rows_32bits"), x, val);
|
||||
Max7219_Set_Column(x, val);
|
||||
if (x > MAX7219_X_LEDS - 1) return error(PSTR("set_rows_32bits"), x, val);
|
||||
set_column(x, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219_register_setup() {
|
||||
// Initialize the Max7219
|
||||
// Initialize the Max7219
|
||||
void Max7219::register_setup() {
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
Max7219(max7219_reg_scanLimit, 0x07);
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
send(max7219_reg_scanLimit, 0x07);
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
Max7219(max7219_reg_decodeMode, 0x00); // using an led matrix (not digits)
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
send(max7219_reg_decodeMode, 0x00); // using an led matrix (not digits)
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
Max7219(max7219_reg_shutdown, 0x01); // not in shutdown mode
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
Max7219(max7219_reg_displayTest, 0x00); // no display test
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
send(max7219_reg_shutdown, 0x01); // not in shutdown mode
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
Max7219(max7219_reg_intensity, 0x01 & 0x0F); // the first 0x0F is the value you can set
|
||||
send(max7219_reg_displayTest, 0x00); // no display test
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
|
||||
for (uint8_t i = 0; i < MAX7219_NUMBER_UNITS; i++)
|
||||
send(max7219_reg_intensity, 0x01 & 0x0F); // the first 0x0F is the value you can set
|
||||
// range: 0x00 to 0x0F
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
}
|
||||
|
||||
#ifdef MAX7219_INIT_TEST
|
||||
#if (MAX7219_INIT_TEST + 0) == 2
|
||||
#if MAX7219_INIT_TEST == 2
|
||||
|
||||
inline void Max7219_spiral(const bool on, const uint16_t del) {
|
||||
void Max7219::spiral(const bool on, const uint16_t del) {
|
||||
constexpr int8_t way[] = { 1, 0, 0, 1, -1, 0, 0, -1 };
|
||||
int8_t px = 0, py = 0, dir = 0;
|
||||
for (uint8_t i = MAX7219_X_LEDS * MAX7219_Y_LEDS; i--;) {
|
||||
Max7219_LED_Set(px, py, on);
|
||||
led_set(px, py, on);
|
||||
delay(del);
|
||||
const int8_t x = px + way[dir], y = py + way[dir + 1];
|
||||
if (!WITHIN(x, 0, MAX7219_X_LEDS-1) || !WITHIN(y, 0, MAX7219_Y_LEDS-1) || BIT_7219(x, y) == on) dir = (dir + 2) & 0x7;
|
||||
@ -360,10 +409,10 @@ void Max7219_register_setup() {
|
||||
|
||||
#else
|
||||
|
||||
inline void Max7219_sweep(const int8_t dir, const uint16_t ms, const bool on) {
|
||||
void Max7219::sweep(const int8_t dir, const uint16_t ms, const bool on) {
|
||||
uint8_t x = dir > 0 ? 0 : MAX7219_X_LEDS-1;
|
||||
for (uint8_t i = MAX7219_X_LEDS; i--; x += dir) {
|
||||
Max7219_Set_Column(x, on ? 0xFFFFFFFF : 0x00000000);
|
||||
set_column(x, on ? 0xFFFFFFFF : 0x00000000);
|
||||
delay(ms);
|
||||
}
|
||||
}
|
||||
@ -371,33 +420,33 @@ void Max7219_register_setup() {
|
||||
#endif
|
||||
#endif // MAX7219_INIT_TEST
|
||||
|
||||
void Max7219_init() {
|
||||
void Max7219::init() {
|
||||
SET_OUTPUT(MAX7219_DIN_PIN);
|
||||
SET_OUTPUT(MAX7219_CLK_PIN);
|
||||
OUT_WRITE(MAX7219_LOAD_PIN, HIGH);
|
||||
delay(1);
|
||||
|
||||
Max7219_register_setup();
|
||||
register_setup();
|
||||
|
||||
for (uint8_t i = 0; i <= 7; i++) { // Empty registers to turn all LEDs off
|
||||
LEDs[i] = 0x00;
|
||||
Max7219(max7219_reg_digit0 + i, 0);
|
||||
Max7219_pulse_load(); // tell the chips to load the clocked out data
|
||||
led_line[i] = 0x00;
|
||||
send(max7219_reg_digit0 + i, 0);
|
||||
pulse_load(); // tell the chips to load the clocked out data
|
||||
}
|
||||
|
||||
#ifdef MAX7219_INIT_TEST
|
||||
#if (MAX7219_INIT_TEST + 0) == 2
|
||||
Max7219_spiral(true, 8);
|
||||
#if MAX7219_INIT_TEST == 2
|
||||
spiral(true, 8);
|
||||
delay(150);
|
||||
Max7219_spiral(false, 8);
|
||||
spiral(false, 8);
|
||||
#else
|
||||
// Do an aesthetically-pleasing pattern to fully test the Max7219 module and LEDs.
|
||||
// Light up and turn off columns, both forward and backward.
|
||||
Max7219_sweep(1, 20, true);
|
||||
Max7219_sweep(1, 20, false);
|
||||
sweep(1, 20, true);
|
||||
sweep(1, 20, false);
|
||||
delay(150);
|
||||
Max7219_sweep(-1, 20, true);
|
||||
Max7219_sweep(-1, 20, false);
|
||||
sweep(-1, 20, true);
|
||||
sweep(-1, 20, false);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
@ -409,58 +458,58 @@ void Max7219_init() {
|
||||
*/
|
||||
|
||||
// Apply changes to update a marker
|
||||
inline void Max7219_Mark16(const uint8_t y, const uint8_t v1, const uint8_t v2) {
|
||||
void Max7219::mark16(const uint8_t y, const uint8_t v1, const uint8_t v2) {
|
||||
#if MAX7219_X_LEDS == 8
|
||||
#if MAX7219_Y_LEDS == 8
|
||||
Max7219_LED_Off(v1 & 0x7, y + (v1 >= 8));
|
||||
Max7219_LED_On(v2 & 0x7, y + (v2 >= 8));
|
||||
led_off(v1 & 0x7, y + (v1 >= 8));
|
||||
led_on(v2 & 0x7, y + (v2 >= 8));
|
||||
#else
|
||||
Max7219_LED_Off(y, v1 & 0xF); // The Max7219 Y-Axis has at least 16 LED's. So use a single column
|
||||
Max7219_LED_On(y, v2 & 0xF);
|
||||
led_off(y, v1 & 0xF); // At least 16 LEDs down. Use a single column.
|
||||
led_on(y, v2 & 0xF);
|
||||
#endif
|
||||
#else // LED matrix has at least 16 LED's on the X-Axis. Use single line of LED's
|
||||
Max7219_LED_Off(v1 & 0xf, y);
|
||||
Max7219_LED_On(v2 & 0xf, y);
|
||||
#else
|
||||
led_off(v1 & 0xF, y); // At least 16 LEDs across. Use a single row.
|
||||
led_on(v2 & 0xF, y);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Apply changes to update a tail-to-head range
|
||||
inline void Max7219_Range16(const uint8_t y, const uint8_t ot, const uint8_t nt, const uint8_t oh, const uint8_t nh) {
|
||||
void Max7219::range16(const uint8_t y, const uint8_t ot, const uint8_t nt, const uint8_t oh, const uint8_t nh) {
|
||||
#if MAX7219_X_LEDS == 8
|
||||
#if MAX7219_Y_LEDS == 8
|
||||
if (ot != nt) for (uint8_t n = ot & 0xF; n != (nt & 0xF) && n != (nh & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_Off(n & 0x7, y + (n >= 8));
|
||||
led_off(n & 0x7, y + (n >= 8));
|
||||
if (oh != nh) for (uint8_t n = (oh + 1) & 0xF; n != ((nh + 1) & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_On(n & 0x7, y + (n >= 8));
|
||||
led_on(n & 0x7, y + (n >= 8));
|
||||
#else // The Max7219 Y-Axis has at least 16 LED's. So use a single column
|
||||
if (ot != nt) for (uint8_t n = ot & 0xF; n != (nt & 0xF) && n != (nh & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_Off(y, n & 0xF);
|
||||
led_off(y, n & 0xF);
|
||||
if (oh != nh) for (uint8_t n = (oh + 1) & 0xF; n != ((nh + 1) & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_On(y, n & 0xF);
|
||||
led_on(y, n & 0xF);
|
||||
#endif
|
||||
#else // LED matrix has at least 16 LED's on the X-Axis. Use single line of LED's
|
||||
if (ot != nt) for (uint8_t n = ot & 0xF; n != (nt & 0xF) && n != (nh & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_Off(n & 0xf, y);
|
||||
led_off(n & 0xF, y);
|
||||
if (oh != nh) for (uint8_t n = (oh + 1) & 0xF; n != ((nh + 1) & 0xF); n = (n + 1) & 0xF)
|
||||
Max7219_LED_On(n & 0xf, y);
|
||||
led_on(n & 0xF, y);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Apply changes to update a quantity
|
||||
inline void Max7219_Quantity16(const uint8_t y, const uint8_t ov, const uint8_t nv) {
|
||||
void Max7219::quantity16(const uint8_t y, const uint8_t ov, const uint8_t nv) {
|
||||
for (uint8_t i = MIN(nv, ov); i < MAX(nv, ov); i++)
|
||||
#if MAX7219_X_LEDS == 8
|
||||
#if MAX7219_Y_LEDS == 8
|
||||
Max7219_LED_Set(i >> 1, y + (i & 1), nv >= ov); // single 8x8 LED matrix. Use two lines to get 16 LED's
|
||||
led_set(i >> 1, y + (i & 1), nv >= ov); // single 8x8 LED matrix. Use two lines to get 16 LED's
|
||||
#else
|
||||
Max7219_LED_Set(y, i, nv >= ov); // The Max7219 Y-Axis has at least 16 LED's. So use a single column
|
||||
led_set(y, i, nv >= ov); // The Max7219 Y-Axis has at least 16 LED's. So use a single column
|
||||
#endif
|
||||
#else
|
||||
Max7219_LED_Set(i, y, nv >= ov); // LED matrix has at least 16 LED's on the X-Axis. Use single line of LED's
|
||||
led_set(i, y, nv >= ov); // LED matrix has at least 16 LED's on the X-Axis. Use single line of LED's
|
||||
#endif
|
||||
}
|
||||
|
||||
void Max7219_idle_tasks() {
|
||||
void Max7219::idle_tasks() {
|
||||
#define MAX7219_USE_HEAD (defined(MAX7219_DEBUG_PLANNER_HEAD) || defined(MAX7219_DEBUG_PLANNER_QUEUE))
|
||||
#define MAX7219_USE_TAIL (defined(MAX7219_DEBUG_PLANNER_TAIL) || defined(MAX7219_DEBUG_PLANNER_QUEUE))
|
||||
#if MAX7219_USE_HEAD || MAX7219_USE_TAIL
|
||||
@ -491,12 +540,12 @@ void Max7219_idle_tasks() {
|
||||
// corrupted, this will fix it within a couple seconds.
|
||||
if (do_blink && ++refresh_cnt >= refresh_limit) {
|
||||
refresh_cnt = 0;
|
||||
Max7219_register_setup();
|
||||
register_setup();
|
||||
}
|
||||
|
||||
#if ENABLED(MAX7219_DEBUG_PRINTER_ALIVE)
|
||||
if (do_blink) {
|
||||
Max7219_LED_Toggle(MAX7219_X_LEDS - 1, MAX7219_Y_LEDS - 1);
|
||||
led_toggle(MAX7219_X_LEDS - 1, MAX7219_Y_LEDS - 1);
|
||||
next_blink = ms + 1000;
|
||||
}
|
||||
#endif
|
||||
@ -506,7 +555,7 @@ void Max7219_idle_tasks() {
|
||||
static int16_t last_head_cnt = 0xF, last_tail_cnt = 0xF;
|
||||
|
||||
if (last_head_cnt != head || last_tail_cnt != tail) {
|
||||
Max7219_Range16(MAX7219_DEBUG_PLANNER_HEAD, last_tail_cnt, tail, last_head_cnt, head);
|
||||
range16(MAX7219_DEBUG_PLANNER_HEAD, last_tail_cnt, tail, last_head_cnt, head);
|
||||
last_head_cnt = head;
|
||||
last_tail_cnt = tail;
|
||||
}
|
||||
@ -516,7 +565,7 @@ void Max7219_idle_tasks() {
|
||||
#ifdef MAX7219_DEBUG_PLANNER_HEAD
|
||||
static int16_t last_head_cnt = 0x1;
|
||||
if (last_head_cnt != head) {
|
||||
Max7219_Mark16(MAX7219_DEBUG_PLANNER_HEAD, last_head_cnt, head);
|
||||
mark16(MAX7219_DEBUG_PLANNER_HEAD, last_head_cnt, head);
|
||||
last_head_cnt = head;
|
||||
}
|
||||
#endif
|
||||
@ -524,7 +573,7 @@ void Max7219_idle_tasks() {
|
||||
#ifdef MAX7219_DEBUG_PLANNER_TAIL
|
||||
static int16_t last_tail_cnt = 0x1;
|
||||
if (last_tail_cnt != tail) {
|
||||
Max7219_Mark16(MAX7219_DEBUG_PLANNER_TAIL, last_tail_cnt, tail);
|
||||
mark16(MAX7219_DEBUG_PLANNER_TAIL, last_tail_cnt, tail);
|
||||
last_tail_cnt = tail;
|
||||
}
|
||||
#endif
|
||||
@ -535,7 +584,7 @@ void Max7219_idle_tasks() {
|
||||
static int16_t last_depth = 0;
|
||||
const int16_t current_depth = (head - tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1) & 0xF;
|
||||
if (current_depth != last_depth) {
|
||||
Max7219_Quantity16(MAX7219_DEBUG_PLANNER_QUEUE, last_depth, current_depth);
|
||||
quantity16(MAX7219_DEBUG_PLANNER_QUEUE, last_depth, current_depth);
|
||||
last_depth = current_depth;
|
||||
}
|
||||
#endif
|
||||
|
@ -31,18 +31,33 @@
|
||||
* #define MAX7219_DIN_PIN 78
|
||||
* #define MAX7219_LOAD_PIN 79
|
||||
*
|
||||
* Max7219_init() is called automatically at startup, and then there are a number of
|
||||
* max7219.init() is called automatically at startup, and then there are a number of
|
||||
* support functions available to control the LEDs in the 8x8 grid.
|
||||
*
|
||||
* If you are using the Max7219 matrix for firmware debug purposes in time sensitive
|
||||
* areas of the code, please be aware that the orientation (rotation) of the display can
|
||||
* areas of the code, please be aware that the orientation (rotation) of the display can
|
||||
* affect the speed. The Max7219 can update a single column fairly fast. It is much
|
||||
* faster to do a Max7219_Set_Column() with a rotation of 90 or 270 degrees than to do
|
||||
* a Max7219_Set_Row(). The opposite is true for rotations of 0 or 180 degrees.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef __MAX7219_DEBUG_LEDS_H__
|
||||
#define __MAX7219_DEBUG_LEDS_H__
|
||||
#ifndef MAX7219_ROTATE
|
||||
#define MAX7219_ROTATE 0
|
||||
#endif
|
||||
#define _ROT ((MAX7219_ROTATE + 360) % 360)
|
||||
|
||||
#define MAX7219_LINES (8 * (MAX7219_NUMBER_UNITS))
|
||||
|
||||
#if _ROT == 0 || _ROT == 180
|
||||
#define MAX7219_Y_LEDS 8
|
||||
#define MAX7219_X_LEDS MAX7219_LINES
|
||||
#elif _ROT == 90 || _ROT == 270
|
||||
#define MAX7219_X_LEDS 8
|
||||
#define MAX7219_Y_LEDS MAX7219_LINES
|
||||
#else
|
||||
#error "MAX7219_ROTATE must be a multiple of +/- 90°."
|
||||
#endif
|
||||
|
||||
//
|
||||
// MAX7219 registers
|
||||
@ -63,85 +78,77 @@
|
||||
#define max7219_reg_shutdown 0x0C
|
||||
#define max7219_reg_displayTest 0x0F
|
||||
|
||||
void Max7219_init();
|
||||
void Max7219_PutByte(uint8_t data);
|
||||
void Max7219_pulse_load();
|
||||
class Max7219 {
|
||||
public:
|
||||
static uint8_t led_line[MAX7219_LINES];
|
||||
|
||||
// Set a single register (e.g., a whole native row)
|
||||
void Max7219(const uint8_t reg, const uint8_t data);
|
||||
Max7219() { }
|
||||
|
||||
// Set a single LED by XY coordinate
|
||||
void Max7219_LED_Set(const uint8_t x, const uint8_t y, const bool on);
|
||||
void Max7219_LED_On(const uint8_t x, const uint8_t y);
|
||||
void Max7219_LED_Off(const uint8_t x, const uint8_t y);
|
||||
void Max7219_LED_Toggle(const uint8_t x, const uint8_t y);
|
||||
static void init();
|
||||
static void register_setup();
|
||||
static void putbyte(uint8_t data);
|
||||
static void pulse_load();
|
||||
|
||||
// Set all LEDs in a single column
|
||||
void Max7219_Set_Column(const uint8_t col, const uint32_t val);
|
||||
void Max7219_Clear_Column(const uint8_t col);
|
||||
// Set a single register (e.g., a whole native row)
|
||||
static void send(const uint8_t reg, const uint8_t data);
|
||||
|
||||
// Set all LEDs in a single row
|
||||
void Max7219_Set_Row(const uint8_t row, const uint32_t val);
|
||||
void Max7219_Clear_Row(const uint8_t row);
|
||||
// Refresh all units
|
||||
inline static void refresh() { for (uint8_t i = 0; i < 8; i++) refresh_line(i); }
|
||||
|
||||
// 16 and 32 bit versions of Row and Column functions
|
||||
// Multiple rows and columns will be used to display the value if
|
||||
// the array of matrix LED's is too narrow to accomplish the goal
|
||||
void Max7219_Set_Rows_16bits(const uint8_t y, uint32_t val);
|
||||
void Max7219_Set_Rows_32bits(const uint8_t y, uint32_t val);
|
||||
void Max7219_Set_Columns_16bits(const uint8_t x, uint32_t val);
|
||||
void Max7219_Set_Columns_32bits(const uint8_t x, uint32_t val);
|
||||
// Update a single native line on all units
|
||||
static void refresh_line(const uint8_t line);
|
||||
|
||||
// Quickly clear the whole matrix
|
||||
void Max7219_Clear();
|
||||
// Update a single native line on just one unit
|
||||
static void refresh_unit_line(const uint8_t line);
|
||||
|
||||
// Apply custom code to update the matrix
|
||||
void Max7219_idle_tasks();
|
||||
// Set a single LED by XY coordinate
|
||||
static void led_set(const uint8_t x, const uint8_t y, const bool on);
|
||||
static void led_on(const uint8_t x, const uint8_t y);
|
||||
static void led_off(const uint8_t x, const uint8_t y);
|
||||
static void led_toggle(const uint8_t x, const uint8_t y);
|
||||
|
||||
#ifndef MAX7219_ROTATE
|
||||
#define MAX7219_ROTATE 0
|
||||
#endif
|
||||
#define _ROT ((MAX7219_ROTATE + 360) % 360)
|
||||
#if _ROT == 0
|
||||
#define MAX7219_UPDATE_AXIS y // Fast line update axis for this orientation of the matrix display
|
||||
#define MAX7219_X_LEDS (8 * MAX7219_NUMBER_UNITS)
|
||||
#define MAX7219_Y_LEDS 8
|
||||
#define XOR_7219(x, y) LEDs[y + (x >> 3) * 8] ^= _BV(7 - (x & 0x07))
|
||||
#define SET_PIXEL_7219(x, y) LEDs[y + (x >> 3) * 8] |= _BV(7 - (x & 0x07))
|
||||
#define CLEAR_PIXEL_7219(x, y) LEDs[y + (x >> 3) * 8] &= (_BV(7 - (x & 0x07)) ^ 0xff)
|
||||
#define BIT_7219(x, y) TEST(LEDs[y + (x >> 3) * 8], 7 - (x & 0x07))
|
||||
#define SEND_7219(R) do{ for (int8_t jj = 0; jj < MAX7219_NUMBER_UNITS; jj++) Max7219(max7219_reg_digit0 + (R & 0x7), LEDs[(R & 0x7) + jj * 8]); Max7219_pulse_load(); }while(0)
|
||||
#elif _ROT == 90
|
||||
#define MAX7219_UPDATE_AXIS x // Fast line update axis for this orientation of the matrix display
|
||||
#define MAX7219_X_LEDS 8
|
||||
#define MAX7219_Y_LEDS (8 * MAX7219_NUMBER_UNITS)
|
||||
#define XOR_7219(x, y) LEDs[x + (((MAX7219_Y_LEDS - 1 - y) >> 3) * 8)] ^= _BV((y & 0x7))
|
||||
#define SET_PIXEL_7219(x, y) LEDs[x + (((MAX7219_Y_LEDS - 1 - y) >> 3) * 8)] |= _BV((y & 0x7))
|
||||
#define CLEAR_PIXEL_7219(x, y) LEDs[x + (((MAX7219_Y_LEDS - 1 - y) >> 3) * 8)] &= (_BV((y & 0x7)) ^ 0xff)
|
||||
#define BIT_7219(x, y) TEST(LEDs[x + (((MAX7219_Y_LEDS - 1 - y) >> 3) * 8)], (y & 0x7))
|
||||
#define SEND_7219(R) do{ for (int8_t jj = 0; jj < MAX7219_NUMBER_UNITS; jj++) Max7219(max7219_reg_digit0 + (R & 0x7), LEDs[(R & 0x7) + jj * 8]); Max7219_pulse_load(); }while(0)
|
||||
#elif _ROT == 180
|
||||
#define MAX7219_UPDATE_AXIS y // Fast line update axis for this orientation of the matrix display
|
||||
#define MAX7219_X_LEDS (8 * MAX7219_NUMBER_UNITS)
|
||||
#define MAX7219_Y_LEDS 8
|
||||
#define XOR_7219(x, y) LEDs[y + ((MAX7219_X_LEDS - 1 - x) >> 3) * 8] ^= _BV((x & 0x07))
|
||||
#define SET_PIXEL_7219(x, y) LEDs[y + ((MAX7219_X_LEDS - 1 - x) >> 3) * 8] |= _BV((x & 0x07))
|
||||
#define CLEAR_PIXEL_7219(x, y) LEDs[y + ((MAX7219_X_LEDS - 1 - x) >> 3) * 8] &= (_BV((x & 0x07)) ^ 0xff)
|
||||
#define BIT_7219(x, y) TEST(LEDs[y + ((MAX7219_X_LEDS - 1 - x) >> 3) * 8], ((x & 0x07)))
|
||||
#define SEND_7219(R) do{ for (int8_t jj = 0; jj < MAX7219_NUMBER_UNITS; jj++) Max7219(max7219_reg_digit7 - (R & 0x7), LEDs[(R & 0x7) + jj * 8]); Max7219_pulse_load(); }while(0)
|
||||
#elif _ROT == 270
|
||||
#define MAX7219_UPDATE_AXIS x // Fast line update axis for this orientation of the matrix display
|
||||
#define MAX7219_X_LEDS 8
|
||||
#define MAX7219_Y_LEDS (8 * MAX7219_NUMBER_UNITS)
|
||||
#define XOR_7219(x, y) LEDs[x + (y >> 3) * 8] ^= _BV(7 - (y & 0x7))
|
||||
#define SET_PIXEL_7219(x, y) LEDs[x + (y >> 3) * 8] |= _BV(7 - (y & 0x7))
|
||||
#define CLEAR_PIXEL_7219(x, y) LEDs[x + (y >> 3) * 8] &= (_BV(7 - (y & 0x7)) ^ 0xff)
|
||||
#define BIT_7219(x, y) TEST(LEDs[x + ( y >> 3) * 8], 7 - (y & 0x7))
|
||||
#define SEND_7219(R) do{ for (int8_t jj = 0; jj < MAX7219_NUMBER_UNITS; jj++) Max7219(max7219_reg_digit7 - (R & 0x7), LEDs[(R & 0x7) + jj * 8]); Max7219_pulse_load(); }while(0)
|
||||
#else
|
||||
#error "MAX7219_ROTATE must be a multiple of +/- 90°."
|
||||
#endif
|
||||
// Set all LEDs in a single column
|
||||
static void set_column(const uint8_t col, const uint32_t val);
|
||||
static void clear_column(const uint8_t col);
|
||||
|
||||
extern uint8_t LEDs[8 * MAX7219_NUMBER_UNITS];
|
||||
// Set all LEDs in a single row
|
||||
static void set_row(const uint8_t row, const uint32_t val);
|
||||
static void clear_row(const uint8_t row);
|
||||
|
||||
#endif // __MAX7219_DEBUG_LEDS_H__
|
||||
// 16 and 32 bit versions of Row and Column functions
|
||||
// Multiple rows and columns will be used to display the value if
|
||||
// the array of matrix LED's is too narrow to accomplish the goal
|
||||
static void set_rows_16bits(const uint8_t y, uint32_t val);
|
||||
static void set_rows_32bits(const uint8_t y, uint32_t val);
|
||||
static void set_columns_16bits(const uint8_t x, uint32_t val);
|
||||
static void set_columns_32bits(const uint8_t x, uint32_t val);
|
||||
|
||||
// Quickly clear the whole matrix
|
||||
static void clear();
|
||||
|
||||
// Quickly fill the whole matrix
|
||||
static void fill();
|
||||
|
||||
// Apply custom code to update the matrix
|
||||
static void idle_tasks();
|
||||
|
||||
private:
|
||||
static void error(const char * const func, const int32_t v1, const int32_t v2=-1);
|
||||
static void noop();
|
||||
static void set(const uint8_t line, const uint8_t bits);
|
||||
static void send_row(const uint8_t row);
|
||||
static void send_column(const uint8_t col);
|
||||
static void mark16(const uint8_t y, const uint8_t v1, const uint8_t v2);
|
||||
static void range16(const uint8_t y, const uint8_t ot, const uint8_t nt, const uint8_t oh, const uint8_t nh);
|
||||
static void quantity16(const uint8_t y, const uint8_t ov, const uint8_t nv);
|
||||
|
||||
#ifdef MAX7219_INIT_TEST
|
||||
#if MAX7219_INIT_TEST == 2
|
||||
static void spiral(const bool on, const uint16_t del);
|
||||
#else
|
||||
static void sweep(const int8_t dir, const uint16_t ms, const bool on);
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
extern Max7219 max7219;
|
||||
|
@ -403,10 +403,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
#if DISABLED(SDSUPPORT) && DISABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||
#error "LCD_PROGRESS_BAR requires SDSUPPORT or LCD_SET_PROGRESS_MANUALLY."
|
||||
#elif DISABLED(ULTRA_LCD)
|
||||
#error "LCD_PROGRESS_BAR requires a character LCD."
|
||||
#elif ENABLED(DOGLCD)
|
||||
#error "LCD_PROGRESS_BAR does not apply to graphical displays."
|
||||
#elif DISABLED(ULTIPANEL)
|
||||
#error "LCD_PROGRESS_BAR requires a character LCD."
|
||||
#elif ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#error "LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both."
|
||||
#endif
|
||||
@ -465,6 +465,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
#if ENABLED(SCARA)
|
||||
#error "BABYSTEPPING is not implemented for SCARA yet."
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
#error "BABYSTEPPING is not implemented for HANGPRINTER."
|
||||
#elif ENABLED(DELTA) && ENABLED(BABYSTEP_XY)
|
||||
#error "BABYSTEPPING only implemented for Z axis on deltabots."
|
||||
#elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && ENABLED(MESH_BED_LEVELING)
|
||||
@ -527,8 +529,12 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
/**
|
||||
* 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."
|
||||
#if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU)
|
||||
#if ENABLED(DELTA)
|
||||
#error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics."
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
#error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with HANGPRINTER kinematics."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -686,6 +692,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
* Allow only one kinematic type to be defined
|
||||
*/
|
||||
#if 1 < 0 \
|
||||
+ ENABLED(HANGPRINTER) \
|
||||
+ ENABLED(DELTA) \
|
||||
+ ENABLED(MORGAN_SCARA) \
|
||||
+ ENABLED(MAKERARM_SCARA) \
|
||||
@ -695,7 +702,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
+ ENABLED(COREYX) \
|
||||
+ ENABLED(COREZX) \
|
||||
+ ENABLED(COREZY)
|
||||
#error "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
|
||||
#error "Please enable only one of HANGPRINTER, DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -717,6 +724,42 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Hangprinter requirements
|
||||
*/
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#if EXTRUDERS > 4
|
||||
#error "Marlin supports a maximum of 4 EXTRUDERS when driving a Hangprinter."
|
||||
#elif ENABLED(CONVENTIONAL_GEOMETRY)
|
||||
#if ANCHOR_A_Y > 0
|
||||
#error "ANCHOR_A_Y should be negative by convention."
|
||||
#elif (ANCHOR_B_X) * (ANCHOR_C_X) > 0
|
||||
#error "ANCHOR_B_X and ANCHOR_C_X should have opposite signs by convention."
|
||||
#elif ANCHOR_B_Y < 0
|
||||
#error "ANCHOR_B_Y should be positive by convention."
|
||||
#elif ANCHOR_C_Y < 0
|
||||
#error "ANCHOR_C_Y should be positive by convention."
|
||||
#elif ANCHOR_A_Z > 0
|
||||
#error "ANCHOR_A_Z should be negative by convention."
|
||||
#elif ANCHOR_B_Z > 0
|
||||
#error "ANCHOR_B_Z should be negative by convention."
|
||||
#elif ANCHOR_C_Z > 0
|
||||
#error "ANCHOR_C_Z should be negative by convention."
|
||||
#elif ANCHOR_D_Z < 0
|
||||
#error "ANCHOR_D_Z should be positive by convention."
|
||||
#endif
|
||||
#endif
|
||||
#elif ENABLED(LINE_BUILDUP_COMPENSATION_FEATURE)
|
||||
#error "LINE_BUILDUP_COMPENSATION_FEATURE is only compatible with HANGPRINTER."
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Mechaduino requirements
|
||||
*/
|
||||
#if ENABLED(MECHADUINO_I2C_COMMANDS) && DISABLED(EXPERIMENTAL_I2CBUS)
|
||||
#error "MECHADUINO_I2C_COMMANDS requires EXPERIMENTAL_I2CBUS to be enabled."
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Probes
|
||||
*/
|
||||
@ -761,6 +804,14 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#if HAS_Z_SERVO_PROBE
|
||||
#ifndef NUM_SERVOS
|
||||
#error "You must set NUM_SERVOS for a Z servo probe (Z_PROBE_SERVO_NR)."
|
||||
#elif Z_PROBE_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
|
||||
#error "SERVO0_PIN must be defined for your servo or BLTOUCH probe."
|
||||
#elif Z_PROBE_SERVO_NR == 1 && !PIN_EXISTS(SERVO1)
|
||||
#error "SERVO1_PIN must be defined for your servo or BLTOUCH probe."
|
||||
#elif Z_PROBE_SERVO_NR == 2 && !PIN_EXISTS(SERVO2)
|
||||
#error "SERVO2_PIN must be defined for your servo or BLTOUCH probe."
|
||||
#elif Z_PROBE_SERVO_NR == 3 && !PIN_EXISTS(SERVO3)
|
||||
#error "SERVO3_PIN must be defined for your servo or BLTOUCH probe."
|
||||
#elif Z_PROBE_SERVO_NR >= NUM_SERVOS
|
||||
#error "Z_PROBE_SERVO_NR must be smaller than NUM_SERVOS."
|
||||
#endif
|
||||
@ -1203,6 +1254,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Endstop Tests
|
||||
*/
|
||||
@ -1210,33 +1262,33 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#define _PLUG_UNUSED_TEST(AXIS,PLUG) (DISABLED(USE_##PLUG##MIN_PLUG) && DISABLED(USE_##PLUG##MAX_PLUG) && !(ENABLED(AXIS##_DUAL_ENDSTOPS) && WITHIN(AXIS##2_USE_ENDSTOP, _##PLUG##MAX_, _##PLUG##MIN_)))
|
||||
#define _AXIS_PLUG_UNUSED_TEST(AXIS) (_PLUG_UNUSED_TEST(AXIS,X) && _PLUG_UNUSED_TEST(AXIS,Y) && _PLUG_UNUSED_TEST(AXIS,Z))
|
||||
|
||||
// At least 3 endstop plugs must be used
|
||||
#if _AXIS_PLUG_UNUSED_TEST(X)
|
||||
#error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG."
|
||||
#endif
|
||||
#if _AXIS_PLUG_UNUSED_TEST(Y)
|
||||
#error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG."
|
||||
#endif
|
||||
#if _AXIS_PLUG_UNUSED_TEST(Z)
|
||||
#error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
|
||||
#endif
|
||||
|
||||
// Delta and Cartesian use 3 homing endstops
|
||||
#if !IS_SCARA
|
||||
#if X_HOME_DIR < 0 && DISABLED(USE_XMIN_PLUG)
|
||||
#error "Enable USE_XMIN_PLUG when homing X to MIN."
|
||||
#elif X_HOME_DIR > 0 && DISABLED(USE_XMAX_PLUG)
|
||||
#error "Enable USE_XMAX_PLUG when homing X to MAX."
|
||||
#elif Y_HOME_DIR < 0 && DISABLED(USE_YMIN_PLUG)
|
||||
#error "Enable USE_YMIN_PLUG when homing Y to MIN."
|
||||
#elif Y_HOME_DIR > 0 && DISABLED(USE_YMAX_PLUG)
|
||||
#error "Enable USE_YMAX_PLUG when homing Y to MAX."
|
||||
#if DISABLED(HANGPRINTER)
|
||||
// At least 3 endstop plugs must be used
|
||||
#if _AXIS_PLUG_UNUSED_TEST(X)
|
||||
#error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG."
|
||||
#elif _AXIS_PLUG_UNUSED_TEST(Y)
|
||||
#error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG."
|
||||
#elif _AXIS_PLUG_UNUSED_TEST(Z)
|
||||
#error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG."
|
||||
#endif
|
||||
|
||||
// Delta and Cartesian use 3 homing endstops
|
||||
#if !IS_SCARA
|
||||
#if X_HOME_DIR < 0 && DISABLED(USE_XMIN_PLUG)
|
||||
#error "Enable USE_XMIN_PLUG when homing X to MIN."
|
||||
#elif X_HOME_DIR > 0 && DISABLED(USE_XMAX_PLUG)
|
||||
#error "Enable USE_XMAX_PLUG when homing X to MAX."
|
||||
#elif Y_HOME_DIR < 0 && DISABLED(USE_YMIN_PLUG)
|
||||
#error "Enable USE_YMIN_PLUG when homing Y to MIN."
|
||||
#elif Y_HOME_DIR > 0 && DISABLED(USE_YMAX_PLUG)
|
||||
#error "Enable USE_YMAX_PLUG when homing Y to MAX."
|
||||
#endif
|
||||
#endif
|
||||
#if Z_HOME_DIR < 0 && DISABLED(USE_ZMIN_PLUG)
|
||||
#error "Enable USE_ZMIN_PLUG when homing Z to MIN."
|
||||
#elif Z_HOME_DIR > 0 && DISABLED(USE_ZMAX_PLUG)
|
||||
#error "Enable USE_ZMAX_PLUG when homing Z to MAX."
|
||||
#endif
|
||||
#endif
|
||||
#if Z_HOME_DIR < 0 && DISABLED(USE_ZMIN_PLUG)
|
||||
#error "Enable USE_ZMIN_PLUG when homing Z to MIN."
|
||||
#elif Z_HOME_DIR > 0 && DISABLED(USE_ZMAX_PLUG)
|
||||
#error "Enable USE_ZMAX_PLUG when homing Z to MAX."
|
||||
#endif
|
||||
|
||||
// Dual endstops requirements
|
||||
@ -1523,7 +1575,7 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#endif
|
||||
#if ENABLED(STEALTHCHOP) && !HAS_STEALTHCHOP
|
||||
#error "STEALTHCHOP requires TMC2130 or TMC2208 stepper drivers."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Digipot requirement
|
||||
@ -1536,17 +1588,24 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Require 4 or more elements in per-axis initializers
|
||||
* Require 5/4 or more elements in per-axis initializers
|
||||
*/
|
||||
#if ENABLED(HANGPRINTER)
|
||||
#define MIN_ELEMENTS "5"
|
||||
#else
|
||||
#define MIN_ELEMENTS "4"
|
||||
#endif
|
||||
|
||||
constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
|
||||
sanity_arr_2[] = DEFAULT_MAX_FEEDRATE,
|
||||
sanity_arr_3[] = DEFAULT_MAX_ACCELERATION;
|
||||
static_assert(COUNT(sanity_arr_1) >= XYZE, "DEFAULT_AXIS_STEPS_PER_UNIT requires 4 (or more) elements.");
|
||||
static_assert(COUNT(sanity_arr_2) >= XYZE, "DEFAULT_MAX_FEEDRATE requires 4 (or more) elements.");
|
||||
static_assert(COUNT(sanity_arr_3) >= XYZE, "DEFAULT_MAX_ACCELERATION requires 4 (or more) elements.");
|
||||
static_assert(COUNT(sanity_arr_1) <= XYZE_N, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements.");
|
||||
static_assert(COUNT(sanity_arr_2) <= XYZE_N, "DEFAULT_MAX_FEEDRATE has too many elements.");
|
||||
static_assert(COUNT(sanity_arr_3) <= XYZE_N, "DEFAULT_MAX_ACCELERATION has too many elements.");
|
||||
|
||||
static_assert(COUNT(sanity_arr_1) >= NUM_AXIS, "DEFAULT_AXIS_STEPS_PER_UNIT requires " MIN_ELEMENTS " (or more) elements for HANGPRINTER.");
|
||||
static_assert(COUNT(sanity_arr_2) >= NUM_AXIS, "DEFAULT_MAX_FEEDRATE requires " MIN_ELEMENTS " (or more) elements for HANGPRINTER.");
|
||||
static_assert(COUNT(sanity_arr_3) >= NUM_AXIS, "DEFAULT_MAX_ACCELERATION requires " MIN_ELEMENTS " (or more) elements for HANGPRINTER.");
|
||||
static_assert(COUNT(sanity_arr_1) <= NUM_AXIS_N, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements.");
|
||||
static_assert(COUNT(sanity_arr_2) <= NUM_AXIS_N, "DEFAULT_MAX_FEEDRATE has too many elements.");
|
||||
static_assert(COUNT(sanity_arr_3) <= NUM_AXIS_N, "DEFAULT_MAX_ACCELERATION has too many elements.");
|
||||
|
||||
/**
|
||||
* Sanity checks for Spindle / Laser
|
||||
|
@ -48,7 +48,7 @@
|
||||
* here we define this default string as the date where the latest release
|
||||
* version was tagged.
|
||||
*/
|
||||
#define STRING_DISTRIBUTION_DATE "2018-07-31"
|
||||
#define STRING_DISTRIBUTION_DATE "2018-08-01"
|
||||
|
||||
/**
|
||||
* Required minimum Configuration.h and Configuration_adv.h file versions.
|
||||
|
@ -95,19 +95,19 @@ typedef struct SettingsDataStruct {
|
||||
//
|
||||
// DISTINCT_E_FACTORS
|
||||
//
|
||||
uint8_t esteppers; // XYZE_N - XYZ
|
||||
uint8_t esteppers; // NUM_AXIS_N - MOV_AXIS
|
||||
|
||||
uint32_t planner_max_acceleration_mm_per_s2[XYZE_N], // M201 XYZE planner.max_acceleration_mm_per_s2[XYZE_N]
|
||||
planner_min_segment_time_us; // M205 B planner.min_segment_time_us
|
||||
float planner_axis_steps_per_mm[XYZE_N], // M92 XYZE planner.axis_steps_per_mm[XYZE_N]
|
||||
planner_max_feedrate_mm_s[XYZE_N], // M203 XYZE planner.max_feedrate_mm_s[XYZE_N]
|
||||
planner_acceleration, // M204 P planner.acceleration
|
||||
planner_retract_acceleration, // M204 R planner.retract_acceleration
|
||||
planner_travel_acceleration, // M204 T planner.travel_acceleration
|
||||
planner_min_feedrate_mm_s, // M205 S planner.min_feedrate_mm_s
|
||||
planner_min_travel_feedrate_mm_s, // M205 T planner.min_travel_feedrate_mm_s
|
||||
planner_max_jerk[XYZE], // M205 XYZE planner.max_jerk[XYZE]
|
||||
planner_junction_deviation_mm; // M205 J planner.junction_deviation_mm
|
||||
uint32_t planner_max_acceleration_mm_per_s2[NUM_AXIS_N], // M201 XYZE/ABCDE planner.max_acceleration_mm_per_s2[NUM_AXIS_N]
|
||||
planner_min_segment_time_us; // M205 Q planner.min_segment_time_us
|
||||
float planner_axis_steps_per_mm[NUM_AXIS_N], // M92 XYZE/ABCDE planner.axis_steps_per_mm[NUM_AXIS_N]
|
||||
planner_max_feedrate_mm_s[NUM_AXIS_N], // M203 XYZE/ABCDE planner.max_feedrate_mm_s[NUM_AXIS_N]
|
||||
planner_acceleration, // M204 P planner.acceleration
|
||||
planner_retract_acceleration, // M204 R planner.retract_acceleration
|
||||
planner_travel_acceleration, // M204 T planner.travel_acceleration
|
||||
planner_min_feedrate_mm_s, // M205 S planner.min_feedrate_mm_s
|
||||
planner_min_travel_feedrate_mm_s, // M205 T planner.min_travel_feedrate_mm_s
|
||||
planner_max_jerk[NUM_AXIS], // M205 XYZE/ABCDE planner.max_jerk[NUM_AXIS]
|
||||
planner_junction_deviation_mm; // M205 J planner.junction_deviation_mm
|
||||
|
||||
float home_offset[XYZ]; // M206 XYZ
|
||||
|
||||
@ -163,6 +163,7 @@ typedef struct SettingsDataStruct {
|
||||
// DELTA / [XYZ]_DUAL_ENDSTOPS
|
||||
//
|
||||
#if ENABLED(DELTA)
|
||||
|
||||
float delta_height, // M666 H
|
||||
delta_endstop_adj[ABC], // M666 XYZ
|
||||
delta_radius, // M665 R
|
||||
@ -170,10 +171,27 @@ typedef struct SettingsDataStruct {
|
||||
delta_segments_per_second, // M665 S
|
||||
delta_calibration_radius, // M665 B
|
||||
delta_tower_angle_trim[ABC]; // M665 XYZ
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
|
||||
float anchor_A_y, // M665 W
|
||||
anchor_A_z, // M665 E
|
||||
anchor_B_x, // M665 R
|
||||
anchor_B_y, // M665 T
|
||||
anchor_B_z, // M665 Y
|
||||
anchor_C_x, // M665 U
|
||||
anchor_C_y, // M665 I
|
||||
anchor_C_z, // M665 O
|
||||
anchor_D_z, // M665 P
|
||||
delta_segments_per_second, // M665 S
|
||||
hangprinter_calibration_radius_placeholder;
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
float x_endstop_adj, // M666 X
|
||||
y_endstop_adj, // M666 Y
|
||||
z_endstop_adj; // M666 Z
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
@ -285,6 +303,8 @@ void MarlinSettings::postprocess() {
|
||||
// planner position so the stepper counts will be set correctly.
|
||||
#if ENABLED(DELTA)
|
||||
recalc_delta_settings();
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
recalc_hangprinter_settings();
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
@ -418,7 +438,7 @@ void MarlinSettings::postprocess() {
|
||||
|
||||
_FIELD_TEST(esteppers);
|
||||
|
||||
const uint8_t esteppers = COUNT(planner.axis_steps_per_mm) - XYZ;
|
||||
const uint8_t esteppers = NUM_AXIS_N - MOV_AXIS;
|
||||
EEPROM_WRITE(esteppers);
|
||||
|
||||
EEPROM_WRITE(planner.max_acceleration_mm_per_s2);
|
||||
@ -432,7 +452,13 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_WRITE(planner.min_travel_feedrate_mm_s);
|
||||
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
const float planner_max_jerk[] = { float(DEFAULT_XJERK), float(DEFAULT_YJERK), float(DEFAULT_ZJERK), float(DEFAULT_EJERK) };
|
||||
const float planner_max_jerk[] = {
|
||||
#if ENABLED(HANGPRINTER)
|
||||
float(DEFAULT_AJERK), float(DEFAULT_BJERK), float(DEFAULT_CJERK), float(DEFAULT_DJERK), float(DEFAULT_EJERK)
|
||||
#else
|
||||
float(DEFAULT_XJERK), float(DEFAULT_YJERK), float(DEFAULT_ZJERK), float(DEFAULT_EJERK)
|
||||
#endif
|
||||
};
|
||||
EEPROM_WRITE(planner_max_jerk);
|
||||
EEPROM_WRITE(planner.junction_deviation_mm);
|
||||
#else
|
||||
@ -560,6 +586,22 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_WRITE(delta_calibration_radius); // 1 float
|
||||
EEPROM_WRITE(delta_tower_angle_trim); // 3 floats
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
|
||||
dummy = 0.0f;
|
||||
_FIELD_TEST(anchor_A_y);
|
||||
EEPROM_WRITE(anchor_A_y); // 1 float
|
||||
EEPROM_WRITE(anchor_A_z); // 1 float
|
||||
EEPROM_WRITE(anchor_B_x); // 1 float
|
||||
EEPROM_WRITE(anchor_B_y); // 1 float
|
||||
EEPROM_WRITE(anchor_B_z); // 1 float
|
||||
EEPROM_WRITE(anchor_C_x); // 1 float
|
||||
EEPROM_WRITE(anchor_C_y); // 1 float
|
||||
EEPROM_WRITE(anchor_C_z); // 1 float
|
||||
EEPROM_WRITE(anchor_D_z); // 1 float
|
||||
EEPROM_WRITE(delta_segments_per_second); // 1 float
|
||||
EEPROM_WRITE(dummy); // 1 float
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
_FIELD_TEST(x_endstop_adj);
|
||||
@ -1010,17 +1052,17 @@ void MarlinSettings::postprocess() {
|
||||
const uint32_t def1[] = DEFAULT_MAX_ACCELERATION;
|
||||
const float def2[] = DEFAULT_AXIS_STEPS_PER_UNIT, def3[] = DEFAULT_MAX_FEEDRATE;
|
||||
|
||||
uint32_t tmp1[XYZ + esteppers];
|
||||
uint32_t tmp1[MOV_AXIS + esteppers];
|
||||
EEPROM_READ(tmp1); // max_acceleration_mm_per_s2
|
||||
EEPROM_READ(planner.min_segment_time_us);
|
||||
|
||||
float tmp2[XYZ + esteppers], tmp3[XYZ + esteppers];
|
||||
float tmp2[MOV_AXIS + esteppers], tmp3[MOV_AXIS + esteppers];
|
||||
EEPROM_READ(tmp2); // axis_steps_per_mm
|
||||
EEPROM_READ(tmp3); // max_feedrate_mm_s
|
||||
if (!validating) LOOP_XYZE_N(i) {
|
||||
planner.max_acceleration_mm_per_s2[i] = i < XYZ + esteppers ? tmp1[i] : def1[i < COUNT(def1) ? i : COUNT(def1) - 1];
|
||||
planner.axis_steps_per_mm[i] = i < XYZ + esteppers ? tmp2[i] : def2[i < COUNT(def2) ? i : COUNT(def2) - 1];
|
||||
planner.max_feedrate_mm_s[i] = i < XYZ + esteppers ? tmp3[i] : def3[i < COUNT(def3) ? i : COUNT(def3) - 1];
|
||||
if (!validating) LOOP_NUM_AXIS_N(i) {
|
||||
planner.max_acceleration_mm_per_s2[i] = i < MOV_AXIS + esteppers ? tmp1[i] : def1[i < COUNT(def1) ? i : COUNT(def1) - 1];
|
||||
planner.axis_steps_per_mm[i] = i < MOV_AXIS + esteppers ? tmp2[i] : def2[i < COUNT(def2) ? i : COUNT(def2) - 1];
|
||||
planner.max_feedrate_mm_s[i] = i < MOV_AXIS + esteppers ? tmp3[i] : def3[i < COUNT(def3) ? i : COUNT(def3) - 1];
|
||||
}
|
||||
|
||||
EEPROM_READ(planner.acceleration);
|
||||
@ -1165,6 +1207,19 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_READ(delta_calibration_radius); // 1 float
|
||||
EEPROM_READ(delta_tower_angle_trim); // 3 floats
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
EEPROM_READ(anchor_A_y); // 1 float
|
||||
EEPROM_READ(anchor_A_z); // 1 float
|
||||
EEPROM_READ(anchor_B_x); // 1 float
|
||||
EEPROM_READ(anchor_B_y); // 1 float
|
||||
EEPROM_READ(anchor_B_z); // 1 float
|
||||
EEPROM_READ(anchor_C_x); // 1 float
|
||||
EEPROM_READ(anchor_C_y); // 1 float
|
||||
EEPROM_READ(anchor_C_z); // 1 float
|
||||
EEPROM_READ(anchor_D_z); // 1 float
|
||||
EEPROM_READ(delta_segments_per_second); // 1 float
|
||||
EEPROM_READ(dummy); // 1 float
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
_FIELD_TEST(x_endstop_adj);
|
||||
@ -1714,8 +1769,9 @@ void MarlinSettings::postprocess() {
|
||||
*/
|
||||
void MarlinSettings::reset() {
|
||||
static const float tmp1[] PROGMEM = DEFAULT_AXIS_STEPS_PER_UNIT, tmp2[] PROGMEM = DEFAULT_MAX_FEEDRATE;
|
||||
|
||||
static const uint32_t tmp3[] PROGMEM = DEFAULT_MAX_ACCELERATION;
|
||||
LOOP_XYZE_N(i) {
|
||||
LOOP_NUM_AXIS_N(i) {
|
||||
planner.axis_steps_per_mm[i] = pgm_read_float(&tmp1[i < COUNT(tmp1) ? i : COUNT(tmp1) - 1]);
|
||||
planner.max_feedrate_mm_s[i] = pgm_read_float(&tmp2[i < COUNT(tmp2) ? i : COUNT(tmp2) - 1]);
|
||||
planner.max_acceleration_mm_per_s2[i] = pgm_read_dword_near(&tmp3[i < COUNT(tmp3) ? i : COUNT(tmp3) - 1]);
|
||||
@ -1731,9 +1787,16 @@ void MarlinSettings::reset() {
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
planner.junction_deviation_mm = float(JUNCTION_DEVIATION_MM);
|
||||
#else
|
||||
planner.max_jerk[X_AXIS] = DEFAULT_XJERK;
|
||||
planner.max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
||||
planner.max_jerk[Z_AXIS] = DEFAULT_ZJERK;
|
||||
#if ENABLED(HANGPRINTER)
|
||||
planner.max_jerk[A_AXIS] = DEFAULT_AJERK;
|
||||
planner.max_jerk[B_AXIS] = DEFAULT_BJERK;
|
||||
planner.max_jerk[C_AXIS] = DEFAULT_CJERK;
|
||||
planner.max_jerk[D_AXIS] = DEFAULT_DJERK;
|
||||
#else
|
||||
planner.max_jerk[X_AXIS] = DEFAULT_XJERK;
|
||||
planner.max_jerk[Y_AXIS] = DEFAULT_YJERK;
|
||||
planner.max_jerk[Z_AXIS] = DEFAULT_ZJERK;
|
||||
#endif
|
||||
planner.max_jerk[E_AXIS] = DEFAULT_EJERK;
|
||||
#endif
|
||||
|
||||
@ -1785,6 +1848,19 @@ void MarlinSettings::reset() {
|
||||
delta_calibration_radius = DELTA_CALIBRATION_RADIUS;
|
||||
COPY(delta_tower_angle_trim, dta);
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
|
||||
anchor_A_y = float(ANCHOR_A_Y);
|
||||
anchor_A_z = float(ANCHOR_A_Z);
|
||||
anchor_B_x = float(ANCHOR_B_X);
|
||||
anchor_B_y = float(ANCHOR_B_Y);
|
||||
anchor_B_z = float(ANCHOR_B_Z);
|
||||
anchor_C_x = float(ANCHOR_C_X);
|
||||
anchor_C_y = float(ANCHOR_C_Y);
|
||||
anchor_C_z = float(ANCHOR_C_Z);
|
||||
anchor_D_z = float(ANCHOR_D_Z);
|
||||
delta_segments_per_second = KINEMATIC_SEGMENTS_PER_SECOND;
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||
@ -1814,7 +1890,6 @@ void MarlinSettings::reset() {
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
@ -2038,9 +2113,16 @@ void MarlinSettings::reset() {
|
||||
SERIAL_ECHOLNPGM("Steps per unit:");
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M92 X", LINEAR_UNIT(planner.axis_steps_per_mm[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.axis_steps_per_mm[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.axis_steps_per_mm[Z_AXIS]));
|
||||
#if ENABLED(HANGPRINTER)
|
||||
SERIAL_ECHOPAIR(" M92 A", LINEAR_UNIT(planner.axis_steps_per_mm[A_AXIS]));
|
||||
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(planner.axis_steps_per_mm[B_AXIS]));
|
||||
SERIAL_ECHOPAIR(" C", LINEAR_UNIT(planner.axis_steps_per_mm[C_AXIS]));
|
||||
SERIAL_ECHOPAIR(" D", LINEAR_UNIT(planner.axis_steps_per_mm[D_AXIS]));
|
||||
#else
|
||||
SERIAL_ECHOPAIR(" M92 X", LINEAR_UNIT(planner.axis_steps_per_mm[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.axis_steps_per_mm[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.axis_steps_per_mm[Z_AXIS]));
|
||||
#endif
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS]));
|
||||
#endif
|
||||
@ -2058,9 +2140,16 @@ void MarlinSettings::reset() {
|
||||
SERIAL_ECHOLNPGM("Maximum feedrates (units/s):");
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M203 X", LINEAR_UNIT(planner.max_feedrate_mm_s[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_feedrate_mm_s[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_feedrate_mm_s[Z_AXIS]));
|
||||
#if ENABLED(HANGPRINTER)
|
||||
SERIAL_ECHOPAIR(" M203 A", LINEAR_UNIT(planner.max_feedrate_mm_s[A_AXIS]));
|
||||
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(planner.max_feedrate_mm_s[B_AXIS]));
|
||||
SERIAL_ECHOPAIR(" C", LINEAR_UNIT(planner.max_feedrate_mm_s[C_AXIS]));
|
||||
SERIAL_ECHOPAIR(" D", LINEAR_UNIT(planner.max_feedrate_mm_s[D_AXIS]));
|
||||
#else
|
||||
SERIAL_ECHOPAIR(" M203 X", LINEAR_UNIT(planner.max_feedrate_mm_s[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_feedrate_mm_s[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_feedrate_mm_s[Z_AXIS]));
|
||||
#endif
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS]));
|
||||
#endif
|
||||
@ -2078,9 +2167,16 @@ void MarlinSettings::reset() {
|
||||
SERIAL_ECHOLNPGM("Maximum Acceleration (units/s2):");
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M201 X", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Z_AXIS]));
|
||||
#if ENABLED(HANGPRINTER)
|
||||
SERIAL_ECHOPAIR(" M201 A", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[A_AXIS]));
|
||||
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[B_AXIS]));
|
||||
SERIAL_ECHOPAIR(" C", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[C_AXIS]));
|
||||
SERIAL_ECHOPAIR(" D", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[D_AXIS]));
|
||||
#else
|
||||
SERIAL_ECHOPAIR(" M201 X", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Z_AXIS]));
|
||||
#endif
|
||||
#if DISABLED(DISTINCT_E_FACTORS)
|
||||
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS]));
|
||||
#endif
|
||||
@ -2104,11 +2200,15 @@ void MarlinSettings::reset() {
|
||||
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPGM("Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate>");
|
||||
SERIAL_ECHOPGM("Advanced: Q<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate>");
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
SERIAL_ECHOPGM(" J<junc_dev>");
|
||||
#else
|
||||
SERIAL_ECHOPGM(" X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk>");
|
||||
#if ENABLED(HANGPRINTER)
|
||||
SERIAL_ECHOPGM(" A<max_a_jerk> B<max_b_jerk> C<max_c_jerk> D<max_d_jerk>");
|
||||
#else
|
||||
SERIAL_ECHOPGM(" X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk>");
|
||||
#endif
|
||||
#endif
|
||||
#if DISABLED(JUNCTION_DEVIATION) || ENABLED(LIN_ADVANCE)
|
||||
SERIAL_ECHOPGM(" E<max_e_jerk>");
|
||||
@ -2116,19 +2216,25 @@ void MarlinSettings::reset() {
|
||||
SERIAL_EOL();
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M205 B", LINEAR_UNIT(planner.min_segment_time_us));
|
||||
SERIAL_ECHOPAIR(" M205 Q", LINEAR_UNIT(planner.min_segment_time_us));
|
||||
SERIAL_ECHOPAIR(" S", LINEAR_UNIT(planner.min_feedrate_mm_s));
|
||||
SERIAL_ECHOPAIR(" T", LINEAR_UNIT(planner.min_travel_feedrate_mm_s));
|
||||
|
||||
#if ENABLED(JUNCTION_DEVIATION)
|
||||
SERIAL_ECHOPAIR(" J", LINEAR_UNIT(planner.junction_deviation_mm));
|
||||
#else
|
||||
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(planner.max_jerk[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS]));
|
||||
#if ENABLED(HANGPRINTER)
|
||||
SERIAL_ECHOPAIR(" A", LINEAR_UNIT(planner.max_jerk[A_AXIS]));
|
||||
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(planner.max_jerk[B_AXIS]));
|
||||
SERIAL_ECHOPAIR(" C", LINEAR_UNIT(planner.max_jerk[C_AXIS]));
|
||||
SERIAL_ECHOPAIR(" D", LINEAR_UNIT(planner.max_jerk[D_AXIS]));
|
||||
#else
|
||||
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(planner.max_jerk[X_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS]));
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS]));
|
||||
#endif
|
||||
SERIAL_ECHOPAIR(" E", LINEAR_UNIT(planner.max_jerk[E_AXIS]));
|
||||
#endif
|
||||
|
||||
SERIAL_EOL();
|
||||
|
||||
#if HAS_M206_COMMAND
|
||||
@ -2219,8 +2325,8 @@ void MarlinSettings::reset() {
|
||||
SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
|
||||
SERIAL_ECHOLNPGM(" meshes.\n");
|
||||
}
|
||||
|
||||
// ubl.report_current_mesh(PORTVAR_SOLO); // This is too verbose for large mesh's. A better (more terse)
|
||||
|
||||
//ubl.report_current_mesh(PORTVAR_SOLO); // This is too verbose for large mesh's. A better (more terse)
|
||||
// solution needs to be found.
|
||||
#elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
|
||||
@ -2266,6 +2372,24 @@ void MarlinSettings::reset() {
|
||||
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(delta_tower_angle_trim[C_AXIS]));
|
||||
SERIAL_EOL();
|
||||
|
||||
#elif ENABLED(HANGPRINTER)
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Hangprinter settings: W<Ay> E<Az> R<Bx> T<By> Y<Bz> U<Cx> I<Cy> O<Cz> P<Dz> S<segments_per_s>");
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M665 W", anchor_A_y);
|
||||
SERIAL_ECHOPAIR(" E", anchor_A_z);
|
||||
SERIAL_ECHOPAIR(" R", anchor_B_x);
|
||||
SERIAL_ECHOPAIR(" T", anchor_B_y);
|
||||
SERIAL_ECHOPAIR(" Y", anchor_B_z);
|
||||
SERIAL_ECHOPAIR(" U", anchor_C_x);
|
||||
SERIAL_ECHOPAIR(" I", anchor_C_y);
|
||||
SERIAL_ECHOPAIR(" O", anchor_C_z);
|
||||
SERIAL_ECHOPAIR(" P", anchor_D_z);
|
||||
SERIAL_ECHOPAIR(" S", delta_segments_per_second);
|
||||
SERIAL_EOL();
|
||||
|
||||
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
if (!forReplay) {
|
||||
|
@ -40,52 +40,21 @@
|
||||
#define TMC2660 0x10B
|
||||
#define TMC2660_STANDALONE 0x00B
|
||||
|
||||
#define AXIS_DRIVER_TYPE(A,T) ( defined(A##_DRIVER_TYPE) && (A##_DRIVER_TYPE == T) )
|
||||
#define _AXIS_DRIVER_TYPE(A,T) ( defined(A##_DRIVER_TYPE) && (A##_DRIVER_TYPE == T) )
|
||||
|
||||
#define AXIS_DRIVER_TYPE_X(T) AXIS_DRIVER_TYPE(X,T)
|
||||
#define AXIS_DRIVER_TYPE_Y(T) AXIS_DRIVER_TYPE(Y,T)
|
||||
#define AXIS_DRIVER_TYPE_Z(T) AXIS_DRIVER_TYPE(Z,T)
|
||||
#define AXIS_DRIVER_TYPE_X(T) _AXIS_DRIVER_TYPE(X,T)
|
||||
#define AXIS_DRIVER_TYPE_Y(T) _AXIS_DRIVER_TYPE(Y,T)
|
||||
#define AXIS_DRIVER_TYPE_Z(T) _AXIS_DRIVER_TYPE(Z,T)
|
||||
#define AXIS_DRIVER_TYPE_X2(T) (ENABLED(X_DUAL_STEPPER_DRIVERS) || ENABLED(DUAL_X_CARRIAGE)) && _AXIS_DRIVER_TYPE(X2,T)
|
||||
#define AXIS_DRIVER_TYPE_Y2(T) (ENABLED(Y_DUAL_STEPPER_DRIVERS) && _AXIS_DRIVER_TYPE(Y2,T))
|
||||
#define AXIS_DRIVER_TYPE_Z2(T) (ENABLED(Z_DUAL_STEPPER_DRIVERS) && _AXIS_DRIVER_TYPE(Z2,T))
|
||||
#define AXIS_DRIVER_TYPE_E0(T) (E_STEPPERS > 0 && _AXIS_DRIVER_TYPE(E0,T))
|
||||
#define AXIS_DRIVER_TYPE_E1(T) (E_STEPPERS > 1 && _AXIS_DRIVER_TYPE(E1,T))
|
||||
#define AXIS_DRIVER_TYPE_E2(T) (E_STEPPERS > 2 && _AXIS_DRIVER_TYPE(E2,T))
|
||||
#define AXIS_DRIVER_TYPE_E3(T) (E_STEPPERS > 3 && _AXIS_DRIVER_TYPE(E3,T))
|
||||
#define AXIS_DRIVER_TYPE_E4(T) (E_STEPPERS > 4 && _AXIS_DRIVER_TYPE(E4,T))
|
||||
|
||||
#if ENABLED(X_DUAL_STEPPER_DRIVERS) || ENABLED(DUAL_X_CARRIAGE)
|
||||
#define AXIS_DRIVER_TYPE_X2(T) AXIS_DRIVER_TYPE(X2,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_X2(T) false
|
||||
#endif
|
||||
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
|
||||
#define AXIS_DRIVER_TYPE_Y2(T) AXIS_DRIVER_TYPE(Y2,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_Y2(T) false
|
||||
#endif
|
||||
#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
|
||||
#define AXIS_DRIVER_TYPE_Z2(T) AXIS_DRIVER_TYPE(Z2,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_Z2(T) false
|
||||
#endif
|
||||
#if E_STEPPERS > 0
|
||||
#define AXIS_DRIVER_TYPE_E0(T) AXIS_DRIVER_TYPE(E0,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_E0(T) false
|
||||
#endif
|
||||
#if E_STEPPERS > 1
|
||||
#define AXIS_DRIVER_TYPE_E1(T) AXIS_DRIVER_TYPE(E1,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_E1(T) false
|
||||
#endif
|
||||
#if E_STEPPERS > 2
|
||||
#define AXIS_DRIVER_TYPE_E2(T) AXIS_DRIVER_TYPE(E2,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_E2(T) false
|
||||
#endif
|
||||
#if E_STEPPERS > 3
|
||||
#define AXIS_DRIVER_TYPE_E3(T) AXIS_DRIVER_TYPE(E3,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_E3(T) false
|
||||
#endif
|
||||
#if E_STEPPERS > 4
|
||||
#define AXIS_DRIVER_TYPE_E4(T) AXIS_DRIVER_TYPE(E4,T)
|
||||
#else
|
||||
#define AXIS_DRIVER_TYPE_E4(T) false
|
||||
#endif
|
||||
#define AXIS_DRIVER_TYPE(A,T) AXIS_DRIVER_TYPE_##A(T)
|
||||
|
||||
#define HAS_DRIVER(T) (AXIS_DRIVER_TYPE_X(T) || AXIS_DRIVER_TYPE_X2(T) || \
|
||||
AXIS_DRIVER_TYPE_Y(T) || AXIS_DRIVER_TYPE_Y2(T) || \
|
||||
@ -96,10 +65,9 @@
|
||||
|
||||
// Test for supported TMC drivers that require advanced configuration
|
||||
// Does not match standalone configurations
|
||||
#define HAS_TRINAMIC ( HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2660) )
|
||||
#define HAS_TRINAMIC (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2208))
|
||||
|
||||
#define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE_##A(TMC2130) || \
|
||||
AXIS_DRIVER_TYPE_##A(TMC2208) || \
|
||||
AXIS_DRIVER_TYPE_##A(TMC2660) )
|
||||
AXIS_DRIVER_TYPE_##A(TMC2208) )
|
||||
|
||||
#endif // _DRIVERS_H_
|
||||
|
@ -229,11 +229,13 @@ void Endstops::not_homing() {
|
||||
#endif
|
||||
}
|
||||
|
||||
// If the last move failed to trigger an endstop, call kill
|
||||
void Endstops::validate_homing_move() {
|
||||
if (trigger_state()) hit_on_purpose();
|
||||
else kill(PSTR(MSG_ERR_HOMING_FAILED));
|
||||
}
|
||||
#if ENABLED(VALIDATE_HOMING_ENDSTOPS)
|
||||
// If the last move failed to trigger an endstop, call kill
|
||||
void Endstops::validate_homing_move() {
|
||||
if (trigger_state()) hit_on_purpose();
|
||||
else kill(PSTR(MSG_ERR_HOMING_FAILED));
|
||||
}
|
||||
#endif
|
||||
|
||||
// Enable / disable endstop z-probe checking
|
||||
#if HAS_BED_PROBE
|
||||
@ -306,12 +308,16 @@ void Endstops::event_handler() {
|
||||
prev_hit_state = hit_state;
|
||||
} // Endstops::report_state
|
||||
|
||||
void Endstops::M119() {
|
||||
static void print_es_state(const bool is_hit, const char * const label=NULL) {
|
||||
if (label) serialprintPGM(label);
|
||||
SERIAL_PROTOCOLPGM(": ");
|
||||
serialprintPGM(is_hit ? PSTR(MSG_ENDSTOP_HIT) : PSTR(MSG_ENDSTOP_OPEN));
|
||||
SERIAL_EOL();
|
||||
}
|
||||
|
||||
void _O2 Endstops::M119() {
|
||||
SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT);
|
||||
#define ES_REPORT(AXIS) do{ \
|
||||
SERIAL_PROTOCOLPGM(MSG_##AXIS); \
|
||||
SERIAL_PROTOCOLLN(((READ(AXIS##_PIN)^AXIS##_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); \
|
||||
}while(0)
|
||||
#define ES_REPORT(S) print_es_state(READ(S##_PIN) != S##_ENDSTOP_INVERTING, PSTR(MSG_##S))
|
||||
#if HAS_X_MIN
|
||||
ES_REPORT(X_MIN);
|
||||
#endif
|
||||
@ -349,12 +355,33 @@ void Endstops::M119() {
|
||||
ES_REPORT(Z2_MAX);
|
||||
#endif
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
|
||||
SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
print_es_state(READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING, PSTR(MSG_Z_PROBE));
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
|
||||
SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#if NUM_RUNOUT_SENSORS == 1
|
||||
print_es_state(READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_INVERTING, PSTR(MSG_FILAMENT_RUNOUT_SENSOR));
|
||||
#else
|
||||
for (uint8_t i = 1; i <= NUM_RUNOUT_SENSORS; i++) {
|
||||
pin_t pin;
|
||||
switch (i) {
|
||||
default: continue;
|
||||
case 1: pin = FIL_RUNOUT_PIN; break;
|
||||
case 2: pin = FIL_RUNOUT2_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 2
|
||||
case 3: pin = FIL_RUNOUT3_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 3
|
||||
case 4: pin = FIL_RUNOUT4_PIN; break;
|
||||
#if NUM_RUNOUT_SENSORS > 4
|
||||
case 5: pin = FIL_RUNOUT5_PIN; break;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
|
||||
if (i > 1) { SERIAL_CHAR(' '); SERIAL_CHAR('0' + i); }
|
||||
print_es_state(digitalRead(pin) != FIL_RUNOUT_INVERTING);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
} // Endstops::M119
|
||||
|
||||
|
@ -29,6 +29,8 @@
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
#define VALIDATE_HOMING_ENDSTOPS
|
||||
|
||||
enum EndstopEnum : char {
|
||||
X_MIN,
|
||||
Y_MIN,
|
||||
@ -143,8 +145,12 @@ class Endstops {
|
||||
// Disable / Enable endstops based on ENSTOPS_ONLY_FOR_HOMING and global enable
|
||||
static void not_homing();
|
||||
|
||||
// If the last move failed to trigger an endstop, call kill
|
||||
static void validate_homing_move();
|
||||
#if ENABLED(VALIDATE_HOMING_ENDSTOPS)
|
||||
// If the last move failed to trigger an endstop, call kill
|
||||
static void validate_homing_move();
|
||||
#else
|
||||
FORCE_INLINE static void validate_homing_move() { hit_on_purpose(); }
|
||||
#endif
|
||||
|
||||
// Clear endstops (i.e., they were hit intentionally) to suppress the report
|
||||
FORCE_INLINE static void hit_on_purpose() { hit_state = 0; }
|
||||
|
@ -39,10 +39,14 @@ enum AxisEnum : unsigned char {
|
||||
B_AXIS = 1,
|
||||
Z_AXIS = 2,
|
||||
C_AXIS = 2,
|
||||
E_AXIS = 3,
|
||||
X_HEAD = 4,
|
||||
Y_HEAD = 5,
|
||||
Z_HEAD = 6,
|
||||
E_CART = 3,
|
||||
#if ENABLED(HANGPRINTER) // Hangprinter order: A_AXIS, B_AXIS, C_AXIS, D_AXIS, E_AXIS
|
||||
D_AXIS = 3,
|
||||
E_AXIS = 4,
|
||||
#else
|
||||
E_AXIS = 3,
|
||||
#endif
|
||||
X_HEAD, Y_HEAD, Z_HEAD,
|
||||
ALL_AXES = 0xFE,
|
||||
NO_AXIS = 0xFF
|
||||
};
|
||||
@ -54,11 +58,11 @@ enum AxisEnum : unsigned char {
|
||||
|
||||
#define LOOP_NA(VAR) LOOP_L_N(VAR, NUM_AXIS)
|
||||
#define LOOP_XYZ(VAR) LOOP_S_LE_N(VAR, X_AXIS, Z_AXIS)
|
||||
#define LOOP_XYZE(VAR) LOOP_S_LE_N(VAR, X_AXIS, E_AXIS)
|
||||
#define LOOP_XYZE(VAR) LOOP_S_LE_N(VAR, X_AXIS, E_CART)
|
||||
#define LOOP_XYZE_N(VAR) LOOP_S_L_N(VAR, X_AXIS, XYZE_N)
|
||||
#define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS)
|
||||
#define LOOP_ABCE(VAR) LOOP_S_LE_N(VAR, A_AXIS, E_AXIS)
|
||||
#define LOOP_ABCE_N(VAR) LOOP_S_L_N(VAR, A_AXIS, XYZE_N)
|
||||
#define LOOP_MOV_AXIS(VAR) LOOP_S_L_N(VAR, A_AXIS, MOV_AXIS)
|
||||
#define LOOP_NUM_AXIS(VAR) LOOP_S_L_N(VAR, A_AXIS, NUM_AXIS)
|
||||
#define LOOP_NUM_AXIS_N(VAR) LOOP_S_L_N(VAR, A_AXIS, NUM_AXIS_N)
|
||||
|
||||
typedef enum {
|
||||
LINEARUNIT_MM,
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -550,9 +550,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -560,17 +563,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1931,9 +1934,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
1997
Marlin/example_configurations/Anet/A2plus/Configuration.h
Normal file
1997
Marlin/example_configurations/Anet/A2plus/Configuration.h
Normal file
File diff suppressed because it is too large
Load Diff
1654
Marlin/example_configurations/Anet/A2plus/Configuration_adv.h
Normal file
1654
Marlin/example_configurations/Anet/A2plus/Configuration_adv.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -550,9 +550,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -560,17 +563,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -2066,9 +2069,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -202,11 +202,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -537,9 +537,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -547,17 +550,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1920,9 +1923,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -518,9 +518,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -528,17 +531,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1899,9 +1902,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -209,11 +209,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -531,9 +531,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -541,17 +544,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1909,9 +1912,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -828,6 +833,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -839,6 +846,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -851,6 +860,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -518,9 +518,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -528,17 +531,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1899,9 +1902,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -202,11 +202,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -529,9 +529,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -539,17 +542,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1910,9 +1913,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -540,9 +540,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -550,17 +553,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -623,7 +626,7 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 5000 }
|
||||
#define DEFAULT_MAX_ACCELERATION { 500, 500, 100, 5000 }
|
||||
|
||||
/**
|
||||
* Default Acceleration (change/s) change = mm/s
|
||||
@ -1921,9 +1924,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -205,11 +205,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -534,9 +534,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -544,17 +547,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -617,7 +620,7 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
|
||||
#define DEFAULT_MAX_ACCELERATION { 500, 500, 100, 10000 }
|
||||
|
||||
/**
|
||||
* Default Acceleration (change/s) change = mm/s
|
||||
@ -1916,9 +1919,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -210,11 +210,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -549,9 +549,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -559,17 +562,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -632,7 +635,7 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 5000 }
|
||||
#define DEFAULT_MAX_ACCELERATION { 500, 500, 100, 5000 }
|
||||
|
||||
/**
|
||||
* Default Acceleration (change/s) change = mm/s
|
||||
@ -1930,9 +1933,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -540,9 +540,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -550,17 +553,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1921,9 +1924,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -534,9 +534,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -544,17 +547,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -534,9 +534,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -544,17 +547,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -540,9 +540,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -550,17 +553,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -623,7 +626,7 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 200, 10000 }
|
||||
#define DEFAULT_MAX_ACCELERATION { 500, 500, 200, 10000 }
|
||||
|
||||
/**
|
||||
* Default Acceleration (change/s) change = mm/s
|
||||
@ -1921,9 +1924,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -511,9 +511,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -521,17 +524,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1893,9 +1896,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -511,9 +511,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -521,17 +524,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1893,9 +1896,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -535,9 +535,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -545,17 +548,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1917,9 +1920,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 500, 500 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -545,9 +545,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -555,17 +558,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1926,9 +1929,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
/**
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -545,9 +545,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -555,17 +558,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1927,9 +1930,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -545,9 +545,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -555,17 +558,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1926,9 +1929,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
@ -1606,10 +1617,11 @@
|
||||
#define MAX7219_DIN_PIN 57
|
||||
#define MAX7219_LOAD_PIN 44
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST 2 // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
// connector at: right=0 bottom=-90 top=90 left=180
|
||||
/**
|
||||
* Sample debug features
|
||||
* If you add more debug displays, be careful to avoid conflicts!
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
@ -1606,10 +1617,11 @@
|
||||
#define MAX7219_DIN_PIN 57
|
||||
#define MAX7219_LOAD_PIN 44
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST 2 // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
// connector at: right=0 bottom=-90 top=90 left=180
|
||||
/**
|
||||
* Sample debug features
|
||||
* If you add more debug displays, be careful to avoid conflicts!
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -534,9 +534,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -544,17 +547,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -206,11 +206,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -542,9 +542,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -552,17 +555,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1922,9 +1925,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -206,11 +206,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -539,9 +539,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -549,17 +552,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1939,9 +1942,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1960,9 +1963,7 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -204,11 +204,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -526,9 +526,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -536,17 +539,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -232,11 +232,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -543,9 +543,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -553,17 +556,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1924,9 +1927,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1942,9 +1945,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -223,11 +223,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -581,9 +581,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -591,17 +594,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1970,9 +1973,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1915,9 +1918,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
@ -1063,7 +1074,7 @@
|
||||
#define E4_SENSE_RESISTOR 91
|
||||
#define E4_MICROSTEPS 16
|
||||
|
||||
#endif
|
||||
#endif // TMC26X
|
||||
|
||||
// @section tmc_smart
|
||||
|
||||
@ -1291,7 +1302,7 @@
|
||||
#define E4_OVERCURRENT 2000
|
||||
#define E4_STALLCURRENT 1500
|
||||
|
||||
#endif
|
||||
#endif // L6470
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
@ -1606,10 +1617,11 @@
|
||||
#define MAX7219_DIN_PIN 57
|
||||
#define MAX7219_LOAD_PIN 44
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST 2 // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
// connector at: right=0 bottom=-90 top=90 left=180
|
||||
/**
|
||||
* Sample debug features
|
||||
* If you add more debug displays, be careful to avoid conflicts!
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1911,9 +1914,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -541,9 +541,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -551,17 +554,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1922,9 +1925,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -221,11 +221,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -560,9 +560,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -570,17 +573,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1946,9 +1949,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -334,15 +334,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -823,6 +828,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -834,6 +841,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -846,6 +855,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1912,9 +1915,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -820,6 +825,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -831,6 +838,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -843,6 +852,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -530,9 +530,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -540,17 +543,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1912,9 +1915,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -201,11 +201,11 @@
|
||||
|
||||
/**
|
||||
* "Mixing Extruder"
|
||||
* - Adds a new code, M165, to set the current mix factors.
|
||||
* - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
|
||||
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
|
||||
* - Optional support for Repetier Firmware M163, M164, and virtual extruder.
|
||||
* - This implementation supports only a single extruder.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
|
||||
* - Optional support for Repetier Firmware's 'M164 S<index>' supporting virtual tools.
|
||||
* - This implementation supports up to two mixing extruders.
|
||||
* - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
|
||||
*/
|
||||
//#define MIXING_EXTRUDER
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -540,9 +540,12 @@
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Specify Stepper Driver types
|
||||
* The options are used to determine driver pulse timings as well as more advanced functionality.
|
||||
* Stepper timing options can be overridden in Configuration_adv.h
|
||||
* Stepper Drivers
|
||||
*
|
||||
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
|
||||
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
|
||||
*
|
||||
* A4988 is assumed for unspecified drivers.
|
||||
*
|
||||
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
|
||||
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
|
||||
@ -550,17 +553,17 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#define Y2_DRIVER_TYPE A4988
|
||||
#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
#define E1_DRIVER_TYPE A4988
|
||||
#define E2_DRIVER_TYPE A4988
|
||||
#define E3_DRIVER_TYPE A4988
|
||||
#define E4_DRIVER_TYPE A4988
|
||||
//#define X_DRIVER_TYPE A4988
|
||||
//#define Y_DRIVER_TYPE A4988
|
||||
//#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
//#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@ -1924,9 +1927,7 @@
|
||||
// If the servo can't reach the requested position, increase it.
|
||||
#define SERVO_DELAY { 300 }
|
||||
|
||||
// Servo deactivation
|
||||
//
|
||||
// With this option servos are powered only during movement, then turned off to prevent jitter.
|
||||
// Only power servos during movement, otherwise leave off to prevent jitter
|
||||
//#define DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
|
||||
#endif // CONFIGURATION_H
|
||||
|
@ -331,15 +331,20 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
|
||||
/**
|
||||
* Dual X Carriage
|
||||
*
|
||||
* This setup has two X carriages that can move independently, each with its own hotend.
|
||||
* The carriages can be used to print an object with two colors or materials, or in
|
||||
* "duplication mode" it can print two identical or X-mirrored objects simultaneously.
|
||||
* The inactive carriage is parked automatically to prevent oozing.
|
||||
* X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
|
||||
* By default the X2 stepper is assigned to the first unused E plug on the board.
|
||||
*/
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
@ -822,6 +827,8 @@
|
||||
* 650 : Minimum for DRV8825 drivers
|
||||
* 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
|
||||
* 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_DIR_DELAY 650
|
||||
|
||||
@ -833,6 +840,8 @@
|
||||
* 2 : Minimum for DRV8825 stepper drivers
|
||||
* 3 : Minimum for TB6600 stepper drivers
|
||||
* 30 : Minimum for TB6560 stepper drivers
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MINIMUM_STEPPER_PULSE 2
|
||||
|
||||
@ -845,6 +854,8 @@
|
||||
* 150000 : Maximum for TB6600 stepper driver
|
||||
* 130000 : Maximum for LV8729 stepper driver
|
||||
* 15000 : Maximum for TB6560 stepper driver
|
||||
*
|
||||
* Override the default value based on the driver type set in Configuration.h.
|
||||
*/
|
||||
//#define MAXIMUM_STEPPER_RATE 250000
|
||||
|
||||
@ -1608,10 +1619,11 @@
|
||||
#define MAX7219_DIN_PIN 57
|
||||
#define MAX7219_LOAD_PIN 44
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
|
||||
//#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
|
||||
#define MAX7219_INIT_TEST 2 // Do a test pattern at initialization (Set to 2 for spiral)
|
||||
#define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
|
||||
#define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
|
||||
// connector at: right=0 bottom=-90 top=90 left=180
|
||||
/**
|
||||
* Sample debug features
|
||||
* If you add more debug displays, be careful to avoid conflicts!
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user