Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r766708fceb0bdf1af8c7897df29d4f5036bfd3db -rf3326a3d0fd2a465a518e31ee578e335db301c27 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 766708fceb0bdf1af8c7897df29d4f5036bfd3db) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision f3326a3d0fd2a465a518e31ee578e335db301c27) @@ -35,29 +35,53 @@ const INT_ADC_CHANNEL_T ADC_CHANNEL_NUM_TO_CHANNEL_ID[ MAX_ADC_CHANNELS ] = { INT_ADC_DIAL_IN_PUMP_SPEED, // 0 - INT_ADC_NOT_USED, // 1 - INT_ADC_NOT_USED, // 2 - INT_ADC_NOT_USED, // 3 - INT_ADC_NOT_USED, // 4 - INT_ADC_NOT_USED, // 5 + INT_ADC_PS_THERMISTOR, // 1 + INT_ADC_REFIN_1, // 2 + INT_ADC_24V_ACTUATORS_REG, // 3 + INT_ADC_1_2V_PROCESSOR, // 4 + INT_ADC_5V_SENSORS, // 5 INT_ADC_NOT_USED, // 6 INT_ADC_DIAL_IN_PUMP_MOTOR_CURRENT, // 7 - INT_ADC_NOT_USED, // 8 + INT_ADC_PRIMARY_ALARM_CURRENT_HG, // 8 INT_ADC_NOT_USED, // 9 - INT_ADC_NOT_USED, // 10 - INT_ADC_NOT_USED, // 11 - INT_ADC_NOT_USED, // 12 - INT_ADC_NOT_USED, // 13 - INT_ADC_NOT_USED, // 14 + INT_ADC_BOARD_THERMISTOR, // 10 + INT_ADC_FPGA_ADC_REF, // 11 + INT_ADC_3_3V, // 12 + INT_ADC_5V_LOGIC, // 13 + INT_ADC_PRIMARY_ALARM_CURRENT_LG, // 14 INT_ADC_NOT_USED, // 15 INT_ADC_BLOOD_PUMP_SPEED, // 16 INT_ADC_BLOOD_PUMP_MOTOR_CURRENT, // 17 INT_ADC_DIAL_OUT_PUMP_SPEED, // 18 INT_ADC_DIAL_OUT_PUMP_MOTOR_CURRENT,// 19 INT_ADC_NOT_USED, // 20 INT_ADC_NOT_USED, // 21 - INT_ADC_NOT_USED, // 22 - INT_ADC_NOT_USED // 23 + INT_ADC_24V_ACTUATORS, // 22 + INT_ADC_BACKUP_ALARM_CURRENT // 23 +}; + +const F32 ADC_CHANNEL_READ_TO_UNITS[ NUM_OF_INT_ADC_CHANNELS ] = +{ + 0.0, // - INT_ADC_NOT_USED + 1.280938, // RPM - INT_ADC_BLOOD_PUMP_SPEED + 0.003002, // A - INT_ADC_BLOOD_PUMP_MOTOR_CURRENT + 1.280938, // RPM - INT_ADC_DIAL_IN_PUMP_SPEED + 0.003002, // A - INT_ADC_DIAL_IN_PUMP_MOTOR_CURRENT + 1.280938, // RPM - INT_ADC_DIAL_OUT_PUMP_SPEED + 0.003002, // A - INT_ADC_DIAL_OUT_PUMP_MOTOR_CURRENT + 0.001221, // V - INT_ADC_PS_THERMISTOR + 0.001465, // V - INT_ADC_REFIN_1 + 0.009420, // V - INT_ADC_24V_ACTUATORS_REG + 0.000733, // V - INT_ADC_1_2V_PROCESSOR + 0.001465, // V - INT_ADC_5V_SENSORS + 0.073240, // mA - INT_ADC_PRIMARY_ALARM_CURRENT_HG + 0.001221, // V - INT_ADC_BOARD_THERMISTOR + 0.000733, // V - INT_ADC_FPGA_ADC_REF + 0.001465, // V - INT_ADC_3_3V + 0.001465, // V - INT_ADC_5V_LOGIC + 0.073240, // mA - INT_ADC_PRIMARY_ALARM_CURRENT_LG + 0.007106, // V - INT_ADC_24V_ACTUATORS + 0.073240, // mA - INT_ADC_BACKUP_ALARM_CURRENT }; // ********** private data ********** @@ -178,6 +202,31 @@ } return result; -} +} + +/*********************************************************************//** + * @brief + * The getIntADCVoltageConverted function gets the latest average voltage + * (converted per transfer function) for a given channel. + * @details Inputs: adcReadingsAvgs[], ADC_CHANNEL_READ_TO_UNITS[] + * @details Outputs: none + * @param channel adc channel to retrieve a converted voltage for + * @return average converted voltage for the given channel + *************************************************************************/ +F32 getIntADCVoltageConverted( INT_ADC_CHANNEL_T channel ) +{ + F32 result = 0.0; + + if ( channel < NUM_OF_INT_ADC_CHANNELS ) + { + result = (F32)adcReadingsAvgs[ channel ] * ADC_CHANNEL_READ_TO_UNITS[ channel ]; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED, channel ) + } + + return result; +} /**@}*/