Browse Source

Set auto fan pins to OUTPUT during init

Fixes the problem of these pins being left in INPUT state, as described
in #1497
Scott Lahteine 10 years ago
parent
commit
e602c28ad9
1 changed files with 13 additions and 1 deletions
  1. 13
    1
      Marlin/temperature.cpp

+ 13
- 1
Marlin/temperature.cpp View File

374
 {
374
 {
375
   unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
375
   unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
376
   // this idiom allows both digital and PWM fan outputs (see M42 handling).
376
   // this idiom allows both digital and PWM fan outputs (see M42 handling).
377
-  pinMode(pin, OUTPUT);
378
   digitalWrite(pin, newFanSpeed);
377
   digitalWrite(pin, newFanSpeed);
379
   analogWrite(pin, newFanSpeed);
378
   analogWrite(pin, newFanSpeed);
380
 }
379
 }
918
     ANALOG_SELECT(FILWIDTH_PIN);
917
     ANALOG_SELECT(FILWIDTH_PIN);
919
   #endif
918
   #endif
920
   
919
   
920
+  #if HAS_AUTO_FAN_0
921
+    pinMode(EXTRUDER_0_AUTO_FAN_PIN, OUTPUT);
922
+  #endif
923
+  #if HAS_AUTO_FAN_1 && (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
924
+    pinMode(EXTRUDER_1_AUTO_FAN_PIN, OUTPUT);
925
+  #endif
926
+  #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)
927
+    pinMode(EXTRUDER_2_AUTO_FAN_PIN, OUTPUT);
928
+  #endif
929
+  #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)
930
+    pinMode(EXTRUDER_3_AUTO_FAN_PIN, OUTPUT);
931
+  #endif
932
+
921
   // Use timer0 for temperature measurement
933
   // Use timer0 for temperature measurement
922
   // Interleave temperature interrupt with millies interrupt
934
   // Interleave temperature interrupt with millies interrupt
923
   OCR0B = 128;
935
   OCR0B = 128;

Loading…
Cancel
Save