|
|
@ -2672,16 +2672,26 @@ static void homeaxis(AxisEnum axis) { |
|
|
|
|
|
|
|
#if ENABLED(DIRECT_MIXING_IN_G1) |
|
|
|
// Get mixing parameters from the GCode
|
|
|
|
// Factors that are left out are set to 0
|
|
|
|
// The total "must" be 1.0 (but it will be normalized)
|
|
|
|
// If no mix factors are given, the old mix is preserved
|
|
|
|
void gcode_get_mix() { |
|
|
|
const char* mixing_codes = "ABCDHI"; |
|
|
|
for (int i = 0; i < MIXING_STEPPERS; i++) { |
|
|
|
float v = code_seen(mixing_codes[i]) ? code_value_float() : 0.0; |
|
|
|
NOLESS(v, 0.0); |
|
|
|
mixing_factor[i] = RECIPROCAL(v); |
|
|
|
byte mix_bits = 0; |
|
|
|
for (uint8_t i = 0; i < MIXING_STEPPERS; i++) { |
|
|
|
if (code_seen(mixing_codes[i])) { |
|
|
|
SBI(mix_bits, i); |
|
|
|
float v = code_value_float(); |
|
|
|
NOLESS(v, 0.0); |
|
|
|
mixing_factor[i] = RECIPROCAL(v); |
|
|
|
} |
|
|
|
} |
|
|
|
// If any mixing factors were included, clear the rest
|
|
|
|
// If none were included, preserve the last mix
|
|
|
|
if (mix_bits) { |
|
|
|
for (uint8_t i = 0; i < MIXING_STEPPERS; i++) |
|
|
|
if (!TEST(mix_bits, i)) mixing_factor[i] = 0.0; |
|
|
|
normalize_mix(); |
|
|
|
} |
|
|
|
normalize_mix(); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|