Index: firmware/App/Controllers/Voltages.c =================================================================== diff -u -r406b3ea2507978267a519af0e9cbfbaaf03027c7 -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 406b3ea2507978267a519af0e9cbfbaaf03027c7) +++ firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -16,6 +16,7 @@ ***************************************************************************/ #include "AlarmMgmt.h" +#include "FPGA.h" #include "InternalADC.h" #include "SystemCommMessages.h" #include "TaskGeneral.h" @@ -51,6 +52,9 @@ 28.25, // MONITORED_LINE_24V_REGEN 1.3125, // MONITORED_LINE_FPGA_REF_V 3.3, // MONITORED_LINE_PBA_REF_V + 3.3, // MONITORED_LINE_FPGA_VCC_V + 3.3, // MONITORED_LINE_FPGA_AUX_V + 1.1 // MONITORED_LINE_FPGA_PVN_V }; /// Minimum voltage/current level for each monitored signal. static const F32 MIN_VOLTAGES[ NUM_OF_MONITORED_LINES ] = @@ -67,6 +71,9 @@ #endif 1.1875, // MONITORED_LINE_FPGA_REF_V 2.7, // MONITORED_LINE_PBA_REF_V + 2.7, // MONITORED_LINE_FPGA_VCC_V + 2.7, // MONITORED_LINE_FPGA_AUX_V + 0.9 // MONITORED_LINE_FPGA_PVN_V }; // ********** private data ********** @@ -177,6 +184,9 @@ voltages[ MONITORED_LINE_24V_REGEN ].data = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS_REG ); voltages[ MONITORED_LINE_FPGA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_1_25_FPGA_ADC_REF ); voltages[ MONITORED_LINE_PBA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_PBA_ADC_REF ); + voltages[ MONITORED_LINE_FPGA_VCC_V ].data = getFPGAVcc(); + voltages[ MONITORED_LINE_FPGA_AUX_V ].data = getFPGAVccAux(); + voltages[ MONITORED_LINE_FPGA_PVN_V ].data = getFPGAVpvn(); // Check voltage ranges checkVoltageRanges(); @@ -299,6 +309,9 @@ data.adc24VRegen = getMonitoredLineLevel( MONITORED_LINE_24V_REGEN ); data.adcFpgaAdcRef = getMonitoredLineLevel( MONITORED_LINE_FPGA_REF_V ); data.adcPbaRef = getMonitoredLineLevel( MONITORED_LINE_PBA_REF_V ); + data.fpgaVcc = getMonitoredLineLevel( MONITORED_LINE_FPGA_VCC_V ); + data.fpgaVaux = getMonitoredLineLevel( MONITORED_LINE_FPGA_AUX_V ); + data.fpgaVpvn = getMonitoredLineLevel( MONITORED_LINE_FPGA_PVN_V ); broadcastVoltagesData( data ); voltagesDataPublicationTimerCounter = 0; Index: firmware/App/Controllers/Voltages.h =================================================================== diff -u -r406b3ea2507978267a519af0e9cbfbaaf03027c7 -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 406b3ea2507978267a519af0e9cbfbaaf03027c7) +++ firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -42,6 +42,9 @@ MONITORED_LINE_24V_REGEN, ///< Actuators regen voltage (24V) MONITORED_LINE_FPGA_REF_V, ///< FPGA ADC reference voltage (1V) MONITORED_LINE_PBA_REF_V, ///< PBA ADC reference voltage (3V) + MONITORED_LINE_FPGA_VCC_V, ///< FPGA input voltage (3V) + MONITORED_LINE_FPGA_AUX_V, ///< FPGA aux. voltage (3V) + MONITORED_LINE_FPGA_PVN_V, ///< FPGA pvn voltage (1V) NUM_OF_MONITORED_LINES ///< Number of monitored voltages } MONITORED_VOLTAGES_T; @@ -56,6 +59,9 @@ F32 adc24VRegen; ///< Internal ADC channel for 24V regen (diode drop) to actuators F32 adcFpgaAdcRef; ///< Internal ADC channel for FPGA ADC reference voltage F32 adcPbaRef; ///< Internal ADC channel for reference voltage to PBA ADC channel) + F32 fpgaVcc; ///< FPGA source voltage + F32 fpgaVaux; ///< FPGA aux. voltage + F32 fpgaVpvn; ///< FPGA pvn voltage } VOLTAGES_DATA_PAYLOAD_T; // ********** public function prototypes ********** Index: firmware/App/HDCommon.h =================================================================== diff -u -rfc12876da6930c955864352182aee2076513a1cc -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision fc12876da6930c955864352182aee2076513a1cc) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -63,7 +63,6 @@ // #define EMC_TEST_BUILD 1 // EMC test build - HD/DG run separately but connected, HD pumps toggle on/off w/ stop button #define ALARMS_DEBUG 1 // Triggered alarms sent to debug UART #define ALARM_VOLUME_DEFAULT_LOW 1 // Set default alarm volume to lowest -// #define TEMP_UI_ALARM_SILENCE_FIX 1 // Temporary UI fix for handling alarm silence request msg #define SKIP_PRIMING 1 // Skip Pre-treatment Prime #define SKIP_WET_SELF_TESTS 1 // Skip Pre-treatment prime wet self-tests // #define V2_0_SYSTEM 1 // Build for v2.0 system Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rfc12876da6930c955864352182aee2076513a1cc -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision fc12876da6930c955864352182aee2076513a1cc) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -77,6 +77,13 @@ #define MAX_COMM_ERROR_RETRIES 5 ///< Maximum consecutive FPGA communication error retries. +/// Conversion factor converts FPGA temperature counts to degrees C. +#define FPGA_TEMP_CONVERSION_FACTOR ( 503.975 / (F32)BITS_12_FULL_SCALE ) +#define FPGA_TEMP_CONVERSION_OFFSET -273.15 ///< Conversion offset for FPGA temperature. + +#define FPGA_INPUT_VOLTAGE_SCALE 3.0 ///< FPGA source and aux voltage. +#define FPGA_PVN_VOLTAGE_SCALE 1.0 ///< FPGA pvn voltage. + #define FPGA_ADC1_AUTO_READ_ENABLE 0x01 ///< Auto-read enable bit for ADC1 control register. #define FPGA_AIRTRAP_LEVEL_LOW_MASK 0x0008 ///< Bit mask for air trap lower level sensor. @@ -186,7 +193,7 @@ U16 VBVPWMTarget; ///< Reg 372. PWM target duty cycle for VBV pinch valve. U16 VDiPWMTarget; ///< Reg 374. PWM target duty cycle for VDi pinch valve. U16 VDoPWMTarget; ///< Reg 376. PWM target duty cycle for VDo pinch valve. - U16 VSparePWMTarget; ///< Reg 378. Internal FPGA Vcc Aux voltage. + U16 fpgaAuxVoltage; ///< Reg 378. Internal FPGA Vcc Aux voltage. 3V range over 12 bits (0..4095). U08 syringePumpStatus; ///< Reg 380. Syringe pump status register. U08 syringePumpADCReadCounter; ///< Reg 381. Syringe pump ADC read counter. U08 syringePumpADCandDACStatus; ///< Reg 382. Syringe pump ADC and DAC status register. @@ -201,11 +208,11 @@ U16 VBVCurrent; ///< Reg 400. VBV pinch valve current (Register VAUX2) U16 VDoCurrent; ///< Reg 402. VDo pinch valve current (Register VAUX3) U16 VBACurrent; ///< Reg 404. VBA pinch valve current (Register VAUX8) - U16 VDiSpeed; ///< Reg 406. VDi pinch valve current (Register VAUX9) + U16 VDiSpeed; ///< Reg 406. VDi pinch valve current (Register VAUX5) U16 VDoSpeed; ///< Reg 408. VDo pinch valve speed (Register VAUX10) - U16 VDiCurrent; ///< Reg 410. VDi pinch valve current (Register VAUX11) - U16 VSpareSpeed; ///< Reg 412. VSpare speed (Register VAUX5) - U16 VSpareCurrent; ///< Reg 414. VSpare current (Register VAUX13) + U16 VDiCurrent; ///< Reg 410. VDi pinch valve current (Register VAUX13) + U16 fpgaTemperature; ///< Reg 412. FPGA die temperature (deg C = counts x (503.975/4096) - 273.15). + U16 fpgaVpvn; ///< Reg 414. FPGA pvn voltage. 1V range over 12 bits (0..4095). U16 fpgaTimerCount_ms; ///< Reg 416. Free running 1ms timer counter. Rolls over at 65535.Internal FPGA timer count in ms. U16 backupAlarmAudioPeakCurrent; ///< Reg 418. Piezo alarm peak ADC current in previous 10ms. 12 bit unsigned. } FPGA_SENSORS_T; @@ -1096,6 +1103,62 @@ /*********************************************************************//** * @brief + * The getFPGATemperature function gets the fpga internal die temperature. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return current internal FPGA die temperature (in deg C) + *************************************************************************/ +F32 getFPGATemperature( void ) +{ + F32 result = (F32)fpgaSensorReadings.fpgaTemperature * FPGA_TEMP_CONVERSION_FACTOR + FPGA_TEMP_CONVERSION_OFFSET; + + return result; +} + +/*********************************************************************//** + * @brief + * The getFPGAVcc function gets the fpga input voltage. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return current FPGA input voltage (in volts) + *************************************************************************/ +F32 getFPGAVcc( void ) +{ + F32 result = (F32)fpgaSensorReadings.fpgaIntVoltage * FPGA_INPUT_VOLTAGE_SCALE / (F32)BITS_12_FULL_SCALE; + + return result; +} + +/*********************************************************************//** + * @brief + * The getFPGAVccAux function gets the fpga aux. voltage. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return current FPGA aux. voltage (in volts) + *************************************************************************/ +F32 getFPGAVccAux( void ) +{ + F32 result = (F32)fpgaSensorReadings.fpgaAuxVoltage * FPGA_INPUT_VOLTAGE_SCALE / (F32)BITS_12_FULL_SCALE; + + return result; +} + +/*********************************************************************//** + * @brief + * The getFPGAVpvn function gets the fpga pvn voltage. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return current FPGA pvn voltage (in volts) + *************************************************************************/ +F32 getFPGAVpvn( void ) +{ + F32 result = (F32)fpgaSensorReadings.fpgaVpvn * FPGA_PVN_VOLTAGE_SCALE / (F32)BITS_12_FULL_SCALE; + + return result; +} + +/*********************************************************************//** + * @brief * The setAlarmAudioState function sets the fpga audio control to the given * state and volume. * @details Inputs: none Index: firmware/App/Services/FPGA.h =================================================================== diff -u -rfc12876da6930c955864352182aee2076513a1cc -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision fc12876da6930c955864352182aee2076513a1cc) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -51,6 +51,10 @@ void signalFPGATransmitCompleted( void ); void getFPGAVersions( U08 *Id, U08 *Maj, U08 *Min, U08 *Lab ); +F32 getFPGATemperature( void ); +F32 getFPGAVcc( void ); +F32 getFPGAVccAux( void ); +F32 getFPGAVpvn( void ); void setAlarmAudioState( U32 state, U32 volumeLevel, U32 volumeDivider ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rbcbdc9a68b54b75f93be66dd5c2ee6a5733565cd -r40b37059da0ecd27dc9beb48614f6f3869d18732 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision bcbdc9a68b54b75f93be66dd5c2ee6a5733565cd) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 40b37059da0ecd27dc9beb48614f6f3869d18732) @@ -2540,24 +2540,13 @@ *************************************************************************/ void handleUIAlarmSilenceRequest( MESSAGE_T *message ) { -#ifndef TEMP_UI_ALARM_SILENCE_FIX if ( message->hdr.payloadLen == sizeof( U32 ) ) -#else - if ( message->hdr.payloadLen == sizeof( U08 ) ) -#endif { U08 *payloadPtr = message->payload; -#ifndef TEMP_UI_ALARM_SILENCE_FIX U32 cmd; memcpy( &cmd, payloadPtr, sizeof( U32 ) ); signalAlarmSilence( (ALARM_SILENCE_CMD_T)cmd ); -#else - U08 cmd; - - memcpy( &cmd, payloadPtr, sizeof( U08 ) ); - signalAlarmSilence( (ALARM_SILENCE_CMD_T)cmd ); -#endif } else {