Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -r8962d7d08d95e4eadedeacb7c04aad9bacbaa65f -rcd5be724d5a3ba7457e761191d82f278654d7f5c --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision 8962d7d08d95e4eadedeacb7c04aad9bacbaa65f) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision cd5be724d5a3ba7457e761191d82f278654d7f5c) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file Fans.c * -* @author (last) Dara Navaei -* @date (last) 01-Nov-2022 +* @author (last) Sean Nash +* @date (last) 10-Aug-2023 * * @author (original) Dara Navaei * @date (original) 04-Aug-2021 @@ -18,6 +18,7 @@ #include // For fabs #include "etpwm.h" +#include "CPLD.h" #include "Fans.h" #include "FPGA.h" #include "PersistentAlarm.h" @@ -407,16 +408,19 @@ // The RPM is expected to be 5500 @ 100% duty cycle // The nominal RPM = duty cycle * 5500 / 1.0 // The RPM tolerance is -25% to +50% of the nominal RPM - F32 dutyCycle = ( OVERRIDE_RESET == fansStatus.dutyCycle.override ? fansStatus.dutyCycle.data : fansStatus.dutyCycle.ovData ); + F32 dutyCycle = getF32OverrideValue( &fansStatus.dutyCycle ); F32 fansNominalRPM = dutyCycle * FANS_MAX_ALLOWED_RPM; F32 fansMinAllowedRPM = fansNominalRPM - ( fansNominalRPM * FANS_MIN_RPM_OUT_OF_RANGE_TOL ); F32 fansMaxAllowedRPM = fansNominalRPM + ( fansNominalRPM * FANS_MAX_RPM_OUT_OF_RANGE_TOL ); - // Loop through the fans and make sure the each of them have RPM in range - for ( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) + if ( getCPLDACPowerLossDetected() != TRUE ) { - rpm = getMeasuredFanRPM( fan ); - isFanRPMOutOfRange |= ( ( rpm < fansMinAllowedRPM ) || ( rpm > fansMaxAllowedRPM ) ? TRUE : FALSE ); + // Loop through the fans and make sure the each of them have RPM in range + for ( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) + { + rpm = getMeasuredFanRPM( fan ); + isFanRPMOutOfRange |= ( ( rpm < fansMinAllowedRPM ) || ( rpm > fansMaxAllowedRPM ) ? TRUE : FALSE ); + } } // If the fans alarm has been raised already, do not raise again @@ -446,8 +450,8 @@ if ( calcTimeSince( timeDiff ) >= SECONDS_IN_A_DAY * MS_PER_SECOND ) { - hasAlarmBeenRaised = FALSE; - rpmAlarmStartTime = 0; + hasAlarmBeenRaised = FALSE; + rpmAlarmStartTime = 0; } } }