Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -ra60ec05d359c0d3f014015e9080b6dbcef0fea28 -rffb9960f7b97e71ba78844c60158d344c909db94 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision a60ec05d359c0d3f014015e9080b6dbcef0fea28) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision ffb9960f7b97e71ba78844c60158d344c909db94) @@ -30,8 +30,17 @@ // ********** private definitions ********** /// Default publication interval for pressure and occlusion data. -#define PRES_OCCL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the pressure/occlusion data is published on the CAN bus. +#define PRES_OCCL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the pressure/occlusion data is published on the CAN bus. +#define ARTERIAL_PRESSURE_V_BIAS ( 3.0 ) ///< Bias voltage for arterial pressure sensor. +#define ARTERIAL_PRESSURE_SENSITIVITY ( 0.000005 ) ///< Sensitivity for arterial pressure sensor is 5 uV / mmHg +#define ARTERIAL_PRESSURE_V_PER_BIT ( ARTERIAL_PRESSURE_V_BIAS / (F32)0x800000 ) ///< Volts per bit in 24-bit arterial pressure sensor reading. + +#define VENOUS_PRESSURE_OFFSET ( 1638 ) ///< Offset for 14-bit venous pressure sensor reading. +#define VENOUS_PRESSURE_SCALE ( 14745 - VENOUS_PRESSURE_OFFSET ) ///< Scale for venous pressure sensor. +#define VENOUS_PRESSURE_MIN ( 30.0 ) ///< Minimum of scale for venous pressure sensor reading (in TBD u/m). +#define VENOUS_PRESSURE_MAX ( 90.0 ) ///< Maximum of scale for venous pressure sensor reading (in TBD u/m). + /// Defined states for the pressure and occlusion monitor state machine. typedef enum PresOccl_States { @@ -220,15 +229,15 @@ { PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; - U16 artPres = getFPGAArterialPressure(); + S32 artPres = getFPGAArterialPressure(); U16 venPres = getFPGAVenousPressure(); U16 bldOccl = getFPGABloodPumpOcclusion(); U16 dliOccl = getFPGADialInPumpOcclusion(); U16 dloOccl = getFPGADialOutPumpOcclusion(); // TODO - convert ADC counts to mmHg for each sensor - arterialPressure.data = (F32)artPres; - venousPressure.data = (F32)venPres; + arterialPressure.data = ARTERIAL_PRESSURE_V_PER_BIT * ( (F32)(artPres) / ( ARTERIAL_PRESSURE_SENSITIVITY / ARTERIAL_PRESSURE_V_BIAS ) ); + venousPressure.data = ( (F32)(venPres - VENOUS_PRESSURE_OFFSET) * (VENOUS_PRESSURE_MAX - VENOUS_PRESSURE_MIN) / (F32)VENOUS_PRESSURE_SCALE ) - VENOUS_PRESSURE_MIN; bloodPumpOcclusion.data = (F32)bldOccl; dialInPumpOcclusion.data = (F32)dliOccl; dialOutPumpOcclusion.data = (F32)dloOccl; Index: firmware/App/HDCommon.h =================================================================== diff -u -ra60ec05d359c0d3f014015e9080b6dbcef0fea28 -rffb9960f7b97e71ba78844c60158d344c909db94 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision a60ec05d359c0d3f014015e9080b6dbcef0fea28) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision ffb9960f7b97e71ba78844c60158d344c909db94) @@ -45,7 +45,7 @@ #define DISABLE_PRESSURE_CHECKS 1 // #define SHOW_LOAD_CELL_IN_ROTOR_RPM 1 // #define READ_FPGA_ASYNC_DATA 1 -// #define EMC_TEST_BUILD 1 + #define EMC_TEST_BUILD 1 #define ALARMS_DEBUG 1 #include Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -ra60ec05d359c0d3f014015e9080b6dbcef0fea28 -rffb9960f7b97e71ba78844c60158d344c909db94 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision a60ec05d359c0d3f014015e9080b6dbcef0fea28) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision ffb9960f7b97e71ba78844c60158d344c909db94) @@ -16,6 +16,8 @@ * **************************************************************************/ +#include "mibspi.h" + #include "AlarmLamp.h" #include "OperationModes.h" #include "SystemCommMessages.h" @@ -123,6 +125,12 @@ /// A blank alarm data record for alarms that do not include alarm data when triggered. const ALARM_DATA_T blankAlarmData = { ALARM_DATA_TYPE_NONE, 0 }; +// pin assignment for backup alarm audio enable +#define BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK 0x00000001 // (SPI3-CS0 - re-purposed as output GPIO) +// backup alarm audio enable/disable macros +#define SET_BACKUP_AUDIO_ENABLE() {mibspiREG3->PC3 |= BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK;} +#define CLR_BACKUP_AUDIO_ENABLE() {mibspiREG3->PC3 &= ~BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK;} + // ********** private data ********** /// interval (in ms) at which to publish alarm status to CAN bus @@ -167,6 +175,9 @@ ALARM_PRIORITY_T p; ALARM_ID_T a; + // disable backup audio + CLR_BACKUP_AUDIO_ENABLE(); + // initialize alarm states and start time stamps for ( a = ALARM_ID_NO_ALARM; a < NUM_OF_ALARM_IDS; a++ ) { Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rcc511a2e779106c4fda8305c25bd1f9d9fbf06ce -rffb9960f7b97e71ba78844c60158d344c909db94 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision cc511a2e779106c4fda8305c25bd1f9d9fbf06ce) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision ffb9960f7b97e71ba78844c60158d344c909db94) @@ -1212,9 +1212,9 @@ * Outputs : none * @return last arterial pressure reading *************************************************************************/ -U16 getFPGAArterialPressure( void ) +S32 getFPGAArterialPressure( void ) { - return 0; // TODO - return reading when available + return (S32)( fpgaSensorReadings.adc1Channel0 & MASK_OFF_U32_MSB ) - 0x800000; } /*********************************************************************//** @@ -1227,7 +1227,8 @@ *************************************************************************/ U16 getFPGAVenousPressure( void ) { - return 0; // TODO - return reading when available + // 14-bits + return fpgaSensorReadings.venousPressure & 0x3FFF; } /*********************************************************************//** Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r4b22b45e775c0525bc1d76e83e265af91a59785e -rffb9960f7b97e71ba78844c60158d344c909db94 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 4b22b45e775c0525bc1d76e83e265af91a59785e) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision ffb9960f7b97e71ba78844c60158d344c909db94) @@ -60,7 +60,7 @@ U16 getFPGADialOutPumpHallSensorCount( void ); U08 getFPGADialOutPumpHallSensorStatus( void ); -U16 getFPGAArterialPressure( void ); +S32 getFPGAArterialPressure( void ); U16 getFPGAVenousPressure( void ); U16 getFPGABloodPumpOcclusion( void ); U16 getFPGADialInPumpOcclusion( void );