|
@@ -1311,7 +1311,8 @@ void Planner::check_axes_activity() {
|
1311
|
1311
|
#endif
|
1312
|
1312
|
|
1313
|
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
|
1316
|
#endif
|
1316
|
1317
|
|
1317
|
1318
|
#if ENABLED(BARICUDA)
|
|
@@ -1330,7 +1331,13 @@ void Planner::check_axes_activity() {
|
1330
|
1331
|
#endif
|
1331
|
1332
|
|
1332
|
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
|
1341
|
#endif
|
1335
|
1342
|
|
1336
|
1343
|
#if ENABLED(BARICUDA)
|
|
@@ -1358,7 +1365,13 @@ void Planner::check_axes_activity() {
|
1358
|
1365
|
TERN_(HAS_CUTTER, cutter.refresh());
|
1359
|
1366
|
|
1360
|
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
|
1375
|
#endif
|
1363
|
1376
|
|
1364
|
1377
|
#if ENABLED(BARICUDA)
|
|
@@ -1384,7 +1397,7 @@ void Planner::check_axes_activity() {
|
1384
|
1397
|
// Update Fan speeds
|
1385
|
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
|
1402
|
TERN_(AUTOTEMP, autotemp_task());
|
1390
|
1403
|
|