Browse Source

Finish M900 updates

Scott Lahteine 4 years ago
parent
commit
646599d0d9
2 changed files with 55 additions and 52 deletions
  1. 53
    50
      Marlin/src/gcode/feature/advance/M900.cpp
  2. 2
    2
      buildroot/share/tests/mega2560-tests

+ 53
- 50
Marlin/src/gcode/feature/advance/M900.cpp View File

@@ -47,41 +47,7 @@ void GcodeSuite::M900() {
47 47
     SERIAL_ECHOPGM(" value out of range");
48 48
     if (ten) SERIAL_ECHOPGM(" (0-10)");
49 49
     SERIAL_ECHOLNPGM(".");
50
-  }
51
-
52
-  if (!parser.seen_any()) {
53
-
54
-    #if ENABLED(EXTRA_LIN_ADVANCE_K)
55
-
56
-      #if EXTRUDERS < 2
57
-        SERIAL_ECHOLNPAIR("Advance S", int(new_slot), " K", kref, "(S", int(!new_slot), " K", lref, ")");
58
-      #else
59
-        LOOP_L_N(i, EXTRUDERS) {
60
-          const bool slot = TEST(lin_adv_slot, i);
61
-          SERIAL_ECHOLNPAIR("Advance T", int(i), " S", int(slot), " K", planner.extruder_advance_K[i],
62
-                            "(S", int(!slot), " K", other_extruder_advance_K[i], ")");
63
-          SERIAL_EOL();
64
-        }
65
-      #endif
66
-
67
-    #else
68
-
69
-      SERIAL_ECHO_START();
70
-      #if EXTRUDERS < 2
71
-        SERIAL_ECHOLNPAIR("Advance K=", planner.extruder_advance_K[0]);
72
-      #else
73
-        SERIAL_ECHOPGM("Advance K");
74
-        LOOP_L_N(i, EXTRUDERS) {
75
-          SERIAL_CHAR(' ', '0' + i, ':');
76
-          SERIAL_ECHO(planner.extruder_advance_K[i]);
77
-        }
78
-        SERIAL_EOL();
79
-      #endif
80
-
81
-    #endif
82
-
83
-    return;
84
-  }
50
+  };
85 51
 
86 52
   #if EXTRUDERS < 2
87 53
     constexpr uint8_t tool_index = 0;
@@ -93,9 +59,13 @@ void GcodeSuite::M900() {
93 59
     }
94 60
   #endif
95 61
 
96
-  float &kref = planner.extruder_advance_K[tool_index],
97
-        &lref = other_extruder_advance_K[tool_index];
98
-  const float oldK = kref, oldOther = lref;
62
+  float &kref = planner.extruder_advance_K[tool_index];
63
+
64
+  #if ENABLED(EXTRA_LIN_ADVANCE_K)
65
+    float &lref = other_extruder_advance_K[tool_index];
66
+  #endif
67
+
68
+  const float oldK = kref;
99 69
   float newK = oldK;
100 70
 
101 71
   #if ENABLED(EXTRA_LIN_ADVANCE_K)
