Changed comment mode for detection.
Added M221 extuder multiply factor.
This commit is contained in:
parent
00690f7ffd
commit
5aa9c41ab1
@ -98,7 +98,8 @@
|
|||||||
// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
|
// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
|
||||||
// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk
|
// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk
|
||||||
// M206 - set additional homeing offset
|
// M206 - set additional homeing offset
|
||||||
// M220 - set speed factor override percentage S:factor in percent
|
// M220 S<factor in percent>- set speed factor override percentage
|
||||||
|
// M221 S<factor in percent>- set extrude factor override percentage
|
||||||
// M240 - Trigger a camera to take a photograph
|
// M240 - Trigger a camera to take a photograph
|
||||||
// M301 - Set PID parameters P I and D
|
// M301 - Set PID parameters P I and D
|
||||||
// M302 - Allow cold extrudes
|
// M302 - Allow cold extrudes
|
||||||
@ -126,6 +127,8 @@ bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
|
|||||||
volatile int feedmultiply=100; //100->1 200->2
|
volatile int feedmultiply=100; //100->1 200->2
|
||||||
int saved_feedmultiply;
|
int saved_feedmultiply;
|
||||||
volatile bool feedmultiplychanged=false;
|
volatile bool feedmultiplychanged=false;
|
||||||
|
volatile int extrudemultiply=100; //100->1 200->2
|
||||||
|
volatile bool extrudemultiplychanged=false;
|
||||||
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
||||||
float add_homeing[3]={0,0,0};
|
float add_homeing[3]={0,0,0};
|
||||||
uint8_t active_extruder = 0;
|
uint8_t active_extruder = 0;
|
||||||
@ -332,9 +335,13 @@ void get_command()
|
|||||||
serial_char = MYSERIAL.read();
|
serial_char = MYSERIAL.read();
|
||||||
if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) )
|
if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) )
|
||||||
{
|
{
|
||||||
if(!serial_count) return; //if empty line
|
if(!serial_count) { //if empty line
|
||||||
|
comment_mode = false; //for new command
|
||||||
|
return;
|
||||||
|
}
|
||||||
cmdbuffer[bufindw][serial_count] = 0; //terminate string
|
cmdbuffer[bufindw][serial_count] = 0; //terminate string
|
||||||
if(!comment_mode){
|
if(!comment_mode){
|
||||||
|
comment_mode = false; //for new command
|
||||||
fromsd[bufindw] = false;
|
fromsd[bufindw] = false;
|
||||||
if(strstr(cmdbuffer[bufindw], "N") != NULL)
|
if(strstr(cmdbuffer[bufindw], "N") != NULL)
|
||||||
{
|
{
|
||||||
@ -411,9 +418,7 @@ void get_command()
|
|||||||
}
|
}
|
||||||
bufindw = (bufindw + 1)%BUFSIZE;
|
bufindw = (bufindw + 1)%BUFSIZE;
|
||||||
buflen += 1;
|
buflen += 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
comment_mode = false; //for new command
|
|
||||||
serial_count = 0; //clear buffer
|
serial_count = 0; //clear buffer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -447,10 +452,9 @@ void get_command()
|
|||||||
card.checkautostart(true);
|
card.checkautostart(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
if(serial_char=='\n')
|
|
||||||
comment_mode = false; //for new command
|
|
||||||
if(!serial_count)
|
if(!serial_count)
|
||||||
{
|
{
|
||||||
|
comment_mode = false; //for new command
|
||||||
return; //if empty line
|
return; //if empty line
|
||||||
}
|
}
|
||||||
cmdbuffer[bufindw][serial_count] = 0; //terminate string
|
cmdbuffer[bufindw][serial_count] = 0; //terminate string
|
||||||
@ -459,6 +463,7 @@ void get_command()
|
|||||||
buflen += 1;
|
buflen += 1;
|
||||||
bufindw = (bufindw + 1)%BUFSIZE;
|
bufindw = (bufindw + 1)%BUFSIZE;
|
||||||
}
|
}
|
||||||
|
comment_mode = false; //for new command
|
||||||
serial_count = 0; //clear buffer
|
serial_count = 0; //clear buffer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1100,8 +1105,14 @@ void process_commands()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 221: // M221 S<factor in percent>- set extrude factor override percentage
|
||||||
|
{
|
||||||
|
if(code_seen('S'))
|
||||||
|
{
|
||||||
|
extrudemultiply = code_value() ;
|
||||||
|
extrudemultiplychanged=true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
#ifdef PIDTEMP
|
#ifdef PIDTEMP
|
||||||
case 301: // M301
|
case 301: // M301
|
||||||
|
@ -81,6 +81,8 @@ long position[4]; //rescaled from extern when axis_steps_per_unit are changed
|
|||||||
static float previous_speed[4]; // Speed of previous path line segment
|
static float previous_speed[4]; // Speed of previous path line segment
|
||||||
static float previous_nominal_speed; // Nominal speed of previous path line segment
|
static float previous_nominal_speed; // Nominal speed of previous path line segment
|
||||||
|
|
||||||
|
extern volatile int extrudemultiply; // Sets extrude multiply factor (in percent)
|
||||||
|
|
||||||
#ifdef AUTOTEMP
|
#ifdef AUTOTEMP
|
||||||
float autotemp_max=250;
|
float autotemp_max=250;
|
||||||
float autotemp_min=210;
|
float autotemp_min=210;
|
||||||
@ -474,8 +476,6 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u
|
|||||||
target[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]);
|
target[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]);
|
||||||
target[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]);
|
target[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||||
if(target[E_AXIS]!=position[E_AXIS])
|
if(target[E_AXIS]!=position[E_AXIS])
|
||||||
if(degHotend(active_extruder)<EXTRUDE_MINTEMP && !allow_cold_extrude)
|
if(degHotend(active_extruder)<EXTRUDE_MINTEMP && !allow_cold_extrude)
|
||||||
@ -503,6 +503,8 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u
|
|||||||
block->steps_y = labs(target[Y_AXIS]-position[Y_AXIS]);
|
block->steps_y = labs(target[Y_AXIS]-position[Y_AXIS]);
|
||||||
block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]);
|
block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]);
|
||||||
block->steps_e = labs(target[E_AXIS]-position[E_AXIS]);
|
block->steps_e = labs(target[E_AXIS]-position[E_AXIS]);
|
||||||
|
block->steps_e *= extrudemultiply;
|
||||||
|
block-?steps_e /= 100;
|
||||||
block->step_event_count = max(block->steps_x, max(block->steps_y, max(block->steps_z, block->steps_e)));
|
block->step_event_count = max(block->steps_x, max(block->steps_y, max(block->steps_z, block->steps_e)));
|
||||||
|
|
||||||
// Bail if this is a zero-length block
|
// Bail if this is a zero-length block
|
||||||
@ -531,7 +533,7 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u
|
|||||||
delta_mm[X_AXIS] = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS];
|
delta_mm[X_AXIS] = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS];
|
||||||
delta_mm[Y_AXIS] = (target[Y_AXIS]-position[Y_AXIS])/axis_steps_per_unit[Y_AXIS];
|
delta_mm[Y_AXIS] = (target[Y_AXIS]-position[Y_AXIS])/axis_steps_per_unit[Y_AXIS];
|
||||||
delta_mm[Z_AXIS] = (target[Z_AXIS]-position[Z_AXIS])/axis_steps_per_unit[Z_AXIS];
|
delta_mm[Z_AXIS] = (target[Z_AXIS]-position[Z_AXIS])/axis_steps_per_unit[Z_AXIS];
|
||||||
delta_mm[E_AXIS] = (target[E_AXIS]-position[E_AXIS])/axis_steps_per_unit[E_AXIS];
|
delta_mm[E_AXIS] = ((target[E_AXIS]-position[E_AXIS])/axis_steps_per_unit[E_AXIS])*extrudemultiply/100.0;
|
||||||
if ( block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0 ) {
|
if ( block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0 ) {
|
||||||
block->millimeters = abs(delta_mm[E_AXIS]);
|
block->millimeters = abs(delta_mm[E_AXIS]);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user