Move singlenozzle temp/fan (#20829)
This commit is contained in:
		
							parent
							
								
									a275e4e5b8
								
							
						
					
					
						commit
						3f90ecfd77
					
				| @ -88,7 +88,7 @@ void GcodeSuite::M104() { | |||||||
| 
 | 
 | ||||||
|   if (got_temp) { |   if (got_temp) { | ||||||
|     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|       singlenozzle_temp[target_extruder] = temp; |       thermalManager.singlenozzle_temp[target_extruder] = temp; | ||||||
|       if (target_extruder != active_extruder) return; |       if (target_extruder != active_extruder) return; | ||||||
|     #endif |     #endif | ||||||
|     thermalManager.setTargetHotend(temp, target_extruder); |     thermalManager.setTargetHotend(temp, target_extruder); | ||||||
| @ -166,7 +166,7 @@ void GcodeSuite::M109() { | |||||||
| 
 | 
 | ||||||
|   if (got_temp) { |   if (got_temp) { | ||||||
|     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|       singlenozzle_temp[target_extruder] = temp; |       thermalManager.singlenozzle_temp[target_extruder] = temp; | ||||||
|       if (target_extruder != active_extruder) return; |       if (target_extruder != active_extruder) return; | ||||||
|     #endif |     #endif | ||||||
|     thermalManager.setTargetHotend(temp, target_extruder); |     thermalManager.setTargetHotend(temp, target_extruder); | ||||||
|  | |||||||
| @ -1935,16 +1935,16 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal | |||||||
|  * Basic multi hotend duplication mode |  * Basic multi hotend duplication mode | ||||||
|  */ |  */ | ||||||
| #if ENABLED(MULTI_NOZZLE_DUPLICATION) | #if ENABLED(MULTI_NOZZLE_DUPLICATION) | ||||||
|   #if HOTENDS < 2 |   #if ENABLED(SINGLENOZZLE) | ||||||
|     #error "MULTI_NOZZLE_DUPLICATION requires 2 or more hotends." |     #error "MULTI_NOZZLE_DUPLICATION is incompatible with SINGLENOZZLE." | ||||||
|   #elif ENABLED(DUAL_X_CARRIAGE) |   #elif ENABLED(DUAL_X_CARRIAGE) | ||||||
|     #error "MULTI_NOZZLE_DUPLICATION is incompatible with DUAL_X_CARRIAGE." |     #error "MULTI_NOZZLE_DUPLICATION is incompatible with DUAL_X_CARRIAGE." | ||||||
|   #elif ENABLED(SINGLENOZZLE) |  | ||||||
|     #error "MULTI_NOZZLE_DUPLICATION is incompatible with SINGLENOZZLE." |  | ||||||
|   #elif ENABLED(MIXING_EXTRUDER) |   #elif ENABLED(MIXING_EXTRUDER) | ||||||
|     #error "MULTI_NOZZLE_DUPLICATION is incompatible with MIXING_EXTRUDER." |     #error "MULTI_NOZZLE_DUPLICATION is incompatible with MIXING_EXTRUDER." | ||||||
|   #elif ENABLED(SWITCHING_EXTRUDER) |   #elif ENABLED(SWITCHING_EXTRUDER) | ||||||
|     #error "MULTI_NOZZLE_DUPLICATION is incompatible with SWITCHING_EXTRUDER." |     #error "MULTI_NOZZLE_DUPLICATION is incompatible with SWITCHING_EXTRUDER." | ||||||
|  |   #elif HOTENDS < 2 | ||||||
|  |     #error "MULTI_NOZZLE_DUPLICATION requires 2 or more hotends." | ||||||
|   #endif |   #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -485,7 +485,7 @@ class MenuItem_bool : public MenuEditItemBase { | |||||||
|   #if SNFAN(1) || SNFAN(2) || SNFAN(3) || SNFAN(4) || SNFAN(5) || SNFAN(6) || SNFAN(7) |   #if SNFAN(1) || SNFAN(2) || SNFAN(3) || SNFAN(4) || SNFAN(5) || SNFAN(6) || SNFAN(7) | ||||||
|     #define DEFINE_SINGLENOZZLE_ITEM() \ |     #define DEFINE_SINGLENOZZLE_ITEM() \ | ||||||
|       auto singlenozzle_item = [&](const uint8_t f) { \ |       auto singlenozzle_item = [&](const uint8_t f) { \ | ||||||
|         editable.uint8 = singlenozzle_fan_speed[f]; \ |         editable.uint8 = thermalManager.singlenozzle_fan_speed[f]; \ | ||||||
|         EDIT_ITEM_FAST_N(percent, f, MSG_STORED_FAN_N, &editable.uint8, 0, 255, on_fan_update); \ |         EDIT_ITEM_FAST_N(percent, f, MSG_STORED_FAN_N, &editable.uint8, 0, 255, on_fan_update); \ | ||||||
|       } |       } | ||||||
|   #else |   #else | ||||||
|  | |||||||
| @ -159,7 +159,7 @@ void menu_temperature() { | |||||||
| 
 | 
 | ||||||
|   #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |   #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|     LOOP_S_L_N(e, 1, EXTRUDERS) |     LOOP_S_L_N(e, 1, EXTRUDERS) | ||||||
|       EDIT_ITEM_FAST_N(uint16_3, e, MSG_NOZZLE_STANDBY, &singlenozzle_temp[e], 0, thermalManager.heater_maxtemp[0] - (HOTEND_OVERSHOOT)); |       EDIT_ITEM_FAST_N(uint16_3, e, MSG_NOZZLE_STANDBY, &thermalManager.singlenozzle_temp[e], 0, thermalManager.heater_maxtemp[0] - (HOTEND_OVERSHOOT)); | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|   //
 |   //
 | ||||||
|  | |||||||
| @ -127,7 +127,7 @@ void menu_tune() { | |||||||
| 
 | 
 | ||||||
|   #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |   #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|     LOOP_S_L_N(e, 1, EXTRUDERS) |     LOOP_S_L_N(e, 1, EXTRUDERS) | ||||||
|       EDIT_ITEM_FAST_N(uint16_3, e, MSG_NOZZLE_STANDBY, &singlenozzle_temp[e], 0, thermalManager.heater_maxtemp[0] - HOTEND_OVERSHOOT); |       EDIT_ITEM_FAST_N(uint16_3, e, MSG_NOZZLE_STANDBY, &thermalManager.singlenozzle_temp[e], 0, thermalManager.heater_maxtemp[0] - HOTEND_OVERSHOOT); | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|   //
 |   //
 | ||||||
|  | |||||||
| @ -377,6 +377,13 @@ volatile bool Temperature::raw_temps_ready = false; | |||||||
|           Temperature::soft_pwm_count_fan[FAN_COUNT]; |           Temperature::soft_pwm_count_fan[FAN_COUNT]; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|  |   uint16_t Temperature::singlenozzle_temp[EXTRUDERS]; | ||||||
|  |   #if HAS_FAN | ||||||
|  |     uint8_t Temperature::singlenozzle_fan_speed[EXTRUDERS]; | ||||||
|  |   #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #if ENABLED(PROBING_HEATERS_OFF) | #if ENABLED(PROBING_HEATERS_OFF) | ||||||
|   bool Temperature::paused; |   bool Temperature::paused; | ||||||
| #endif | #endif | ||||||
| @ -2195,6 +2202,24 @@ void Temperature::disable_all_heaters() { | |||||||
| 
 | 
 | ||||||
| #endif // PROBING_HEATERS_OFF
 | #endif // PROBING_HEATERS_OFF
 | ||||||
| 
 | 
 | ||||||
|  | #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) | ||||||
|  | 
 | ||||||
|  |   void Temperature::singlenozzle_change(const uint8_t old_tool, const uint8_t new_tool) { | ||||||
|  |     #if HAS_FAN | ||||||
|  |       singlenozzle_fan_speed[old_tool] = fan_speed[0]; | ||||||
|  |       fan_speed[0] = singlenozzle_fan_speed[new_tool]; | ||||||
|  |     #endif | ||||||
|  |     singlenozzle_temp[old_tool] = temp_hotend[0].target; | ||||||
|  |     if (singlenozzle_temp[new_tool] && singlenozzle_temp[new_tool] != singlenozzle_temp[old_tool]) { | ||||||
|  |       setTargetHotend(singlenozzle_temp[new_tool], 0); | ||||||
|  |       TERN_(AUTOTEMP, planner.autotemp_update()); | ||||||
|  |       TERN_(HAS_DISPLAY, set_heating_message(0)); | ||||||
|  |       (void)wait_for_hotend(0, false);  // Wait for heating or cooling
 | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #if HAS_MAX6675 | #if HAS_MAX6675 | ||||||
| 
 | 
 | ||||||
|   #ifndef THERMOCOUPLE_MAX_ERRORS |   #ifndef THERMOCOUPLE_MAX_ERRORS | ||||||
|  | |||||||
| @ -335,6 +335,14 @@ class Temperature { | |||||||
|     FORCE_INLINE static bool hotEnoughToExtrude(const uint8_t e) { return !tooColdToExtrude(e); } |     FORCE_INLINE static bool hotEnoughToExtrude(const uint8_t e) { return !tooColdToExtrude(e); } | ||||||
|     FORCE_INLINE static bool targetHotEnoughToExtrude(const uint8_t e) { return !targetTooColdToExtrude(e); } |     FORCE_INLINE static bool targetHotEnoughToExtrude(const uint8_t e) { return !targetTooColdToExtrude(e); } | ||||||
| 
 | 
 | ||||||
|  |     #if ENABLED(SINGLENOZZLE_STANDBY_FAN) | ||||||
|  |       static uint16_t singlenozzle_temp[EXTRUDERS]; | ||||||
|  |       #if HAS_FAN | ||||||
|  |         static uint8_t singlenozzle_fan_speed[EXTRUDERS]; | ||||||
|  |       #endif | ||||||
|  |       static void singlenozzle_change(const uint8_t old_tool, const uint8_t new_tool); | ||||||
|  |     #endif | ||||||
|  | 
 | ||||||
|     #if HEATER_IDLE_HANDLER |     #if HEATER_IDLE_HANDLER | ||||||
| 
 | 
 | ||||||
|       // Heater idle handling. Marlin creates one per hotend and one for the heated bed.
 |       // Heater idle handling. Marlin creates one per hotend and one for the heated bed.
 | ||||||
|  | |||||||
| @ -49,14 +49,6 @@ | |||||||
|   bool toolchange_extruder_ready[EXTRUDERS]; |   bool toolchange_extruder_ready[EXTRUDERS]; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |  | ||||||
|   uint16_t singlenozzle_temp[EXTRUDERS]; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if BOTH(HAS_FAN, SINGLENOZZLE_STANDBY_FAN) |  | ||||||
|   uint8_t singlenozzle_fan_speed[EXTRUDERS]; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if ENABLED(MAGNETIC_PARKING_EXTRUDER) || defined(EVENT_GCODE_AFTER_TOOLCHANGE) || (ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0) | #if ENABLED(MAGNETIC_PARKING_EXTRUDER) || defined(EVENT_GCODE_AFTER_TOOLCHANGE) || (ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0) | ||||||
|   #include "../gcode/gcode.h" |   #include "../gcode/gcode.h" | ||||||
| #endif | #endif | ||||||
| @ -1081,20 +1073,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { | |||||||
|       const bool should_move = safe_to_move && !no_move && IsRunning(); |       const bool should_move = safe_to_move && !no_move && IsRunning(); | ||||||
|       if (should_move) { |       if (should_move) { | ||||||
| 
 | 
 | ||||||
|         #if BOTH(HAS_FAN, SINGLENOZZLE_STANDBY_FAN) |         TERN_(SINGLENOZZLE_STANDBY_TEMP, thermalManager.singlenozzle_change(old_tool, new_tool)); | ||||||
|           singlenozzle_fan_speed[old_tool] = thermalManager.fan_speed[0]; |  | ||||||
|           thermalManager.fan_speed[0] = singlenozzle_fan_speed[new_tool]; |  | ||||||
|         #endif |  | ||||||
| 
 |  | ||||||
|         #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |  | ||||||
|           singlenozzle_temp[old_tool] = thermalManager.temp_hotend[0].target; |  | ||||||
|           if (singlenozzle_temp[new_tool] && singlenozzle_temp[new_tool] != singlenozzle_temp[old_tool]) { |  | ||||||
|             thermalManager.setTargetHotend(singlenozzle_temp[new_tool], 0); |  | ||||||
|             TERN_(AUTOTEMP, planner.autotemp_update()); |  | ||||||
|             TERN_(HAS_DISPLAY, thermalManager.set_heating_message(0)); |  | ||||||
|             (void)thermalManager.wait_for_hotend(0, false);  // Wait for heating or cooling
 |  | ||||||
|           } |  | ||||||
|         #endif |  | ||||||
| 
 | 
 | ||||||
|         #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) |         #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) | ||||||
|           if (should_swap && !too_cold) { |           if (should_swap && !too_cold) { | ||||||
|  | |||||||
| @ -114,14 +114,6 @@ | |||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) |  | ||||||
|   extern uint16_t singlenozzle_temp[EXTRUDERS]; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if BOTH(HAS_FAN, SINGLENOZZLE_STANDBY_FAN) |  | ||||||
|   extern uint8_t singlenozzle_fan_speed[EXTRUDERS]; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| TERN_(ELECTROMAGNETIC_SWITCHING_TOOLHEAD, void est_init()); | TERN_(ELECTROMAGNETIC_SWITCHING_TOOLHEAD, void est_init()); | ||||||
| 
 | 
 | ||||||
| TERN_(SWITCHING_TOOLHEAD, void swt_init()); | TERN_(SWITCHING_TOOLHEAD, void swt_init()); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user