Remove "relative_mode", only use "axis_relative_modes"
axis_relative_modes can cleanly handle G90/G91 and M82/M83 without the need of "relative_mode" entirely. Change G90/G91 to simply reset all axes according to the requested state, which avoids to check two variables in get_coordinates(), fixing the following incorrect handling: G91 ; all axis relative M83 ; set extruder absolute G1 E1 ; should be an absolute move, but still relative
This commit is contained in:
parent
955c88cf68
commit
c0ae92cd2a
@ -342,10 +342,6 @@ static float next_feedrate;
|
|||||||
// Original feedrate saved during homing moves
|
// Original feedrate saved during homing moves
|
||||||
static float saved_feedrate;
|
static float saved_feedrate;
|
||||||
|
|
||||||
// Determines Absolute or Relative Coordinates.
|
|
||||||
// Also there is bool axis_relative_modes[] per axis flag.
|
|
||||||
static bool relative_mode = false;
|
|
||||||
|
|
||||||
const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
|
const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
|
||||||
|
|
||||||
//static float tt = 0;
|
//static float tt = 0;
|
||||||
@ -5208,15 +5204,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||||||
|
|
||||||
//! ### G90 - Switch off relative mode
|
//! ### G90 - Switch off relative mode
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
case 90:
|
case 90: {
|
||||||
relative_mode = false;
|
for(uint8_t i = 0; i != NUM_AXIS; ++i)
|
||||||
break;
|
axis_relative_modes[i] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
//! ### G91 - Switch on relative mode
|
//! ### G91 - Switch on relative mode
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
case 91:
|
case 91: {
|
||||||
relative_mode = true;
|
for(uint8_t i = 0; i != NUM_AXIS; ++i)
|
||||||
break;
|
axis_relative_modes[i] = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
//! ### G92 - Set position
|
//! ### G92 - Set position
|
||||||
// -----------------------------
|
// -----------------------------
|
||||||
@ -6238,13 +6238,13 @@ Sigma_Exit:
|
|||||||
//! ### M82 - Set E axis to absolute mode
|
//! ### M82 - Set E axis to absolute mode
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
case 82:
|
case 82:
|
||||||
axis_relative_modes[3] = false;
|
axis_relative_modes[E_AXIS] = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//! ### M83 - Set E axis to relative mode
|
//! ### M83 - Set E axis to relative mode
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
case 83:
|
case 83:
|
||||||
axis_relative_modes[3] = true;
|
axis_relative_modes[E_AXIS] = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//! ### M84, M18 - Disable steppers
|
//! ### M84, M18 - Disable steppers
|
||||||
@ -8279,7 +8279,7 @@ void get_coordinates()
|
|||||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
if(code_seen(axis_codes[i]))
|
if(code_seen(axis_codes[i]))
|
||||||
{
|
{
|
||||||
bool relative = axis_relative_modes[i] || relative_mode;
|
bool relative = axis_relative_modes[i];
|
||||||
destination[i] = (float)code_value();
|
destination[i] = (float)code_value();
|
||||||
if (i == E_AXIS) {
|
if (i == E_AXIS) {
|
||||||
float emult = extruder_multiplier[active_extruder];
|
float emult = extruder_multiplier[active_extruder];
|
||||||
|
Loading…
Reference in New Issue
Block a user