|
|
@ -85,29 +85,29 @@ static volatile bool endstop_z_hit = false; |
|
|
|
int motor_current_setting[3] = DEFAULT_PWM_MOTOR_CURRENT; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(X_MIN_PIN) && X_MIN_PIN >= 0 |
|
|
|
#if HAS_X_MIN |
|
|
|
static bool old_x_min_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(X_MAX_PIN) && X_MAX_PIN >= 0 |
|
|
|
#if HAS_X_MAX |
|
|
|
static bool old_x_max_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0 |
|
|
|
#if HAS_Y_MIN |
|
|
|
static bool old_y_min_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0 |
|
|
|
#if HAS_Y_MAX |
|
|
|
static bool old_y_max_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(Z_MIN_PIN) && Z_MIN_PIN >= 0 |
|
|
|
#if HAS_Z_MIN |
|
|
|
static bool old_z_min_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(Z_MAX_PIN) && Z_MAX_PIN >= 0 |
|
|
|
#if HAS_Z_MAX |
|
|
|
static bool old_z_max_endstop = false; |
|
|
|
#endif |
|
|
|
#ifdef Z_DUAL_ENDSTOPS |
|
|
|
#if defined(Z2_MIN_PIN) && Z2_MIN_PIN >= 0 |
|
|
|
#if HAS_Z2_MIN |
|
|
|
static bool old_z2_min_endstop = false; |
|
|
|
#endif |
|
|
|
#if defined(Z2_MAX_PIN) && Z2_MAX_PIN >= 0 |
|
|
|
#if HAS_Z2_MAX |
|
|
|
static bool old_z2_max_endstop = false; |
|
|
|
#endif |
|
|
|
#endif |
|
|
@ -472,7 +472,7 @@ ISR(TIMER1_COMPA_vect) { |
|
|
|
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1)) |
|
|
|
#endif |
|
|
|
{ |
|
|
|
#if defined(X_MIN_PIN) && X_MIN_PIN >= 0 |
|
|
|
#if HAS_X_MIN |
|
|
|
UPDATE_ENDSTOP(x, X, min, MIN); |
|
|
|
#endif |
|
|
|
} |
|
|
@ -483,7 +483,7 @@ ISR(TIMER1_COMPA_vect) { |
|
|
|
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1) || (current_block->active_extruder != 0 && X2_HOME_DIR == 1)) |
|
|
|
#endif |
|
|
|
{ |
|
|
|
#if defined(X_MAX_PIN) && X_MAX_PIN >= 0 |
|
|
|
#if HAS_X_MAX |
|
|
|
UPDATE_ENDSTOP(x, X, max, MAX); |
|
|
|
#endif |
|
|
|
} |
|
|
@ -498,12 +498,12 @@ ISR(TIMER1_COMPA_vect) { |
|
|
|
if (TEST(out_bits, Y_AXIS)) // -direction
|
|
|
|
#endif |
|
|
|
{ // -direction
|
|
|
|
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0 |
|
|
|
#if HAS_Y_MIN |
|
|
|
UPDATE_ENDSTOP(y, Y, min, MIN); |
|
|
|
#endif |
|
|
|
} |
|
|
|
else { // +direction
|
|
|
|
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0 |
|
|
|
#if HAS_Y_MAX |
|
|
|
UPDATE_ENDSTOP(y, Y, max, MAX); |
|
|
|
#endif |
|
|
|
} |
|
|
@ -519,13 +519,13 @@ ISR(TIMER1_COMPA_vect) { |
|
|
|
|
|
|
|
if (check_endstops) { |
|
|
|
|
|
|
|
#if defined(Z_MIN_PIN) && Z_MIN_PIN >= 0 |
|
|
|
#if HAS_Z_MIN |
|
|
|
|
|
|
|
#ifdef Z_DUAL_ENDSTOPS |
|
|
|
|
|
|
|
bool z_min_endstop = READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING, |
|
|
|
z2_min_endstop = |
|
|
|
#if defined(Z2_MIN_PIN) && Z2_MIN_PIN >= 0 |
|
|
|
#if HAS_Z2_MIN |
|
|
|
READ(Z2_MIN_PIN) != Z2_MIN_ENDSTOP_INVERTING |
|
|
|
#else |
|
|
|
z_min_endstop |
|
|
@ -561,13 +561,13 @@ ISR(TIMER1_COMPA_vect) { |
|
|
|
|
|
|
|
if (check_endstops) { |
|
|
|
|
|
|
|
#if defined(Z_MAX_PIN) && Z_MAX_PIN >= 0 |
|
|
|
#if HAS_Z_MAX |
|
|
|
|
|
|
|
#ifdef Z_DUAL_ENDSTOPS |
|
|
|
|
|
|
|
bool z_max_endstop = READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING, |
|
|
|
z2_max_endstop = |
|
|
|
#if defined(Z2_MAX_PIN) && Z2_MAX_PIN >= 0 |
|
|
|
#if HAS_Z2_MAX |
|
|
|
READ(Z2_MAX_PIN) != Z2_MAX_ENDSTOP_INVERTING |
|
|
|
#else |
|
|
|
z_max_endstop |
|
|
@ -835,127 +835,127 @@ void st_init() { |
|
|
|
#endif |
|
|
|
|
|
|
|
// Initialize Dir Pins
|
|
|
|
#if defined(X_DIR_PIN) && X_DIR_PIN >= 0 |
|
|
|
#if HAS_X_DIR |
|
|
|
X_DIR_INIT; |
|
|
|
#endif |
|
|
|
#if defined(X2_DIR_PIN) && X2_DIR_PIN >= 0 |
|
|
|
#if HAS_X2_DIR |
|
|
|
X2_DIR_INIT; |
|
|
|
#endif |
|
|
|
#if defined(Y_DIR_PIN) && Y_DIR_PIN >= 0 |
|
|
|
#if HAS_Y_DIR |
|
|
|
Y_DIR_INIT; |
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_DIR_PIN) && Y2_DIR_PIN >= 0 |
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_DIR |
|
|
|
Y2_DIR_INIT; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(Z_DIR_PIN) && Z_DIR_PIN >= 0 |
|
|
|
#if HAS_Z_DIR |
|
|
|
Z_DIR_INIT; |
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_DIR_PIN) && Z2_DIR_PIN >= 0 |
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && HAS_Z2_DIR |
|
|
|
Z2_DIR_INIT; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(E0_DIR_PIN) && E0_DIR_PIN >= 0 |
|
|
|
#if HAS_E0_DIR |
|
|
|
E0_DIR_INIT; |
|
|
|
#endif |
|
|
|
#if defined(E1_DIR_PIN) && E1_DIR_PIN >= 0 |
|
|
|
#if HAS_E1_DIR |
|
|
|
E1_DIR_INIT; |
|
|
|
#endif |
|
|
|
#if defined(E2_DIR_PIN) && E2_DIR_PIN >= 0 |
|
|
|
#if HAS_E2_DIR |
|
|
|
E2_DIR_INIT; |
|
|
|
#endif |
|
|
|
#if defined(E3_DIR_PIN) && E3_DIR_PIN >= 0 |
|
|
|
#if HAS_E3_DIR |
|
|
|
E3_DIR_INIT; |
|
|
|
#endif |
|
|
|
|
|
|
|
//Initialize Enable Pins - steppers default to disabled.
|
|
|
|
|
|
|
|
#if defined(X_ENABLE_PIN) && X_ENABLE_PIN >= 0 |
|
|
|
#if HAS_X_ENABLE |
|
|
|
X_ENABLE_INIT; |
|
|
|
if (!X_ENABLE_ON) X_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN >= 0 |
|
|
|
#if HAS_X2_ENABLE |
|
|
|
X2_ENABLE_INIT; |
|
|
|
if (!X_ENABLE_ON) X2_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN >= 0 |
|
|
|
#if HAS_Y_ENABLE |
|
|
|
Y_ENABLE_INIT; |
|
|
|
if (!Y_ENABLE_ON) Y_ENABLE_WRITE(HIGH); |
|
|
|
|
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_ENABLE_PIN) && Y2_ENABLE_PIN >= 0 |
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE |
|
|
|
Y2_ENABLE_INIT; |
|
|
|
if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN >= 0 |
|
|
|
#if HAS_Z_ENABLE |
|
|
|
Z_ENABLE_INIT; |
|
|
|
if (!Z_ENABLE_ON) Z_ENABLE_WRITE(HIGH); |
|
|
|
|
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_ENABLE_PIN) && Z2_ENABLE_PIN >= 0 |
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && HAS_Z2_ENABLE |
|
|
|
Z2_ENABLE_INIT; |
|
|
|
if (!Z_ENABLE_ON) Z2_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(E0_ENABLE_PIN) && E0_ENABLE_PIN >= 0 |
|
|
|
#if HAS_E0_ENABLE |
|
|
|
E0_ENABLE_INIT; |
|
|
|
if (!E_ENABLE_ON) E0_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#if defined(E1_ENABLE_PIN) && E1_ENABLE_PIN >= 0 |
|
|
|
#if HAS_E1_ENABLE |
|
|
|
E1_ENABLE_INIT; |
|
|
|
if (!E_ENABLE_ON) E1_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#if defined(E2_ENABLE_PIN) && E2_ENABLE_PIN >= 0 |
|
|
|
#if HAS_E2_ENABLE |
|
|
|
E2_ENABLE_INIT; |
|
|
|
if (!E_ENABLE_ON) E2_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
#if defined(E3_ENABLE_PIN) && E3_ENABLE_PIN >= 0 |
|
|
|
#if HAS_E3_ENABLE |
|
|
|
E3_ENABLE_INIT; |
|
|
|
if (!E_ENABLE_ON) E3_ENABLE_WRITE(HIGH); |
|
|
|
#endif |
|
|
|
|
|
|
|
//endstops and pullups
|
|
|
|
|
|
|
|
#if defined(X_MIN_PIN) && X_MIN_PIN >= 0 |
|
|
|
#if HAS_X_MIN |
|
|
|
SET_INPUT(X_MIN_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_XMIN |
|
|
|
WRITE(X_MIN_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0 |
|
|
|
#if HAS_Y_MIN |
|
|
|
SET_INPUT(Y_MIN_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_YMIN |
|
|
|
WRITE(Y_MIN_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(Z_MIN_PIN) && Z_MIN_PIN >= 0 |
|
|
|
#if HAS_Z_MIN |
|
|
|
SET_INPUT(Z_MIN_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_ZMIN |
|
|
|
WRITE(Z_MIN_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(X_MAX_PIN) && X_MAX_PIN >= 0 |
|
|
|
#if HAS_X_MAX |
|
|
|
SET_INPUT(X_MAX_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_XMAX |
|
|
|
WRITE(X_MAX_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0 |
|
|
|
#if HAS_Y_MAX |
|
|
|
SET_INPUT(Y_MAX_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_YMAX |
|
|
|
WRITE(Y_MAX_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(Z_MAX_PIN) && Z_MAX_PIN >= 0 |
|
|
|
#if HAS_Z_MAX |
|
|
|
SET_INPUT(Z_MAX_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_ZMAX |
|
|
|
WRITE(Z_MAX_PIN,HIGH); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(Z2_MAX_PIN) && Z2_MAX_PIN >= 0 |
|
|
|
#if HAS_Z2_MAX |
|
|
|
SET_INPUT(Z2_MAX_PIN); |
|
|
|
#ifdef ENDSTOPPULLUP_ZMAX |
|
|
|
WRITE(Z2_MAX_PIN,HIGH); |
|
|
@ -970,36 +970,36 @@ void st_init() { |
|
|
|
#define E_AXIS_INIT(NUM) AXIS_INIT(e## NUM, E## NUM, E) |
|
|
|
|
|
|
|
// Initialize Step Pins
|
|
|
|
#if defined(X_STEP_PIN) && X_STEP_PIN >= 0 |
|
|
|
#if HAS_X_STEP |
|
|
|
AXIS_INIT(x, X, X); |
|
|
|
#endif |
|
|
|
#if defined(X2_STEP_PIN) && X2_STEP_PIN >= 0 |
|
|
|
#if HAS_X2_STEP |
|
|
|
AXIS_INIT(x, X2, X); |
|
|
|
#endif |
|
|
|
#if defined(Y_STEP_PIN) && Y_STEP_PIN >= 0 |
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_STEP_PIN) && Y2_STEP_PIN >= 0 |
|
|
|
#if HAS_Y_STEP |
|
|
|
#if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_STEP |
|
|
|
Y2_STEP_INIT; |
|
|
|
Y2_STEP_WRITE(INVERT_Y_STEP_PIN); |
|
|
|
#endif |
|
|
|
AXIS_INIT(y, Y, Y); |
|
|
|
#endif |
|
|
|
#if defined(Z_STEP_PIN) && Z_STEP_PIN >= 0 |
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_STEP_PIN) && Z2_STEP_PIN >= 0 |
|
|
|
#if HAS_Z_STEP |
|
|
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && HAS_Z2_STEP |
|
|
|
Z2_STEP_INIT; |
|
|
|
Z2_STEP_WRITE(INVERT_Z_STEP_PIN); |
|
|
|
#endif |
|
|
|
AXIS_INIT(z, Z, Z); |
|
|
|
#endif |
|
|
|
#if defined(E0_STEP_PIN) && E0_STEP_PIN >= 0 |
|
|
|
#if HAS_E0_STEP |
|
|
|
E_AXIS_INIT(0); |
|
|
|
#endif |
|
|
|
#if defined(E1_STEP_PIN) && E1_STEP_PIN >= 0 |
|
|
|
#if HAS_E1_STEP |
|
|
|
E_AXIS_INIT(1); |
|
|
|
#endif |
|
|
|
#if defined(E2_STEP_PIN) && E2_STEP_PIN >= 0 |
|
|
|
#if HAS_E2_STEP |
|
|
|
E_AXIS_INIT(2); |
|
|
|
#endif |
|
|
|
#if defined(E3_STEP_PIN) && E3_STEP_PIN >= 0 |
|
|
|
#if HAS_E3_STEP |
|
|
|
E_AXIS_INIT(3); |
|
|
|
#endif |
|
|
|
|
|
|
@ -1220,12 +1220,12 @@ void digipot_current(uint8_t driver, int current) { |
|
|
|
} |
|
|
|
|
|
|
|
void microstep_init() { |
|
|
|
#if defined(E1_MS1_PIN) && E1_MS1_PIN >= 0 |
|
|
|
#if HAS_MICROSTEPS_E1 |
|
|
|
pinMode(E1_MS1_PIN,OUTPUT); |
|
|
|
pinMode(E1_MS2_PIN,OUTPUT); |
|
|
|
pinMode(E1_MS2_PIN,OUTPUT); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(X_MS1_PIN) && X_MS1_PIN >= 0 |
|
|
|
#if HAS_MICROSTEPS |
|
|
|
pinMode(X_MS1_PIN,OUTPUT); |
|
|
|
pinMode(X_MS2_PIN,OUTPUT); |
|
|
|
pinMode(Y_MS1_PIN,OUTPUT); |
|
|
@ -1246,7 +1246,7 @@ void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) { |
|
|
|
case 1: digitalWrite(Y_MS1_PIN, ms1); break; |
|
|
|
case 2: digitalWrite(Z_MS1_PIN, ms1); break; |
|
|
|
case 3: digitalWrite(E0_MS1_PIN, ms1); break; |
|
|
|
#if defined(E1_MS1_PIN) && E1_MS1_PIN >= 0 |
|
|
|
#if HAS_MICROSTEPS_E1 |
|
|
|
case 4: digitalWrite(E1_MS1_PIN, ms1); break; |
|
|
|
#endif |
|
|
|
} |
|
|
@ -1285,7 +1285,7 @@ void microstep_readings() { |
|
|
|
SERIAL_PROTOCOLPGM("E0: "); |
|
|
|
SERIAL_PROTOCOL(digitalRead(E0_MS1_PIN)); |
|
|
|
SERIAL_PROTOCOLLN(digitalRead(E0_MS2_PIN)); |
|
|
|
#if defined(E1_MS1_PIN) && E1_MS1_PIN >= 0 |
|
|
|
#if HAS_MICROSTEPS_E1 |
|
|
|
SERIAL_PROTOCOLPGM("E1: "); |
|
|
|
SERIAL_PROTOCOL(digitalRead(E1_MS1_PIN)); |
|
|
|
SERIAL_PROTOCOLLN(digitalRead(E1_MS2_PIN)); |
|
|
|