Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r8cbddbe34a4ffed5a4d9fac07a065799c5862611 -ra9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 8cbddbe34a4ffed5a4d9fac07a065799c5862611) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision a9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5) @@ -152,29 +152,29 @@ *************************************************************************/ void execInternalADC( void ) { - U32 i; - - if ( adcRawReadingsCount < NUM_OF_INT_ADC_CHANNELS ) - { - // Process readings from last conversion - for ( i = 0; i < adcRawReadingsCount; i++ ) - { - U32 ch = ADC_CHANNEL_NUM_TO_CHANNEL_ID[ adcRawReadings[ i ].id ]; - - adcReadingsTotals[ ch ] -= adcReadings[ ch ][ adcReadingsIdx[ ch ] ]; - adcReadings[ ch ][ adcReadingsIdx[ ch ] ] = adcRawReadings[i].value; - adcReadingsTotals[ ch ] += adcRawReadings[ i ].value; - adcReadingsAvgs[ ch ] = adcReadingsTotals[ ch ] >> ROLLING_AVG_SHIFT_DIVIDER; - adcReadingsIdx[ ch ] = INC_WRAP( adcReadingsIdx[ ch ], 0, SIZE_OF_ROLLING_AVG - 1 ); - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_INT_ADC_DATA_OVERRUN, adcRawReadingsCount ) - } - - // Start an adc channel group conversion - adcStartConversion( adcREG1, adcGROUP1 ); +// U32 i; +// +// if ( adcRawReadingsCount < NUM_OF_INT_ADC_CHANNELS ) +// { +// // Process readings from last conversion +// for ( i = 0; i < adcRawReadingsCount; i++ ) +// { +// U32 ch = ADC_CHANNEL_NUM_TO_CHANNEL_ID[ adcRawReadings[ i ].id ]; +// +// adcReadingsTotals[ ch ] -= adcReadings[ ch ][ adcReadingsIdx[ ch ] ]; +// adcReadings[ ch ][ adcReadingsIdx[ ch ] ] = adcRawReadings[i].value; +// adcReadingsTotals[ ch ] += adcRawReadings[ i ].value; +// adcReadingsAvgs[ ch ] = adcReadingsTotals[ ch ] >> ROLLING_AVG_SHIFT_DIVIDER; +// adcReadingsIdx[ ch ] = INC_WRAP( adcReadingsIdx[ ch ], 0, SIZE_OF_ROLLING_AVG - 1 ); +// } +// } +// else +// { +// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_INT_ADC_DATA_OVERRUN, adcRawReadingsCount ) +// } +// +// // Start an adc channel group conversion +// adcStartConversion( adcREG1, adcGROUP1 ); } /*********************************************************************//** Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -rd9b5f588d81e15ed3849222bed3362e15dbf4b0a -ra9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision d9b5f588d81e15ed3849222bed3362e15dbf4b0a) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision a9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5) @@ -173,10 +173,12 @@ *************************************************************************/ static F32 getPresureReadingFromFPGARegReading( U16 fpgaReg ) { - U16 rdg = fpgaReg & FPGA_PRESSURE_READING_BITS_MASK; // mask off status bits - S16 ext = signExtend16( rdg, FPGA_PRESSURE_READING_BIT_COUNT - 1 ); // sign extend reading in case it's negative - - return (F32)ext; +// U16 rdg = fpgaReg & FPGA_PRESSURE_READING_BITS_MASK; // mask off status bits +// S16 ext = signExtend16( rdg, FPGA_PRESSURE_READING_BIT_COUNT - 1 ); // sign extend reading in case it's negative +// +// return (F32)ext; + // TODO - fix sign extension + return (F32)((S16)fpgaReg); } /*********************************************************************//** Index: firmware/App/Monitors/Pressures.c =================================================================== diff -u -r234d4fec2bf5b31dacaa2825eed0d4717c295d44 -ra9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5 --- firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision 234d4fec2bf5b31dacaa2825eed0d4717c295d44) +++ firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision a9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5) @@ -466,6 +466,9 @@ *************************************************************************/ void execPressure( void ) { + // Update pressure readings + readPressureSensors(); + // State machine switch ( pressureState ) { @@ -498,7 +501,7 @@ { PRESSURE_STATE_T result = PRESSURE_WAIT_FOR_POST_STATE; - if ( PRESSURE_TEST_STATE_COMPLETE == pressurePostState ) +// if ( PRESSURE_TEST_STATE_COMPLETE == pressurePostState ) // TODO - restore later { result = PRESSURE_CONTINUOUS_READ_STATE; } Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r87d705fcf977af12b7b034735fa5867f2daea2b9 -ra9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5 --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 87d705fcf977af12b7b034735fa5867f2daea2b9) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision a9c88c428c6ab7e9bdaa273826c1fde1b0a8a1f5) @@ -87,86 +87,78 @@ U08 errorCountProcessor; ///< Reg 258. Error count for processor communications. U08 errorCountPC; ///< Reg 259. Error count for TBD. U08 sPumpDACRdStatus; ///< Reg 260. Syringe pump DAC read status. - U08 reserved1; ///< Reg 261. Reserved and available for future use. + U08 BPHallStatus; ///< Reg 261. BP hall sensor status. U16 sPumpDACSet; ///< Reg 262. Syringe pump DAC setting. U16 sPumpDACEEProm; ///< Reg 264. Syringe pump DAC EEProm data. U16 PBoPressure; ///< Reg 266. PBo raw pressure data. S16 PBoTemperature; ///< Reg 268. PBo raw temperature data. U08 PBoReadCount; ///< Reg 270. PBo read count. U08 PBoErrorCount; ///< Reg 271. PBo error count. - U32 reserved3; ///< Reg 272. Reserved and available for future use. - U16 PBAPressure; ///< Reg 276. PBA raw pressure data. - S16 PBATemperature; ///< Reg 278. PBA raw temperature data. - U08 PBAReadCount; ///< Reg 280. PBA read count. - U08 PBAErrorCount; ///< Reg 281. PBA error count. - S16 VBACmdPosition; ///< Reg 282. VBA commanded position (200 steps/rev). - S16 VBAEncPosition; ///< Reg 284. VBA encoder position (1024 counts/rev). - U08 VBAStatus; ///< Reg 286. VBA status. - U08 reserved4; ///< Reg 287. Reserved and available for future use. - U08 BEMStatus; ///< Reg 288. BEM status. - U08 BEMEncStatus; ///< Reg 289. BEM encoder status. - S32 BEMEncPosition; ///< Reg 290. BEM encoder position. - S16 BPSpeed; ///< Reg 294. BP measured speed (RPM). - S16 BPTorque; ///< Reg 296. BP measured torque. - S16 BPSpeedFromHall; ///< Reg 298. BP measured speed from hall sensor(s). - S16 VBVCmdPosition; ///< Reg 300. VBV commanded position (200 steps/rev). - S16 VBVEncPosition; ///< Reg 302. VBV encoder position (1024 counts/rev). - U08 VBVStatus; ///< Reg 304. VBV status. - U08 BPStatus; ///< Reg 305. BP status. - U16 GPIOReg; ///< Reg 306. GPIO register. - U08 HEPStatus; ///< Reg 308. HEP status register. - U08 HEPAdcReadCount; ///< Reg 309. HEP ADC read counter. - U08 HEPAdcDacStatus; ///< Reg 310. HEP ADC/DAC status register. - U08 HEPEncStatus; ///< Reg 311. HEP encoder status register. - S32 HEPEncPosition; ///< Reg 312. HEP encoder position. - U16 HEPAdcCh0; ///< Reg 316. HEP ADC channel 0 reading. - U16 HEPAdcCh1; ///< Reg 318. HEP ADC channel 1 reading. - U16 HEPAdcCh2; ///< Reg 320. HEP ADC channel 2 reading. - U16 HEPAdcCh3; ///< Reg 322. HEP ADC channel 3 reading. - U16 fpgaAdcTemperature; ///< Reg 324. FPGA ADC temperature. - U16 fpga1msTimerCounter; ///< Reg 326. FPGA 1 millisecond timer counter. - U16 alarmBuzzerCurrentAdc; ///< Reg 328. Alarm buzzer current ADC reading. - U16 fpgaVccInternalAdc; ///< Reg 330. FPGA Vcc internal voltage ADC reading. - U16 fpgaCompatibilityRev; ///< Reg 332. Compatibility revision. - U08 VBTStatus; ///< Reg 334. VBT status register. - U08 VBTStatusPWM; ///< Reg 335. VBT PWM status register. - S16 ACPower1Current; ///< Reg 336. AC power current - 1. - S16 ACPower1Voltage; ///< Reg 338. AC power voltage - 1. - S16 ACPower2Current; ///< Reg 340. AC power current - 2. - S16 ACPower2Voltage; ///< Reg 342. AC power voltage - 2. - S16 ACPower3Current; ///< Reg 344. AC power current - 3. - S16 ACPower3Voltage; ///< Reg 346. AC power voltage - 3. + U16 PBAPressure; ///< Reg 272. PBA raw pressure data. + S16 PBATemperature; ///< Reg 274. PBA raw temperature data. + U08 PBAReadCount; ///< Reg 276. PBA read count. + U08 PBAErrorCount; ///< Reg 277. PBA error count. + S16 VBACmdPosition; ///< Reg 278. VBA commanded position (200 steps/rev). + S16 VBAEncPosition; ///< Reg 280. VBA encoder position (1024 counts/rev). + U08 VBAStatus; ///< Reg 282. VBA status. + U08 reserved4; ///< Reg 283. Reserved and available for future use. + U08 BEMStatus; ///< Reg 284. BEM status. + U08 BEMEncStatus; ///< Reg 285. BEM encoder status. + S32 BEMEncPosition; ///< Reg 286. BEM encoder position. + S16 BPSpeed; ///< Reg 290. BP measured speed (RPM). + S16 BPTorque; ///< Reg 292. BP measured torque. + S16 BPSpeedFromHall; ///< Reg 294. BP measured speed from hall sensor(s). + S16 VBVCmdPosition; ///< Reg 296. VBV commanded position (200 steps/rev). + S16 VBVEncPosition; ///< Reg 298. VBV encoder position (1024 counts/rev). + U08 VBVStatus; ///< Reg 300. VBV status. + U08 BPStatus; ///< Reg 301. BP status. + U16 GPIOReg; ///< Reg 302. GPIO register. + U08 HEPStatus; ///< Reg 304. HEP status register. + U08 HEPAdcReadCount; ///< Reg 305. HEP ADC read counter. + U08 HEPAdcDacStatus; ///< Reg 306. HEP ADC/DAC status register. + U08 HEPEncStatus; ///< Reg 307. HEP encoder status register. + S32 HEPEncPosition; ///< Reg 308. HEP encoder position. + U16 HEPAdcCh0; ///< Reg 312. HEP ADC channel 0 reading. + U16 HEPAdcCh1; ///< Reg 314. HEP ADC channel 1 reading. + U16 HEPAdcCh2; ///< Reg 316. HEP ADC channel 2 reading. + U16 HEPAdcCh3; ///< Reg 318. HEP ADC channel 3 reading. + U16 fpgaAdcTemperature; ///< Reg 320. FPGA ADC temperature. + U16 fpga1msTimerCounter; ///< Reg 322. FPGA 1 millisecond timer counter. + U16 alarmBuzzerCurrentAdc; ///< Reg 324. Alarm buzzer current ADC reading. + U16 fpgaVccInternalAdc; ///< Reg 326. FPGA Vcc internal voltage ADC reading. + U16 fpgaCompatibilityRev; ///< Reg 328. Compatibility revision. + U08 VBTStatus; ///< Reg 330. VBT status register. + U08 VBTStatusPWM; ///< Reg 331. VBT PWM status register. + S16 ACPower1Current; ///< Reg 332. AC power current - 1. + S16 ACPower1Voltage; ///< Reg 334. AC power voltage - 1. + S16 ACPower2Current; ///< Reg 336. AC power current - 2. + S16 ACPower2Voltage; ///< Reg 338. AC power voltage - 2. + S16 ACPower3Current; ///< Reg 340. AC power current - 3. + S16 ACPower3Voltage; ///< Reg 342. AC power voltage - 3. + S32 ACHeaterTemp; ///< Reg 344. AC heater temperature. + U16 BPRotorHallSpeed; ///< Reg 348. BP rotor speed from hall sensor. } FPGA_SENSORS_T; /// Record structure for FPGA continuous priority writes. typedef struct { U16 fpgaGenWrRd; ///< Reg 04. FPGA general write/read-back register (mirrored to a general read register in read page at addr 256). U08 VBTControl; ///< Reg 06. VBT valve control register. - U08 reserved1; ///< Reg 07. Reserved. - U08 VBTPWMEnable; ///< Reg 08. VBT valve PWM enable register. - U08 reserved2; ///< Reg 09. Reserved. - U16 VBTPWMLowPeriod; ///< Reg 10. VBT PWM low signal period register. - U16 VBTPWMPeriod; ///< Reg 12. VBT PWM period register. - U16 VBTPWMPUllInTime; ///< Reg 14. VBT PWM pull in time register. - U16 ACHeaterPWM; ///< Reg 16. AC heater PWM duty cycle set register. - U08 ATAPControl; ///< Reg 18. Air pump control register. - U08 BEMControl; ///< Reg 19. Blood ejector stepper motor control register. - U16 BEMSetSpeed; ///< Reg 20. Blood ejector stepper motor step register. - U16 BPSetSpeed; ///< Reg 22. Blood pump speed set register (RPM). - U08 BPControl; ///< Reg 24. Blood pump control register. - U08 VBVControl; ///< Reg 25. VBV control register. - U16 VBVPosition; ///< Reg 26. VBV position set register (200 steps/rev). - U16 VBAPosition; ///< Reg 28. VBA position set register (200 steps/rev). - U16 VBAControl; ///< Reg 30. VBA control register. - U08 reserved3; ///< Reg 31. Reserved. - U16 reserved4; ///< Reg 32. Reserved. - U08 alarmControl; ///< Reg 34. Alarm audio control register. - U08 reserved5; ///< Reg 35. Reserved. - U32 reserved6; ///< Reg 36. Reserved. - U16 reserved7; ///< Reg 40. Reserved. - U16 reserved8; ///< Reg 42. Reserved. - U08 sensorTest; ///< Reg 44. Sensor self-test control register. + U08 VBTPWMEnable; ///< Reg 07. VBT valve PWM enable register. + U16 VBTPWMLowPeriod; ///< Reg 08. VBT PWM low signal period register. + U16 VBTPWMPeriod; ///< Reg 10. VBT PWM period register. + U16 VBTPWMPUllInTime; ///< Reg 12. VBT PWM pull in time register. + U08 ATAPControl; ///< Reg 14. Air pump control register. + U08 BEMControl; ///< Reg 15. Blood ejector stepper motor control register. + U16 BEMSetSpeed; ///< Reg 16. Blood ejector stepper motor step register. + U16 BPSetSpeed; ///< Reg 18. Blood pump speed set register (RPM). + U08 BPControl; ///< Reg 20. Blood pump control register. + U08 VBVControl; ///< Reg 21. VBV control register. + U16 VBVPosition; ///< Reg 22. VBV position set register (200 steps/rev). + U16 VBAPosition; ///< Reg 24. VBA position set register (200 steps/rev). + U08 VBAControl; ///< Reg 26. VBA control register. + U08 valveEncoderControl; ///< Reg 27. VBA/VBV encoder control register. + U08 alarmControl; ///< Reg 28. Alarm audio control register. } FPGA_ACTUATORS_T; #pragma pack(pop) @@ -507,6 +499,9 @@ *************************************************************************/ U16 getBPSpeed( void ) { + // TODO - remove this test code + fpgaActuatorSetPoints.fpgaGenWrRd = 0x1234; + return fpgaSensorReadings.BPSpeed; } @@ -732,7 +727,7 @@ *************************************************************************/ void setFPGAVenousBubbleSelfTest( void ) { - fpgaActuatorSetPoints.sensorTest |= FPGA_ADV_BUBBLE_SELF_TEST_CMD; +// fpgaActuatorSetPoints.sensorTest |= FPGA_ADV_BUBBLE_SELF_TEST_CMD; } /*********************************************************************//** @@ -745,12 +740,12 @@ *************************************************************************/ void clearFPGAVenousBubbleSelfTest( void ) { - fpgaActuatorSetPoints.sensorTest &= ~FPGA_ADV_BUBBLE_SELF_TEST_CMD; +// fpgaActuatorSetPoints.sensorTest &= ~FPGA_ADV_BUBBLE_SELF_TEST_CMD; } /*********************************************************************//** * @brief - * The setVBAControl function sets the control bits for the venous pinch valve. + * The setVBVControl function sets the control bits for the venous pinch valve. * Microstep setting: bits 0..2: * 0=full step (100% torque) * 1=1/2 step (100% torque) @@ -778,7 +773,7 @@ *************************************************************************/ void setVBVControl( U08 controlBits ) { - + fpgaActuatorSetPoints.VBVControl = controlBits; } /*********************************************************************//**