Index: firmware/.launches/HD.launch
===================================================================
diff -u -r4b22b45e775c0525bc1d76e83e265af91a59785e -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/.launches/HD.launch (.../HD.launch) (revision 4b22b45e775c0525bc1d76e83e265af91a59785e)
+++ firmware/.launches/HD.launch (.../HD.launch) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -4,7 +4,7 @@
-
+
Index: firmware/App/Controllers/BloodFlow.c
===================================================================
diff -u -r3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9 -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9)
+++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -52,8 +52,8 @@
#define MIN_BLOOD_PUMP_PWM_DUTY_CYCLE 0.12 ///< controller will error if PWM duty cycle < 10%, so set min to 12%
#define BP_CONTROL_INTERVAL ( 10000 / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the blood pump is controlled
-#define BP_P_COEFFICIENT 0.00005 ///< P term for blood pump control
-#define BP_I_COEFFICIENT 0.00015 ///< I term for blood pump control
+#define BP_P_COEFFICIENT 0.00035 ///< P term for blood pump control
+#define BP_I_COEFFICIENT 0.00035 ///< I term for blood pump control
#define BP_HOME_RATE 100 ///< target pump speed (in estimate mL/min) for homing.
#define BP_HOME_TIMEOUT_MS 10000 ///< maximum time allowed for homing to complete (in ms).
@@ -81,7 +81,7 @@
#define BP_REV_PER_LITER 150.24 ///< rotor revolutions per liter
#define BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( BP_REV_PER_LITER / ML_PER_LITER ) ///< conversion factor from mL/min to motor RPM.
#define BP_GEAR_RATIO 32.0 ///< blood pump motor to blood pump gear ratio
-#define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00035 ///< ~28 BP motor RPM = 1% PWM duty cycle
+#define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00028 //308 ///< ~28 BP motor RPM = 1% PWM duty cycle
#define BP_PWM_ZERO_OFFSET 0.1 ///< 10% PWM duty cycle = zero speed
#define BP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * BP_GEAR_RATIO * BP_MOTOR_RPM_TO_PWM_DC_FACTOR + BP_PWM_ZERO_OFFSET ) ///< conversion factor from mL/min to estimated PWM duty cycle %.
@@ -363,7 +363,7 @@
{
U16 bpRPM = getIntADCReading( INT_ADC_BLOOD_PUMP_SPEED );
U16 bpmA = getIntADCReading( INT_ADC_BLOOD_PUMP_MOTOR_CURRENT );
- F32 bpFlow = ( getFPGABloodFlow() + bloodFlowCalOffset ) * bloodFlowCalGain;
+ F32 bpFlow = ( ( getFPGABloodFlow() * -1.0 ) * bloodFlowCalGain ) + bloodFlowCalOffset; // blood flow sensor installed backwards on HD
adcBloodPumpMCSpeedRPM.data = (F32)(SIGN_FROM_12_BIT_VALUE(bpRPM)) * BP_SPEED_ADC_TO_RPM_FACTOR;
adcBloodPumpMCCurrentmA.data = (F32)(SIGN_FROM_12_BIT_VALUE(bpmA)) * BP_CURRENT_ADC_TO_MA_FACTOR;
@@ -1228,17 +1228,16 @@
{
CALIBRATION_DATA_T cal;
- if ( TRUE == getCalibrationData( &cal ) )
- { // keep locally and apply immediately
- bloodFlowCalGain = gain;
- bloodFlowCalOffset = offset;
- // also update calibration record in non-volatile memory
- cal.bloodFlowGain = gain;
- cal.bloodFlowOffset_mL_min = offset;
- if ( TRUE == setCalibrationData( cal ) )
- {
- result = TRUE;
- }
+ getCalibrationData( &cal );
+ // keep locally and apply immediately
+ bloodFlowCalGain = gain;
+ bloodFlowCalOffset = offset;
+ // also update calibration record in non-volatile memory
+ cal.bloodFlowGain = gain;
+ cal.bloodFlowOffset_mL_min = offset;
+ if ( TRUE == setCalibrationData( cal ) )
+ {
+ result = TRUE;
}
}
Index: firmware/App/Controllers/DialInFlow.c
===================================================================
diff -u -r3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9 -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9)
+++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -49,8 +49,8 @@
#define MIN_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.12 ///< controller will error if PWM duty cycle < 10%, so set min to 12%
#define DIP_CONTROL_INTERVAL ( 10000 / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the dialIn pump is controlled
-#define DIP_P_COEFFICIENT 0.00005 ///< P term for dialIn pump control
-#define DIP_I_COEFFICIENT 0.00015 ///< I term for dialIn pump control
+#define DIP_P_COEFFICIENT 0.00035 ///< P term for dialIn pump control
+#define DIP_I_COEFFICIENT 0.00035 ///< I term for dialIn pump control
#define DIP_HOME_RATE 100 ///< target pump speed (in estimate mL/min) for homing.
#define DIP_HOME_TIMEOUT_MS 10000 ///< maximum time allowed for homing to complete (in ms).
@@ -78,7 +78,7 @@
#define DIP_REV_PER_LITER 150.24 ///< rotor revolutions per liter
#define DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( DIP_REV_PER_LITER / ML_PER_LITER ) ///<
#define DIP_GEAR_RATIO 32.0 ///< dialIn pump motor to dialIn pump gear ratio
-#define DIP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00035 ///< ~28 BP motor RPM = 1% PWM duty cycle
+#define DIP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00028 //308 ///< ~28 BP motor RPM = 1% PWM duty cycle
#define DIP_PWM_ZERO_OFFSET 0.1 ///< 10% PWM duty cycle = zero speed
#define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR + DIP_PWM_ZERO_OFFSET ) ///<
@@ -360,7 +360,7 @@
{
U16 dipRPM = getIntADCReading( INT_ADC_DIAL_IN_PUMP_SPEED );
U16 dipmA = getIntADCReading( INT_ADC_DIAL_IN_PUMP_MOTOR_CURRENT );
- F32 dipFlow = ( getFPGADialysateFlow() + dialInFlowCalOffset ) * dialInFlowCalGain;
+ F32 dipFlow = ( getFPGADialysateFlow() * dialInFlowCalGain ) + dialInFlowCalOffset;
adcDialInPumpMCSpeedRPM.data = (F32)(SIGN_FROM_12_BIT_VALUE(dipRPM)) * DIP_SPEED_ADC_TO_RPM_FACTOR;
adcDialInPumpMCCurrentmA.data = (F32)(SIGN_FROM_12_BIT_VALUE(dipmA)) * DIP_CURRENT_ADC_TO_MA_FACTOR;
@@ -1199,17 +1199,16 @@
{
CALIBRATION_DATA_T cal;
- if ( TRUE == getCalibrationData( &cal ) )
- { // keep locally and apply immediately
- dialInFlowCalGain = gain;
- dialInFlowCalOffset = offset;
- // also update calibration record in non-volatile memory
- cal.dialysateFlowGain = gain;
- cal.dialysateFlowOffset_mL_min = offset;
- if ( TRUE == setCalibrationData( cal ) )
- {
- result = TRUE;
- }
+ getCalibrationData( &cal );
+ // keep locally and apply immediately
+ dialInFlowCalGain = gain;
+ dialInFlowCalOffset = offset;
+ // also update calibration record in non-volatile memory
+ cal.dialysateFlowGain = gain;
+ cal.dialysateFlowOffset_mL_min = offset;
+ if ( TRUE == setCalibrationData( cal ) )
+ {
+ result = TRUE;
}
}
Index: firmware/App/Modes/Dialysis.c
===================================================================
diff -u -rc0273c73da6b6dee4ad6f1d54cb6c6f27a262b5b -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision c0273c73da6b6dee4ad6f1d54cb6c6f27a262b5b)
+++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -166,8 +166,8 @@
{
lastUFTimeStamp = getMSTimerCount();
setDialOutUFVolumes( refUFVolume, measUFVolume );
- setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP );
- setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP );
+ setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP );
+ setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP );
setDialOutPumpTargetRate( setDialysateFlowRate + (S32)setUFRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP );
// TODO - Heparin pump
}
Index: firmware/App/Services/FPGA.c
===================================================================
diff -u -r3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9 -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9)
+++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -47,7 +47,7 @@
} FPGA_STATE_T;
#define FPGA_PAGE_SIZE 256 ///< FPGA register pages are 256 bytes.
-#define FPGA_EXPECTED_ID 0x59 ///< Expected ID for HD FPGA.
+#define FPGA_EXPECTED_ID 0x5A ///< Expected ID for HD FPGA.
#define FPGA_HEADER_START_ADDR 0x0000 ///< Start address for FPGA header data.
#define FPGA_BULK_READ_START_ADDR 0x0100 ///< Start address for FPGA continuous priority reads.
Index: firmware/App/Services/SystemCommMessages.c
===================================================================
diff -u -r3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9 -rf4545d449a2a2f9353307a55d2bce9e150591c3d
--- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3ded5ffcbcade3f1da5d40c52936ab5f97fc6ec9)
+++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d)
@@ -689,7 +689,7 @@
payload.yTilt = yt;
payload.zTilt = zt;
- memcpy( payloadPtr, &payload, sizeof( MSG_ID_HD_ACCELEROMETER_DATA ) );
+ memcpy( payloadPtr, &payload, sizeof( HD_ACCEL_DATA_PAYLOAD_T ) );
// serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer
result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_BROADCAST, ACK_NOT_REQUIRED );