@@ -107,32 +77,32 @@ void GcodeSuite::M900() {
107 77
     // saved K values. Do here so K/L will apply correctly.
108 78
     if (new_slot != old_slot) {                       // Not the same slot?
109 79
       SET_BIT_TO(lin_adv_slot, tool_index, new_slot); // Update the slot for the tool
110
-      newK = oldOther;                                // Get new K value from backup
80
+      newK = lref;                                    // Get new K value from backup
111 81
       lref = oldK;                                    // Save K to backup
112 82
     }
113 83
 
114 84
     // Set the main K value. Apply if the main slot is active.
115 85
     if (parser.seenval('K')) {
116
-      const float newK = parser.value_float();
117
-      if (!WITHIN(newK, 0, 10)) echo_value_oor('K');
118
-      else if (new_slot)        lref = newK;          // S1 Knn
119
-      else                      newK = newK;          // S0 Knn
86
+      const float K = parser.value_float();
87
+      if (!WITHIN(K, 0, 10)) echo_value_oor('K');
88
+      else if (new_slot)        lref = K;             // S1 Knn
89
+      else                      newK = K;             // S0 Knn
120 90
     }
121 91
 
122 92
     // Set the extra K value. Apply if the extra slot is active.
123 93
     if (parser.seenval('L')) {
124
-      const float newL = parser.value_float();
125
-      if (!WITHIN(newL, 0, 10)) echo_value_oor('L');
126
-      else if (!new_slot)       lref = newL;          // S0 Lnn
127
-      else                      newK = newL;          // S1 Lnn
94
+      const float L = parser.value_float();
95
+      if (!WITHIN(L, 0, 10)) echo_value_oor('L');
96
+      else if (!new_slot)       lref = L;             // S0 Lnn
97
+      else                      newK = L;             // S1 Lnn
128 98
     }
129 99
 
130 100
   #else
131 101
 
132 102
     if (parser.seenval('K')) {
133
-      const float newK = parser.value_float();
134
-      if (WITHIN(newK, 0, 10))
135
-        newK = newK;
103
+      const float K = parser.value_float();
104
+      if (WITHIN(K, 0, 10))
105
+        newK = K;
136 106
       else
137 107
         echo_value_oor('K');
138 108
     }
@@ -143,6 +113,39 @@ void GcodeSuite::M900() {
143 113
     planner.synchronize();
144 114
     kref = newK;
145 115
   }
116
+
117
+  if (!parser.seen_any()) {
118
+
119
+    #if ENABLED(EXTRA_LIN_ADVANCE_K)
120
+
121
+      #if EXTRUDERS < 2
122
+        SERIAL_ECHOLNPAIR("Advance S", int(new_slot), " K", kref, "(S", int(!new_slot), " K", lref, ")");
123
+      #else
124
+        LOOP_L_N(i, EXTRUDERS) {
125
+          const bool slot = TEST(lin_adv_slot, i);
126
+          SERIAL_ECHOLNPAIR("Advance T", int(i), " S", int(slot), " K", planner.extruder_advance_K[i],
127
+                            "(S", int(!slot), " K", other_extruder_advance_K[i], ")");
128
+          SERIAL_EOL();
129
+        }
130
+      #endif
131
+
132
+    #else
133
+
134
+      SERIAL_ECHO_START();
135
+      #if EXTRUDERS < 2
136
+        SERIAL_ECHOLNPAIR("Advance K=", planner.extruder_advance_K[0]);
137
+      #else
138
+        SERIAL_ECHOPGM("Advance K");
139
+        LOOP_L_N(i, EXTRUDERS) {
140
+          SERIAL_CHAR(' ', '0' + i, ':');
141
+          SERIAL_ECHO(planner.extruder_advance_K[i]);
142
+        }
143
+        SERIAL_EOL();
144
+      #endif
145
+
146
+    #endif
147
+  }
148
+
146 149
 }
147 150
 
148 151
 #endif // LIN_ADVANCE

+ 2
- 2
buildroot/share/tests/mega2560-tests View File

@@ -45,7 +45,7 @@ opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TE
45 45
            BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \
46 46
            FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
47 47
            PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \
48
-          SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE \
48
+          SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \
49 49
            HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL
50 50
 exec_test $1 $2 "RAMPS | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..."
51 51
 
@@ -66,7 +66,7 @@ opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATU
66 66
            REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING BOOT_MARLIN_LOGO_SMALL \
67 67
            SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT SCROLL_LONG_FILENAMES CANCEL_OBJECTS \
68 68
            EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_USER_MENUS \
69
-           MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE QUICK_HOME \
69
+           MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE EXTRA_LIN_ADVANCE_K QUICK_HOME \
70 70
            LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \
71 71
            BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL
72 72
 exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE ..."

Loading…
Cancel
Save