Finish M900 updates
This commit is contained in:
		
							parent
							
								
									eb4d5120bf
								
							
						
					
					
						commit
						646599d0d9
					
				| @ -47,6 +47,71 @@ void GcodeSuite::M900() { | |||||||
|     SERIAL_ECHOPGM(" value out of range"); |     SERIAL_ECHOPGM(" value out of range"); | ||||||
|     if (ten) SERIAL_ECHOPGM(" (0-10)"); |     if (ten) SERIAL_ECHOPGM(" (0-10)"); | ||||||
|     SERIAL_ECHOLNPGM("."); |     SERIAL_ECHOLNPGM("."); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   #if EXTRUDERS < 2 | ||||||
|  |     constexpr uint8_t tool_index = 0; | ||||||
|  |   #else | ||||||
|  |     const uint8_t tool_index = parser.intval('T', active_extruder); | ||||||
|  |     if (tool_index >= EXTRUDERS) { | ||||||
|  |       echo_value_oor('T', false); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |   #endif | ||||||
|  | 
 | ||||||
|  |   float &kref = planner.extruder_advance_K[tool_index]; | ||||||
|  | 
 | ||||||
|  |   #if ENABLED(EXTRA_LIN_ADVANCE_K) | ||||||
|  |     float &lref = other_extruder_advance_K[tool_index]; | ||||||
|  |   #endif | ||||||
|  | 
 | ||||||
|  |   const float oldK = kref; | ||||||
|  |   float newK = oldK; | ||||||
|  | 
 | ||||||
|  |   #if ENABLED(EXTRA_LIN_ADVANCE_K) | ||||||
|  | 
 | ||||||
|  |     const bool old_slot = TEST(lin_adv_slot, tool_index), // The tool's current slot (0 or 1)
 | ||||||
|  |                new_slot = parser.boolval('S', old_slot);  // The passed slot (default = current)
 | ||||||
|  | 
 | ||||||
|  |     // If a new slot is being selected swap the current and
 | ||||||
|  |     // saved K values. Do here so K/L will apply correctly.
 | ||||||
|  |     if (new_slot != old_slot) {                       // Not the same slot?
 | ||||||
|  |       SET_BIT_TO(lin_adv_slot, tool_index, new_slot); // Update the slot for the tool
 | ||||||
|  |       newK = lref;                                    // Get new K value from backup
 | ||||||
|  |       lref = oldK;                                    // Save K to backup
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Set the main K value. Apply if the main slot is active.
 | ||||||
|  |     if (parser.seenval('K')) { | ||||||
|  |       const float K = parser.value_float(); | ||||||
|  |       if (!WITHIN(K, 0, 10)) echo_value_oor('K'); | ||||||
|  |       else if (new_slot)        lref = K;             // S1 Knn
 | ||||||
|  |       else                      newK = K;             // S0 Knn
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Set the extra K value. Apply if the extra slot is active.
 | ||||||
|  |     if (parser.seenval('L')) { | ||||||
|  |       const float L = parser.value_float(); | ||||||
|  |       if (!WITHIN(L, 0, 10)) echo_value_oor('L'); | ||||||
|  |       else if (!new_slot)       lref = L;             // S0 Lnn
 | ||||||
|  |       else                      newK = L;             // S1 Lnn
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   #else | ||||||
|  | 
 | ||||||
|  |     if (parser.seenval('K')) { | ||||||
|  |       const float K = parser.value_float(); | ||||||
|  |       if (WITHIN(K, 0, 10)) | ||||||
|  |         newK = K; | ||||||
|  |       else | ||||||
|  |         echo_value_oor('K'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   #endif | ||||||
|  | 
 | ||||||
|  |   if (newK != oldK) { | ||||||
|  |     planner.synchronize(); | ||||||
|  |     kref = newK; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   if (!parser.seen_any()) { |   if (!parser.seen_any()) { | ||||||
| @ -79,70 +144,8 @@ void GcodeSuite::M900() { | |||||||
|       #endif |       #endif | ||||||
| 
 | 
 | ||||||
|     #endif |     #endif | ||||||
| 
 |  | ||||||
|     return; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   #if EXTRUDERS < 2 |  | ||||||
|     constexpr uint8_t tool_index = 0; |  | ||||||
|   #else |  | ||||||
|     const uint8_t tool_index = parser.intval('T', active_extruder); |  | ||||||
|     if (tool_index >= EXTRUDERS) { |  | ||||||
|       echo_value_oor('T', false); |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
|   float &kref = planner.extruder_advance_K[tool_index], |  | ||||||
|         &lref = other_extruder_advance_K[tool_index]; |  | ||||||
|   const float oldK = kref, oldOther = lref; |  | ||||||
|   float newK = oldK; |  | ||||||
| 
 |  | ||||||
|   #if ENABLED(EXTRA_LIN_ADVANCE_K) |  | ||||||
| 
 |  | ||||||
|     const bool old_slot = TEST(lin_adv_slot, tool_index), // The tool's current slot (0 or 1)
 |  | ||||||
|                new_slot = parser.boolval('S', old_slot);  // The passed slot (default = current)
 |  | ||||||
| 
 |  | ||||||
|     // If a new slot is being selected swap the current and
 |  | ||||||
|     // saved K values. Do here so K/L will apply correctly.
 |  | ||||||
|     if (new_slot != old_slot) {                       // Not the same slot?
 |  | ||||||
|       SET_BIT_TO(lin_adv_slot, tool_index, new_slot); // Update the slot for the tool
 |  | ||||||
|       newK = oldOther;                                // Get new K value from backup
 |  | ||||||
|       lref = oldK;                                    // Save K to backup
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Set the main K value. Apply if the main slot is active.
 |  | ||||||
|     if (parser.seenval('K')) { |  | ||||||
|       const float newK = parser.value_float(); |  | ||||||
|       if (!WITHIN(newK, 0, 10)) echo_value_oor('K'); |  | ||||||
|       else if (new_slot)        lref = newK;          // S1 Knn
 |  | ||||||
|       else                      newK = newK;          // S0 Knn
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Set the extra K value. Apply if the extra slot is active.
 |  | ||||||
|     if (parser.seenval('L')) { |  | ||||||
|       const float newL = parser.value_float(); |  | ||||||
|       if (!WITHIN(newL, 0, 10)) echo_value_oor('L'); |  | ||||||
|       else if (!new_slot)       lref = newL;          // S0 Lnn
 |  | ||||||
|       else                      newK = newL;          // S1 Lnn
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|   #else |  | ||||||
| 
 |  | ||||||
|     if (parser.seenval('K')) { |  | ||||||
|       const float newK = parser.value_float(); |  | ||||||
|       if (WITHIN(newK, 0, 10)) |  | ||||||
|         newK = newK; |  | ||||||
|       else |  | ||||||
|         echo_value_oor('K'); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
|   if (newK != oldK) { |  | ||||||
|     planner.synchronize(); |  | ||||||
|     kref = newK; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #endif // LIN_ADVANCE
 | #endif // LIN_ADVANCE
 | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TE | |||||||
|            BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \ |            BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \ | ||||||
|            FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \ |            FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \ | ||||||
|            PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \ |            PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \ | ||||||
|           SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE \ |           SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \ | ||||||
|            HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL |            HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL | ||||||
| exec_test $1 $2 "RAMPS | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..." | exec_test $1 $2 "RAMPS | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..." | ||||||
| 
 | 
 | ||||||
| @ -66,7 +66,7 @@ opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATU | |||||||
|            REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING BOOT_MARLIN_LOGO_SMALL \ |            REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING BOOT_MARLIN_LOGO_SMALL \ | ||||||
|            SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT SCROLL_LONG_FILENAMES CANCEL_OBJECTS \ |            SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT SCROLL_LONG_FILENAMES CANCEL_OBJECTS \ | ||||||
|            EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_USER_MENUS \ |            EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_USER_MENUS \ | ||||||
|            MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE QUICK_HOME \ |            MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE EXTRA_LIN_ADVANCE_K QUICK_HOME \ | ||||||
|            LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \ |            LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \ | ||||||
|            BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL |            BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL | ||||||
| exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE ..." | exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE ..." | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user