Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c -r08d27319b4b5f6f15e5de0758d9f528db1db6b3a --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 08d27319b4b5f6f15e5de0758d9f528db1db6b3a) @@ -544,17 +544,19 @@ { F32 tempDutyCycle = 0.0F; F32 targetTemperature = heatersStatus[ DG_TRIMMER_HEATER ].targetTemp; - F32 targetFlowLPM = heatersStatus[ DG_TRIMMER_HEATER ].targetFlow; + F32 targetFlowLPM = getTargetROPumpFlowRateLPM(); F32 dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, heatDisinfectSensorTemp, targetFlowLPM, FALSE ); heaterControlCounter = 0; // Trimmer heater duty cycle function checks the minimum to -100%. So if the duty cycle was calculated to be negative it is set to 0 here tempDutyCycle = MAX( dutyCycle, HEATERS_MIN_DUTY_CYCLE ); + heatersStatus[ DG_TRIMMER_HEATER ].targetFlow = getTargetROPumpFlowRateLPM(); setHeaterDutyCycle( DG_TRIMMER_HEATER, tempDutyCycle ); targetTemperature = heatersStatus[ DG_PRIMARY_HEATER ].targetTemp; - targetFlowLPM = heatersStatus[ DG_PRIMARY_HEATER ].targetFlow; + targetFlowLPM = getTargetROPumpFlowRateLPM(); dutyCycle = calculatePrimaryHeaterDutyCycle( targetTemperature, heatDisinfectSensorTemp, targetFlowLPM, FALSE ); + heatersStatus[ DG_PRIMARY_HEATER ].targetFlow = getTargetROPumpFlowRateLPM(); setHeaterDutyCycle( DG_PRIMARY_HEATER, dutyCycle ); } @@ -883,8 +885,9 @@ else #endif { + // TODO this is not working on DVT-002 // If the system is DVT, check the FPGA persistent alarm of the main primary heater's voltage ADC - checkFPGAPersistentAlarms( FPGA_PERS_ERROR_MAIN_PRIMARY_HEATER_VOLTAGE_ADC, getFPGAHeaterGateADCErrorCount(), getFPGAHeaterGateADCReadCount() ); + //checkFPGAPersistentAlarms( FPGA_PERS_ERROR_MAIN_PRIMARY_HEATER_VOLTAGE_ADC, getFPGAHeaterGateADCErrorCount(), getFPGAHeaterGateADCReadCount() ); } F32 smallPriVoltage = getMonitoredLineLevel( MONITORED_LINE_24V_GND_SMALL_PRIM_HTR_V ); Index: firmware/App/Controllers/Voltages.c =================================================================== diff -u -r2e21405574597474db0ebae86cdd7fa2d517f71c -r08d27319b4b5f6f15e5de0758d9f528db1db6b3a --- firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 2e21405574597474db0ebae86cdd7fa2d517f71c) +++ firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 08d27319b4b5f6f15e5de0758d9f528db1db6b3a) @@ -38,6 +38,8 @@ #define ROLLING_AVG_SHIFT_DIVIDER 4 ///< Rolling average shift divider for DG FPGA ADC readings. #define FPGA_ADC_BITS_PER_CHANNEL 12 ///< DG FPGA ADC bits per channel. #define FPGA_ADC_FULL_SCALE_BITS ( ( 1 << FPGA_ADC_BITS_PER_CHANNEL ) - 1 ) ///< DG FPGA ADC full scale range. +#define FPGA_INPUT_VOLTAGE_SCALE 3.0F ///< FPGA source and aux voltage. +#define FPGA_PVN_VOLTAGE_SCALE 1.0F ///< FPGA pvn voltage. /// Defined states for the voltage monitor state machine. typedef enum Fpga_ADCs @@ -76,6 +78,9 @@ 3.3, // MONITORED_LINE_V_REF 3.3, // MONITORED_LINE_EXT_ADC_1_REF_V 3.3, // MONITORED_LINE_EXT_ADC_2_REF_V + 1.1, // MONITORED_LINE_FPGA_VCC_V + 1.98, // MONITORED_LINE_FPGA_AUX_V + 0.1, // MONITORED_LINE_FPGA_VPVN_V 5.5, // MONITORED_LINE_PS_GATE_DRIVER_V 26.4, // MONITORED_LINE_24V_PRIM_HTR_V 26.4, // MONITORED_LINE_24V_PRIM_HTR_GND_V @@ -97,6 +102,9 @@ 2.7, // MONITORED_LINE_V_REF 2.7, // MONITORED_LINE_EXT_ADC_1_REF_V 2.7, // MONITORED_LINE_EXT_ADC_2_REF_V + 0.9, // MONITORED_LINE_FPGA_VCC_V + 1.62, // MONITORED_LINE_FPGA_AUX_V + -0.1, // MONITORED_LINE_FPGA_VPVN_V 4.5, // MONITORED_LINE_PS_GATE_DRIVER_V 0.0, // MONITORED_LINE_24V_PRIM_HTR_V 0.0, // MONITORED_LINE_24V_PRIM_HTR_GND_V @@ -127,7 +135,7 @@ static VOLTAGES_STATE_T handleVoltagesMonitorState( void ); static void checkVoltageRanges( void ); static void publishVoltagesData( void ); -void getFpgaADC( void ); +static void getFpgaADC( void ); /*********************************************************************//** * @brief @@ -239,6 +247,9 @@ voltages[ MONITORED_LINE_V_REF ].data = getIntADCVoltageConverted( INT_ADC_REFERENCE_VOLTAGE ); voltages[ MONITORED_LINE_EXT_ADC_1_REF_V ].data = getIntADCVoltageConverted( INT_ADC_REF_IN1 ); voltages[ MONITORED_LINE_EXT_ADC_2_REF_V ].data = getIntADCVoltageConverted( INT_ADC_REF_IN2 ); + voltages[ MONITORED_LINE_FPGA_VCC_V ].data = ( (F32)getFPGAInternalVccVoltage() * FPGA_INPUT_VOLTAGE_SCALE ) / (F32)BITS_12_FULL_SCALE; + voltages[ MONITORED_LINE_FPGA_AUX_VCC_V ].data = ( (F32)getFPGAInternalVccAuxiliaryVoltage() * FPGA_INPUT_VOLTAGE_SCALE ) / (F32)BITS_12_FULL_SCALE; + voltages[ MONITORED_LINE_FPGA_VPVN_V ].data = ( (F32)getFPGAVPVNVoltage() * FPGA_INPUT_VOLTAGE_SCALE ) / (F32)BITS_12_FULL_SCALE; voltages[ MONITORED_LINE_PS_GATE_DRIVER_V ].data = getIntADCVoltageConverted( INT_ADC_POWER_SUPPLY_GATE_DRIVER ); voltages[ MONITORED_LINE_24V_POWER_PRIM_HTR_V ].data = fpgaVoltage[ FPGA_ADC_PRIM ]; voltages[ MONITORED_LINE_24V_GND_MAIN_PRIM_HTR_V ].data = fpgaVoltage[ FPGA_ADC_MAIN_PRIM_GND ]; @@ -258,7 +269,7 @@ * @details Outputs: adcReadingsAvgs[], fpgaVoltage[] * @return none *************************************************************************/ -void getFpgaADC( void ) +static void getFpgaADC( void ) { U16 ch; @@ -384,6 +395,9 @@ data.adc24VGndMainPrimHtr = getMonitoredLineLevel( MONITORED_LINE_24V_GND_MAIN_PRIM_HTR_V ); data.adc24VGndSmallPrimHtr = getMonitoredLineLevel( MONITORED_LINE_24V_GND_SMALL_PRIM_HTR_V ); data.adc24VGndTrimmerHtr = getMonitoredLineLevel( MONITORED_LINE_24V_GND_TRIM_HTR_V ); + data.fpgaIntVCC = getMonitoredLineLevel( MONITORED_LINE_FPGA_VCC_V ); + data.fpgaAuxVCC = getMonitoredLineLevel( MONITORED_LINE_FPGA_AUX_VCC_V ); + data.fpgaVPVN = getMonitoredLineLevel( MONITORED_LINE_FPGA_VPVN_V ); broadcastData( MSG_ID_DG_VOLTAGES_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( VOLTAGES_DATA_PAYLOAD_T ) ); voltagesDataPublicationTimerCounter = 0; Index: firmware/App/Controllers/Voltages.h =================================================================== diff -u -r2e21405574597474db0ebae86cdd7fa2d517f71c -r08d27319b4b5f6f15e5de0758d9f528db1db6b3a --- firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 2e21405574597474db0ebae86cdd7fa2d517f71c) +++ firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 08d27319b4b5f6f15e5de0758d9f528db1db6b3a) @@ -46,6 +46,9 @@ MONITORED_LINE_V_REF, ///< Reference voltage (3V) MONITORED_LINE_EXT_ADC_1_REF_V, ///< External ADC 1 reference voltage (3V) MONITORED_LINE_EXT_ADC_2_REF_V, ///< External ADC 2 reference voltage (3V) + MONITORED_LINE_FPGA_VCC_V, ///< FPGA input voltage (3V) + MONITORED_LINE_FPGA_AUX_VCC_V, ///< FPGA auxiliary Vcc voltage (3V) + MONITORED_LINE_FPGA_VPVN_V, ///< FPGA VPVN voltage (1V) MONITORED_LINE_PS_GATE_DRIVER_V, ///< P/S gate driver voltage (5V) MONITORED_LINE_LAST_RANGE_CHECKED_LINE = MONITORED_LINE_PS_GATE_DRIVER_V, ///< The last monitored line that is checked per fixed range. MONITORED_LINE_24V_POWER_PRIM_HTR_V, ///< Primary heater voltage (24V) @@ -75,6 +78,9 @@ F32 adc24VGndMainPrimHtr; ///< FPGA ADC channel for 24V to primary heater F32 adc24VGndSmallPrimHtr; ///< Internal ADC channel for 24V to secondary heater F32 adc24VGndTrimmerHtr; ///< Internal ADC channel for 24V to trimmer heater + F32 fpgaIntVCC; ///< FPGA internal VCC for 3V + F32 fpgaAuxVCC; ///< FPGA auxiliary VCC for 3V + F32 fpgaVPVN; ///< FPGA VPVN for 1V } VOLTAGES_DATA_PAYLOAD_T; // ********** public function prototypes ********** Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c -r08d27319b4b5f6f15e5de0758d9f528db1db6b3a --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 08d27319b4b5f6f15e5de0758d9f528db1db6b3a) @@ -2114,6 +2114,43 @@ /*********************************************************************//** * @brief + * The getFPGAInternalVccVoltage function gets the FPGA internal Vcc voltage. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return internal Vcc voltage + *************************************************************************/ +U16 getFPGAInternalVccVoltage( void ) +{ + return fpgaSensorReadings.fpgaADCVccInt; +} + +/*********************************************************************//** + * @brief + * The getFPGAInternalVccAuxilaryVoltage function gets the FPGA auxiliary + * Vcc voltage. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return auxiliary Vcc voltage + *************************************************************************/ +U16 getFPGAInternalVccAuxiliaryVoltage( void ) +{ + return fpgaSensorReadings.fpgaADCVccAux; +} + +/*********************************************************************//** + * @brief + * The getFPGAVPVNVoltage function gets the FPGA VPVN voltage. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return VPVN voltage + *************************************************************************/ +U16 getFPGAVPVNVoltage( void ) +{ + return fpgaSensorReadings.fpgaADCVPVN; +} + +/*********************************************************************//** + * @brief * The getFPGABaroReadCount function gets the FPGA barometric sensor read count. * @details Inputs: fpgaSensorReadings * @details Outputs: none Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c -r08d27319b4b5f6f15e5de0758d9f528db1db6b3a --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 19ed5eac0b3a24d9bf9da52767dcc5fe2872bd7c) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 08d27319b4b5f6f15e5de0758d9f528db1db6b3a) @@ -139,6 +139,10 @@ U08 getFPGADialysateCapStatus( void ); U08 getFPGAConcentrateCapStatus( void ); +U16 getFPGAInternalVccVoltage( void ); +U16 getFPGAInternalVccAuxiliaryVoltage( void ); +U16 getFPGAVPVNVoltage( void ); + //***************** DVT Functions ***************************/ void setFPGAAcidPumpControl( U08 control ); void setFPGABicarbPumpControl( U08 control );