瀏覽代碼

Merge pull request #348 from oni303/Marlin_v1

fixed  (#328) pwm generation at pin D12 and D13
daid 12 年之前
父節點
當前提交
ab318beaaf
共有 3 個檔案被更改,包括 22 行新增0 行删除
  1. 3
    0
      Marlin/pins.h
  2. 4
    0
      Marlin/planner.cpp
  3. 15
    0
      Marlin/temperature.cpp

+ 3
- 0
Marlin/pins.h 查看文件

709
 #define LED_PIN            -1
709
 #define LED_PIN            -1
710
 
710
 
711
 #define FAN_PIN            -1 
711
 #define FAN_PIN            -1 
712
+#if FAN_PIN == 12 || FAN_PIN ==13
713
+#define FAN_SOFT_PWM
714
+#endif
712
 
715
 
713
 #ifdef MELZI
716
 #ifdef MELZI
714
 #define LED_PIN            28
717
 #define LED_PIN            28

+ 4
- 0
Marlin/planner.cpp 查看文件

460
   else
460
   else
461
   {
461
   {
462
     #if FAN_PIN > -1
462
     #if FAN_PIN > -1
463
+    #ifndef FAN_SOFT_PWM
463
     if (fanSpeed != 0){
464
     if (fanSpeed != 0){
464
       analogWrite(FAN_PIN,fanSpeed); // If buffer is empty use current fan speed
465
       analogWrite(FAN_PIN,fanSpeed); // If buffer is empty use current fan speed
465
     }
466
     }
466
     #endif
467
     #endif
468
+	#endif
467
   }
469
   }
468
   if((DISABLE_X) && (x_active == 0)) disable_x();
470
   if((DISABLE_X) && (x_active == 0)) disable_x();
469
   if((DISABLE_Y) && (y_active == 0)) disable_y();
471
   if((DISABLE_Y) && (y_active == 0)) disable_y();
475
     disable_e2(); 
477
     disable_e2(); 
476
   }
478
   }
477
 #if FAN_PIN > -1
479
 #if FAN_PIN > -1
480
+  #ifndef FAN_SOFT_PWM
478
   if((fanSpeed == 0) && (fan_speed ==0))
481
   if((fanSpeed == 0) && (fan_speed ==0))
479
   {
482
   {
480
     analogWrite(FAN_PIN, 0);
483
     analogWrite(FAN_PIN, 0);
484
   {
487
   {
485
     analogWrite(FAN_PIN,tail_fan_speed);
488
     analogWrite(FAN_PIN,tail_fan_speed);
486
   }
489
   }
490
+  #endif
487
 #endif
491
 #endif
488
 #ifdef AUTOTEMP
492
 #ifdef AUTOTEMP
489
   getHighESpeed();
493
   getHighESpeed();

+ 15
- 0
Marlin/temperature.cpp 查看文件

96
 #endif //PIDTEMPBED
96
 #endif //PIDTEMPBED
97
   static unsigned char soft_pwm[EXTRUDERS];
97
   static unsigned char soft_pwm[EXTRUDERS];
98
   static unsigned char soft_pwm_bed;
98
   static unsigned char soft_pwm_bed;
99
+#ifdef FAN_SOFT_PWM
100
+  static unsigned char soft_pwm_fan;
101
+#endif
102
+
103
+
99
   
104
   
100
 #if EXTRUDERS > 3
105
 #if EXTRUDERS > 3
101
 # error Unsupported number of extruders
106
 # error Unsupported number of extruders
597
     #ifdef FAST_PWM_FAN
602
     #ifdef FAST_PWM_FAN
598
     setPwmFrequency(FAN_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8
603
     setPwmFrequency(FAN_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8
599
     #endif
604
     #endif
605
+    #ifdef FAN_SOFT_PWM
606
+	soft_pwm_fan=(unsigned char)fanSpeed;
607
+	#endif
600
   #endif  
608
   #endif  
601
 
609
 
602
   #ifdef HEATER_0_USES_MAX6675
610
   #ifdef HEATER_0_USES_MAX6675
929
     soft_pwm_b = soft_pwm_bed;
937
     soft_pwm_b = soft_pwm_bed;
930
     if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1);
938
     if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1);
931
     #endif
939
     #endif
940
+    #ifdef FAN_SOFT_PWM
941
+    soft_pwm_fan =(unsigned char) fanSpeed;
942
+    if(soft_pwm_fan > 0) WRITE(FAN_PIN,1);
943
+    #endif
932
   }
944
   }
933
   if(soft_pwm_0 <= pwm_count) WRITE(HEATER_0_PIN,0);
945
   if(soft_pwm_0 <= pwm_count) WRITE(HEATER_0_PIN,0);
934
   #if EXTRUDERS > 1
946
   #if EXTRUDERS > 1
940
   #if HEATER_BED_PIN > -1
952
   #if HEATER_BED_PIN > -1
941
   if(soft_pwm_b <= pwm_count) WRITE(HEATER_BED_PIN,0);
953
   if(soft_pwm_b <= pwm_count) WRITE(HEATER_BED_PIN,0);
942
   #endif
954
   #endif
955
+  #ifdef FAN_SOFT_PWM
956
+  if(soft_pwm_fan <= pwm_count) WRITE(FAN_PIN,0);
957
+  #endif
943
   
958
   
944
   pwm_count++;
959
   pwm_count++;
945
   pwm_count &= 0x7f;
960
   pwm_count &= 0x7f;

Loading…
取消
儲存