diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index edbab7f19d..25ec3887c8 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -374,7 +374,6 @@ void setExtruderAutoFanState(int pin, bool state) { unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0; // this idiom allows both digital and PWM fan outputs (see M42 handling). - pinMode(pin, OUTPUT); digitalWrite(pin, newFanSpeed); analogWrite(pin, newFanSpeed); } @@ -918,6 +917,19 @@ void tp_init() { ANALOG_SELECT(FILWIDTH_PIN); #endif + #if HAS_AUTO_FAN_0 + pinMode(EXTRUDER_0_AUTO_FAN_PIN, OUTPUT); + #endif + #if HAS_AUTO_FAN_1 && (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) + pinMode(EXTRUDER_1_AUTO_FAN_PIN, OUTPUT); + #endif + #if HAS_AUTO_FAN_2 && (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) && (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN) + pinMode(EXTRUDER_2_AUTO_FAN_PIN, OUTPUT); + #endif + #if HAS_AUTO_FAN_3 && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN) && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_2_AUTO_FAN_PIN) + pinMode(EXTRUDER_3_AUTO_FAN_PIN, OUTPUT); + #endif + // Use timer0 for temperature measurement // Interleave temperature interrupt with millies interrupt OCR0B = 128;