Transform if into #if, move axis aviable assignments to loops in startup

This commit is contained in:
kliment 2011-07-06 22:08:20 +02:00
parent 8c812e5c01
commit c128fd74d9
2 changed files with 137 additions and 72 deletions

View file

@ -33,6 +33,34 @@ int analog2tempu(int raw, const short table[][2], int numtemps, int source);
#define temp2analogBed( c ) temp2analogu((c),bedtemptable,BNUMTEMPS,BEDSOURCE)
#define analog2temp( c ) analog2tempu((c),temptable,NUMTEMPS,HEATERSOURCE)
#define analog2tempBed( c ) analog2tempu((c),bedtemptable,BNUMTEMPS,BEDSOURCE)
#if X_ENABLE_PIN > -1
#define enable_x() digitalWrite(X_ENABLE_PIN, X_ENABLE_ON)
#define disable_x() digitalWrite(X_ENABLE_PIN,!X_ENABLE_ON)
#else
#define enable_x() ;
#define disable_x() ;
#endif
#if Y_ENABLE_PIN > -1
#define enable_y() digitalWrite(Y_ENABLE_PIN, Y_ENABLE_ON)
#define disable_y() digitalWrite(Y_ENABLE_PIN,!Y_ENABLE_ON)
#else
#define enable_y() ;
#define disable_y() ;
#endif
#if Z_ENABLE_PIN > -1
#define enable_z() digitalWrite(Z_ENABLE_PIN, Z_ENABLE_ON)
#define disable_z() digitalWrite(Z_ENABLE_PIN,!Z_ENABLE_ON)
#else
#define enable_z() ;
#define disable_z() ;
#endif
#if E_ENABLE_PIN > -1
#define enable_e() digitalWrite(E_ENABLE_PIN, E_ENABLE_ON)
#define disable_e() digitalWrite(E_ENABLE_PIN,!E_ENABLE_ON)
#else
#define enable_e() ;
#define disable_e() ;
#endif
void FlushSerialRequestResend();
void ClearToSend();
@ -40,18 +68,6 @@ void ClearToSend();
void get_coordinates();
void prepare_move();
void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remaining, unsigned long z_steps_remaining, unsigned long e_steps_remaining);
void disable_x();
void disable_y();
void disable_z();
void disable_e();
void enable_x();
void enable_y();
void enable_z();
void enable_e();
void do_x_step();
void do_y_step();
void do_z_step();
void do_e_step();
void do_step(int axis);
void kill(byte debug);

View file

