Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rb43c9f8a4e0338eed6c2f4b48740fc60d74deeb6 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision b43c9f8a4e0338eed6c2f4b48740fc60d74deeb6) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -35,8 +35,8 @@ #define CONCENTRATE_PUMP_FORWARD_DIR 0x1 ///< Concentrate pump forward direction configuration. #define CONCENTRATE_PUMP_REVERSE_DIR 0x0 ///< Concentrate pump reverse direction configuration. -#define CONCENTRATE_PUMP_SPEED_INCREMENT 2.0F ///< Speed increase (mL/min) when controlling concentrate pump to target step speed. -#define CONCENTRATE_PUMP_MIN_SPEED 0.1F ///< Minimum speed for concentrate pump in mL per min. +#define CONCENTRATE_PUMP_SPEED_INCREMENT 10.0F ///< Speed increase (mL/min) when controlling concentrate pump to target step speed. +#define CONCENTRATE_PUMP_MIN_SPEED 3.0F ///< Minimum speed for concentrate pump in mL per min. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_ON_PCT 0.02F ///< Concentrate pump speed out of range tolerance when on in percentage. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM 1.0F ///< Concentrate pump speed out of range tolerance when slow in mL/min. #define CONCENTRATE_PUMP_LOW_SPEED_THRESHOLD_MLPM 10.0F ///< Concentrate pump low speed threshold in mL/min. @@ -50,7 +50,10 @@ #define CONCENTRATE_PUMP_HALL_SENSORS_OUT_OF_RANGE_TIME_MS ( 5 * MS_PER_SECOND ) ///< Hall sensors out of range time in milliseconds. #define CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP 8.0F ///< Number of micro-steps ( fractions of step) per step. -#define CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION ( 0.25F / ( US_PER_SECOND * SEC_PER_MIN ) ) ///< Convert step period resolution (0.25 us) to minute. +#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ( ( 1 / CONCENTRATE_PUMP_VOLUME_PER_REV ) * \ + ( CONCENTRATE_PUMP_STEP_PER_REV * \ + CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ) ///< Convert volume in to number of revolutions needed. +#define CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION ( 0.25F / ( US_PER_SECOND * SEC_PER_MIN ) ) ///< Convert step period resolution (0.25 us) to minute. /// Volume output per pulse. #define CONCENTRATE_PUMP_VOLUME_PER_PULSE ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_PULSE_PER_REV ) @@ -64,7 +67,7 @@ #define DATA_PUBLISH_COUNTER_START_COUNT 0 ///< Data publish counter start count. #define CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD 500 ///< Concentrate pump fault persistence period in milliseconds. -#define CONCENTRATE_PUMP_TRANS_TO_RAMP_SPEED_THRESHOLD_MLPM 5.0F ///< Concentrate pump transition to ramp to target speed threshold in mL/min. +#define CONCENTRATE_PUMP_TRANS_TO_RAMP_SPEED_THRESHOLD_MLPM 20.0F ///< Concentrate pump transition to ramp to target speed threshold in mL/min. #define CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP 0x07 ///< Concentrate pump control 1/8th step. #define CONCENTRATE_PUMP_CONTROL_REVERSE_DIR 0x00 ///< Concentrate pump control reverse direction. @@ -104,6 +107,7 @@ BOOL hasTurnOnPumpsBeenRequested; ///< Flag indicates a request to turn concentrate pumps on. OVERRIDE_U32_T hasParkBeenRequested; ///< Flag indicates a request to park the pump. OVERRIDE_F32_T pumpTargetSpeed; ///< Target concentrate pumps' speed (mL/min). + OVERRIDE_U32_T pumpTargetRevCnt; ///< Target concentrate pump revolution count F32 currentPumpSpeed; ///< Current controlled concentrate pumps' speed (mL/min). OVERRIDE_F32_T measuredPumpSpeed; ///< Measured concentrate pump speed (mL/min). U16 togglePeriodCount; ///< Converted pump speed (mL/min) to toggle period counts (0.5 uS increment counts per step). @@ -121,6 +125,7 @@ U32 pumpID; ///< Concentrate pump ID (0:Acid ,1:Bicarb) U32 startStop; ///< Concentrate pump start:1,stop :0. F32 speed; ///< Speed range from 0.1 ml/min to 48.0 ml/min. + F32 volume; ///< Target volume in ml } CONC_PUMP_START_STOP_CMD_PAYLOAD_T; // ********** private data ********** @@ -170,15 +175,29 @@ concentratePumps[ pumpId ].execState = CONCENTRATE_PUMP_OFF_STATE; concentratePumps[ pumpId ].measuredPumpSpeed.data = 0.0F; concentratePumps[ pumpId ].measuredPumpSpeed.ovInitData = 0.0F; + concentratePumps[ pumpId ].measuredPumpSpeed.ovData = 0.0F; + concentratePumps[ pumpId ].measuredPumpSpeed.override = OVERRIDE_RESET; concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested = FALSE; concentratePumps[ pumpId ].hasParkBeenRequested.data = FALSE; concentratePumps[ pumpId ].hasParkBeenRequested.ovInitData = FALSE; + concentratePumps[ pumpId ].hasParkBeenRequested.ovData = FALSE; + concentratePumps[ pumpId ].hasParkBeenRequested.override = OVERRIDE_RESET; concentratePumps[ pumpId ].parked.data = FALSE; concentratePumps[ pumpId ].parked.ovInitData = FALSE; + concentratePumps[ pumpId ].parked.ovData = FALSE; + concentratePumps[ pumpId ].parked.override = OVERRIDE_RESET; concentratePumps[ pumpId ].parkFaulted.data = FALSE; concentratePumps[ pumpId ].parkFaulted.ovInitData = FALSE; + concentratePumps[ pumpId ].parkFaulted.ovData = FALSE; + concentratePumps[ pumpId ].parkFaulted.override = OVERRIDE_RESET; concentratePumps[ pumpId ].pumpTargetSpeed.data = 0.0F; concentratePumps[ pumpId ].pumpTargetSpeed.ovInitData = 0.0F; + concentratePumps[ pumpId ].pumpTargetSpeed.ovData = 0.0F; + concentratePumps[ pumpId ].pumpTargetSpeed.override = OVERRIDE_RESET; + concentratePumps[ pumpId ].pumpTargetRevCnt.data = 0; + concentratePumps[ pumpId ].pumpTargetRevCnt.ovInitData = 0; + concentratePumps[ pumpId ].pumpTargetRevCnt.ovData = 0; + concentratePumps[ pumpId ].pumpTargetRevCnt.override = OVERRIDE_RESET; concentratePumps[ pumpId ].direction = CONCENTRATE_PUMP_FORWARD_DIR; concentratePumps[ pumpId ].controlSet = CONCENTRATE_PUMP_CONTROL_FORWARD; concentratePumps[ pumpId ].isConcPumpParkInProgress = FALSE; @@ -450,7 +469,7 @@ * @param targetSpeed_ml_min target speed in mL/min * @return none *************************************************************************/ -void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min ) +void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min, F32 targetVolume_ml ) { if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { @@ -466,9 +485,23 @@ targetSpeed_ml_min *= -1.0; } + //Update target revolution count + if ( targetVolume_ml > 0.0 ) + { + concentratePumps[ pumpId ].pumpTargetRevCnt.data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); + if ( CONCENTRATEPUMPS_CP1_ACID == pumpId ) + { + setFPGACPARevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); + } + else + { + setFPGACPBRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); + } + } + /* - * If 0.1 <= speed <= 48 set it - * If speed < 0.1 set to 0 + * If 3.0 <= speed <= 48 set it + * If speed < 3.0 set to 0 * else speed > 48 set to 48 */ if ( ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) && ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) ) @@ -601,6 +634,32 @@ /*********************************************************************//** * @brief + * The getConcPumpTargetRevolutionCount function gets the concentrate pump + * target revolution count. + * @details \b Inputs: pumpTargetRevCnt + * @details \b Outputs: none + * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid pump ID is seen. + * @param pumpId concentrate pump id to get target revolution count + * @return the target revolution count for the given concentrate pump + *************************************************************************/ +U16 getConcPumpTargetRevolutionCount( CONCENTRATE_PUMPS_T pumpId ) +{ + BOOL result = FALSE; + + if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) + { + result = (U16)getU32OverrideValue( &concentratePumps[ pumpId ].pumpTargetRevCnt ); + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONCENTRATE_PUMP_INVALID_PUMP_ID, pumpId ); + } + + return result; +} + +/*********************************************************************//** + * @brief * The getConcPumpIsParked function gets the current parked state for a * given pump. * @details \b Inputs: parked @@ -1040,6 +1099,10 @@ data.cp2CurrentSetSpeed = ( CONCENTRATE_PUMP_REVERSE_DIR == cp2Direction ? cp2SetSpeed * -1.0F : cp2SetSpeed ); data.cp2MeasuredSpeed = getMeasuredPumpSpeedMLPM( CONCENTRATEPUMPS_CP2_BICARB ); data.cp2TargetSpeed = ( CONCENTRATE_PUMP_REVERSE_DIR == cp2Direction ? cp2TgtSpeed * -1.0F : cp2TgtSpeed ); + data.cp1TargetRevCount = (U32)getConcPumpTargetRevolutionCount( CONCENTRATEPUMPS_CP1_ACID ); + data.cp1MeasuredRevCount= getFPGACPARevolutionCountStatus(); + data.cp2TargetRevCount = (U32)getConcPumpTargetRevolutionCount( CONCENTRATEPUMPS_CP2_BICARB ); + data.cp1MeasuredRevCount= getFPGACPBRevolutionCountStatus(); data.cp1State = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].execState; data.cp2State = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].execState; data.cp1PulseUS = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].pulseWidthUS; @@ -1131,6 +1194,23 @@ /*********************************************************************//** * @brief + * The testConcentratePumpTargetRevCountOverride function overrides the + * target revolution count of given concentrate pump id. + * @details \b Inputs: none + * @details \b Outputs: pumpTargetRevCnt + * @param message Override message from Dialin which includes an ID of + * the pump to override and the target revolution count of the pump to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testConcentratePumpTargetRevCountOverride( MESSAGE_T *message ) +{ + BOOL result = u32ArrayOverride( message, &concentratePumps[0].pumpTargetRevCnt, NUM_OF_CONCENTRATE_PUMPS - 1, 0, 65535 ); + + return result; +} + +/*********************************************************************//** + * @brief * The testConcentratePumpParkCmdFaultedOverride function overrides the * park command fault status of given concentrate pump id. * @details \b Inputs: none @@ -1174,9 +1254,10 @@ { // Handle start command if ( ( TRUE == payload.startStop ) && - ( ( payload.speed >= CONCENTRATE_PUMP_MIN_SPEED ) && ( payload.speed <= CONCENTRATE_PUMP_MAX_SPEED ) ) ) + ( ( payload.speed >= CONCENTRATE_PUMP_MIN_SPEED ) && ( payload.speed <= CONCENTRATE_PUMP_MAX_SPEED ) ) && + ( payload.volume > 0.0 ) ) { - setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed ); + setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed, payload.volume ); requestConcentratePumpOn ( (CONCENTRATE_PUMPS_T)payload.pumpID ); result = TRUE; } Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -rb6d20d9e5c704a9f7ebceea9bb12731dac61fc2a -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision b6d20d9e5c704a9f7ebceea9bb12731dac61fc2a) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -52,6 +52,10 @@ F32 cp1MeasuredSpeed; ///< Concentrate pump CP1 measured speed F32 cp2CurrentSetSpeed; ///< Concentrate pump CP2 current set speed F32 cp2MeasuredSpeed; ///< Concentrate pump CP2 measured speed + U32 cp1TargetRevCount; ///< Concentrate pump CP1 target revolution count + U32 cp1MeasuredRevCount; ///< Concentrate pump CP1 measured revolution count + U32 cp2TargetRevCount; ///< Concentrate pump CP1 target revolution count + U32 cp2MeasuredRevCount; ///< Concentrate pump CP1 measured revolution count U32 cp1State; ///< Concentrate pump CP1 current state U32 cp2State; ///< Concentrate pump CP2 current state F32 cp1PulseUS; ///< Concentrate pump CP1 pulse in microseconds @@ -75,13 +79,14 @@ void requestConcentratePumpOn( CONCENTRATE_PUMPS_T pumpId ); void requestConcentratePumpOff( CONCENTRATE_PUMPS_T pumpId, BOOL park ); -void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min ); +void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min, F32 targetVolume_ml ); F32 getConcentratePumpTargetFlowMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getMeasuredPumpSpeedMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getPumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkRequest( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpIsParked( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkIsFaulted( CONCENTRATE_PUMPS_T pumpId ); +U16 getConcPumpTargetRevolutionCount( CONCENTRATE_PUMPS_T pumpId ); BOOL handleConcentratePumpParkRequest( void ); BOOL isConcPumpParkInProgress( CONCENTRATE_PUMPS_T pumpId ); @@ -90,6 +95,7 @@ BOOL testConcentratePumpMeasuredSpeedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkCmdFaultedOverride( MESSAGE_T *message ); +BOOL testConcentratePumpTargetRevCountOverride( MESSAGE_T *message ); BOOL testConcentratePumpStartStopOverride( MESSAGE_T *message ); // Concentrate pump start/stop request BOOL testConcentratePumpParkRequestOverride( MESSAGE_T *message ); // Concentrate pump stop/park request Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -366,12 +366,12 @@ if ( valveID < NUM_OF_VALVES ) { - U32 valveState = getU32OverrideValue( &valveStates[ valveID ] ); + U32 valveState = getU32OverrideValue( &valveSensedStates[ valveID ] ); - if ( OVERRIDE_KEY == valveSensedStates[ valveID ].override ) - { - valveState = valveSensedStates[ valveID ].ovData; - } +// if ( OVERRIDE_KEY == valveSensedStates[ valveID ].override ) +// { +// valveState = valveSensedStates[ valveID ].ovData; +// } name = ( DEENERGIZED == valveState ? VALVE_STATE_CLOSED : VALVE_STATE_OPEN ); } Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -73,7 +73,7 @@ 0.001465, // V - INT_ADC_5V_LOGIC 0.007106, // V - INT_ADC_24V_ACTUATORS 0.007106, // V - INT_ADC_BACKUP_V -// 0.000000, // V - INT_ADC_DUMMY + 0.000000, // V - INT_ADC_DUMMY }; // ********** private data ********** Index: firmware/App/Drivers/InternalADC.h =================================================================== diff -u -re7fe0454b5b2d39009dc784dc8c156856df8bc86 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision e7fe0454b5b2d39009dc784dc8c156856df8bc86) +++ firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -50,7 +50,7 @@ INT_ADC_5V_LOGIC, ///< Internal ADC channel for 5V to logic INT_ADC_24V_ACTUATORS, ///< Internal ADC channel for 24V to actuators INT_ADC_BACKUP_V, ///< Internal ADC channel for VBackup - //INT_ADC_DUMMY, ///< Internal ADC channel - not used, needed to get even number of channels + INT_ADC_DUMMY, ///< Internal ADC channel - not used, needed to get even number of channels NUM_OF_INT_ADC_CHANNELS ///< Number of used internal ADC channels. } INT_ADC_CHANNEL_T; Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r3ea4def3a3a69a00fb96b6089dbd097fa80041de -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 3ea4def3a3a69a00fb96b6089dbd097fa80041de) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -230,6 +230,8 @@ U08 fpgaSDPHallStatus; ///< Reg 425. Spent dialysate pump hall sensor direction status U08 fpgaFloater1Status; ///< Reg 426. Floater 1 level sensor status U08 fpgaFloater2Status; ///< Reg 427. Floater 2 level sensor status + U16 fpgaCPAStepCountStatus; ///< Reg 428. Acid concentrate pump revolution down count status + U16 fpgaCPBStepCountStatus; ///< Reg 430. Bicarb concentrate pump revolution down count status } DD_FPGA_SENSORS_T; typedef struct @@ -318,6 +320,8 @@ U16 fpgaVUFPWMLow; ///< Reg 136. VUF PWM low ( Ultra filteration valves ) U16 fpgaVUFPWMPeriod; ///< Reg 138. VUF PWM period U16 fpgaVUFPWMPullin; ///< Reg 140. VUF PWM pull in + U16 fpgaCPARevCount; ///< Reg 142. Acid Concentrate pump revolution count + U16 fpgaCPBRevCount; ///< Reg 144. Bicard Concentrate pump revolution count } FPGA_ACTUATORS_T; #pragma pack(pop) @@ -1285,6 +1289,34 @@ /*********************************************************************//** * @brief + * The setFPGACPARevolutionCount function sets the Acid concentrate + * pump revolution count. + * @details \b Inputs: none + * @details \b Outputs: fpgaCPARevCount + * @param count the number of revolution to be rotated for the pump. + * @return none + *************************************************************************/ +void setFPGACPARevolutionCount( U16 count ) +{ + fpgaActuatorSetPoints.fpgaCPARevCount = count; +} + +/*********************************************************************//** + * @brief + * The setFPGACPBRevolutionCount function sets the Bicarb concentrate + * pump revolution count. + * @details \b Inputs: none + * @details \b Outputs: fpgaCPBRevCount + * @param count the number of revolution to be rotated for the pump. + * @return none + *************************************************************************/ +void setFPGACPBRevolutionCount( U16 count ) +{ + fpgaActuatorSetPoints.fpgaCPBRevCount = count; +} + +/*********************************************************************//** + * @brief * The getFPGAVersions function gets the FPGA version numbers. * @details \b Inputs: fpgaHeader * @details \b Outputs: none @@ -2552,6 +2584,32 @@ /*********************************************************************//** * @brief + * The getFPGACPARevolutionCountStatus function gets the current revolution of + * acid concentrate pump (down counter). + * @details \b Inputs: fpgaCPAStepCountStatus + * @details \b Outputs: none + * @return the current revolution of the acid concentrate pump + *************************************************************************/ +U16 getFPGACPARevolutionCountStatus( void ) +{ + return fpgaSensorReadings.fpgaCPAStepCountStatus; +} + +/*********************************************************************//** + * @brief + * The getFPGACPBRevolutionCountStatus function gets the current revolution of + * bicarb concentrate pump (down counter). + * @details \b Inputs: fpgaCPBStepCountStatus + * @details \b Outputs: none + * @return the current revolution of the bicarb concentrate pump + *************************************************************************/ +U16 getFPGACPBRevolutionCountStatus( void ) +{ + return fpgaSensorReadings.fpgaCPBStepCountStatus; +} + +/*********************************************************************//** + * @brief * The checkFPGAAFEOEFailure function increments the FPGA comm failure * windowed timer if an FE or OE error has occurred and returns whether * or not the number of failures in Index: firmware/App/Services/FpgaDD.h =================================================================== diff -u -r9102c5da21a15bdaf4bb3bc38795ceb064e3c443 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 9102c5da21a15bdaf4bb3bc38795ceb064e3c443) +++ firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -126,6 +126,8 @@ void setFPGABicarbPumpControl( U08 control ); void setFPGAAcidPumpParkCmd( void ); void setFPGABicarbPumpParkCmd( void ); +void setFPGACPARevolutionCount( U16 count ); +void setFPGACPBRevolutionCount( U16 count ); U08 getFPGAAcidPumpControlStatus( void ); U08 getFPGABicarbPumpControlStatus( void ); @@ -136,6 +138,8 @@ BOOL getFPGABicarbPumpParkFault( void ); U16 getFPGACPAHallSensePulseWidth( void ); U16 getFPGACPBHallSensePulseWidth( void ); +U16 getFPGACPARevolutionCountStatus( void ); +U16 getFPGACPBRevolutionCountStatus( void ); void setFPGASpentDialysatePumpSpeed( U16 speed ); void setFPGAFreshDialysatePumpSpeed( U16 speed ); Index: firmware/DD.dil =================================================================== diff -u -rd84f4cef21ceb1b61984e13ee5e6f51d5b69c162 -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/DD.dil (.../DD.dil) (revision d84f4cef21ceb1b61984e13ee5e6f51d5b69c162) +++ firmware/DD.dil (.../DD.dil) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -1,4 +1,4 @@ -# RM46L852PGE 11/27/24 18:27:15 +# RM46L852PGE 12/06/24 10:10:57 # ARCH=RM46L852PGE # @@ -5535,8 +5535,8 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_13_ID.VALUE=13 DRIVER.CAN.VAR.CAN_2_MESSAGE_8_ID.VALUE=8 DRIVER.ADC.VAR.ADC2_GROUP1_DISCHARGE_PRESCALER.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN21_ENABLE.VALUE=0x00200000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN13_ENABLE.VALUE=0x00002000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN21_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN13_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_ACTUAL_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC2_GROUP1_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC2_GROUP0_PIN3_ENABLE.VALUE=0x00000000 @@ -5558,7 +5558,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_SAMPLE_PRESCALER.VALUE=0 DRIVER.ADC.VAR.ADC1_GROUP1_LENGTH.VALUE=24 DRIVER.ADC.VAR.ADC2_GROUP1_ID_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP2_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP2_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC2_PORT_BIT0_DIR.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP1_PIN4_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN11_ENABLE.VALUE=0x00000000 @@ -5575,7 +5575,7 @@ DRIVER.ADC.VAR.ADC2_GROUP2_ACTUAL_SAMPLE_TIME.VALUE=384.60 DRIVER.ADC.VAR.ADC2_GROUP2_SAMPLE_PRESCALER.VALUE=2 DRIVER.ADC.VAR.ADC2_GROUP2_PIN12_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN18_ENABLE.VALUE=0x00040000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN18_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN8_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN11_ENABLE.VALUE=0x00000800 DRIVER.ADC.VAR.ADC1_BND.VALUE=2 @@ -5588,8 +5588,8 @@ DRIVER.ADC.VAR.ADC2_GROUP2_PIN5_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN8_ENABLE.VALUE=0x00000100 DRIVER.ADC.VAR.ADC1_GROUP1_ID_ENABLE.VALUE=0x00000020 -DRIVER.ADC.VAR.ADC1_GROUP1_EXTENDED_SAMPLE_TIME.VALUE=503.22 -DRIVER.ADC.VAR.ADC1_GROUP0_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP1_EXTENDED_SAMPLE_TIME.VALUE=500.00 +DRIVER.ADC.VAR.ADC1_GROUP0_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC2_GROUP0_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC1_GROUP1_PIN1_ENABLE.VALUE=0x00000002 DRIVER.ADC.VAR.ADC1_GROUP1_RESOLUTION.VALUE=12_BIT @@ -5622,7 +5622,7 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN12_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_PIN10_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN24_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN16_ENABLE.VALUE=0x00010000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN16_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_ACTUAL_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC2_GROUP0_PIN6_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_TRIGGER_MODE.VALUE=0x00000000 @@ -5642,7 +5642,7 @@ DRIVER.ADC.VAR.ADC2_RAMBASE.VALUE=0xFF3A0000 DRIVER.ADC.VAR.ADC2_GROUP0_BND.VALUE=8 DRIVER.ADC.VAR.ADC1_PORT_BIT0_DOUT.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_SCAN_TIME.VALUE=1112.885 +DRIVER.ADC.VAR.ADC1_GROUP1_SCAN_TIME.VALUE=576.923 DRIVER.ADC.VAR.ADC1_GROUP0_RESOLUTION.VALUE=12_BIT DRIVER.ADC.VAR.ADC2_GROUP2_FIFO_SIZE.VALUE=16 DRIVER.ADC.VAR.ADC2_GROUP1_PIN7_ENABLE.VALUE=0x00000000 @@ -5665,8 +5665,8 @@ DRIVER.ADC.VAR.ADC1_GROUP2_CONTINUOUS_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN10_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_PINS.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN22_ENABLE.VALUE=0x00400000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN14_ENABLE.VALUE=0x00004000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN22_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN14_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN4_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN18_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_PIN8_ENABLE.VALUE=0x00000000 @@ -5703,14 +5703,14 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN15_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_BND.VALUE=12 DRIVER.ADC.VAR.ADC2_GROUP2_PIN13_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN19_ENABLE.VALUE=0x00080000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN19_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_PORT_BIT0_DOUT.VALUE=0 DRIVER.ADC.VAR.ADC2_CYCLE_TIME.VALUE=100.00 DRIVER.ADC.VAR.ADC1_GROUP1_HW_TRIGGER_SOURCE.VALUE=EVENT DRIVER.ADC.VAR.ADC1_GROUP1_DISCHARGE_PRESCALER.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP0_PIN9_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_PRESCALE.VALUE=9 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN20_ENABLE.VALUE=0x00100000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN20_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN12_ENABLE.VALUE=0x00001000 DRIVER.ADC.VAR.ADC1_GROUP0_RAM_PARITY_ENA.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP0_SAMPLE_TIME.VALUE=300.00 @@ -5726,7 +5726,7 @@ DRIVER.ADC.VAR.ADC1_PORT_BIT0_PDR.VALUE=0 DRIVER.ADC.VAR.ADC1_GROUP1_SAMPLE_TIME.VALUE=300.00 DRIVER.ADC.VAR.ADC1_GROUP1_PIN2_ENABLE.VALUE=0x00000004 -DRIVER.ADC.VAR.ADC1_GROUP1_CONVERSION_TIME.VALUE=3.271 +DRIVER.ADC.VAR.ADC1_GROUP1_CONVERSION_TIME.VALUE=3.250 DRIVER.ADC.VAR.ADC1_GROUP0_FIFO_SIZE.VALUE=0 DRIVER.ADC.VAR.ADC1_PORT_BIT0_PULL.VALUE=2 DRIVER.ADC.VAR.ADC1_GROUP0_LENGTH.VALUE=0 @@ -5739,12 +5739,12 @@ DRIVER.ADC.VAR.ADC1_GROUP0_PIN6_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_SCAN_TIME.VALUE=0.000 DRIVER.ADC.VAR.ADC2_GROUP1_HW_TRIGGER_SOURCE.VALUE=EVENT -DRIVER.ADC.VAR.ADC1_GROUP1_CHANNEL_TOTAL_TIME.VALUE=91.694165 -DRIVER.ADC.VAR.ADC1_GROUP0_EXTENDED_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP1_CHANNEL_TOTAL_TIME.VALUE=49.326923 +DRIVER.ADC.VAR.ADC1_GROUP0_EXTENDED_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC1_GROUP0_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP1_PIN14_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_PORT_BIT0_PSL.VALUE=1 -DRIVER.ADC.VAR.ADC1_GROUP2_EXTENDED_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP2_EXTENDED_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC2_GROUP1_LENGTH.VALUE=16 DRIVER.ADC.VAR.ADC1_GROUP1_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC1_GROUP2_PIN3_ENABLE.VALUE=0x00000000 @@ -5754,7 +5754,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP2_PIN11_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_CONTINUOUS_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN17_ENABLE.VALUE=0x00020000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN17_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_ACTUAL_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC2_GROUP0_PIN7_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN10_ENABLE.VALUE=0x00000400 @@ -5772,7 +5772,7 @@ DRIVER.ADC.VAR.ADC1_GROUP0_ID_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP2_DISCHARGE_TIME.VALUE=0.00 DRIVER.ADC.VAR.ADC1_GROUP2_SCAN_TIME.VALUE=0.000 -DRIVER.ADC.VAR.ADC1_GROUP1_PINS.VALUE=24 +DRIVER.ADC.VAR.ADC1_GROUP1_PINS.VALUE=13 DRIVER.ADC.VAR.ADC1_GROUP1_TRIGGER_EDGE_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_ALT_TRIG_COMP.VALUE=1 DRIVER.ADC.VAR.ADC1_GROUP0_CONTINUOUS_ENABLE.VALUE=0x00000000 @@ -5791,8 +5791,8 @@ DRIVER.ADC.VAR.ADC1_GROUP2_PIN1_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN11_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_SCAN_TIME.VALUE=0.000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN23_ENABLE.VALUE=0x00800000 -DRIVER.ADC.VAR.ADC1_GROUP1_PIN15_ENABLE.VALUE=0x00008000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN23_ENABLE.VALUE=0x00000000 +DRIVER.ADC.VAR.ADC1_GROUP1_PIN15_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_HW_TRIGGER_SOURCE.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP0_PIN5_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN19_ENABLE.VALUE=0x00000000 Index: firmware/source/adc.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r837e86dd59014bd075bc39839c8b4b6324288880 --- firmware/source/adc.c (.../adc.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/source/adc.c (.../adc.c) (revision 837e86dd59014bd075bc39839c8b4b6324288880) @@ -245,17 +245,6 @@ 0x00000400U | 0x00000800U | 0x00001000U | - 0x00002000U | - 0x00004000U | - 0x00008000U | - 0x00010000U | - 0x00020000U | - 0x00040000U | - 0x00080000U | - 0x00100000U | - 0x00200000U | - 0x00400000U | - 0x00800000U, 0x00000000U | 0x00000000U | 0x00000000U | @@ -266,6 +255,7 @@ 0x00000000U | 0x00000000U | 0x00000000U | + 0x00000000U, 0x00000000U | 0x00000000U | 0x00000000U | @@ -279,6 +269,16 @@ 0x00000000U | 0x00000000U | 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | + 0x00000000U | 0x00000000U}, {0x00000000U | 0x00000000U |