Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r69b6a8036f72eeb935a20701c7d30d402a9ba1f5 -r20676421ce71cfc51bddaaa9ba95f9e183967aba --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 69b6a8036f72eeb935a20701c7d30d402a9ba1f5) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 20676421ce71cfc51bddaaa9ba95f9e183967aba) @@ -166,6 +166,7 @@ static OVERRIDE_U32_T parked[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump is currently parked (T/F). static OVERRIDE_U32_T parkFaulted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump park command has faulted (T/F). static BOOL isDosingCompleted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Flag indicating dosing completed status (T/F). +static U08 Enable_DRV8434S_Stepper_Driver; ///< Enable New Stepper driver for Concentrate Pump. //static DD_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. //static DD_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. @@ -184,6 +185,7 @@ static void checkConcentratePumpControlSet( CONCENTRATE_PUMPS_T pumpId ); static void publishConcentratePumpData( void ); static void monitorPumpParkStatus( void ); +static void updateConcentratePumpControl( void ); /*********************************************************************//** * @brief @@ -200,46 +202,10 @@ acidConcentratePumpParkPersistenceClear = FALSE; bicarbConcentratePumpParkPersistenceClear = FALSE; ufPumpParkPersistenceClear = FALSE; + Enable_DRV8434S_Stepper_Driver = FALSE; - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER ) ) - { - CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | - CONCENTRATE_PUMP_CONTROL_DRV_FORWARD_DIR | - CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; + updateConcentratePumpControl(); - CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | - CONCENTRATE_PUMP_CONTROL_DRV_REVERSE_DIR | - CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; - - setFPGAD10D11CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD10D11CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD10D11CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD10D11CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD10D11CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD10D11CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - - setFPGAD76CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD76CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD76CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD76CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD76CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD76CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - } - else - { - CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | - CONCENTRATE_PUMP_CONTROL_NOT_RESET | - CONCENTRATE_PUMP_CONTROL_ENABLE | - CONCENTRATE_PUMP_CONTROL_FORWARD_DIR | - CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; - - CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | - CONCENTRATE_PUMP_CONTROL_NOT_RESET | - CONCENTRATE_PUMP_CONTROL_ENABLE | - CONCENTRATE_PUMP_CONTROL_REVERSE_DIR | - CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; - } - for ( pumpId = CONCENTRATEPUMPS_FIRST; pumpId < NUM_OF_CONCENTRATE_PUMPS; pumpId++ ) { concentratePumps[ pumpId ].controlTimerCounter = 0; @@ -606,6 +572,8 @@ { if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { + //Set Concentrate Pump Control + updateConcentratePumpControl(); if ( targetSpeed_ml_min >= 0.0 ) { concentratePumps[ pumpId ].direction = CONCENTRATE_PUMP_FORWARD_DIR; @@ -1364,7 +1332,61 @@ } } +/*********************************************************************//** + * @brief + * The updateConcentratePumpControl function update concentrate pump control + * registers. + * @details \b Inputs: Enable_DRV8434S_Stepper_Driver + * @details \b Outputs: Enable_DRV8434S_Stepper_Driver, + * CONCENTRATE_PUMP_CONTROL_FORWARD, CONCENTRATE_PUMP_CONTROL_REVERSE + * @return none + *************************************************************************/ +static void updateConcentratePumpControl( void ) +{ + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER ) && (Enable_DRV8434S_Stepper_Driver == FALSE ) ) + { + setFPGAD10D11CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD10D11CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD10D11CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD10D11CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD10D11CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD10D11CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + + setFPGAD76CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD76CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD76CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD76CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD76CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD76CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + + CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | + CONCENTRATE_PUMP_CONTROL_DRV_FORWARD_DIR | + CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; + + CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | + CONCENTRATE_PUMP_CONTROL_DRV_REVERSE_DIR | + CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; + Enable_DRV8434S_Stepper_Driver = TRUE; + + } + else + { + CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | + CONCENTRATE_PUMP_CONTROL_NOT_RESET | + CONCENTRATE_PUMP_CONTROL_ENABLE | + CONCENTRATE_PUMP_CONTROL_FORWARD_DIR | + CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; + + CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | + CONCENTRATE_PUMP_CONTROL_NOT_RESET | + CONCENTRATE_PUMP_CONTROL_ENABLE | + CONCENTRATE_PUMP_CONTROL_REVERSE_DIR | + CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; + Enable_DRV8434S_Stepper_Driver = FALSE; + } +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/SubstitutionPump.c =================================================================== diff -u -r69b6a8036f72eeb935a20701c7d30d402a9ba1f5 -r20676421ce71cfc51bddaaa9ba95f9e183967aba --- firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 69b6a8036f72eeb935a20701c7d30d402a9ba1f5) +++ firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 20676421ce71cfc51bddaaa9ba95f9e183967aba) @@ -64,7 +64,6 @@ #define RPM_OUT_OF_RANGE_TIME_OUT ( 2 * MS_PER_SECOND ) ///< Open loop RPM out of range time out in ms. //Stepper Motor driver configuration (DRV8434S) -#define SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP 0x08 ///< 1/64 step, MS[3:0]=1000. (DRV8434S) #define SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR 0x00 ///< bit 4 = DIR, Substitution pump reverse direction configuration. #define SUBSTITUTION_PUMP_CONTROL_DRV_FORWARD_DIR 0x10 ///< bit 4 = DIR, Substitution pump forward direction configuration. #define SUBSTITUTION_PUMP_CONTROL_DRV_ENABLE 0x00 ///< bit 5, Substitution pump control enable pump. @@ -77,6 +76,18 @@ #define DRV8434S_CTRL6_DEFAULT 0x03 #define DRV8434S_CTRL7_DEFAULT 0x20 +#define CONCENTRATE_PUMP_CONTROL_DRV_TWOFIXTYSIXTH_STEP 0x0A ///< concentrate pump microstep control 1/256th step. +#define CONCENTRATE_PUMP_CONTROL_DRV_ONE_TWENTY_EIGHTH_STEP 0x09 ///< concentrate pump microstep control 1/128th step. +#define SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP 0x08 ///< concentrate pump microstep control 1/64th step. +#define CONCENTRATE_PUMP_CONTROL_DRV_THIRTYSECOND_STEP 0x07 ///< concentrate pump microstep control 1/32nd step. +#define CONCENTRATE_PUMP_CONTROL_DRV_SIXTEENTH_STEP 0x06 ///< concentrate pump microstep control 1/16th step. +#define CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP 0x05 ///< concentrate pump microstep control 1/8th step +#define CONCENTRATE_PUMP_CONTROL_DRV_NONCIRCULAR_HALF_STEP 0x02 ///< Concentrate pump microstep control non-circular 1/2 step. +#define CONCENTRATE_PUMP_CONTROL_DRV_HALF_STEP 0x03 ///< Concentrate pump microstep control 1/2 step. +#define CONCENTRATE_PUMP_CONTROL_DRV_QUARTER_STEP 0x04 ///< Concentrate pump microstep control 1/4 step. +#define CONCENTRATE_PUMP_CONTROL_DRV_FULL_STEP_71PCT 0x01 ///< Concentrate pump microstep control full step with 71% current. +#define CONCENTRATE_PUMP_CONTROL_DRV_FULL_STEP_100PCT 0x00 ///< Concentrate pump microstep control full step with 100% current. + static U32 SUBSTITUTION_PUMP_CONTROL_FORWARD; static U32 SUBSTITUTION_PUMP_CONTROL_STOP; @@ -108,7 +119,7 @@ { U32 pumpID; ///< Substitution pump ID U32 startStop; ///< Substitution pump start:1,stop :0. - F32 rate; ///< rate in ml/min + F32 rate; ///< rate in ml/min } SUB_PUMP_START_STOP_CMD_PAYLOAD_T; // ********** private data ********** @@ -117,6 +128,7 @@ static SUBSTITUTION_PUMP_T substitutionPumps[ NUM_OF_SUB_PUMPS ]; ///< Array of Substitution pumps' data structure. static OVERRIDE_F32_T pumpTargetRate[ NUM_OF_SUB_PUMPS ]; ///< Target substitution pumps' rate (mL/min). static U32 substitutionPumpPublishTimerCounter; ///< Substitution pump data publication counter. +static U08 Enable_DRV8434S_Stepper_Driver; ///< Enable New Stepper Driver for Substitution Pump. // ********** private function prototypes ********** @@ -126,6 +138,7 @@ static BOOL stepSubstitutionPumpToTargetRate( SUBSTITUTION_PUMPS_T pumpId ); static void checkSubstitutionPumpControlSet( SUBSTITUTION_PUMPS_T pumpId ); static void publishSubstitutionPumpData( void ); +static void checkSubstitutionPumpControl( void ); /*********************************************************************//** * @brief @@ -154,39 +167,9 @@ substitutionPumpDataPublishInterval.ovInitData = SUBSTITUTION_PUMP_DATA_PUBLISH_INTERVAL; substitutionPumpDataPublishInterval.ovData = 0; substitutionPumpDataPublishInterval.override = OVERRIDE_RESET; + Enable_DRV8434S_Stepper_Driver = FALSE; - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER ) ) - { - SUBSTITUTION_PUMP_CONTROL_FORWARD = SUBSTITUTION_PUMP_CONTROL_DRV_ENABLE | - SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; - - SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_DRV_DISABLE | - SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; - - setFPGAD92CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD92CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD92CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD92CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD92CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD92CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - } - else - { - SUBSTITUTION_PUMP_CONTROL_FORWARD = SUBSTITUTION_PUMP_CONTROL_SLEEP_OFF | - SUBSTITUTION_PUMP_CONTROL_NOT_RESET | - SUBSTITUTION_PUMP_CONTROL_ENABLE | - SUBSTITUTION_PUMP_CONTROL_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_SIXTY_FOUR_STEP; - - SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_SLEEP_OFF | - SUBSTITUTION_PUMP_CONTROL_NOT_RESET | - SUBSTITUTION_PUMP_CONTROL_DISABLE | - SUBSTITUTION_PUMP_CONTROL_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_SIXTY_FOUR_STEP; - } - + checkSubstitutionPumpControl(); initPersistentAlarm( ALARM_ID_DD_D92_PUMP_RPM_OUT_OF_RANGE, RPM_OUT_OF_RANGE_TIME_OUT, RPM_OUT_OF_RANGE_TIME_OUT ); } @@ -505,6 +488,9 @@ *************************************************************************/ void setSubstitutionPumpTargetRate( SUBSTITUTION_PUMPS_T pumpId, F32 targetRate_ml_min ) { + //Check Substitution Pump Control + checkSubstitutionPumpControl(); + if ( pumpId < NUM_OF_SUB_PUMPS ) { if ( targetRate_ml_min >= 0.0 ) @@ -552,7 +538,54 @@ } } +/*********************************************************************//** + * @brief + * The checkSubstitutionPumpControl function update concentrate pump control + * registers. + * @details \b Inputs: Enable_DRV8434S_Stepper_Driver + * @details \b Outputs: Enable_DRV8434S_Stepper_Driver, + * SUBSTITUTION_PUMP_CONTROL_FORWARD, SUBSTITUTION_PUMP_CONTROL_STOP + * @return none + *************************************************************************/ +static void checkSubstitutionPumpControl( void ) +{ + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER ) && (Enable_DRV8434S_Stepper_Driver == FALSE ) ) + { + SUBSTITUTION_PUMP_CONTROL_FORWARD = SUBSTITUTION_PUMP_CONTROL_DRV_ENABLE | + SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; + SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_DRV_DISABLE | + SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; + + setFPGAD92CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD92CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD92CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD92CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD92CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD92CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + + Enable_DRV8434S_Stepper_Driver= TRUE; + } + else + { + SUBSTITUTION_PUMP_CONTROL_FORWARD = SUBSTITUTION_PUMP_CONTROL_SLEEP_OFF | + SUBSTITUTION_PUMP_CONTROL_NOT_RESET | + SUBSTITUTION_PUMP_CONTROL_ENABLE | + SUBSTITUTION_PUMP_CONTROL_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_SIXTY_FOUR_STEP; + + SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_SLEEP_OFF | + SUBSTITUTION_PUMP_CONTROL_NOT_RESET | + SUBSTITUTION_PUMP_CONTROL_DISABLE | + SUBSTITUTION_PUMP_CONTROL_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_SIXTY_FOUR_STEP; + + Enable_DRV8434S_Stepper_Driver= FALSE; + } +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/