@ -57,6 +57,7 @@
//Stepper Movement Variables
char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
bool move_direction[NUM_AXIS];
const int STEP_PIN[NUM_AXIS] = {X_STEP_PIN, Y_STEP_PIN, Z_STEP_PIN, E_STEP_PIN};
@ -64,19 +65,11 @@ unsigned long axis_previous_micros[NUM_AXIS];
unsigned long previous_micros = 0, previous_millis_heater, previous_millis_bed_heater;
unsigned long move_steps_to_take[NUM_AXIS];
#ifdef RAMP_ACCELERATION
unsigned long axis_max_interval[] = {100000000.0 / (max_start_speed_units_per_second[0] * axis_steps_per_unit[0]),
100000000.0 / (max_start_speed_units_per_second[1] * axis_steps_per_unit[1]),
100000000.0 / (max_start_speed_units_per_second[2] * axis_steps_per_unit[2]),
100000000.0 / (max_start_speed_units_per_second[3] * axis_steps_per_unit[3])}; //TODO: refactor all things like this in a function, or move to setup()
// in a for loop
unsigned long max_interval;
unsigned long axis_steps_per_sqr_second[] = {max_acceleration_units_per_sq_second[0] * axis_steps_per_unit[0],
max_acceleration_units_per_sq_second[1] * axis_steps_per_unit[1], max_acceleration_units_per_sq_second[2] * axis_steps_per_unit[2],
max_acceleration_units_per_sq_second[3] * axis_steps_per_unit[3]};
unsigned long axis_travel_steps_per_sqr_second[] = {max_travel_acceleration_units_per_sq_second[0] * axis_steps_per_unit[0],
max_travel_acceleration_units_per_sq_second[1] * axis_steps_per_unit[1], max_travel_acceleration_units_per_sq_second[2] * axis_steps_per_unit[2],
max_travel_acceleration_units_per_sq_second[3] * axis_steps_per_unit[3]};
unsigned long steps_per_sqr_second, plateau_steps;
unsigned long axis_max_interval[NUM_AXIS];
unsigned long axis_steps_per_sqr_second[NUM_AXIS];
unsigned long axis_travel_steps_per_sqr_second[NUM_AXIS];
unsigned long max_interval;
unsigned long steps_per_sqr_second, plateau_steps;
#endif
boolean acceleration_enabled = false, accelerating = false;
unsigned long interval;
@ -211,51 +204,116 @@ void setup()
fromsd[i] = false;
}
//Initialize Step Pins
for(int i=0; i < NUM_AXIS; i++) if(STEP_PIN[i] > -1) pinMode(STEP_PIN[i],OUTPUT);
//Initialize Dir Pins
if(X_DIR_PIN > -1) pinMode(X_DIR_PIN,OUTPUT);
if(Y_DIR_PIN > -1) pinMode(Y_DIR_PIN,OUTPUT);
if(Z_DIR_PIN > -1) pinMode(Z_DIR_PIN,OUTPUT);
if(E_DIR_PIN > -1) pinMode(E_DIR_PIN,OUTPUT);
//Steppers default to disabled.
if(X_ENABLE_PIN > -1) if(!X_ENABLE_ON) digitalWrite(X_ENABLE_PIN,HIGH);
if(Y_ENABLE_PIN > -1) if(!Y_ENABLE_ON) digitalWrite(Y_ENABLE_PIN,HIGH);
if(Z_ENABLE_PIN > -1) if(!Z_ENABLE_ON) digitalWrite(Z_ENABLE_PIN,HIGH);
if(E_ENABLE_PIN > -1) if(!E_ENABLE_ON) digitalWrite(E_ENABLE_PIN,HIGH);
//endstop pullups
#ifdef ENDSTOPPULLUPS
if(X_MIN_PIN > -1) { pinMode(X_MIN_PIN,INPUT); digitalWrite(X_MIN_PIN,HIGH);}
if(Y_MIN_PIN > -1) { pinMode(Y_MIN_PIN,INPUT); digitalWrite(Y_MIN_PIN,HIGH);}
if(Z_MIN_PIN > -1) { pinMode(Z_MIN_PIN,INPUT); digitalWrite(Z_MIN_PIN,HIGH);}
if(X_MAX_PIN > -1) { pinMode(X_MAX_PIN,INPUT); digitalWrite(X_MAX_PIN,HIGH);}
if(Y_MAX_PIN > -1) { pinMode(Y_MAX_PIN,INPUT); digitalWrite(Y_MAX_PIN,HIGH);}
if(Z_MAX_PIN > -1) { pinMode(Z_MAX_PIN,INPUT); digitalWrite(Z_MAX_PIN,HIGH);}
#if X_DIR_PIN > -1
pinMode(X_DIR_PIN,OUTPUT);
#endif
//Initialize Enable Pins
if(X_ENABLE_PIN > -1) pinMode(X_ENABLE_PIN,OUTPUT);
if(Y_ENABLE_PIN > -1) pinMode(Y_ENABLE_PIN,OUTPUT);
if(Z_ENABLE_PIN > -1) pinMode(Z_ENABLE_PIN,OUTPUT);
if(E_ENABLE_PIN > -1) pinMode(E_ENABLE_PIN,OUTPUT);
if(HEATER_0_PIN > -1) pinMode(HEATER_0_PIN,OUTPUT);
if(HEATER_1_PIN > -1) pinMode(HEATER_1_PIN,OUTPUT);
#if Y_DIR_PIN > -1
pinMode(Y_DIR_PIN,OUTPUT);
#endif
#if Z_DIR_PIN > -1
pinMode(Z_DIR_PIN,OUTPUT);
#endif
#if E_DIR_PIN > -1
pinMode(E_DIR_PIN,OUTPUT);
#endif
//Initialize Enable Pins - steppers default to disabled.
#if (X_ENABLE_PIN > -1)
pinMode(X_ENABLE_PIN,OUTPUT);
if(!X_ENABLE_ON) digitalWrite(X_ENABLE_PIN,HIGH);
#endif
#if (Y_ENABLE_PIN > -1)
pinMode(Y_ENABLE_PIN,OUTPUT);
if(!Y_ENABLE_ON) digitalWrite(Y_ENABLE_PIN,HIGH);
#endif
#if (Z_ENABLE_PIN > -1)
pinMode(Z_ENABLE_PIN,OUTPUT);
if(!Z_ENABLE_ON) digitalWrite(Z_ENABLE_PIN,HIGH);
#endif
#if (E_ENABLE_PIN > -1)
pinMode(E_ENABLE_PIN,OUTPUT);
if(!E_ENABLE_ON) digitalWrite(E_ENABLE_PIN,HIGH);
#endif
//endstops and pullups
#ifdef ENDSTOPPULLUPS
#if X_MIN_PIN > -1
pinMode(X_MIN_PIN,INPUT);
digitalWrite(X_MIN_PIN,HIGH);
#endif
#if X_MAX_PIN > -1
pinMode(X_MAX_PIN,INPUT);
digitalWrite(X_MAX_PIN,HIGH);
#endif
#if Y_MIN_PIN > -1
pinMode(Y_MIN_PIN,INPUT);
digitalWrite(Y_MIN_PIN,HIGH);
#endif
#if Y_MAX_PIN > -1
pinMode(Y_MAX_PIN,INPUT);
digitalWrite(Y_MAX_PIN,HIGH);
#endif
#if Z_MIN_PIN > -1
pinMode(Z_MIN_PIN,INPUT);
digitalWrite(Z_MIN_PIN,HIGH);
#endif
#if Z_MAX_PIN > -1
pinMode(Z_MAX_PIN,INPUT);
digitalWrite(Z_MAX_PIN,HIGH);
#endif
#else
#if X_MIN_PIN > -1
pinMode(X_MIN_PIN,INPUT);
#endif
#if X_MAX_PIN > -1
pinMode(X_MAX_PIN,INPUT);
#endif
#if Y_MIN_PIN > -1
pinMode(Y_MIN_PIN,INPUT);
#endif
#if Y_MAX_PIN > -1
pinMode(Y_MAX_PIN,INPUT);
#endif
#if Z_MIN_PIN > -1
pinMode(Z_MIN_PIN,INPUT);
#endif
#if Z_MAX_PIN > -1
pinMode(Z_MAX_PIN,INPUT);
#endif
#endif
#if (HEATER_0_PIN > -1)
pinMode(HEATER_0_PIN,OUTPUT);
#endif
#if (HEATER_1_PIN > -1)
pinMode(HEATER_1_PIN,OUTPUT);
#endif
//Initialize Step Pins
for(int i=0; i < NUM_AXIS; i++){
if(STEP_PIN[i] > -1) pinMode(STEP_PIN[i],OUTPUT);
#ifdef RAMP_ACCELERATION
axis_max_interval[i] = 100000000.0 / (max_start_speed_units_per_second[i] * axis_steps_per_unit[i]);
axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i];
axis_travel_steps_per_sqr_second[i] = max_travel_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i];
#endif
}
#ifdef HEATER_USES_MAX6675
digitalWrite(SCK_PIN,0);
pinMode(SCK_PIN,OUTPUT);
digitalWrite(MOSI_PIN,1);
digitalWrite(SCK_PIN,0);
pinMode(MOSI_PIN,OUTPUT);
digitalWrite(MISO_PIN,1);
digitalWrite(MOSI_PIN,1);
pinMode(MISO_PIN,INPUT);
digitalWrite(MAX6675_SS,1);
digitalWrite(MISO_PIN,1);
pinMode(MAX6675_SS,OUTPUT);
digitalWrite(MAX6675_SS,1);
#endif
#ifdef SDSUPPORT
@ -682,7 +740,7 @@ inline void process_commands()
Serial.println();
#endif
#else
Serial.println("No thermistors - no temp");
#error No temperature source available
#endif
return;
//break;
@ -1150,15 +1208,6 @@ inline void do_step(int axis) {
digitalWrite(STEP_PIN[axis], LOW);
}
inline void disable_x() { if(X_ENABLE_PIN > -1) digitalWrite(X_ENABLE_PIN,!X_ENABLE_ON); }
inline void disable_y() { if(Y_ENABLE_PIN > -1) digitalWrite(Y_ENABLE_PIN,!Y_ENABLE_ON); }
inline void disable_z() { if(Z_ENABLE_PIN > -1) digitalWrite(Z_ENABLE_PIN,!Z_ENABLE_ON); }
inline void disable_e() { if(E_ENABLE_PIN > -1) digitalWrite(E_ENABLE_PIN,!E_ENABLE_ON); }
inline void enable_x() { if(X_ENABLE_PIN > -1) digitalWrite(X_ENABLE_PIN, X_ENABLE_ON); }
inline void enable_y() { if(Y_ENABLE_PIN > -1) digitalWrite(Y_ENABLE_PIN, Y_ENABLE_ON); }
inline void enable_z() { if(Z_ENABLE_PIN > -1) digitalWrite(Z_ENABLE_PIN, Z_ENABLE_ON); }
inline void enable_e() { if(E_ENABLE_PIN > -1) digitalWrite(E_ENABLE_PIN, E_ENABLE_ON); }
#define HEAT_INTERVAL 250
#ifdef HEATER_USES_MAX6675
unsigned long max6675_previous_millis = 0;