Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r0f4fbb2a56cdbe35dcedd9cad23867fd7248f86e -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 0f4fbb2a56cdbe35dcedd9cad23867fd7248f86e) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -73,18 +73,6 @@ static const F32 PRIMARY_HEATERS_MAXIMUM_POWER_WATTS = 475 + 237.5F; ///< Primary heaters maximum power (main primary = 475W and small primary = 237.5W). static const F32 HEATERS_VOLTAGE_TOLERANCE_V = HEATERS_MAX_OPERATING_VOLTAGE_V * HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL; ///< Heaters voltage tolerance in volts. -/// Heaters exec states -typedef enum Heaters_Exec_States -{ - HEATER_EXEC_STATE_OFF = 0, ///< Heater exec state off. - HEATER_EXEC_STATE_PRIMARY_RAMP_TO_TARGET, ///< Heater exec state primary ramp to target. - HEATER_EXEC_STATE_PRIMARY_CONTROL_TO_TARGET, ///< Heater exec state primary control to target. - HEATER_EXEC_STATE_CONTROL_TO_DISINFECT_TARGET, ///< Heater exec state control to disinfect (heat or chemical) target. - HEATER_EXEC_STATE_TRIMMER_RAMP_TO_TARGET, ///< Heater exec state trimmer ramp to target. - HEATER_EXEC_STATE_TRIMMER_CONTROL_TO_TARGET, ///< Heater exec state trimmer control to target. - NUM_OF_HEATERS_STATE, ///< Number of heaters state. -} HEATERS_STATE_T; - /// Heaters data structure typedef struct { Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r48ef855ef60af244443cd6a84c94f2132c144bbd -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 48ef855ef60af244443cd6a84c94f2132c144bbd) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -345,7 +345,7 @@ else { // Raise the alarm - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_LOAD_CELLS_TARE_WEIGHT_OUT_OF_RANGE, weight ) + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_LOAD_CELLS_TARE_WEIGHT_OUT_OF_RANGE, weight ); } } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rc012c285070a62a76c1be7cf7fc159d1f17fd3ad -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision c012c285070a62a76c1be7cf7fc159d1f17fd3ad) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -149,7 +149,7 @@ default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE, standbyState ) - standbyState = DG_STANDBY_MODE_STATE_START; + standbyState = DG_STANDBY_MODE_STATE_IDLE; break; } Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r79e0b1152e278a3b09d7d93c83a27f8998a2f3b6 -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 79e0b1152e278a3b09d7d93c83a27f8998a2f3b6) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -887,6 +887,34 @@ /*********************************************************************//** * @brief + * The execFPGAClockSpeedTest function verifies the processor clock speed + * against the FPGA clock. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return passed, or failed + *************************************************************************/ +void execFPGAClockSpeedTest( void ) +{ +#ifndef DEBUG_ENABLED + U16 const newFPGATimerCount_ms = getFPGATimerCount(); + U32 const newTimerCount_ms = getMSTimerCount(); + U32 const diffFPGATimerCount = (U32)u16DiffWithWrap( currentFPGATimerCount_ms, newFPGATimerCount_ms ); + U32 const diffTimerCount = u32DiffWithWrap( currentTimerCount_ms, newTimerCount_ms ); + + if ( getCurrentOperationMode() > MODE_INIT ) + { + if ( abs( diffFPGATimerCount - diffTimerCount ) > PROCESSOR_FPGA_CLOCK_DIFF_TOLERANCE ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_FPGA_CLOCK_SPEED_CHECK_FAILURE, diffFPGATimerCount, diffTimerCount ); + } + } + + currentFPGATimerCount_ms = newFPGATimerCount_ms; + currentTimerCount_ms = newTimerCount_ms; +#endif +} +/*********************************************************************//** + * @brief * The setupDMAForWriteCmd function sets the byte count for the next DMA * write command to the FPGA. * @details Inputs: none Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r43836b009ddb8b0bbbecb916a10a065d9254a9f5 -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 43836b009ddb8b0bbbecb916a10a065d9254a9f5) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -128,8 +128,8 @@ // Run alarm management execAlarmMgmt(); - // Check for processor RAM error - /* execRAMMonitor(); // DN-02SEPT2022 */ // Commented out for testing only - DN-06SEPT2022 + // Monitor RAM error status + execRAMMonitor(); // Commented out for debug only - DN-07SEPT2022 // manage data to be transmitted to other sub-systems execSystemCommTx(); Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -r5c53288436774f0cf6a24132ace29a64a66d619d -r19056bcb960b73405326d038abcea63b6862e344 --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 5c53288436774f0cf6a24132ace29a64a66d619d) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 19056bcb960b73405326d038abcea63b6862e344) @@ -78,6 +78,9 @@ // Temperature sensors read execTemperatureSensors(); + // Verify the processor clock speed against the FPGA clock + execFPGAClockSpeedTest(); + // Conductivity sensors read execConductivitySensors();