Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -rae3240cfb3237c01472168fee0bfc6beb34e0ed9 -r37294a71c0b3e3ca67ccb10b85536d124d3ef028 --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision ae3240cfb3237c01472168fee0bfc6beb34e0ed9) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 37294a71c0b3e3ca67ccb10b85536d124d3ef028) @@ -110,20 +110,18 @@ S16 h2Temperature; ///< Reg 274. H2 raw temperature data. U08 h2ReadCount; ///< Reg 276. H2 read count. U08 h2ErrorCount; ///< Reg 277. H2 error count. - S16 H1CmdPosition; ///< Reg 278. H1 commanded position (200 steps/rev). - S16 H1EncPosition; ///< Reg 280. H1 encoder position (1024 counts/rev). - U08 H1Status; ///< Reg 282. H1 status. - U08 reserved1; ///< Reg 283. Reserved and available for future use. - U08 reserved2; ///< Reg 284. Reserved and available for future use. - U08 reserved3; ///< Reg 285. Reserved and available for future use. - S32 reserved4; ///< Reg 286. Reserved and available for future use. - S16 H4Period; ///< Reg 290. H4 measured period (10 uSec). - S16 H4Torque; ///< Reg 292. H4 measured torque. - S16 H4SpeedFromHall; ///< Reg 294. H4 measured speed from hall sensor(s). - S16 H19CmdPosition; ///< Reg 296. H19 commanded position (200 steps/rev). - S16 H19EncPosition; ///< Reg 298. H19 encoder position (1024 counts/rev). - U08 H19Status; ///< Reg 300. H19 status. - U08 H4Status; ///< Reg 301. H4 status. + U16 reserved1; ///< Reg 278. Reserved and available for future use. + S16 h1EncPosition; ///< Reg 280. H1 encoder position (1000 steps/rev). + U16 h1Status; ///< Reg 282. H1 status. + U32 reserved2; ///< Reg 284. Reserved and available for future use. + U16 reserved3; ///< Reg 288. Reserved and available for future use. + S16 h4Period; ///< Reg 290. H4 measured period (10 uSec). + S16 h4Torque; ///< Reg 292. H4 measured torque. + S16 h4SpeedFromHall; ///< Reg 294. H4 measured speed from hall sensor(s). + U16 h19Status; ///< Reg 296. H19 status. + S16 h19EncPosition; ///< Reg 298. H19 encoder position (1000 steps/rev). + U08 reserved4; ///< Reg 300. H19 status. + U08 h4Status; ///< Reg 301. H4 status. U16 GPIOReg; ///< Reg 302. GPIO register. U08 HEPStatus; ///< Reg 304. HEP status register. U08 HEPAdcReadCount; ///< Reg 305. HEP ADC read counter. @@ -147,8 +145,8 @@ S16 ACPower2Voltage; ///< Reg 338. AC power voltage - 2. S16 ACPower3Current; ///< Reg 340. AC power current - 3. S16 ACPower3Voltage; ///< Reg 342. AC power voltage - 3. - S16 H4RotorHallCount; ///< Reg 344. H4 rotor count from hall sensor. - U08 H6RotorStatus; ///< Reg 346. H6 rotor status. + S16 h4RotorHallCount; ///< Reg 344. H4 rotor count from hall sensor. + U08 h6RotorStatus; ///< Reg 346. H6 rotor status. U08 reserved5; ///< U16 h12Speed; ///< Reg 348. H12 speed (in RPM). } FPGA_SENSORS_T; @@ -165,14 +163,14 @@ U08 h12Control; ///< Reg 14. H12 Air pump control register. U08 h5Control; ///< Reg 15. H5 ejector stepper motor control register. U16 NotUsed; ///< Reg 16. Reserved. - U16 H4SetSpeed; ///< Reg 18. H4 Blood pump speed set register (RPM). - U08 H4Control; ///< Reg 20. H4 Blood pump control register. - U08 H19Control; ///< Reg 21. H19 control register. - S16 H19Position; ///< Reg 22. H19 position set register (200 steps/rev). + U16 h4SetSpeed; ///< Reg 18. H4 Blood pump speed set register (RPM). + U08 h4Control; ///< Reg 20. H4 Blood pump control register. + U08 h19Control; ///< Reg 21. H19 control register. + S16 h19Position; ///< Reg 22. H19 position set register (200 steps/rev). U16 NotUsed2; ///< Reg 24. Reserved. - S16 H1Position; ///< Reg 26. H1 position set register (200 steps/rev). + S16 h1Position; ///< Reg 26. H1 position set register (200 steps/rev). U16 NotUsed3; ///< Reg 28. Reserved. - U08 H1Control; ///< Reg 30. H1 control register. + U08 h1Control; ///< Reg 30. H1 control register. U08 h1h19ValveEncoderControl; ///< Reg 31. H1/H19 valve encoder control register. U08 alarmControl; ///< Reg 32. Alarm audio control register. U08 syrPumpControl; ///< Reg 33. Syringe pump control register. @@ -217,8 +215,8 @@ fpgaActuatorSetPoints.alarmControl = (U08)MIN_ALARM_VOLUME_ATTENUATION << 2; // Start alarm audio volume at maximum // Set H1 and H19 to default configuration + disabled so they do not run immediately on power up - fpgaActuatorSetPoints.H1Control = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_DISABLE | FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; - fpgaActuatorSetPoints.H19Control = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_DISABLE | FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + fpgaActuatorSetPoints.h1Control = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_DISABLE | FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + fpgaActuatorSetPoints.h19Control = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_DISABLE | FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; // initialize FPGA comm failures windowed timer count initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_COMM_FAILURES, MAX_FPGA_COMM_FAILURES, MAX_FPGA_COMM_FAILURES_WINDOW_MS); @@ -456,11 +454,11 @@ { if ( TRUE == enable ) { - fpgaActuatorSetPoints.H4Control |= FPGA_H4_ENABLE_BIT_MASK; + fpgaActuatorSetPoints.h4Control |= FPGA_H4_ENABLE_BIT_MASK; } else { - fpgaActuatorSetPoints.H4Control &= ~((U08)FPGA_H4_ENABLE_BIT_MASK); + fpgaActuatorSetPoints.h4Control &= ~((U08)FPGA_H4_ENABLE_BIT_MASK); } } @@ -479,11 +477,11 @@ { if ( MOTOR_DIR_REVERSE == dir ) { - fpgaActuatorSetPoints.H4Control |= FPGA_H4_DIRECTION_REV_BIT_MASK; + fpgaActuatorSetPoints.h4Control |= FPGA_H4_DIRECTION_REV_BIT_MASK; } else { - fpgaActuatorSetPoints.H4Control &= ~((U08)FPGA_H4_DIRECTION_REV_BIT_MASK); + fpgaActuatorSetPoints.h4Control &= ~((U08)FPGA_H4_DIRECTION_REV_BIT_MASK); } } @@ -492,26 +490,26 @@ * The setH4SetSpeed function sets the fpga blood pump set speed * to the given speed (0..3000 RPM). * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints + * @details \b Outputs: fpgaActuatorSetPoints.h4SetSpeed * @param rpm the set point for the H4 pump speed (in RPM). * @return none *************************************************************************/ void setH4SetSpeed( U16 rpm ) { - fpgaActuatorSetPoints.H4SetSpeed = rpm; + fpgaActuatorSetPoints.h4SetSpeed = rpm; } /*********************************************************************//** * @brief * The getH4Period function gets the latest blood pump period (in 10uSec) * from the FPGA. - * @details \b Inputs: fpgaSensorReadings + * @details \b Inputs: fpgaSensorReadings.h4Period * @details \b Outputs: none * @return Latest blood pump period. *************************************************************************/ U16 getH4Period( void ) { - return fpgaSensorReadings.H4Period; + return fpgaSensorReadings.h4Period; } /*********************************************************************//** @@ -535,13 +533,13 @@ * Bit 0: 0=Magnet is detected (used for homing in forward direction) * Bit 1: 0=Reverse pump direction detected, 1=Forward pump direction detected * Bit 2..7: Not used. - * @details \b Inputs: fpgaSensorReadings.H6RotorStatus + * @details \b Inputs: fpgaSensorReadings.h6RotorStatus * @details \b Outputs: none * @return Latest blood pump hall sensor status bits. *************************************************************************/ U08 getH6RotorStatus( void ) { - return fpgaSensorReadings.H6RotorStatus; + return fpgaSensorReadings.h6RotorStatus; } /*********************************************************************//** @@ -550,13 +548,13 @@ * hall sensor count. Count is number of ms between rotor revolutions. * If direction is forward, the count will be positive. If direction is * reverse, the count will be negative. - * @details \b Inputs: fpgaSensorReadings.H4RotorHallCount + * @details \b Inputs: fpgaSensorReadings.h4RotorHallCount * @details \b Outputs: none * @return Latest blood pump hall sensor count reading. *************************************************************************/ S16 getH4RotorCount( void ) { - return fpgaSensorReadings.H4RotorHallCount; + return fpgaSensorReadings.h4RotorHallCount; } /*********************************************************************//** @@ -886,39 +884,39 @@ * 0=sleep mode * Reserved: bit 7 * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints + * @details \b Outputs: fpgaActuatorSetPoints.h19Control * @param controlBits The control bits to apply to the venous pinch valve. * @return none *************************************************************************/ void setH19Control( U08 controlBits ) { - fpgaActuatorSetPoints.H19Control = controlBits; + fpgaActuatorSetPoints.h19Control = controlBits; } /*********************************************************************//** * @brief * The getH19Control function gets the current control bits for the H19 valve. - * @details \b Inputs: fpgaActuatorSetPoints + * @details \b Inputs: fpgaActuatorSetPoints.h19Control * @details \b Outputs: none * @return fpgaActuatorSetPoints.H19Control *************************************************************************/ U08 getH19Control( void ) { - return fpgaActuatorSetPoints.H19Control; + return fpgaActuatorSetPoints.h19Control; } /*********************************************************************//** * @brief * The setH19Position function sets the travel from current position for the * H19 valve in counts (or microcounts if microstepping is set in control register). * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints + * @details \b Outputs: fpgaActuatorSetPoints.h19Position * @param setPoint The target encoder position of the H19 valve in counts * @return none *************************************************************************/ void setH19Position( S16 setPoint ) { - fpgaActuatorSetPoints.H19Position = setPoint; + fpgaActuatorSetPoints.h19Position = setPoint; } /*********************************************************************//** @@ -933,34 +931,19 @@ *************************************************************************/ S16 getH19EncoderPosition( void ) { - return fpgaSensorReadings.H19EncPosition; + return fpgaSensorReadings.h19EncPosition; } /*********************************************************************//** * @brief - * The getH19CmdPosition function returns the current amount of travel - * from the pre-command position in steps (or microsteps if microstepping is - * set in control register) for H19 valve. - * @note There are 200 steps per revolution - * @details \b Inputs: fpgaSensorReadings - * @details \b Outputs: none - * @return The commanded encoder position of H19 valve - *************************************************************************/ -S16 getH19CmdPosition( void ) -{ - return fpgaSensorReadings.H19CmdPosition; -} - -/*********************************************************************//** - * @brief * The getH19Status function reads the status of the venous pinch valve. - * @details \b Inputs: fpgaSensorReadings + * @details \b Inputs: fpgaSensorReadings.h19Status * @details \b Outputs: none * @return Latest status of the venous pinch valve *************************************************************************/ U16 getH19Status( void ) { - return fpgaSensorReadings.H19Status; + return fpgaSensorReadings.h19Status; } /*********************************************************************//** @@ -975,9 +958,9 @@ * 5=1/2 step (modified) * 6=1/4 step * 7=1/8 step - * Direction: bit 3 - * 0=forward - * 1=reverse + * Encoder Reset: bit 3 + * 0=not reset + * 1=reset * Enable: bit 4 (active low) * 0=enabled * 1=disabled @@ -987,80 +970,65 @@ * 0=sleep mode * Reserved: bit 7 * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints + * @details \b Outputs: fpgaActuatorSetPoints.h1Control * @param controlBits The control bits to apply to the arterial pinch valve. * @return none *************************************************************************/ void setH1Control( U08 controlBits ) { - fpgaActuatorSetPoints.H1Control = controlBits; + fpgaActuatorSetPoints.h1Control = controlBits; } /*********************************************************************//** * @brief * The getH1Control function gets the current control bits for the H1 valve. - * @details \b Inputs: fpgaActuatorSetPoints + * @details \b Inputs: fpgaActuatorSetPoints.h1Control * @details \b Outputs: none - * @return fpgaActuatorSetPoints.H1Control + * @return fpgaActuatorSetPoints.h1Control *************************************************************************/ U08 getH1Control( void ) { - return fpgaActuatorSetPoints.H1Control; + return fpgaActuatorSetPoints.h1Control; } /*********************************************************************//** * @brief * The setH1Position function sets the travel from current position for the * H1 valve in counts (or microcounts if microstepping is set in control register). * @details \b Inputs: none - * @details \b Outputs: fpgaActuatorSetPoints + * @details \b Outputs: fpgaActuatorSetPoints.h1Position * @param setPoint The target encoder position of the H1 valve in counts * @return none *************************************************************************/ void setH1Position( S16 setPoint ) { - fpgaActuatorSetPoints.H1Position = setPoint; + fpgaActuatorSetPoints.h1Position = setPoint; } /*********************************************************************//** * @brief * The getH1EncoderPosition function reads the current encoder position of the * H1 valve in counts. * @note There are 1024 encoder counts per revolution - * @details \b Inputs: fpgaSensorReadings + * @details \b Inputs: fpgaSensorReadings.h1EncPosition * @details \b Outputs: none * @return The latest encoder position of H1 valve *************************************************************************/ S16 getH1EncoderPosition( void ) { - return fpgaSensorReadings.H1EncPosition; + return fpgaSensorReadings.h1EncPosition; } /*********************************************************************//** * @brief - * The getH1CmdPosition function returns returns the current amount of travel - * from the pre-command position in steps (or microsteps if microstepping is - * set in control register) for H1 valve. - * @note There are 200 steps per revolution - * @details \b Inputs: fpgaSensorReadings - * @details \b Outputs: none - * @return The commanded encoder position of H1 valve - *************************************************************************/ -S16 getH1CmdPosition( void ) -{ - return fpgaSensorReadings.H1CmdPosition; -} - -/*********************************************************************//** - * @brief * The getH1Status function reads the status of the arterial pinch valve. - * @details \b Inputs: fpgaSensorReadings + * @details \b Inputs: fpgaSensorReadings.h1Status * @details \b Outputs: none * @return Latest status of the arterial pinch valve *************************************************************************/ U16 getH1Status( void ) { - return fpgaSensorReadings.H1Status; + return fpgaSensorReadings.h1Status; } /*********************************************************************//**