Skip to content

Commit

Permalink
Fix DIRECT_MIXING_IN_G1 to preserve the previous mix
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Nov 15, 2016
1 parent 665b7f3 commit 99b0c1f
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions Marlin/Marlin_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 99b0c1f

Please sign in to comment.