parent
7ee275b620
commit
f4a59e4ce5
@ -18,6 +18,12 @@
|
|||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
// Wait for Cooldown
|
||||||
|
// This defines if the M109 call should not block if it is cooling down.
|
||||||
|
// example: From a current temp of 220, you set M109 S200.
|
||||||
|
// if CooldownNoWait is defined M109 will not wait for the cooldown to finish
|
||||||
|
#define CooldownNoWait true
|
||||||
|
|
||||||
#ifdef PIDTEMP
|
#ifdef PIDTEMP
|
||||||
// this adds an experimental additional term to the heatingpower, proportional to the extrusion speed.
|
// this adds an experimental additional term to the heatingpower, proportional to the extrusion speed.
|
||||||
// if Kc is choosen well, the additional required power due to increased melting should be compensated.
|
// if Kc is choosen well, the additional required power due to increased melting should be compensated.
|
||||||
@ -146,68 +152,6 @@
|
|||||||
#define EXTRUDERS 1
|
#define EXTRUDERS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
|
||||||
#define Y_DUAL_STEPPER_DRIVERS
|
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS && Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#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.
|
|
||||||
//#define DUAL_X_CARRIAGE
|
|
||||||
#ifdef 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 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
|
|
||||||
#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
|
|
||||||
// However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
|
|
||||||
// override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
|
|
||||||
// without modifying the firmware (through the "M218 T1 X???" command).
|
|
||||||
// Remember: you should set the second extruder x-offset to 0 in your slicer.
|
|
||||||
|
|
||||||
// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
|
|
||||||
#define X2_ENABLE_PIN 29
|
|
||||||
#define X2_STEP_PIN 25
|
|
||||||
#define X2_DIR_PIN 23
|
|
||||||
|
|
||||||
// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
|
|
||||||
// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
|
|
||||||
// as long as it supports dual x-carriages. (M605 S0)
|
|
||||||
// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
|
|
||||||
// that additional slicer support is not required. (M605 S1)
|
|
||||||
// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
|
|
||||||
// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
|
|
||||||
// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
|
|
||||||
|
|
||||||
// This is the default power-up mode which can be later using M605.
|
|
||||||
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
|
|
||||||
|
|
||||||
// As the x-carriages are independent we can now account for any relative Z offset
|
|
||||||
#define EXTRUDER1_Z_OFFSET 0.0 // z offset relative to extruder 0
|
|
||||||
|
|
||||||
// Default settings in "Auto-park Mode"
|
|
||||||
#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder
|
|
||||||
#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder
|
|
||||||
|
|
||||||
// Default x offset in duplication mode (typically set to half print bed width)
|
|
||||||
#define DEFAULT_DUPLICATION_X_OFFSET 100
|
|
||||||
|
|
||||||
#endif //DUAL_X_CARRIAGE
|
|
||||||
|
|
||||||
//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
|
//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
|
||||||
#define X_HOME_RETRACT_MM 5
|
#define X_HOME_RETRACT_MM 5
|
||||||
#define Y_HOME_RETRACT_MM 5
|
#define Y_HOME_RETRACT_MM 5
|
||||||
@ -230,11 +174,6 @@
|
|||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
#define DEFAULT_MINSEGMENTTIME 20000
|
#define DEFAULT_MINSEGMENTTIME 20000
|
||||||
|
|
||||||
|
@ -51,22 +51,22 @@
|
|||||||
#define MYSERIAL MSerial
|
#define MYSERIAL MSerial
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SERIAL_PROTOCOL(x) (MYSERIAL.print(x))
|
#define SERIAL_PROTOCOL(x) MYSERIAL.print(x);
|
||||||
#define SERIAL_PROTOCOL_F(x,y) (MYSERIAL.print(x,y))
|
#define SERIAL_PROTOCOL_F(x,y) MYSERIAL.print(x,y);
|
||||||
#define SERIAL_PROTOCOLPGM(x) (serialprintPGM(PSTR(x)))
|
#define SERIAL_PROTOCOLPGM(x) serialprintPGM(PSTR(x));
|
||||||
#define SERIAL_PROTOCOLLN(x) (MYSERIAL.print(x),MYSERIAL.write('\n'))
|
#define SERIAL_PROTOCOLLN(x) {MYSERIAL.print(x);MYSERIAL.write('\n');}
|
||||||
#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.write('\n'))
|
#define SERIAL_PROTOCOLLNPGM(x) {serialprintPGM(PSTR(x));MYSERIAL.write('\n');}
|
||||||
|
|
||||||
|
|
||||||
const char errormagic[] PROGMEM ="Error:";
|
const char errormagic[] PROGMEM ="Error:";
|
||||||
const char echomagic[] PROGMEM ="echo:";
|
const char echomagic[] PROGMEM ="echo:";
|
||||||
#define SERIAL_ERROR_START (serialprintPGM(errormagic))
|
#define SERIAL_ERROR_START serialprintPGM(errormagic);
|
||||||
#define SERIAL_ERROR(x) SERIAL_PROTOCOL(x)
|
#define SERIAL_ERROR(x) SERIAL_PROTOCOL(x)
|
||||||
#define SERIAL_ERRORPGM(x) SERIAL_PROTOCOLPGM(x)
|
#define SERIAL_ERRORPGM(x) SERIAL_PROTOCOLPGM(x)
|
||||||
#define SERIAL_ERRORLN(x) SERIAL_PROTOCOLLN(x)
|
#define SERIAL_ERRORLN(x) SERIAL_PROTOCOLLN(x)
|
||||||
#define SERIAL_ERRORLNPGM(x) SERIAL_PROTOCOLLNPGM(x)
|
#define SERIAL_ERRORLNPGM(x) SERIAL_PROTOCOLLNPGM(x)
|
||||||
|
|
||||||
#define SERIAL_ECHO_START (serialprintPGM(echomagic))
|
#define SERIAL_ECHO_START serialprintPGM(echomagic);
|
||||||
#define SERIAL_ECHO(x) SERIAL_PROTOCOL(x)
|
#define SERIAL_ECHO(x) SERIAL_PROTOCOL(x)
|
||||||
#define SERIAL_ECHOPGM(x) SERIAL_PROTOCOLPGM(x)
|
#define SERIAL_ECHOPGM(x) SERIAL_PROTOCOLPGM(x)
|
||||||
#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x)
|
#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x)
|
||||||
@ -96,11 +96,7 @@ void process_commands();
|
|||||||
|
|
||||||
void manage_inactivity();
|
void manage_inactivity();
|
||||||
|
|
||||||
#if defined(DUAL_X_CARRIAGE) && defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1 \
|
#if defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1
|
||||||
&& defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
|
|
||||||
#define enable_x() do { WRITE(X_ENABLE_PIN, X_ENABLE_ON); WRITE(X2_ENABLE_PIN, X_ENABLE_ON); } while (0)
|
|
||||||
#define disable_x() do { WRITE(X_ENABLE_PIN,!X_ENABLE_ON); WRITE(X2_ENABLE_PIN,!X_ENABLE_ON); } while (0)
|
|
||||||
#elif defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1
|
|
||||||
#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON)
|
#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON)
|
||||||
#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON)
|
#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON)
|
||||||
#else
|
#else
|
||||||
@ -109,13 +105,8 @@ void manage_inactivity();
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1
|
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
#define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON)
|
||||||
#define enable_y() { WRITE(Y_ENABLE_PIN, Y_ENABLE_ON); WRITE(Y2_ENABLE_PIN, Y_ENABLE_ON); }
|
#define disable_y() WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON)
|
||||||
#define disable_y() { WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON); WRITE(Y2_ENABLE_PIN, !Y_ENABLE_ON); }
|
|
||||||
#else
|
|
||||||
#define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON)
|
|
||||||
#define disable_y() WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON)
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#define enable_y() ;
|
#define enable_y() ;
|
||||||
#define disable_y() ;
|
#define disable_y() ;
|
||||||
@ -168,7 +159,6 @@ void ClearToSend();
|
|||||||
void get_coordinates();
|
void get_coordinates();
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
void calculate_delta(float cartesian[3]);
|
void calculate_delta(float cartesian[3]);
|
||||||
extern float delta[3];
|
|
||||||
#endif
|
#endif
|
||||||
void prepare_move();
|
void prepare_move();
|
||||||
void kill();
|
void kill();
|
||||||
|
@ -348,55 +348,19 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
|
|
||||||
// Set the direction bits (X_AXIS=A_AXIS and Y_AXIS=B_AXIS for COREXY)
|
// Set the direction bits (X_AXIS=A_AXIS and Y_AXIS=B_AXIS for COREXY)
|
||||||
if((out_bits & (1<<X_AXIS))!=0){
|
if((out_bits & (1<<X_AXIS))!=0){
|
||||||
#ifdef DUAL_X_CARRIAGE
|
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
||||||
if (extruder_duplication_enabled){
|
|
||||||
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
|
||||||
WRITE(X2_DIR_PIN, INVERT_X_DIR);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (current_block->active_extruder != 0)
|
|
||||||
WRITE(X2_DIR_PIN, INVERT_X_DIR);
|
|
||||||
else
|
|
||||||
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
|
||||||
#endif
|
|
||||||
count_direction[X_AXIS]=-1;
|
count_direction[X_AXIS]=-1;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
#ifdef DUAL_X_CARRIAGE
|
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
||||||
if (extruder_duplication_enabled){
|
|
||||||
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
|
||||||
WRITE(X2_DIR_PIN, !INVERT_X_DIR);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (current_block->active_extruder != 0)
|
|
||||||
WRITE(X2_DIR_PIN, !INVERT_X_DIR);
|
|
||||||
else
|
|
||||||
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
|
||||||
#endif
|
|
||||||
count_direction[X_AXIS]=1;
|
count_direction[X_AXIS]=1;
|
||||||
}
|
}
|
||||||
if((out_bits & (1<<Y_AXIS))!=0){
|
if((out_bits & (1<<Y_AXIS))!=0){
|
||||||
WRITE(Y_DIR_PIN, INVERT_Y_DIR);
|
WRITE(Y_DIR_PIN, INVERT_Y_DIR);
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Y2_DIR_PIN, !(INVERT_Y_DIR == INVERT_Y2_VS_Y_DIR));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
count_direction[Y_AXIS]=-1;
|
count_direction[Y_AXIS]=-1;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
WRITE(Y_DIR_PIN, !INVERT_Y_DIR);
|
WRITE(Y_DIR_PIN, !INVERT_Y_DIR);
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Y2_DIR_PIN, (INVERT_Y_DIR == INVERT_Y2_VS_Y_DIR));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
count_direction[Y_AXIS]=1;
|
count_direction[Y_AXIS]=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,43 +372,29 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
#endif
|
#endif
|
||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#ifdef DUAL_X_CARRIAGE
|
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
||||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
bool x_min_endstop=(READ(X_MIN_PIN) != X_ENDSTOPS_INVERTING);
|
||||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1)
|
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) {
|
||||||
|| (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||||
|
endstop_x_hit=true;
|
||||||
|
step_events_completed = current_block->step_event_count;
|
||||||
|
}
|
||||||
|
old_x_min_endstop = x_min_endstop;
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
|
||||||
bool x_min_endstop=(READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING);
|
|
||||||
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) {
|
|
||||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
|
||||||
endstop_x_hit=true;
|
|
||||||
step_events_completed = current_block->step_event_count;
|
|
||||||
}
|
|
||||||
old_x_min_endstop = x_min_endstop;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // +direction
|
else { // +direction
|
||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#ifdef DUAL_X_CARRIAGE
|
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
||||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
bool x_max_endstop=(READ(X_MAX_PIN) != X_ENDSTOPS_INVERTING);
|
||||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1)
|
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){
|
||||||
|| (current_block->active_extruder != 0 && X2_HOME_DIR == 1))
|
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||||
|
endstop_x_hit=true;
|
||||||
|
step_events_completed = current_block->step_event_count;
|
||||||
|
}
|
||||||
|
old_x_max_endstop = x_max_endstop;
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
|
||||||
bool x_max_endstop=(READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING);
|
|
||||||
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){
|
|
||||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
|
||||||
endstop_x_hit=true;
|
|
||||||
step_events_completed = current_block->step_event_count;
|
|
||||||
}
|
|
||||||
old_x_max_endstop = x_max_endstop;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,7 +406,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
|
#if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
|
||||||
bool y_min_endstop=(READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING);
|
bool y_min_endstop=(READ(Y_MIN_PIN) != Y_ENDSTOPS_INVERTING);
|
||||||
if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0)) {
|
if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0)) {
|
||||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||||
endstop_y_hit=true;
|
endstop_y_hit=true;
|
||||||
@ -470,7 +420,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
|
#if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
|
||||||
bool y_max_endstop=(READ(Y_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING);
|
bool y_max_endstop=(READ(Y_MAX_PIN) != Y_ENDSTOPS_INVERTING);
|
||||||
if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0)){
|
if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0)){
|
||||||
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS];
|
||||||
endstop_y_hit=true;
|
endstop_y_hit=true;
|
||||||
@ -484,7 +434,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
if ((out_bits & (1<<Z_AXIS)) != 0) { // -direction
|
if ((out_bits & (1<<Z_AXIS)) != 0) { // -direction
|
||||||
WRITE(Z_DIR_PIN,INVERT_Z_DIR);
|
WRITE(Z_DIR_PIN,INVERT_Z_DIR);
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
WRITE(Z2_DIR_PIN,INVERT_Z_DIR);
|
WRITE(Z2_DIR_PIN,INVERT_Z_DIR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -492,7 +442,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#if defined(Z_MIN_PIN) && Z_MIN_PIN > -1
|
#if defined(Z_MIN_PIN) && Z_MIN_PIN > -1
|
||||||
bool z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING);
|
bool z_min_endstop=(READ(Z_MIN_PIN) != Z_ENDSTOPS_INVERTING);
|
||||||
if(z_min_endstop && old_z_min_endstop && (current_block->steps_z > 0)) {
|
if(z_min_endstop && old_z_min_endstop && (current_block->steps_z > 0)) {
|
||||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||||
endstop_z_hit=true;
|
endstop_z_hit=true;
|
||||||
@ -505,7 +455,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
else { // +direction
|
else { // +direction
|
||||||
WRITE(Z_DIR_PIN,!INVERT_Z_DIR);
|
WRITE(Z_DIR_PIN,!INVERT_Z_DIR);
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
WRITE(Z2_DIR_PIN,!INVERT_Z_DIR);
|
WRITE(Z2_DIR_PIN,!INVERT_Z_DIR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -513,7 +463,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
CHECK_ENDSTOPS
|
CHECK_ENDSTOPS
|
||||||
{
|
{
|
||||||
#if defined(Z_MAX_PIN) && Z_MAX_PIN > -1
|
#if defined(Z_MAX_PIN) && Z_MAX_PIN > -1
|
||||||
bool z_max_endstop=(READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING);
|
bool z_max_endstop=(READ(Z_MAX_PIN) != Z_ENDSTOPS_INVERTING);
|
||||||
if(z_max_endstop && old_z_max_endstop && (current_block->steps_z > 0)) {
|
if(z_max_endstop && old_z_max_endstop && (current_block->steps_z > 0)) {
|
||||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||||
endstop_z_hit=true;
|
endstop_z_hit=true;
|
||||||
@ -557,60 +507,25 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
|
|
||||||
counter_x += current_block->steps_x;
|
counter_x += current_block->steps_x;
|
||||||
if (counter_x > 0) {
|
if (counter_x > 0) {
|
||||||
#ifdef DUAL_X_CARRIAGE
|
|
||||||
if (extruder_duplication_enabled){
|
|
||||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
|
||||||
WRITE(X2_STEP_PIN, !INVERT_X_STEP_PIN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (current_block->active_extruder != 0)
|
|
||||||
WRITE(X2_STEP_PIN, !INVERT_X_STEP_PIN);
|
|
||||||
else
|
|
||||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
||||||
#endif
|
|
||||||
counter_x -= current_block->step_event_count;
|
counter_x -= current_block->step_event_count;
|
||||||
count_position[X_AXIS]+=count_direction[X_AXIS];
|
count_position[X_AXIS]+=count_direction[X_AXIS];
|
||||||
#ifdef DUAL_X_CARRIAGE
|
|
||||||
if (extruder_duplication_enabled){
|
|
||||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
|
||||||
WRITE(X2_STEP_PIN, INVERT_X_STEP_PIN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (current_block->active_extruder != 0)
|
|
||||||
WRITE(X2_STEP_PIN, INVERT_X_STEP_PIN);
|
|
||||||
else
|
|
||||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
counter_y += current_block->steps_y;
|
counter_y += current_block->steps_y;
|
||||||
if (counter_y > 0) {
|
if (counter_y > 0) {
|
||||||
WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Y2_STEP_PIN, !INVERT_Y_STEP_PIN);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
counter_y -= current_block->step_event_count;
|
counter_y -= current_block->step_event_count;
|
||||||
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
count_position[Y_AXIS]+=count_direction[Y_AXIS];
|
||||||
WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
WRITE(Y2_STEP_PIN, INVERT_Y_STEP_PIN);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
counter_z += current_block->steps_z;
|
counter_z += current_block->steps_z;
|
||||||
if (counter_z > 0) {
|
if (counter_z > 0) {
|
||||||
WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN);
|
WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -618,7 +533,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
count_position[Z_AXIS]+=count_direction[Z_AXIS];
|
||||||
WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN);
|
WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -770,15 +685,8 @@ void st_init()
|
|||||||
#if defined(X_DIR_PIN) && X_DIR_PIN > -1
|
#if defined(X_DIR_PIN) && X_DIR_PIN > -1
|
||||||
SET_OUTPUT(X_DIR_PIN);
|
SET_OUTPUT(X_DIR_PIN);
|
||||||
#endif
|
#endif
|
||||||
#if defined(X2_DIR_PIN) && X2_DIR_PIN > -1
|
|
||||||
SET_OUTPUT(X2_DIR_PIN);
|
|
||||||
#endif
|
|
||||||
#if defined(Y_DIR_PIN) && Y_DIR_PIN > -1
|
#if defined(Y_DIR_PIN) && Y_DIR_PIN > -1
|
||||||
SET_OUTPUT(Y_DIR_PIN);
|
SET_OUTPUT(Y_DIR_PIN);
|
||||||
|
|
||||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_DIR_PIN) && (Y2_DIR_PIN > -1)
|
|
||||||
SET_OUTPUT(Y2_DIR_PIN);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(Z_DIR_PIN) && Z_DIR_PIN > -1
|
#if defined(Z_DIR_PIN) && Z_DIR_PIN > -1
|
||||||
SET_OUTPUT(Z_DIR_PIN);
|
SET_OUTPUT(Z_DIR_PIN);
|
||||||
@ -803,18 +711,9 @@ void st_init()
|
|||||||
SET_OUTPUT(X_ENABLE_PIN);
|
SET_OUTPUT(X_ENABLE_PIN);
|
||||||
if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH);
|
if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH);
|
||||||
#endif
|
#endif
|
||||||
#if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
|
|
||||||
SET_OUTPUT(X2_ENABLE_PIN);
|
|
||||||
if(!X_ENABLE_ON) WRITE(X2_ENABLE_PIN,HIGH);
|
|
||||||
#endif
|
|
||||||
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1
|
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1
|
||||||
SET_OUTPUT(Y_ENABLE_PIN);
|
SET_OUTPUT(Y_ENABLE_PIN);
|
||||||
if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH);
|
if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH);
|
||||||
|
|
||||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_ENABLE_PIN) && (Y2_ENABLE_PIN > -1)
|
|
||||||
SET_OUTPUT(Y2_ENABLE_PIN);
|
|
||||||
if(!Y_ENABLE_ON) WRITE(Y2_ENABLE_PIN,HIGH);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1
|
#if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1
|
||||||
SET_OUTPUT(Z_ENABLE_PIN);
|
SET_OUTPUT(Z_ENABLE_PIN);
|
||||||
@ -889,18 +788,9 @@ void st_init()
|
|||||||
WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
|
WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
|
||||||
disable_x();
|
disable_x();
|
||||||
#endif
|
#endif
|
||||||
#if defined(X2_STEP_PIN) && (X2_STEP_PIN > -1)
|
|
||||||
SET_OUTPUT(X2_STEP_PIN);
|
|
||||||
WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN);
|
|
||||||
disable_x();
|
|
||||||
#endif
|
|
||||||
#if defined(Y_STEP_PIN) && (Y_STEP_PIN > -1)
|
#if defined(Y_STEP_PIN) && (Y_STEP_PIN > -1)
|
||||||
SET_OUTPUT(Y_STEP_PIN);
|
SET_OUTPUT(Y_STEP_PIN);
|
||||||
WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
|
WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_STEP_PIN) && (Y2_STEP_PIN > -1)
|
|
||||||
SET_OUTPUT(Y2_STEP_PIN);
|
|
||||||
WRITE(Y2_STEP_PIN,INVERT_Y_STEP_PIN);
|
|
||||||
#endif
|
|
||||||
disable_y();
|
disable_y();
|
||||||
#endif
|
#endif
|
||||||
#if defined(Z_STEP_PIN) && (Z_STEP_PIN > -1)
|
#if defined(Z_STEP_PIN) && (Z_STEP_PIN > -1)
|
||||||
|
Loading…
Reference in New Issue
Block a user