Skip to content

Commit e3f48ea

Browse files
authored
Merge pull request prusa3d#3440 from gudnimg/optimise-checkFanSpeed
Optimise `checkFanSpeed()` Flash use
2 parents d860d61 + d42ef47 commit e3f48ea

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

Firmware/temperature.cpp

+19-17
Original file line numberDiff line numberDiff line change
@@ -555,19 +555,18 @@ void countFanSpeed()
555555

556556
void checkFanSpeed()
557557
{
558-
uint8_t max_print_fan_errors = 0;
559-
uint8_t max_extruder_fan_errors = 0;
558+
uint8_t max_fan_errors[2];
560559
#ifdef FAN_SOFT_PWM
561-
max_print_fan_errors = 3; //15 seconds
562-
max_extruder_fan_errors = 2; //10seconds
560+
max_fan_errors[1] = 3; // 15 seconds (Print fan)
561+
max_fan_errors[0] = 2; // 10 seconds (Extruder fan)
563562
#else //FAN_SOFT_PWM
564-
max_print_fan_errors = 15; //15 seconds
565-
max_extruder_fan_errors = 5; //5 seconds
563+
max_fan_errors[1] = 15; // 15 seconds (Print fan)
564+
max_fan_errors[0] = 5; // 5 seconds (Extruder fan)
566565
#endif //FAN_SOFT_PWM
567-
568-
if(fans_check_enabled != false)
569-
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
570-
static unsigned char fan_speed_errors[2] = { 0,0 };
566+
567+
if(fans_check_enabled)
568+
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
569+
static uint8_t fan_speed_errors[2] = { 0,0 };
571570
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1))
572571
if ((fan_speed[0] < 20) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)){ fan_speed_errors[0]++;}
573572
else fan_speed_errors[0] = 0;
@@ -586,13 +585,16 @@ void checkFanSpeed()
586585
fan_check_error = EFCE_OK; //if the issue is fixed while the printer is doing nothing, reenable processing immediately.
587586
lcd_reset_alert_level(); //for another fan speed error
588587
}
589-
if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) {
590-
fan_speed_errors[0] = 0;
591-
fanSpeedError(0); //extruder fan
592-
}
593-
if ((fan_speed_errors[1] > max_print_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) {
594-
fan_speed_errors[1] = 0;
595-
fanSpeedError(1); //print fan
588+
if (fans_check_enabled && (fan_check_error == EFCE_OK))
589+
{
590+
for (uint8_t fan = 0; fan < 2; fan++)
591+
{
592+
if (fan_speed_errors[fan] > max_fan_errors[fan])
593+
{
594+
fan_speed_errors[fan] = 0;
595+
fanSpeedError(fan);
596+
}
597+
}
596598
}
597599
}
598600

0 commit comments

Comments
 (0)