diff options
author | Nils <bacardicoke@gmail.com> | 2011-05-12 14:26:59 +0200 |
---|---|---|
committer | Nils <bacardicoke@gmail.com> | 2011-05-12 14:26:59 +0200 |
commit | 5ba9e2683c46e10179705629f35dd4d66c68087e (patch) | |
tree | f939150c7adf17ff03c50e41c34064f5fbad874c /Tonokip_Firmware | |
parent | 38660dbd399746bbd2c042755e5b1ffc5ffce457 (diff) | |
parent | 37d8a4bd55bd8a60c010ad459b18ff040e5576e4 (diff) |
Merge branch 'master' of github.com:kliment/Sprinter
Diffstat (limited to 'Tonokip_Firmware')
-rw-r--r-- | Tonokip_Firmware/Tonokip_Firmware.h | 36 | ||||
-rw-r--r-- | Tonokip_Firmware/Tonokip_Firmware.pde | 460 | ||||
-rw-r--r-- | Tonokip_Firmware/pins.h | 48 |
3 files changed, 319 insertions, 225 deletions
diff --git a/Tonokip_Firmware/Tonokip_Firmware.h b/Tonokip_Firmware/Tonokip_Firmware.h new file mode 100644 index 0000000..4e3c7ea --- /dev/null +++ b/Tonokip_Firmware/Tonokip_Firmware.h @@ -0,0 +1,36 @@ +// Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. +// Licence: GPL +#include <WProgram.h> + +void get_command(); +void process_commands(); + +void manage_inactivity(byte debug); + +void manage_heater(); +float temp2analog(int celsius); +float temp2analogBed(int celsius); +float analog2temp(int raw); +float analog2tempBed(int raw); + +void FlushSerialRequestResend(); +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 kill(byte debug); + diff --git a/Tonokip_Firmware/Tonokip_Firmware.pde b/Tonokip_Firmware/Tonokip_Firmware.pde index c1f11dd..43434b1 100644 --- a/Tonokip_Firmware/Tonokip_Firmware.pde +++ b/Tonokip_Firmware/Tonokip_Firmware.pde @@ -1,6 +1,7 @@ // Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. // Licence: GPL +#include "Tonokip_Firmware.h" #include "configuration.h" #include "pins.h" @@ -8,39 +9,6 @@ #include "SdFat.h" #endif -void get_command(); -void process_commands(); - -void manage_inactivity(byte debug); - -void manage_heater(); -float temp2analog(int celsius); -float temp2analogBed(int celsius); -float analog2temp(int raw); -float analog2tempBed(int raw); - -void FlushSerialRequestResend(); -void ClearToSend(); - -void get_coordinates(); -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 kill(byte debug); - - - // look here for descriptions of gcodes: http://linuxcnc.org/handbook/gcode/g-code.html // http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes @@ -49,6 +17,7 @@ void kill(byte debug); // G0 -> G1 // G1 - Coordinated Movement X Y Z E // G4 - Dwell S<seconds> or P<milliseconds> +// G28 - Home all Axis // G90 - Use Absolute Coordinates // G91 - Use Relative Coordinates // G92 - Set current position to cordinates given @@ -85,7 +54,8 @@ void kill(byte debug); // M140 - Set bed target temp // M143 - Set maximum hot-end temperature // M190 - Wait for bed current temp to reach target temp. - +// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) +// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) //Stepper Movement Variables @@ -93,37 +63,37 @@ bool direction_x, direction_y, direction_z, direction_e; unsigned long previous_micros=0, previous_micros_x=0, previous_micros_y=0, previous_micros_z=0, previous_micros_e=0, previous_millis_heater, previous_millis_bed_heater; unsigned long x_steps_to_take, y_steps_to_take, z_steps_to_take, e_steps_to_take; #ifdef RAMP_ACCELERATION -unsigned long max_x_interval = 100000000.0 / (min_units_per_second * x_steps_per_unit); -unsigned long max_y_interval = 100000000.0 / (min_units_per_second * y_steps_per_unit); -unsigned long max_interval; -unsigned long x_steps_per_sqr_second = max_acceleration_units_per_sq_second * x_steps_per_unit; -unsigned long y_steps_per_sqr_second = max_acceleration_units_per_sq_second * y_steps_per_unit; -unsigned long x_travel_steps_per_sqr_second = max_travel_acceleration_units_per_sq_second * x_steps_per_unit; -unsigned long y_travel_steps_per_sqr_second = max_travel_acceleration_units_per_sq_second * y_steps_per_unit; -unsigned long steps_per_sqr_second, plateau_steps; + unsigned long max_x_interval = 100000000.0 / (min_units_per_second * x_steps_per_unit); + unsigned long max_y_interval = 100000000.0 / (min_units_per_second * y_steps_per_unit); + unsigned long max_interval; + unsigned long x_steps_per_sqr_second = max_acceleration_units_per_sq_second * x_steps_per_unit; + unsigned long y_steps_per_sqr_second = max_acceleration_units_per_sq_second * y_steps_per_unit; + unsigned long x_travel_steps_per_sqr_second = max_travel_acceleration_units_per_sq_second * x_steps_per_unit; + unsigned long y_travel_steps_per_sqr_second = max_travel_acceleration_units_per_sq_second * y_steps_per_unit; + unsigned long steps_per_sqr_second, plateau_steps; #endif #ifdef EXP_ACCELERATION -unsigned long long_full_velocity_units = full_velocity_units * 100; -unsigned long long_travel_move_full_velocity_units = travel_move_full_velocity_units * 100; -unsigned long max_x_interval = 100000000.0 / (min_units_per_second * x_steps_per_unit); -unsigned long max_y_interval = 100000000.0 / (min_units_per_second * y_steps_per_unit); -unsigned long max_interval; -unsigned long x_min_constant_speed_steps = min_constant_speed_units * x_steps_per_unit, - y_min_constant_speed_steps = min_constant_speed_units * y_steps_per_unit, min_constant_speed_steps; + unsigned long long_full_velocity_units = full_velocity_units * 100; + unsigned long long_travel_move_full_velocity_units = travel_move_full_velocity_units * 100; + unsigned long max_x_interval = 100000000.0 / (min_units_per_second * x_steps_per_unit); + unsigned long max_y_interval = 100000000.0 / (min_units_per_second * y_steps_per_unit); + unsigned long max_interval; + unsigned long x_min_constant_speed_steps = min_constant_speed_units * x_steps_per_unit, + y_min_constant_speed_steps = min_constant_speed_units * y_steps_per_unit, min_constant_speed_steps; #endif boolean acceleration_enabled=false ,accelerating=false; unsigned long interval; float destination_x =0.0, destination_y = 0.0, destination_z = 0.0, destination_e = 0.0; float current_x = 0.0, current_y = 0.0, current_z = 0.0, current_e = 0.0; long x_interval, y_interval, z_interval, e_interval; // for speed delay -float feedrate = 1500, next_feedrate, z_feedrate; +float feedrate = 1500, next_feedrate, z_feedrate, saved_feedrate; float time_for_move; long gcode_N, gcode_LastN; bool relative_mode = false; //Determines Absolute or Relative Coordinates bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode. long timediff=0; #ifdef STEP_DELAY_RATIO -long long_step_delay_ratio = STEP_DELAY_RATIO * 100; + long long_step_delay_ratio = STEP_DELAY_RATIO * 100; #endif @@ -151,25 +121,25 @@ int target_bed_raw = 0; int current_bed_raw=0; float tt=0,bt=0; #ifdef PIDTEMP -int temp_iState=0; -int temp_dState=0; -int pTerm; -int iTerm; -int dTerm; - //int output; -int error; -int temp_iState_min = 100*-PID_INTEGRAL_DRIVE_MAX/PID_IGAIN; -int temp_iState_max = 100*PID_INTEGRAL_DRIVE_MAX/PID_IGAIN; + int temp_iState=0; + int temp_dState=0; + int pTerm; + int iTerm; + int dTerm; + //int output; + int error; + int temp_iState_min = 100*-PID_INTEGRAL_DRIVE_MAX/PID_IGAIN; + int temp_iState_max = 100*PID_INTEGRAL_DRIVE_MAX/PID_IGAIN; #endif #ifdef SMOOTHING -uint32_t nma=SMOOTHFACTOR*analogRead(TEMP_0_PIN); + uint32_t nma=SMOOTHFACTOR*analogRead(TEMP_0_PIN); #endif #ifdef WATCHPERIOD -int watch_raw=-1000; -unsigned long watchmillis=0; + int watch_raw=-1000; + unsigned long watchmillis=0; #endif #ifdef MINTEMP -int minttemp=temp2analog(MINTEMP); + int minttemp=temp2analog(MINTEMP); #endif #ifdef MAXTEMP int maxttemp=temp2analog(MAXTEMP); @@ -181,56 +151,54 @@ unsigned long max_inactive_time = 0; unsigned long stepper_inactive_time = 0; #ifdef SDSUPPORT -Sd2Card card; -SdVolume volume; -SdFile root; -SdFile file; -uint32_t filesize=0; -uint32_t sdpos=0; -bool sdmode=false; -bool sdactive=false; -bool savetosd=false; -int16_t n; - -void initsd(){ -sdactive=false; -#if SDSS>-1 -if(root.isOpen()) - root.close(); -if (!card.init(SPI_FULL_SPEED,SDSS)){ - if (!card.init(SPI_HALF_SPEED,SDSS)) - Serial.println("SD init fail"); -} -else if (!volume.init(&card)) - Serial.println("volume.init failed"); -else if (!root.openRoot(&volume)) - Serial.println("openRoot failed"); -else - sdactive=true; -#endif -} - -inline void write_command(char *buf){ - char* begin=buf; - char* npos=0; - char* end=buf+strlen(buf)-1; - - file.writeError = false; - if((npos=strchr(buf, 'N')) != NULL){ - begin = strchr(npos,' ')+1; - end =strchr(npos, '*')-1; - } - end[1]='\r'; - end[2]='\n'; - end[3]='\0'; - //Serial.println(begin); - file.write(begin); - if (file.writeError){ - Serial.println("error writing to file"); + Sd2Card card; + SdVolume volume; + SdFile root; + SdFile file; + uint32_t filesize=0; + uint32_t sdpos=0; + bool sdmode=false; + bool sdactive=false; + bool savetosd=false; + int16_t n; + + void initsd(){ + sdactive=false; + #if SDSS>-1 + if(root.isOpen()) + root.close(); + if (!card.init(SPI_FULL_SPEED,SDSS)){ + //if (!card.init(SPI_HALF_SPEED,SDSS)) + Serial.println("SD init fail"); } -} - - + else if (!volume.init(&card)) + Serial.println("volume.init failed"); + else if (!root.openRoot(&volume)) + Serial.println("openRoot failed"); + else + sdactive=true; + #endif + } + + inline void write_command(char *buf){ + char* begin=buf; + char* npos=0; + char* end=buf+strlen(buf)-1; + + file.writeError = false; + if((npos=strchr(buf, 'N')) != NULL){ + begin = strchr(npos,' ')+1; + end =strchr(npos, '*')-1; + } + end[1]='\r'; + end[2]='\n'; + end[3]='\0'; + //Serial.println(begin); + file.write(begin); + if (file.writeError){ + Serial.println("error writing to file"); + } + } #endif @@ -261,12 +229,12 @@ void setup() //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_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);} #endif //Initialize Enable Pins if(X_ENABLE_PIN > -1) pinMode(X_ENABLE_PIN,OUTPUT); @@ -293,23 +261,19 @@ void setup() #ifdef SDSUPPORT -//power to SD reader -#if SDPOWER > -1 -pinMode(SDPOWER,OUTPUT); -digitalWrite(SDPOWER,HIGH); -#endif -initsd(); + //power to SD reader + #if SDPOWER > -1 + pinMode(SDPOWER,OUTPUT); + digitalWrite(SDPOWER,HIGH); + #endif + initsd(); #endif - - } void loop() { - - if(buflen<3) get_command(); @@ -318,9 +282,9 @@ void loop() if(savetosd){ if(strstr(cmdbuffer[bufindr],"M29")==NULL){ write_command(cmdbuffer[bufindr]); - file.sync(); Serial.println("ok"); }else{ + file.sync(); file.close(); savetosd=false; Serial.println("Done saving file."); @@ -358,7 +322,7 @@ inline void get_command() if(gcode_N != gcode_LastN+1 && (strstr(cmdbuffer[bufindw], "M110") == NULL) ) { Serial.print("Serial Error: Line Number is not Last Line Number+1, Last Line:"); Serial.println(gcode_LastN); - Serial.println(gcode_N); + //Serial.println(gcode_N); FlushSerialRequestResend(); serial_count = 0; return; @@ -490,77 +454,7 @@ inline void process_commands() case 0: // G0 -> G1 case 1: // G1 get_coordinates(); // For X Y Z E F - xdiff=(destination_x - current_x); - ydiff=(destination_y - current_y); - zdiff=(destination_z - current_z); - ediff=(destination_e - current_e); - x_steps_to_take = abs(xdiff)*x_steps_per_unit; - y_steps_to_take = abs(ydiff)*y_steps_per_unit; - z_steps_to_take = abs(zdiff)*z_steps_per_unit; - e_steps_to_take = abs(ediff)*e_steps_per_unit; - if(feedrate<10) - feedrate=10; - /*//experimental feedrate calc - if(abs(xdiff)>0.1 && abs(ydiff)>0.1) - d=sqrt(xdiff*xdiff+ydiff*ydiff); - else if(abs(xdiff)>0.1) - d=abs(xdiff); - else if(abs(ydiff)>0.1) - d=abs(ydiff); - else if(abs(zdiff)>0.05) - d=abs(zdiff); - else if(abs(ediff)>0.1) - d=abs(ediff); - else d=1; //extremely slow move, should be okay for moves under 0.1mm - time_for_move=(xdiff/(feedrate/60000000)); - //time=60000000*dist/feedrate - //int feedz=(60000000*zdiff)/time_for_move; - //if(feedz>maxfeed) - */ - #define X_TIME_FOR_MOVE ((float)x_steps_to_take / (x_steps_per_unit*feedrate/60000000)) - #define Y_TIME_FOR_MOVE ((float)y_steps_to_take / (y_steps_per_unit*feedrate/60000000)) - #define Z_TIME_FOR_MOVE ((float)z_steps_to_take / (z_steps_per_unit*z_feedrate/60000000)) - #define E_TIME_FOR_MOVE ((float)e_steps_to_take / (e_steps_per_unit*feedrate/60000000)) - - time_for_move = max(X_TIME_FOR_MOVE,Y_TIME_FOR_MOVE); - time_for_move = max(time_for_move,Z_TIME_FOR_MOVE); - if(time_for_move <= 0) time_for_move = max(time_for_move,E_TIME_FOR_MOVE); - - if(x_steps_to_take) x_interval = time_for_move/x_steps_to_take*100; - if(y_steps_to_take) y_interval = time_for_move/y_steps_to_take*100; - if(z_steps_to_take) z_interval = time_for_move/z_steps_to_take*100; - if(e_steps_to_take && (x_steps_to_take + y_steps_to_take <= 0)) e_interval = time_for_move/e_steps_to_take*100; - - //#define DEBUGGING false - #if 0 - if(0) { - Serial.print("destination_x: "); Serial.println(destination_x); - Serial.print("current_x: "); Serial.println(current_x); - Serial.print("x_steps_to_take: "); Serial.println(x_steps_to_take); - Serial.print("X_TIME_FOR_MVE: "); Serial.println(X_TIME_FOR_MOVE); - Serial.print("x_interval: "); Serial.println(x_interval); - Serial.println(""); - Serial.print("destination_y: "); Serial.println(destination_y); - Serial.print("current_y: "); Serial.println(current_y); - Serial.print("y_steps_to_take: "); Serial.println(y_steps_to_take); - Serial.print("Y_TIME_FOR_MVE: "); Serial.println(Y_TIME_FOR_MOVE); - Serial.print("y_interval: "); Serial.println(y_interval); - Serial.println(""); - Serial.print("destination_z: "); Serial.println(destination_z); - Serial.print("current_z: "); Serial.println(current_z); - Serial.print("z_steps_to_take: "); Serial.println(z_steps_to_take); - Serial.print("Z_TIME_FOR_MVE: "); Serial.println(Z_TIME_FOR_MOVE); - Serial.print("z_interval: "); Serial.println(z_interval); - Serial.println(""); - Serial.print("destination_e: "); Serial.println(destination_e); - Serial.print("current_e: "); Serial.println(current_e); - Serial.print("e_steps_to_take: "); Serial.println(e_steps_to_take); - Serial.print("E_TIME_FOR_MVE: "); Serial.println(E_TIME_FOR_MOVE); - Serial.print("e_interval: "); Serial.println(e_interval); - Serial.println(""); - } - #endif - linear_move(x_steps_to_take, y_steps_to_take, z_steps_to_take, e_steps_to_take); // make the move + prepare_move(); previous_millis_cmd = millis(); //ClearToSend(); return; @@ -572,6 +466,75 @@ inline void process_commands() previous_millis_heater = millis(); // keep track of when we started waiting while((millis() - previous_millis_heater) < codenum ) manage_heater(); //manage heater until time is up break; + case 28: //G28 Home all Axis one at a time + saved_feedrate = feedrate; + destination_x = 0; + current_x = 0; + destination_y = 0; + current_y = 0; + destination_z = 0; + current_z = 0; + destination_e = 0; + current_e = 0; + feedrate = 0; + + if(X_MIN_PIN > -1) { + current_x = 0; + destination_x = -1.5 * X_MAX_LENGTH; + feedrate = min_units_per_second*60; + prepare_move(); + + current_x = 0; + destination_x = 1; + prepare_move(); + + destination_x = -10; + prepare_move(); + + current_x = 0; + destination_x = 0; + feedrate = 0; + } + + if(Y_MIN_PIN > -1) { + current_y = 0; + destination_y = -1.5 * Y_MAX_LENGTH; + feedrate = min_units_per_second*60; + prepare_move(); + + current_y = 0; + destination_y = 1; + prepare_move(); + + destination_y = -10; + prepare_move(); + + current_y = 0; + destination_y = 0; + feedrate = 0; + } + + if(Z_MIN_PIN > -1) { + current_z = 0; + destination_z = -1.5 * Z_MAX_LENGTH; + feedrate = max_z_feedrate/2; + prepare_move(); + + current_z = 0; + destination_z = 1; + prepare_move(); + + destination_z = -10; + prepare_move(); + + current_z = 0; + destination_z = 0; + feedrate = 0; + } + + feedrate = saved_feedrate; + previous_millis_cmd = millis(); + break; case 90: // G90 relative_mode = false; break; @@ -820,6 +783,16 @@ inline void process_commands() Serial.print("E:"); Serial.println(current_e); break; + #ifdef RAMP_ACCELERATION + case 201: // M201 + if(code_seen('X')) x_steps_per_sqr_second = code_value() * x_steps_per_unit; + if(code_seen('Y')) x_steps_per_sqr_second = code_value() * y_steps_per_unit; + break; + case 202: // M202 + if(code_seen('X')) x_travel_steps_per_sqr_second = code_value() * x_steps_per_unit; + if(code_seen('Y')) x_travel_steps_per_sqr_second = code_value() * y_steps_per_unit; + break; + #endif } } @@ -865,7 +838,10 @@ inline void get_coordinates() next_feedrate = code_value(); if(next_feedrate > 0.0) feedrate = next_feedrate; } - +} + +inline void prepare_move() +{ //Find direction if(destination_x >= current_x) direction_x=1; else direction_x=0; @@ -893,6 +869,80 @@ inline void get_coordinates() if(feedrate > max_z_feedrate) z_feedrate = max_z_feedrate; else z_feedrate=feedrate; + + xdiff=(destination_x - current_x); + ydiff=(destination_y - current_y); + zdiff=(destination_z - current_z); + ediff=(destination_e - current_e); + x_steps_to_take = abs(xdiff)*x_steps_per_unit; + y_steps_to_take = abs(ydiff)*y_steps_per_unit; + z_steps_to_take = abs(zdiff)*z_steps_per_unit; + e_steps_to_take = abs(ediff)*e_steps_per_unit; + if(feedrate<10) + feedrate=10; + /* + //experimental feedrate calc + if(abs(xdiff)>0.1 && abs(ydiff)>0.1) + d=sqrt(xdiff*xdiff+ydiff*ydiff); + else if(abs(xdiff)>0.1) + d=abs(xdiff); + else if(abs(ydiff)>0.1) + d=abs(ydiff); + else if(abs(zdiff)>0.05) + d=abs(zdiff); + else if(abs(ediff)>0.1) + d=abs(ediff); + else d=1; //extremely slow move, should be okay for moves under 0.1mm + time_for_move=(xdiff/(feedrate/60000000)); + //time=60000000*dist/feedrate + //int feedz=(60000000*zdiff)/time_for_move; + //if(feedz>maxfeed) + */ + #define X_TIME_FOR_MOVE ((float)x_steps_to_take / (x_steps_per_unit*feedrate/60000000)) + #define Y_TIME_FOR_MOVE ((float)y_steps_to_take / (y_steps_per_unit*feedrate/60000000)) + #define Z_TIME_FOR_MOVE ((float)z_steps_to_take / (z_steps_per_unit*z_feedrate/60000000)) + #define E_TIME_FOR_MOVE ((float)e_steps_to_take / (e_steps_per_unit*feedrate/60000000)) + + time_for_move = max(X_TIME_FOR_MOVE,Y_TIME_FOR_MOVE); + time_for_move = max(time_for_move,Z_TIME_FOR_MOVE); + if(time_for_move <= 0) time_for_move = max(time_for_move,E_TIME_FOR_MOVE); + + if(x_steps_to_take) x_interval = time_for_move/x_steps_to_take*100; + if(y_steps_to_take) y_interval = time_for_move/y_steps_to_take*100; + if(z_steps_to_take) z_interval = time_for_move/z_steps_to_take*100; + if(e_steps_to_take && (x_steps_to_take + y_steps_to_take <= 0)) e_interval = time_for_move/e_steps_to_take*100; + + //#define DEBUGGING false + #if 0 + if(0) { + Serial.print("destination_x: "); Serial.println(destination_x); + Serial.print("current_x: "); Serial.println(current_x); + Serial.print("x_steps_to_take: "); Serial.println(x_steps_to_take); + Serial.print("X_TIME_FOR_MVE: "); Serial.println(X_TIME_FOR_MOVE); + Serial.print("x_interval: "); Serial.println(x_interval); + Serial.println(""); + Serial.print("destination_y: "); Serial.println(destination_y); + Serial.print("current_y: "); Serial.println(current_y); + Serial.print("y_steps_to_take: "); Serial.println(y_steps_to_take); + Serial.print("Y_TIME_FOR_MVE: "); Serial.println(Y_TIME_FOR_MOVE); + Serial.print("y_interval: "); Serial.println(y_interval); + Serial.println(""); + Serial.print("destination_z: "); Serial.println(destination_z); + Serial.print("current_z: "); Serial.println(current_z); + Serial.print("z_steps_to_take: "); Serial.println(z_steps_to_take); + Serial.print("Z_TIME_FOR_MVE: "); Serial.println(Z_TIME_FOR_MOVE); + Serial.print("z_interval: "); Serial.println(z_interval); + Serial.println(""); + Serial.print("destination_e: "); Serial.println(destination_e); + Serial.print("current_e: "); Serial.println(current_e); + Serial.print("e_steps_to_take: "); Serial.println(e_steps_to_take); + Serial.print("E_TIME_FOR_MVE: "); Serial.println(E_TIME_FOR_MOVE); + Serial.print("e_interval: "); Serial.println(e_interval); + Serial.println(""); + } + #endif + + linear_move(x_steps_to_take, y_steps_to_take, z_steps_to_take, e_steps_to_take); // make the move } void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remaining, unsigned long z_steps_remaining, unsigned long e_steps_remaining) // make linear move with preset speeds and destinations, see G0 and G1 @@ -1177,8 +1227,8 @@ void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remainin } } - //If more that half second is passed since previous heating check, manage it - if(!accelerating && (millis() - previous_millis_heater) >= 500 ) { + //If more that 50ms have passed since previous heating check, adjust temp + if(!accelerating && (millis() - previous_millis_heater) >= 50 ) { manage_heater(); previous_millis_heater = millis(); diff --git a/Tonokip_Firmware/pins.h b/Tonokip_Firmware/pins.h index 282961f..42845fd 100644 --- a/Tonokip_Firmware/pins.h +++ b/Tonokip_Firmware/pins.h @@ -210,51 +210,59 @@ #define X_DIR_PIN 28 #define X_ENABLE_PIN 24 #define X_MIN_PIN 3 -#define X_MAX_PIN -2 //2 +#define X_MAX_PIN -2 //2 #define Y_STEP_PIN 38 #define Y_DIR_PIN 40 #define Y_ENABLE_PIN 36 #define Y_MIN_PIN 16 -#define Y_MAX_PIN -1 //17 +#define Y_MAX_PIN -1 //17 #define Z_STEP_PIN 44 #define Z_DIR_PIN 46 #define Z_ENABLE_PIN 42 #define Z_MIN_PIN 18 -#define Z_MAX_PIN -1 //19 +#define Z_MAX_PIN -1 //19 #define E_STEP_PIN 32 #define E_DIR_PIN 34 #define E_ENABLE_PIN 30 -#define SDPOWER 48 -#define SDSS 53 +#define SDPOWER 48 +#define SDSS 53 #define LED_PIN 13 -//#define FAN_PIN 11 // UNCOMMENT THIS LINE FOR V1.0 -#define FAN_PIN 9 // THIS LINE FOR V1.1 - #define PS_ON_PIN -1 #define KILL_PIN -1 -//#define HEATER_0_PIN 12 // UNCOMMENT THIS LINE FOR V1.0 -#define HEATER_0_PIN 10 // THIS LINE FOR V1.1 -#define HEATER_1_PIN 8 // THIS LINE FOR V1.1 +// uncomment the following line for RAMPS V1.0 +// #define RAMPS_V_1_0 -#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#define TEMP_1_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#ifdef RAMPS_V_1_0 + #define HEATER_0_PIN 12 // RAMPS 1.0 + #define HEATER_1_PIN -1 // RAMPS 1.0 + #define FAN_PIN 11 // RAMPS 1.0 -#ifndef SDSUPPORT +#else // RAMPS_V_1_1 as default + #define HEATER_0_PIN 10 // RAMPS 1.1 + #define HEATER_1_PIN 8 // RAMPS 1.1 -// SPI for Max6675 Thermocouple (these pins are defined in the SD library if building with SD support). -#define SCK_PIN 52 -#define MISO_PIN 50 -#define MOSI_PIN 51 -#define MAX6675_SS 53 + #define FAN_PIN 9 // RAMPS 1.1 +#endif + +#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! + +// SPI for Max6675 Thermocouple + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support #define SCK_PIN 52 + #define MISO_PIN 50 + #define MOSI_PIN 51 + #define MAX6675_SS 53 #else -#define MAX6675_SS 49 + #define MAX6675_SS 49 #endif |