Browse Source

SOFT_PWM: Do not switch off heaters twice on pwm_count wraparound

After wraparound, pwm_count <= pwm_mask holds, thus soft_pwm_X <= pwm_count
guarantees soft_pwm_X < pwm_mask is true, and the heater will be switched
off in the first branch.
Do not evaluate the pwm conditions a second time, this reduces the
instruction count (4 instructions per PWM) and text size (6 byte).

Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Stefan Brüns 7 years ago
parent
commit
6a040a6967
1 changed files with 22 additions and 21 deletions
  1. 22
    21
      Marlin/temperature.cpp

+ 22
- 21
Marlin/temperature.cpp View File

@@ -1594,33 +1594,34 @@ void Temperature::isr() {
1594 1594
         #endif
1595 1595
       #endif
1596 1596
     }
1597
-
1598
-    if (soft_pwm_0 <= pwm_count_tmp) WRITE_HEATER_0(0);
1599
-    #if HOTENDS > 1
1600
-      if (soft_pwm_1 <= pwm_count_tmp) WRITE_HEATER_1(0);
1597
+    else {
1598
+      if (soft_pwm_0 <= pwm_count_tmp) WRITE_HEATER_0(0);
1599
+      #if HOTENDS > 1
1600
+        if (soft_pwm_1 <= pwm_count_tmp) WRITE_HEATER_1(0);
1601
+      #endif
1601 1602
       #if HOTENDS > 2
1602 1603
         if (soft_pwm_2 <= pwm_count_tmp) WRITE_HEATER_2(0);
1603
-        #if HOTENDS > 3
1604
-          if (soft_pwm_3 <= pwm_count_tmp) WRITE_HEATER_3(0);
1605
-        #endif
1606 1604
       #endif
1607
-    #endif
1608
-
1609
-    #if HAS_HEATER_BED
1610
-      if (soft_pwm_BED <= pwm_count_tmp) WRITE_HEATER_BED(0);
1611
-    #endif
1612
-
1613
-    #if ENABLED(FAN_SOFT_PWM)
1614
-      #if HAS_FAN0
1615
-        if (soft_pwm_fan[0] <= pwm_count_tmp) WRITE_FAN(0);
1605
+      #if HOTENDS > 3
1606
+        if (soft_pwm_3 <= pwm_count_tmp) WRITE_HEATER_3(0);
1616 1607
       #endif
1617
-      #if HAS_FAN1
1618
-        if (soft_pwm_fan[1] <= pwm_count_tmp) WRITE_FAN1(0);
1608
+
1609
+      #if HAS_HEATER_BED
1610
+        if (soft_pwm_BED <= pwm_count_tmp) WRITE_HEATER_BED(0);
1619 1611
       #endif
1620
-      #if HAS_FAN2
1621
-        if (soft_pwm_fan[2] <= pwm_count_tmp) WRITE_FAN2(0);
1612
+
1613
+      #if ENABLED(FAN_SOFT_PWM)
1614
+        #if HAS_FAN0
1615
+          if (soft_pwm_fan[0] <= pwm_count_tmp) WRITE_FAN(0);
1616
+        #endif
1617
+        #if HAS_FAN1
1618
+          if (soft_pwm_fan[1] <= pwm_count_tmp) WRITE_FAN1(0);
1619
+        #endif
1620
+        #if HAS_FAN2
1621
+          if (soft_pwm_fan[2] <= pwm_count_tmp) WRITE_FAN2(0);
1622
+        #endif
1622 1623
       #endif
1623
-    #endif
1624
+    }
1624 1625
 
1625 1626
     // SOFT_PWM_SCALE to frequency:
1626 1627
     //

Loading…
Cancel
Save