Browse Source

⚡️ Reduce calls to set fan PWM (#23149)

Tanguy Pruvot 3 years ago
parent
commit
1c31366bf3
No account linked to committer's email address
1 changed files with 17 additions and 4 deletions
  1. 17
    4
      Marlin/src/module/planner.cpp

+ 17
- 4
Marlin/src/module/planner.cpp View File

1311
   #endif
1311
   #endif
1312
 
1312
 
1313
   #if HAS_TAIL_FAN_SPEED
1313
   #if HAS_TAIL_FAN_SPEED
1314
-    uint8_t tail_fan_speed[FAN_COUNT];
1314
+    static uint8_t tail_fan_speed[FAN_COUNT];
1315
+    bool fans_need_update = false;
1315
   #endif
1316
   #endif
1316
 
1317
 
1317
   #if ENABLED(BARICUDA)
1318
   #if ENABLED(BARICUDA)
1330
     #endif
1331
     #endif
1331
 
1332
 
1332
     #if HAS_TAIL_FAN_SPEED
1333
     #if HAS_TAIL_FAN_SPEED
1333
-      FANS_LOOP(i) tail_fan_speed[i] = thermalManager.scaledFanSpeed(i, block->fan_speed[i]);
1334
+      FANS_LOOP(i) {
1335
+        const uint8_t spd = thermalManager.scaledFanSpeed(i, block->fan_speed[i]);
1336
+        if (tail_fan_speed[i] != spd) {
1337
+          fans_need_update = true;
1338
+          tail_fan_speed[i] = spd;
1339
+        }
1340
+      }
1334
     #endif
1341
     #endif
1335
 
1342
 
1336
     #if ENABLED(BARICUDA)
1343
     #if ENABLED(BARICUDA)
1358
     TERN_(HAS_CUTTER, cutter.refresh());
1365
     TERN_(HAS_CUTTER, cutter.refresh());
1359
 
1366
 
1360
     #if HAS_TAIL_FAN_SPEED
1367
     #if HAS_TAIL_FAN_SPEED
1361
-      FANS_LOOP(i) tail_fan_speed[i] = thermalManager.scaledFanSpeed(i);
1368
+      FANS_LOOP(i) {
1369
+        const uint8_t spd = thermalManager.scaledFanSpeed(i);
1370
+        if (tail_fan_speed[i] != spd) {
1371
+          fans_need_update = true;
1372
+          tail_fan_speed[i] = spd;
1373
+        }
1374
+      }
1362
     #endif
1375
     #endif
1363
 
1376
 
1364
     #if ENABLED(BARICUDA)
1377
     #if ENABLED(BARICUDA)
1384
   // Update Fan speeds
1397
   // Update Fan speeds
1385
   // Only if synchronous M106/M107 is disabled
1398
   // Only if synchronous M106/M107 is disabled
1386
   //
1399
   //
1387
-  TERN_(HAS_TAIL_FAN_SPEED, sync_fan_speeds(tail_fan_speed));
1400
+  TERN_(HAS_TAIL_FAN_SPEED, if (fans_need_update) sync_fan_speeds(tail_fan_speed));
1388
 
1401
 
1389
   TERN_(AUTOTEMP, autotemp_task());
1402
   TERN_(AUTOTEMP, autotemp_task());
1390
 
1403
 

Loading…
Cancel
Save