Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r5e85dc21e918ecdae841f8398bca20ff8823c52b -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 5e85dc21e918ecdae841f8398bca20ff8823c52b) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -49,10 +49,11 @@ #define MAX_BLOOD_PUMP_PWM_DUTY_CYCLE 0.89 ///< Controller will error if PWM duty cycle > 90%, so set max to 89% #define MIN_BLOOD_PUMP_PWM_DUTY_CYCLE 0.10 ///< Controller will error if PWM duty cycle < 10%, so set min to 10% +#define BP_CONTROL_INTERVAL_SEC 10 ///< Blood pump control interval (in seconds). /// Interval (ms/task time) at which the blood pump is controlled. -static const U32 BP_CONTROL_INTERVAL = ( 10000 / TASK_GENERAL_INTERVAL ); -#define BP_P_COEFFICIENT 0.00035 ///< P term for blood pump control -#define BP_I_COEFFICIENT 0.00035 ///< I term for blood pump control +static const U32 BP_CONTROL_INTERVAL = ( BP_CONTROL_INTERVAL_SEC * MS_PER_SECOND / TASK_GENERAL_INTERVAL ); +#define BP_P_COEFFICIENT 0.0001 ///< P term for blood pump control +#define BP_I_COEFFICIENT 0.00075 ///< 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). @@ -85,7 +86,7 @@ #ifndef V2_0_SYSTEM #define BP_SPEED_ADC_TO_RPM_FACTOR 1.751752 ///< Conversion factor from ADC counts to RPM for blood pump motor - #define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00025 ///< ~40 BP motor RPM = 1% PWM duty cycle + #define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.000238 ///< ~42 BP motor RPM = 1% PWM duty cycle #else #define BP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for blood pump motor #define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.0003125 ///< ~32 BP motor RPM = 1% PWM duty cycle @@ -107,7 +108,7 @@ #define SIZE_OF_ROLLING_AVG ( ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) * 10 ) /// Blood flow sensor signal strength low alarm persistence. -#define FLOW_SIG_STRGTH_ALARM_PERSIST ( 5 * MS_PER_SECOND ) +#define FLOW_SIG_STRGTH_ALARM_PERSIST ( BP_CONTROL_INTERVAL_SEC * MS_PER_SECOND ) #define MIN_FLOW_SIG_STRENGTH 0.9 ///< Minimum flow sensor signal strength (90%). /// Blood flow fast read timeout alarm persistence. @@ -247,15 +248,15 @@ BP_P_COEFFICIENT, BP_I_COEFFICIENT, MIN_BLOOD_PUMP_PWM_DUTY_CYCLE, MAX_BLOOD_PUMP_PWM_DUTY_CYCLE ); - // Initialize persistent alarm for flow sensor + // Initialize persistent alarm for flow sensor signal strength too low initPersistentAlarm( ALARM_ID_BLOOD_PUMP_FLOW_VS_MOTOR_SPEED_CHECK, 0, BP_FLOW_VS_SPEED_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_OFF_CHECK, 0, BP_OFF_ERROR_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK, 0, BP_MOTOR_SPEED_ERROR_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_ROTOR_SPEED_CHECK, 0, BP_ROTOR_SPEED_ERROR_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_MC_DIRECTION_CHECK, 0, BP_DIRECTION_ERROR_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_ROTOR_SPEED_TOO_HIGH, 0, BP_MAX_ROTOR_SPEED_ERROR_PERSIST ); - initPersistentAlarm( ALARM_ID_BLOOD_FLOW_SIGNAL_STRENGTH_TOO_LOW, 0, FLOW_SIG_STRGTH_ALARM_PERSIST ); initPersistentAlarm( ALARM_ID_BLOOD_PUMP_MC_CURRENT_CHECK, 0, BP_MAX_CURR_ERROR_DURATION_MS ); + initPersistentAlarm( ALARM_ID_BLOOD_FLOW_SIGNAL_STRENGTH_TOO_LOW, FLOW_SIG_STRGTH_ALARM_PERSIST, FLOW_SIG_STRGTH_ALARM_PERSIST ); initPersistentAlarm( ALARM_ID_HD_BP_FLOW_READ_TIMEOUT_ERROR, 0, BLOOD_FLOW_FAST_READ_TO_PERSIST ); initPersistentAlarm( ALARM_ID_HD_BP_FLOW_SLOW_READ_TIMEOUT_ERROR, 0, BLOOD_FLOW_SLOW_READ_TO_PERSIST ); initPersistentAlarm( ALARM_ID_HD_BP_FLOW_SENSOR_ERROR, 0, BLOOD_FLOW_COMM_ERROR_PERSIST ); @@ -279,8 +280,10 @@ // Direction change while pump is running is not allowed if ( ( FALSE == isBloodPumpOn ) || ( 0 == flowRate ) || ( dir == bloodPumpDirectionSet ) ) { +#ifndef NO_PUMP_FLOW_LIMITS // Verify flow rate - if ( flowRate <= MAX_BLOOD_FLOW_RATE ) + if ( flowRate <= MAX_BLOOD_FLOW_RATE ) +#endif { resetBloodFlowMovingAverage(); targetBloodFlowRate = ( dir == MOTOR_DIR_FORWARD ? (S32)flowRate : (S32)flowRate * -1 ); @@ -319,10 +322,12 @@ } result = TRUE; } +#ifndef NO_PUMP_FLOW_LIMITS else // Requested flow rate too high { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_BLOOD_FLOW_SET_TOO_HIGH, flowRate ) - } + } +#endif } return result; @@ -594,14 +599,11 @@ else if ( bloodPumpPWMDutyCyclePctSet >= bloodPumpPWMDutyCyclePct ) { resetBloodFlowMovingAverage(); + bloodPumpPWMDutyCyclePctSet = bloodPumpPWMDutyCyclePct; resetPIController( PI_CONTROLLER_ID_BLOOD_FLOW, bloodPumpPWMDutyCyclePctSet ); bloodPumpControlModeSet = bloodPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( bloodPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) - { - bloodPumpPWMDutyCyclePctSet = bloodPumpPWMDutyCyclePct; - setBloodPumpControlSignalPWM( bloodPumpPWMDutyCyclePct ); - } + setBloodPumpControlSignalPWM( bloodPumpPWMDutyCyclePct ); + bpControlTimerCounter = 0; result = BLOOD_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp up @@ -636,14 +638,11 @@ else if ( bloodPumpPWMDutyCyclePctSet <= bloodPumpPWMDutyCyclePct ) { resetBloodFlowMovingAverage(); + bloodPumpPWMDutyCyclePctSet = bloodPumpPWMDutyCyclePct; resetPIController( PI_CONTROLLER_ID_BLOOD_FLOW, bloodPumpPWMDutyCyclePctSet ); bloodPumpControlModeSet = bloodPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( bloodPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) - { - bloodPumpPWMDutyCyclePctSet = bloodPumpPWMDutyCyclePct; - setBloodPumpControlSignalPWM( bloodPumpPWMDutyCyclePct ); - } + setBloodPumpControlSignalPWM( bloodPumpPWMDutyCyclePct ); + bpControlTimerCounter = 0; result = BLOOD_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp down @@ -1280,6 +1279,7 @@ * TEST SUPPORT FUNCTIONS *************************************************************************/ + /*********************************************************************//** * @brief * The testSetBloodFlowDataPublishIntervalOverride function overrides the Index: firmware/App/Controllers/Bubble.c =================================================================== diff -u -r5e650bc96230e209560abfe290f1ec93e1667d82 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision 5e650bc96230e209560abfe290f1ec93e1667d82) +++ firmware/App/Controllers/Bubble.c (.../Bubble.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -194,6 +194,7 @@ bubblesStatus[ bubble ].data = BUBBLE_DETECTED; } +#ifndef DISABLE_BUBBLE_ALARMS // Check status reading and act upon if ( BUBBLE_DETECTED == getBubbleStatus( bubble ) ) { @@ -245,6 +246,7 @@ clearAlarmCondition( ALARM_ID_HD_VENOUS_BUBBLE_DETECTED ); } } +#endif if ( TRUE == bubblesSelfTestRequested[ bubble ] ) { Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -42,17 +42,18 @@ // ********** private definitions ********** /// Interval (ms/task time) at which the dialIn flow data is published on the CAN bus. -#define DIAL_IN_FLOW_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) +#define DIAL_IN_FLOW_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) -#define MAX_DIAL_IN_PUMP_PWM_STEP_UP_CHANGE 0.0133 ///< Max duty cycle change when ramping up ~ 200 mL/min/s. -#define MAX_DIAL_IN_PUMP_PWM_STEP_DN_CHANGE 0.02 ///< Max duty cycle change when ramping down ~ 300 mL/min/s. -#define MAX_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.89 ///< Controller will error if PWM duty cycle > 90%, so set max to 89%. -#define MIN_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.10 ///< Controller will error if PWM duty cycle < 10%, so set min to 10%. +#define MAX_DIAL_IN_PUMP_PWM_STEP_UP_CHANGE 0.0133 ///< Max duty cycle change when ramping up ~ 200 mL/min/s. +#define MAX_DIAL_IN_PUMP_PWM_STEP_DN_CHANGE 0.02 ///< Max duty cycle change when ramping down ~ 300 mL/min/s. +#define MAX_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.89 ///< Controller will error if PWM duty cycle > 90%, so set max to 89%. +#define MIN_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.10 ///< Controller will error if PWM duty cycle < 10%, so set min to 10%. +#define DIP_CONTROL_INTERVAL_SEC 10 ///< Dialysate inlet pump control interval (in seconds). /// Interval (ms/task time) at which the dialIn pump is controlled. -static const U32 DIP_CONTROL_INTERVAL = ( 10000 / TASK_GENERAL_INTERVAL ); -#define DIP_P_COEFFICIENT 0.00035 ///< P term for dialIn pump control. -#define DIP_I_COEFFICIENT 0.00035 ///< I term for dialIn pump control. +static const U32 DIP_CONTROL_INTERVAL = ( DIP_CONTROL_INTERVAL_SEC * MS_PER_SECOND / TASK_GENERAL_INTERVAL ); +#define DIP_P_COEFFICIENT 0.0001 ///< P term for dialIn pump control. +#define DIP_I_COEFFICIENT 0.00075 ///< 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). @@ -85,9 +86,9 @@ #ifndef V2_0_SYSTEM #define DIP_SPEED_ADC_TO_RPM_FACTOR 1.751752 ///< Conversion factor from ADC counts to RPM for dialIn pump motor. - #define DIP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00025 ///< ~40 BP motor RPM = 1% PWM duty cycle + #define DIP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.000193 ///< ~52 BP motor RPM = 1% PWM duty cycle #else - #define DIP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for blood pump motor + #define DIP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for dialIn pump motor #define DIP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.0003125 ///< ~32 BP motor RPM = 1% PWM duty cycle #endif #define DIP_CURRENT_ADC_TO_MA_FACTOR 3.002 ///< Conversion factor from ADC counts to mA for dialIn pump motor. @@ -106,7 +107,7 @@ #define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DIAL_IN_PUMP_ADC_ZERO ) /// Measured dialIn flow is filtered w/ moving average. -#define SIZE_OF_ROLLING_AVG ( ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) * 10 ) +#define SIZE_OF_ROLLING_AVG ( ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) * DIP_CONTROL_INTERVAL_SEC ) /// Dialysate flow sensor signal strength low alarm persistence. #define FLOW_SIG_STRGTH_ALARM_PERSIST ( 5 * MS_PER_SECOND ) @@ -280,8 +281,10 @@ // Direction change while pump is running is not allowed if ( ( FALSE == isDialInPumpOn ) || ( 0 == flowRate ) || ( dir == dialInPumpDirectionSet ) ) { +#ifndef NO_PUMP_FLOW_LIMITS // Verify flow rate - if ( flowRate <= MAX_DIAL_IN_FLOW_RATE ) + if ( flowRate <= MAX_DIAL_IN_FLOW_RATE ) +#endif { resetDialInFlowMovingAverage(); targetDialInFlowRate = ( dir == MOTOR_DIR_FORWARD ? (S32)flowRate : (S32)flowRate * -1 ); @@ -320,10 +323,12 @@ } result = TRUE; } +#ifndef NO_PUMP_FLOW_LIMITS else // Requested flow rate too high { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DIAL_IN_FLOW_SET_TOO_HIGH, flowRate ) - } + } +#endif } return result; @@ -566,14 +571,11 @@ else if ( dialInPumpPWMDutyCyclePctSet >= dialInPumpPWMDutyCyclePct ) { resetDialInFlowMovingAverage(); + dialInPumpPWMDutyCyclePctSet = dialInPumpPWMDutyCyclePct; resetPIController( PI_CONTROLLER_ID_DIALYSATE_FLOW, dialInPumpPWMDutyCyclePctSet ); dialInPumpControlModeSet = dialInPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( dialInPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) - { - dialInPumpPWMDutyCyclePctSet = dialInPumpPWMDutyCyclePct; - setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePct ); - } + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePct ); + dipControlTimerCounter = 0; result = DIAL_IN_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp up @@ -608,14 +610,11 @@ else if ( dialInPumpPWMDutyCyclePctSet <= dialInPumpPWMDutyCyclePct ) { resetDialInFlowMovingAverage(); + dialInPumpPWMDutyCyclePctSet = dialInPumpPWMDutyCyclePct; resetPIController( PI_CONTROLLER_ID_DIALYSATE_FLOW, dialInPumpPWMDutyCyclePctSet ); dialInPumpControlModeSet = dialInPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( dialInPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) - { - dialInPumpPWMDutyCyclePctSet = dialInPumpPWMDutyCyclePct; - setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePct ); - } + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePct ); + dipControlTimerCounter = 0; result = DIAL_IN_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp down @@ -880,6 +879,19 @@ } return result; +} + +/*********************************************************************//** + * @brief + * The getDialInPumpPWMDutyCyclePct function gets the current dialIn pump + * PWM duty cycle percentage. + * @details Inputs: dialInPumpPWMDutyCyclePctSet + * @details Outputs: none + * @return the current dialIn pump PWM duty cycle percentage (0..1). + *************************************************************************/ +F32 getDialInPumpPWMDutyCyclePct( void ) +{ + return dialInPumpPWMDutyCyclePctSet; } /*********************************************************************//** Index: firmware/App/Controllers/DialOutFlow.c =================================================================== diff -u -r5e85dc21e918ecdae841f8398bca20ff8823c52b -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 5e85dc21e918ecdae841f8398bca20ff8823c52b) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -44,16 +44,18 @@ #define MAX_DIAL_OUT_FLOW_RATE 650 ///< Maximum dialysate outlet pump flow rate in mL/min. #define MIN_DIAL_OUT_FLOW_RATE 100 ///< Minimum dialysate outlet pump flow rate in mL/min. -#define DPO_FLOW_ADJ_DUE_TO_HIGHER_INLET_PRES 1.200 ///< Adjustment factor to account for higher pump inlet pressure (than DPi pump inlet). #define MAX_DIAL_OUT_PUMP_PWM_STEP_UP_CHANGE 0.0133 ///< Maximum duty cycle change when ramping up ~ 200 mL/min/s. #define MAX_DIAL_OUT_PUMP_PWM_STEP_DN_CHANGE 0.02 ///< Maximum duty cycle change when ramping down ~ 300 mL/min/s. #define MAX_DIAL_OUT_PUMP_PWM_DUTY_CYCLE 0.89 ///< Controller will error if PWM duty cycle > 90%, so set max to 89%. #define MIN_DIAL_OUT_PUMP_PWM_DUTY_CYCLE 0.10 ///< Controller will error if PWM duty cycle < 10%, so set min to 10%. +#define MAX_DIAL_OUT_PUMP_PWM_OFFSET_CONTROL 0.4 ///< Maximum PWM offset (added to DPi PWM duty cycle). +#define MIN_DIAL_OUT_PUMP_PWM_OFFSET_CONTROL -0.4 ///< Minimum PWM offset (added to DPi PWM duty cycle). +#define DOP_CONTROL_INTERVAL_SEC 5 ///< Dialysate outlet pump control interval (in seconds). /// Interval (ms/task time) at which the dialysate outlet pump is controlled. -static const U32 DOP_CONTROL_INTERVAL = ( 2000 / TASK_GENERAL_INTERVAL ); -#define DOP_P_COEFFICIENT 0.0050 ///< P term for dialysate outlet pump control. +static const U32 DOP_CONTROL_INTERVAL = ( DOP_CONTROL_INTERVAL_SEC * MS_PER_SECOND / TASK_GENERAL_INTERVAL ); +#define DOP_P_COEFFICIENT 0.0010 ///< P term for dialysate outlet pump control. #define DOP_I_COEFFICIENT 0.0001 ///< I term for dialysate outlet pump control. #define DOP_HOME_RATE 100 ///< Target pump speed (in estimate mL/min) for homing. @@ -83,11 +85,12 @@ #ifndef V2_0_SYSTEM #define DOP_SPEED_ADC_TO_RPM_FACTOR 1.751752 ///< Conversion factor from ADC counts to RPM for dialysate outlet pump motor. - #define DOP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00025 ///< ~40 BP motor RPM = 1% PWM duty cycle + #define DOP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.000193 ///< ~52 BP motor RPM = 1% PWM duty cycle #else #define DOP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for blood pump motor #define DOP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.0003125 ///< ~32 BP motor RPM = 1% PWM duty cycle #endif +#define UF_PWM_DC_PCT_PER_ML_PER_MIN 0.004 ///< Estimated DPo PWM duty cycle amount per each mL/min of ultrafiltration desired. #define DOP_CURRENT_ADC_TO_MA_FACTOR 3.002 ///< Conversion factor from ADC counts to mA for dialysate outlet pump motor. #define DOP_ADC_FULL_SCALE_V 3.0 ///< DPo analog signals are 0-3V (while int. ADC ref V may be different). #define DOP_ADC_ZERO 1998 ///< Mid-point (zero) for ADC readings. @@ -214,9 +217,8 @@ } // Initialize dialysate outlet flow PI controller - initializePIController( PI_CONTROLLER_ID_ULTRAFILTRATION, MIN_DIAL_OUT_PUMP_PWM_DUTY_CYCLE, - DOP_P_COEFFICIENT, DOP_I_COEFFICIENT, - MIN_DIAL_OUT_PUMP_PWM_DUTY_CYCLE, MAX_DIAL_OUT_PUMP_PWM_DUTY_CYCLE ); + initializePIController( PI_CONTROLLER_ID_ULTRAFILTRATION, 0.0, DOP_P_COEFFICIENT, DOP_I_COEFFICIENT, + MIN_DIAL_OUT_PUMP_PWM_OFFSET_CONTROL, MAX_DIAL_OUT_PUMP_PWM_OFFSET_CONTROL ); } /*********************************************************************//** @@ -237,15 +239,13 @@ // Direction change while pump is running is not allowed if ( ( FALSE == isDialOutPumpOn ) || ( 0 == flowRate ) || ( dir == dialOutPumpDirectionSet ) ) { +#ifndef NO_PUMP_FLOW_LIMITS // Verify flow rate if ( flowRate <= MAX_DIAL_OUT_FLOW_RATE ) +#endif { F32 adjFlow = (F32)flowRate; - if ( PUMP_CONTROL_MODE_CLOSED_LOOP == mode ) - { - adjFlow *= DPO_FLOW_ADJ_DUE_TO_HIGHER_INLET_PRES; - } lastGivenRate = flowRate; dialOutPumpDirection = dir; dialOutPumpControlMode = mode; @@ -283,10 +283,12 @@ } result = TRUE; } +#ifndef NO_PUMP_FLOW_LIMITS else // Requested flow rate too high { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DIAL_OUT_FLOW_SET_TOO_HIGH, flowRate ) } +#endif } return result; @@ -511,14 +513,18 @@ // Have we reached end of ramp up? else if ( dialOutPumpPWMDutyCyclePctSet >= dialOutPumpPWMDutyCyclePct ) { - resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, dialOutPumpPWMDutyCyclePctSet ); - dialOutPumpControlModeSet = dialOutPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( dialOutPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) + dialOutPumpPWMDutyCyclePctSet = dialOutPumpPWMDutyCyclePct; + if ( dialOutPumpControlMode == PUMP_CONTROL_MODE_OPEN_LOOP ) { - dialOutPumpPWMDutyCyclePctSet = dialOutPumpPWMDutyCyclePct; - setDialOutPumpControlSignalPWM( dialOutPumpPWMDutyCyclePct ); + resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, dialOutPumpPWMDutyCyclePctSet ); } + else + { // Closed loop UF control is only controlling offset from DPi PWM + resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, (F32)( (S32)lastGivenRate - getTargetDialInFlowRate() ) * UF_PWM_DC_PCT_PER_ML_PER_MIN ); + } + dialOutPumpControlModeSet = dialOutPumpControlMode; + setDialOutPumpControlSignalPWM( dialOutPumpPWMDutyCyclePctSet ); + dopControlTimerCounter = 0; result = DIAL_OUT_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp up @@ -552,14 +558,18 @@ // Have we reached end of ramp down? else if ( dialOutPumpPWMDutyCyclePctSet <= dialOutPumpPWMDutyCyclePct ) { - resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, dialOutPumpPWMDutyCyclePctSet ); - dialOutPumpControlModeSet = dialOutPumpControlMode; - // If open loop mode, set PWM to requested duty cycle where it will stay during control state - if ( dialOutPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) + dialOutPumpPWMDutyCyclePctSet = dialOutPumpPWMDutyCyclePct; + if ( ( dialOutPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) || ( 0 == lastGivenRate ) ) { - dialOutPumpPWMDutyCyclePctSet = dialOutPumpPWMDutyCyclePct; - setDialOutPumpControlSignalPWM( dialOutPumpPWMDutyCyclePct ); + resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, dialOutPumpPWMDutyCyclePctSet ); } + else + { // Closed loop UF control is only controlling offset from DPi PWM + resetPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, (F32)( (S32)lastGivenRate - getTargetDialInFlowRate() ) * UF_PWM_DC_PCT_PER_ML_PER_MIN ); + } + dialOutPumpControlModeSet = dialOutPumpControlMode; + setDialOutPumpControlSignalPWM( dialOutPumpPWMDutyCyclePct ); + dopControlTimerCounter = 0; result = DIAL_OUT_PUMP_CONTROL_TO_TARGET_STATE; } // Continue ramp down @@ -591,22 +601,17 @@ { F32 refVol = getTotalTargetDialOutUFVolumeInMl(); F32 totVol = getTotalMeasuredUFVolumeInMl(); - F32 newPWMDutyCyclePct; - F32 deltaPWMDutyCyclePct; + F32 offsetPWMDutyCyclePct; - // Get new PWM from PI controller - newPWMDutyCyclePct = runPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, refVol, totVol ); - // Limit PWM change to max - deltaPWMDutyCyclePct = newPWMDutyCyclePct - dialOutPumpPWMDutyCyclePctSet; - if ( fabs( deltaPWMDutyCyclePct ) > MAX_DIAL_OUT_PUMP_PWM_STEP_UP_CHANGE ) - { - newPWMDutyCyclePct = ( deltaPWMDutyCyclePct < 0.0 ? \ - dialOutPumpPWMDutyCyclePctSet - MAX_DIAL_OUT_PUMP_PWM_STEP_UP_CHANGE : \ - dialOutPumpPWMDutyCyclePctSet + MAX_DIAL_OUT_PUMP_PWM_STEP_UP_CHANGE ); - } - // Set new PWM - dialOutPumpPWMDutyCyclePctSet = newPWMDutyCyclePct; - setDialOutPumpControlSignalPWM( newPWMDutyCyclePct ); + // Get new PWM offset from PI controller + offsetPWMDutyCyclePct = runPIController( PI_CONTROLLER_ID_ULTRAFILTRATION, refVol, totVol ); + // Add PWM offset to DPi PWM mirror for our new DPo PWM + dialOutPumpPWMDutyCyclePctSet = getDialInPumpPWMDutyCyclePct() + offsetPWMDutyCyclePct; + // Limit PWM range + dialOutPumpPWMDutyCyclePctSet = MIN( dialOutPumpPWMDutyCyclePctSet, MAX_DIAL_OUT_PUMP_PWM_DUTY_CYCLE ); + dialOutPumpPWMDutyCyclePctSet = MAX( dialOutPumpPWMDutyCyclePctSet, MIN_DIAL_OUT_PUMP_PWM_DUTY_CYCLE ); + // Apply new PWM to DPo pump + setDialOutPumpControlSignalPWM( dialOutPumpPWMDutyCyclePctSet ); } dopControlTimerCounter = 0; } Index: firmware/App/HDCommon.h =================================================================== diff -u -rbaa9fb9bb10eed6cd211abaa80e9f9acffdeb20d -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision baa9fb9bb10eed6cd211abaa80e9f9acffdeb20d) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -23,7 +23,7 @@ // ********** version ********** #define HD_VERSION_MAJOR 0 -#define HD_VERSION_MINOR 5 +#define HD_VERSION_MINOR 6 #define HD_VERSION_MICRO 0 #define HD_VERSION_BUILD 9037 @@ -37,9 +37,9 @@ // #define RUN_WITHOUT_DG 1 // Run HD w/o DG // #define SIMULATE_UI 1 // Build w/o requirement that UI be there // #define TASK_TIMING_OUTPUT_ENABLED 1 // Re-purposes alarm lamp pins for task timing -// #define DISABLE_ALARM_AUDIO 1 // Disable alarm audio -// #define SKIP_POST 1 // Skip POST tests - all pass -// #define DONT_SKIP_NV_POST 1 // Do not skip NV Data POST + #define DISABLE_ALARM_AUDIO 1 // Disable alarm audio + #define SKIP_POST 1 // Skip POST tests - all pass + #define DONT_SKIP_NV_POST 1 // Do not skip NV Data POST // #define USE_LIBRARY_TIME_FUNCTIONS 1 // Use the C library functions mktime() and gmtime() for epoch<=>date conversions #define DISABLE_AIR_TRAP_LEVELING_ALARM 1 // Disable air trap level control alarms // #define DISABLE_3WAY_VALVES 1 // Disable 3-way valves @@ -57,25 +57,19 @@ // #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks #define DISABLE_VALVE_ALARMS 1 // Do not error on HD valve position #define DISABLE_CAL_CHECK 1 // Disable calibration checks + #define DISABLE_DIALYSATE_TEMP_CHECK 1 // Disable dialysate temperature check // #define RUN_PUMPS_OPEN_LOOP 1 // BP and DPi pumps will be run open loop (no flow sensor feedback) // #define RAW_FLOW_SENSOR_DATA 1 // Test build will not filter flow sensor data // #define READ_FPGA_ASYNC_DATA 1 // Test build reads non-priority register page every other time // #define EMC_TEST_BUILD 1 // EMC test build - HD/DG run separately but connected, HD pumps toggle on/off w/ stop button #define ALARMS_DEBUG 1 // Triggered alarms sent to debug UART #define ALARM_VOLUME_DEFAULT_LOW 1 // Set default alarm volume to lowest // #define TEMP_UI_ALARM_SILENCE_FIX 1 // Temporary UI fix for handling alarm silence request msg - #define SKIP_PRIMING 1 // Skip Pre-treatment Prime - #define SKIP_WET_SELF_TESTS 1 // Skip Pre-treatment prime wet self-tests // #define V2_0_SYSTEM 1 // Build for v2.0 system - #define SKIP_SAMPLE_WATER 1 // Skip pre-treatment sample water - #define SKIP_CONSUMABLE_TESTS 1 // Skip pre-treatment consumable Self-tests - #define SKIP_DRY_SELF_TESTS 1 // Skip pre-treatment dry self-tests - #define SKIP_UI_INTERACTION 1 // Skip UI interaction. -// #define DISABLE_BATT_COMM 1 // Disable battery communication. + #define DISABLE_BATT_COMM 1 // Disable battery communication. #define SKIP_AIR_BUBBLE_CHECK 1 // Skip air bubble detector self-test. #define DISABLE_OCCLUSION_SELF_TEST 1 // Skip occlusion sensor self-test. // #define SKIP_CARTRIDGE_REMOVAL 1 // Skip cartridge removal check - #define SKIP_EMPTY_RES_CHECK 1 // Skip reservoir empty check // #define DISABLE_FPGA_COUNTER_CHECKS 1 // Disable alarms associated with FPGA read/error counters // #define DISABLE_VOLTAGE_MONITOR 1 // Disable voltage monitoring/alarms #define ALLOW_1_MIN_TREATMENT_DURATION 1 // Allow user to change treatment duration to as low as 1 minute @@ -84,6 +78,14 @@ #define DISABLE_BUBBLE_ALARMS 1 // Disable bubble alarms #define DISABLE_UI_POST_TEST 1 // Disable the UI POST + // Skip Pre-Treatment and get to treatment as soon as possible +// #define SKIP_UI_INTERACTION 1 // Skip UI interaction. + #define SKIP_SAMPLE_WATER 1 // Skip pre-treatment sample water + #define SKIP_CONSUMABLE_TESTS 1 // Skip pre-treatment consumable Self-tests + #define SKIP_DRY_SELF_TESTS 1 // Skip pre-treatment dry self-tests + #define SKIP_PRIMING 1 // Skip Pre-treatment Prime + #define SKIP_WET_SELF_TESTS 1 // Skip Pre-treatment prime wet self-tests + #include #include #endif Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -61,25 +61,23 @@ // ********** private data ********** -static BLOOD_PRIME_STATE_T bloodPrimeState; ///< Current state of the blood prime sub-mode. +static BLOOD_PRIME_STATE_T bloodPrimeState; ///< Current state of the blood prime sub-mode. -static F32 bloodPrimeRampFlowRate_mL_min; ///< Current blood pump ramp flow rate. -static F32 bloodPrimeRampStep_mL; ///< Blood pump volume step size for ramping. +static F32 bloodPrimeRampFlowRate_mL_min; ///< Current blood pump ramp flow rate. +static F32 bloodPrimeRampStep_mL; ///< Blood pump volume step size for ramping. -static U32 bloodPrimeRampControlTimerCtr; ///< Timer counter for determining interval for controlling BP ramp. -static U32 bloodPrimePublishTimerCtr; ///< Timer counter for determining interval for blood prime status to be published. +static U32 bloodPrimeRampControlTimerCtr; ///< Timer counter for determining interval for controlling BP ramp. +static U32 bloodPrimePublishTimerCtr; ///< Timer counter for determining interval for blood prime status to be published. -static F32 cumulativeBloodPrimeVolume_mL; ///< Total cumulative blood prime volume (in mL). -static S32 bloodPrimeMotorCount; ///< The cumulative sum of BP motor encoder counts used for independent blood prime volume check. -static U32 bloodPrimeLastMotorCount; ///< The last BP motor encoder count read for independent blood prime volume check. -static F32 bloodPrimeVolumeDelivered_Safety; ///< The cumulative independent blood prime volume (in mL) calculated so far. +static OVERRIDE_F32_T cumulativeBloodPrimeVolume_mL = { 0.0, 0.0, 0.0, 0 }; ///< Total cumulative blood prime volume (in mL). +static OVERRIDE_F32_T bloodPrimeVolumeDelivered_Safety = { 0.0, 0.0, 0.0, 0 }; ///< The cumulative independent blood prime volume (in mL) calculated so far. +static S32 bloodPrimeMotorCount; ///< The cumulative sum of BP motor encoder counts used for independent blood prime volume check. +static U32 bloodPrimeLastMotorCount; ///< The last BP motor encoder count read for independent blood prime volume check. // ********** private function prototypes ********** static void resetBloodPrimeFlags( void ); - static BLOOD_PRIME_STATE_T handleBloodPrimeRampState( void ); - static void publishBloodPrimeData( void ); /*********************************************************************//** @@ -97,10 +95,10 @@ bloodPrimeState = BLOOD_PRIME_RAMP_STATE; bloodPrimeRampControlTimerCtr = 0; bloodPrimePublishTimerCtr = 0; - cumulativeBloodPrimeVolume_mL = 0.0; + cumulativeBloodPrimeVolume_mL.data = 0.0; + bloodPrimeVolumeDelivered_Safety.data = 0.0; bloodPrimeMotorCount = 0; bloodPrimeLastMotorCount = getBloodPumpMotorCount(); - bloodPrimeVolumeDelivered_Safety = 0.0; resetBloodPrimeFlags(); bloodPrimeRampFlowRate_mL_min = (F32)BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN; @@ -124,18 +122,6 @@ /*********************************************************************//** * @brief - * The resetBloodPrimeFlags function resets the blood prime request flags. - * @details Inputs: none - * @details Outputs: Blood prime request flags reset to FALSE. - * @return none - *************************************************************************/ -static void resetBloodPrimeFlags( void ) -{ - // No flags for now -} - -/*********************************************************************//** - * @brief * The transitionToBloodPrime function prepares for transition to blood prime * sub-mode. * @details Inputs: none @@ -172,6 +158,58 @@ /*********************************************************************//** * @brief + * The resetBloodPrimeFlags function resets the blood prime request flags. + * @details Inputs: none + * @details Outputs: Blood prime request flags reset to FALSE. + * @return none + *************************************************************************/ +static void resetBloodPrimeFlags( void ) +{ + // No flags for now +} + +/*********************************************************************//** + * @brief + * The getBloodPrimeVolume function gets the calculated blood prime volume + * delivered. + * @details Inputs: cumulativeBloodPrimeVolume_mL + * @details Outputs: none + * @return the current blood prime volume delivered (in mL). + *************************************************************************/ +static F32 getBloodPrimeVolume( void ) +{ + F32 result = cumulativeBloodPrimeVolume_mL.data; + + if ( OVERRIDE_KEY == cumulativeBloodPrimeVolume_mL.override ) + { + result = cumulativeBloodPrimeVolume_mL.ovData; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getBloodPrimeSafetyVolume function gets the calculated independent + * blood prime volume delivered. + * @details Inputs: bloodPrimeVolumeDelivered_Safety + * @details Outputs: none + * @return the current blood prime safety volume delivered (in mL). + *************************************************************************/ +static F32 getBloodPrimeSafetyVolume( void ) +{ + F32 result = bloodPrimeVolumeDelivered_Safety.data; + + if ( OVERRIDE_KEY == bloodPrimeVolumeDelivered_Safety.override ) + { + result = bloodPrimeVolumeDelivered_Safety.ovData; + } + + return result; +} + +/*********************************************************************//** + * @brief * The execBloodPrime function executes the Blood Prime sub-mode state machine. * @details Inputs: bloodPrimeState * @details Outputs: bloodPrimeState @@ -210,32 +248,33 @@ BLOOD_PRIME_STATE_T result = BLOOD_PRIME_RAMP_STATE; // Update blood prime volume delivered so far - cumulativeBloodPrimeVolume_mL += ( getMeasuredBloodFlowRate() * BLOOD_PRIME_FLOW_INTEGRATOR ); + cumulativeBloodPrimeVolume_mL.data += ( getMeasuredBloodFlowRate() * BLOOD_PRIME_FLOW_INTEGRATOR ); // Update independent calculated safety volume delivered so far bloodPrimeMotorCount = u32BiDiffWithWrap( bloodPrimeLastMotorCount, getBloodPumpMotorCount() ) / BP_HALL_EDGE_COUNTS_PER_REV; - bloodPrimeVolumeDelivered_Safety = ( (F32)bloodPrimeMotorCount * VOLUME_PER_BP_MOTOR_REV_ML ); // TODO - include upstream pressure compensation to this calc + bloodPrimeVolumeDelivered_Safety.data = ( (F32)bloodPrimeMotorCount * VOLUME_PER_BP_MOTOR_REV_ML ); // TODO - include upstream pressure compensation to this calc // Has blood prime completed? - if ( cumulativeBloodPrimeVolume_mL >= TARGET_BLOOD_PRIME_VOLUME_ML ) + if ( getBloodPrimeVolume() >= TARGET_BLOOD_PRIME_VOLUME_ML ) { #ifndef DISABLE_PUMP_FLOW_CHECKS // check for under-delivery - if ( bloodPrimeVolumeDelivered_Safety < MIN_BLOOD_PRIME_SAFETY_VOLUME_ML ) + if ( getBloodPrimeSafetyVolume() < MIN_BLOOD_PRIME_SAFETY_VOLUME_ML ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_BLOOD_PRIME_VOLUME_CHECK_FAILURE, TARGET_BLOOD_PRIME_VOLUME_ML, bloodPrimeVolumeDelivered_Safety ); + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_BLOOD_PRIME_VOLUME_CHECK_FAILURE, TARGET_BLOOD_PRIME_VOLUME_ML, getBloodPrimeSafetyVolume() ); } else #endif { setBloodIsPrimed( TRUE ); + signalDialInPumpHardStop(); signalBloodPrimeToDialysis(); } } #ifndef DISABLE_PUMP_FLOW_CHECKS // Has independent safety volume exceeded safety limit? - else if ( bloodPrimeVolumeDelivered_Safety > MAX_BLOOD_PRIME_SAFETY_VOLUME_ML ) + else if ( getBloodPrimeSafetyVolume() > MAX_BLOOD_PRIME_SAFETY_VOLUME_ML ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_BLOOD_PRIME_VOLUME_CHECK_FAILURE, TARGET_BLOOD_PRIME_VOLUME_ML, bloodPrimeVolumeDelivered_Safety ); + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_BLOOD_PRIME_VOLUME_CHECK_FAILURE, TARGET_BLOOD_PRIME_VOLUME_ML, getBloodPrimeSafetyVolume() ); } #endif else @@ -286,9 +325,106 @@ bloodPrimePublishTimerCtr = 0; data.targetBloodPrimeVolumeMl = TARGET_BLOOD_PRIME_VOLUME_ML; - data.deliveredBloodPrimeVolumeMl = cumulativeBloodPrimeVolume_mL; + data.deliveredBloodPrimeVolumeMl = getBloodPrimeVolume(); + data.indDeliveredBloodPrimeVolumeMl = getBloodPrimeSafetyVolume(); broadcastBloodPrimeData( data ); } } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetBloodPrimeVolumeOverride function overrides the calculated + * blood prime volume. + * @details Inputs: none + * @details Outputs: cumulativeBloodPrimeVolume_mL + * @param vol override calculated blood prime volume (in mL) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetBloodPrimeVolumeOverride( F32 vol ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + cumulativeBloodPrimeVolume_mL.ovData = vol; + cumulativeBloodPrimeVolume_mL.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetBloodPrimeVolumeOverride function resets the override of the + * calculated blood prime volume. + * @details Inputs: none + * @details Outputs: cumulativeBloodPrimeVolume_mL + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetBloodPrimeVolumeOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + cumulativeBloodPrimeVolume_mL.override = OVERRIDE_RESET; + cumulativeBloodPrimeVolume_mL.ovData = cumulativeBloodPrimeVolume_mL.ovInitData; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetBloodPrimeSafetyVolumeOverride function overrides the calculated + * blood prime volume. + * @details Inputs: none + * @details Outputs: bloodPrimeVolumeDelivered_Safety + * @param vol override calculated blood prime safety volume (in mL) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetBloodPrimeSafetyVolumeOverride( F32 vol ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + bloodPrimeVolumeDelivered_Safety.ovData = vol; + bloodPrimeVolumeDelivered_Safety.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetBloodPrimeSafetyVolumeOverride function resets the override of the + * calculated blood prime safety volume. + * @details Inputs: none + * @details Outputs: bloodPrimeVolumeDelivered_Safety + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetBloodPrimeSafetyVolumeOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + bloodPrimeVolumeDelivered_Safety.override = OVERRIDE_RESET; + bloodPrimeVolumeDelivered_Safety.ovData = bloodPrimeVolumeDelivered_Safety.ovInitData; + } + + return result; +} + /**@}*/ Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r8e08352e9e7d8749d8f093c6bc57e6dbc32605d5 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 8e08352e9e7d8749d8f093c6bc57e6dbc32605d5) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -546,7 +546,7 @@ { result = TRUE; // Set outlet pump to dialysate rate + set UF rate - setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + setDialOutPumpTargetRate( setDialysateFlowRate + (S32)setUFRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // Restart UF time accumulation for reference volume calculation lastUFTimeStamp = getMSTimerCount(); // Go to UF running state Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rbaa9fb9bb10eed6cd211abaa80e9f9acffdeb20d -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision baa9fb9bb10eed6cd211abaa80e9f9acffdeb20d) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -17,12 +17,14 @@ #include "Accel.h" #include "AlarmLamp.h" +#include "Battery.h" #include "BloodFlow.h" #include "Buttons.h" #include "Compatible.h" #include "CPLD.h" #include "DialInFlow.h" #include "FPGA.h" +#include "Integrity.h" #include "ModeInitPOST.h" #include "NVDataMgmt.h" #include "OperationModes.h" @@ -135,9 +137,15 @@ break; case POST_STATE_FW_INTEGRITY: - postState = POST_STATE_WATCHDOG; + testStatus = execIntegrityTest(); + postState = handlePOSTStatus( testStatus ); break; + case POST_STATE_BATTERY: + testStatus = execBatteryTest(); + postState = handlePOSTStatus( testStatus ); + break; + case POST_STATE_WATCHDOG: testStatus = execWatchdogTest(); postState = handlePOSTStatus( testStatus ); @@ -169,8 +177,14 @@ break; case POST_STATE_ALARM_AUDIO: +#ifdef DONT_SKIP_NV_POST + // Skip the rest of the POSTs + postState = POST_STATE_COMPLETED; + testStatus = SELF_TEST_STATUS_PASSED; +#else testStatus = execAlarmAudioSelfTest(); postState = handlePOSTStatus( testStatus ); +#endif break; case POST_STATE_ALARM_LAMP: @@ -183,6 +197,10 @@ #endif break; + case POST_STATE_ALARM_AUDIO: + postState = POST_STATE_ACCELEROMETER; + break; + case POST_STATE_ACCELEROMETER: #ifndef DISABLE_ACCELS testStatus = execAccelTest(); @@ -239,7 +257,6 @@ // Should not get here - any failed post test should have already triggered a fault and taken us to fault mode default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, postState ) - postState = POST_STATE_FAILED; break; } Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rc9df9f42e294adae397a57bf83c2a67fa831b164 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision c9df9f42e294adae397a57bf83c2a67fa831b164) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -219,7 +219,6 @@ break; default: - currentPreTreatmentState = HD_PRE_TREATMENT_START_STATE; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE, (U32)currentPreTreatmentState ); break; } @@ -330,9 +329,11 @@ BOOL accepted = FALSE; REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == patientConnectionConfirm ) +#ifdef SKIP_UI_INTERACTION + patientConnectionConfirm = TRUE; #endif + + if ( TRUE == patientConnectionConfirm ) { if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE == currentPreTreatmentState ) ) { @@ -373,6 +374,10 @@ case ALARM_ACTION_END_TREATMENT: if ( HD_PRE_TREATMENT_PRIME_STATE > currentPreTreatmentState ) { + if ( HD_PRE_TREATMENT_WATER_SAMPLE_STATE == currentPreTreatmentState ) + { + cmdDGSampleWater( SAMPLE_WATER_CMD_END ); + } requestNewOperationMode( MODE_STAN ); } else @@ -617,9 +622,11 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == confirmInstallRequested ) +#ifdef SKIP_UI_INTERACTION + confirmInstallRequested = TRUE; #endif + + if ( TRUE == confirmInstallRequested ) { confirmInstallRequested = FALSE; state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; @@ -731,9 +738,11 @@ execPreTreatmentRecirc(); -#ifndef SKIP_UI_INTERACTION - if ( TRUE == continueToTreatmentRequested ) +#ifdef SKIP_UI_INTERACTION + continueToTreatmentRequested = TRUE; #endif + + if ( TRUE == continueToTreatmentRequested ) { continueToTreatmentRequested = FALSE; state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; @@ -999,8 +1008,12 @@ if ( FALSE == reservoirFlushedStatus[ DG_RESERVOIR_1 ] ) { +#ifdef SKIP_PRIMING + reservoirFilledStatus[ DG_RESERVOIR_1 ] = TRUE; +#else reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); +#endif } else if ( ( TRUE == reservoirFlushedStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFlushedStatus[ DG_RESERVOIR_2 ] ) ) { Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rbd0ae373570f7f224bb9a6a4e86f805be77de192 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision bd0ae373570f7f224bb9a6a4e86f805be77de192) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -345,7 +345,7 @@ TREATMENT_PARAM_T param; // Set all treatment parameters (except UF volume which is not yet received) - for ( param = TREATMENT_PARAM_FIRST_UINT; param < TREATMENT_PARAM_UF_VOLUME; param++ ) + for ( param = TREATMENT_PARAM_FIRST_UINT; param < NUM_OF_TREATMENT_PARAMS; param++ ) { setCriticalData( &treatmentParameters[ param ], stagedParams[ param ] ); } Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r172b320a1007769c7452fe3f1cc7ac85b016f89a -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 172b320a1007769c7452fe3f1cc7ac85b016f89a) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -44,11 +44,15 @@ #define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. -#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. +#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. +#define MAX_ALARM_LIST_SIZE 10 ///< Maximum number of active alarms inside alarm list. // *** This declaration will cause a compiler error if ALARM_TABLE does not have same # of alarms as the Alarm_List enumeration. U08 alarmTableSizeAssertion[ ( ( sizeof( ALARM_TABLE ) / sizeof( ALARM_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; +// *** This declaration will cause a compiler error if ALARM_RANK_TABLE does not have same # of alarms as the Alarm_List enumeration. +U08 alarmRankTableSizeAssertion[ ( ( sizeof( ALARM_RANK_TABLE ) / sizeof( ALARM_RANK_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; + /// A blank alarm data record for alarms that do not include alarm data when triggered. const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; @@ -82,15 +86,12 @@ // ********** private data ********** -static U32 alarmStatusPublicationTimerCounter = 0; ///< Used to schedule alarm status publication to CAN bus. -static U32 alarmInfoPublicationTimerCounter = 0; ///< Used to schedule alarm information publication to CAN bus. +static BOOL alarmIsActive[ NUM_OF_ALARM_IDS ]; ///< Table - current state of each alarm +static BOOL alarmIsDetected[ NUM_OF_ALARM_IDS ]; ///< Table - current state of each alarm condition (detected or cleared) +static OVERRIDE_U32_T alarmStartedAt[ NUM_OF_ALARM_IDS ]; ///< Table - when alarm became active for each alarm (if active) or zero (if inactive) +static U32 alarmStatusPublicationTimerCounter = 0; ///< Used to schedule alarm status publication to CAN bus. +static U32 alarmInfoPublicationTimerCounter = 0; ///< Used to schedule alarm information publication to CAN bus. -/// Table - current state of each alarm -static BOOL alarmIsActive[ NUM_OF_ALARM_IDS ]; -/// Table - current state of each alarm condition (detected or cleared) -static BOOL alarmIsDetected[ NUM_OF_ALARM_IDS ]; -/// Table - when alarm became active for each alarm (if active) or zero (if inactive) -static OVERRIDE_U32_T alarmStartedAt[ NUM_OF_ALARM_IDS ]; /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; #ifndef ALARM_VOLUME_DEFAULT_LOW @@ -106,15 +107,11 @@ /// Alarm backup audio current measured at ADC. static OVERRIDE_F32_T alarmBackupAudioCurrent = { 0.0, 0.0, 0.0, 0 }; -/// Record for the current composite alarm status. -static COMP_ALARM_STATUS_T alarmStatus; +static COMP_ALARM_STATUS_T alarmStatus; ///< Record for the current composite alarm status. +static ALARM_PRIORITY_RANKS_T alarmPriorityFIFO[ NUM_OF_ALARM_PRIORITIES ]; ///< FIFO - first activated or highest sub-rank alarm in each alarm priority category. -/// FIFO - first activated or highest sub-rank alarm in each alarm priority category. -static ALARM_PRIORITY_RANKS_T alarmPriorityFIFO[ NUM_OF_ALARM_PRIORITIES ]; +static BOOL alarmUserRecoveryActionEnabled[ NUMBER_OF_ALARM_USER_ACTIONS ]; ///< Alarm user recovery actions enabled flags. -/// Alarm user recovery actions enabled flags. -static BOOL alarmUserRecoveryActionEnabled[ NUMBER_OF_ALARM_USER_ACTIONS ]; - /// Current state of the alarm audio self tests. static ALARM_AUDIO_SELF_TEST_STATE_T alarmAudioSelfTestState; /// Flag indicates whether alarm audio test tone should be output. @@ -150,7 +147,7 @@ void initAlarmMgmt( void ) { ALARM_PRIORITY_T p; - ALARM_ID_T a; + ALARM_ID_T a; // Disable backup audio CLR_BACKUP_AUDIO_ENABLE(); @@ -287,7 +284,12 @@ // Broadcast alarm and data if alarm not already active if ( FALSE == alarmIsActive[ alarm ] ) { - broadcastAlarmTriggered( (U16)alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA ); + broadcastAlarmTriggered( (U16)alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA ); + // Send information for UI to log to treatment log + if ( TRUE == ALARM_TABLE[ alarm ].alarmTreatmentLog ) + { + sendTreatmentLogAlarmEventData( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA ); + } } activateAlarm( alarm ); } @@ -308,7 +310,12 @@ // Broadcast alarm and data if alarm not already active if ( FALSE == alarmIsActive[ alarm ] ) { - broadcastAlarmTriggered( (U16)alarm, alarmData, BLANK_ALARM_DATA ); + broadcastAlarmTriggered( (U16)alarm, alarmData, BLANK_ALARM_DATA ); + // Send information for UI to log to treatment log + if ( TRUE == ALARM_TABLE[ alarm ].alarmTreatmentLog ) + { + sendTreatmentLogAlarmEventData( alarm, alarmData, BLANK_ALARM_DATA ); + } } activateAlarm( alarm ); } @@ -330,7 +337,12 @@ // Broadcast alarm and data if alarm not already active if ( FALSE == alarmIsActive[ alarm ] ) { - broadcastAlarmTriggered( (U16)alarm, alarmData1, alarmData2 ); + broadcastAlarmTriggered( (U16)alarm, alarmData1, alarmData2 ); + // Send information for UI to log to treatment log + if ( TRUE == ALARM_TABLE[ alarm ].alarmTreatmentLog ) + { + sendTreatmentLogAlarmEventData( alarm, alarmData1, alarmData2 ); + } } activateAlarm( alarm ); } @@ -507,7 +519,7 @@ break; default: - // TODO - s/w fault? + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_ALARM_USER_ACTION, action ); break; } } @@ -624,6 +636,55 @@ // Send response to UI sendAlarmAudioVolumeSetResponse( accepted, rejReason ); } + +/*********************************************************************//** + * @brief +* The getNoNewTreatmentStatus function gets the persistent no new +* treatment alarm status flag. +* @details Inputs: alarmStatus.noNewTreatment +* @details Outputs: none +* @return TRUE if no new treatment allowed, otherwise FALSE +*************************************************************************/ +BOOL getNoNewTreatmentStatus( void ) +{ + return alarmStatus.noNewTreatment; +} + +/*********************************************************************//** + * @brief +* The handleActiveAlarmListRequest function processed the active alarms list +* request from UI. +* @details Inputs: alarmIsActive[] +* @details Outputs: sent active alarms list to UI +* @return none +*************************************************************************/ +void handleActiveAlarmListRequest( void ) +{ + BOOL accepted = TRUE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; + U32 activeAlarmList[ MAX_ALARM_LIST_SIZE ]; + U32 index; + U32 activeAlarmListIndex = 0; + + for ( index = 0; index < MAX_ALARM_LIST_SIZE; index++ ) + { + activeAlarmList[ index ] = ALARM_ID_NO_ALARM; + } + + if ( TRUE == isAnyAlarmActive() ) + { + for ( index = 0; index < NUM_OF_ALARM_IDS; index++ ) + { + if ( ( TRUE == isAlarmActive( ALARM_RANK_TABLE[ index ].alarmID ) ) && ( activeAlarmListIndex < MAX_ALARM_LIST_SIZE ) ) + { + activeAlarmList[ activeAlarmListIndex ] = ALARM_RANK_TABLE[ index ].alarmID; + activeAlarmListIndex++; + } + } + } + + sendActiveAlarmsList( accepted, rejReason, activeAlarmList, sizeof( activeAlarmList ) ); +} /*********************************************************************//** * @brief @@ -1034,8 +1095,8 @@ alarmStatus.noResume = noResume; alarmStatus.noRinseback = noRinseback; alarmStatus.noEndTreatment = noEndTreatment; - alarmStatus.noNewTreatment = noNewTreatment; - alarmStatus.usrACKRequired = usrAckReq; + alarmStatus.noNewTreatment |= noNewTreatment; + alarmStatus.usrACKRequired = usrAckReq; alarmStatus.noMinimize = noMinimize; } Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -100,6 +100,8 @@ #define FPGA_ALARM_AUDIO_VOLUME_SHIFT 3 ///< Shift alarm audio volume 3 bits to left before writing to register. +#define FPGA_BACKUP_ALARM_AUDIO_CONVERT 0.4 ///< Converts backup (piezo) alarm audio ADC volts to amps. + // FPGA Sensors Record #pragma pack(push,1) /// Record structure for FPGA header read. @@ -177,13 +179,13 @@ S16 VBVPosition; ///< Reg 360. Encoder position from VBV pinch valve. 0 until PID interface is enabled. S16 VDiPosition; ///< Reg 362. Encoder position from VDi pinch valve. 0 until PID interface is enabled. S16 VDoPosition; ///< Reg 364. Encoder position from VDo pinch valve. 0 until PID interface is enabled. - S16 VSparePosition; ///< Reg 366. Encoder position from VSpare pinch valve. 0 until PID interface is enabled. + S16 fpgaIntVoltage; ///< Reg 366. Internal FPGA Vcc voltage. 3V range over 12 bits (0..4095). U16 valveStatus; ///< Reg 368. Valve status register. U16 VBAPWMTarget; ///< Reg 370. PWM target duty cycle for VBA pinch valve. U16 VBVPWMTarget; ///< Reg 372. PWM target duty cycle for VBV pinch valve. U16 VDiPWMTarget; ///< Reg 374. PWM target duty cycle for VDi pinch valve. U16 VDoPWMTarget; ///< Reg 376. PWM target duty cycle for VDo pinch valve. - U16 VSparePWMTarget; ///< Reg 378. PWM target duty cycle for Vspare pinch valve. + U16 VSparePWMTarget; ///< Reg 378. Internal FPGA Vcc Aux voltage. U08 syringePumpStatus; ///< Reg 380. Syringe pump status register. U08 syringePumpADCReadCounter; ///< Reg 381. Syringe pump ADC read counter. U08 syringePumpADCandDACStatus; ///< Reg 382. Syringe pump ADC and DAC status register. @@ -203,7 +205,8 @@ U16 VDiCurrent; ///< Reg 410. VDi pinch valve current (Register VAUX11) U16 VSpareSpeed; ///< Reg 412. VSpare speed (Register VAUX5) U16 VSpareCurrent; ///< Reg 414. VSpare current (Register VAUX13) - U16 fpgaTimerCount_ms; ///< Reg 416. Internal FPGA timer count in ms. + U16 fpgaTimerCount_ms; ///< Reg 416. Free running 1ms timer counter. Rolls over at 65535.Internal FPGA timer count in ms. + U16 backupAlarmAudioPeakCurrent; ///< Reg 418. Piezo alarm peak ADC current in previous 10ms. 12 bit unsigned. } FPGA_SENSORS_T; /// Record structure for FPGA continuous priority writes. @@ -1824,6 +1827,22 @@ /*********************************************************************//** * @brief + * The getFPGABackupAlarmAudioCurrent function gets the latest piezo alarm + * audio current reading. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return Latest piezo alarm audio current reading + *************************************************************************/ +F32 getFPGABackupAlarmAudioCurrent( void ) +{ + U16 adcCnts = fpgaSensorReadings.backupAlarmAudioPeakCurrent; + F32 result = ( ( (F32)adcCnts / (F32)BITS_12_FULL_SCALE ) * FPGA_BACKUP_ALARM_AUDIO_CONVERT ) * (F32)MA_PER_AMP; + + return result; +} + +/*********************************************************************//** + * @brief * The getFPGAAirTrapLevels function gets the latest air trap level sensor * readings. * @details Inputs: fpgaSensorReadings Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -112,6 +112,8 @@ void getFPGAAccelMaxes( S16 *xm, S16*ym, S16*zm ); void getFPGAAccelStatus( U16 *cnt, U16 *accelFPGAFaultReg ); +F32 getFPGABackupAlarmAudioCurrent( void ); + void getFPGAAirTrapLevels( BOOL *airAtLower, BOOL *airAtUpper ); void setFPGASensorTest( U08 sensorTest ); Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -r9feea867113c62088f0ce91750127972dbd9bf53 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 9feea867113c62088f0ce91750127972dbd9bf53) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -34,9 +34,6 @@ #include "TaskPriority.h" #include "TaskTimer.h" #include "Utilities.h" -#ifdef DEBUG_ENABLED - #include "SystemCommMessages.h" -#endif /** * @addtogroup Interrupts @@ -57,7 +54,6 @@ static U32 sci2FrameErrorCnt = 0; ///< FPGA serial frame error counter. static U32 sci2OverrunErrorCnt = 0; ///< FPGA serial overrun error counter. -static U32 can1PassiveCnt = 0; ///< CAN passive mode counter. static U32 can1WarningCnt = 0; ///< CAN warning mode counter. static U32 can1BusOffCnt = 0; ///< CAN buss off mode counter. static U32 can1ParityCnt = 0; ///< CAN parity error counter. @@ -74,7 +70,6 @@ void initInterrupts( void ) { // Initialize various time windowed counts for monitoring CAN & UART errors and warnings - initTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PASSIVE, MAX_COMM_ERRORS, COMM_ERROR_TIME_WINDOW_MS ); initTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_OFF, MAX_COMM_ERRORS, COMM_ERROR_TIME_WINDOW_MS ); initTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PARITY, MAX_COMM_ERRORS, COMM_ERROR_TIME_WINDOW_MS ); initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_UART_FRAME_ERROR, MAX_COMM_ERRORS, COMM_ERROR_TIME_WINDOW_MS ); @@ -91,15 +86,6 @@ void phantomInterrupt(void) { // TODO - what to do with phantom interrupts? -#ifdef DEBUG_ENABLED - { - char debugStr[ 256 ]; - - sprintf( debugStr, "HD-phantom interrupt\n" ); - sendDebugData( (U08*)debugStr, strlen(debugStr) ); - sendDebugDataToUI( (U08*)debugStr ); - } -#endif } /*********************************************************************//** @@ -168,38 +154,33 @@ void canErrorNotification(canBASE_t *node, uint32 notification) { if ( node == canREG1 ) - { + { + // Parity error - message RAM is corrupted if ( notification & canLEVEL_PARITY_ERR ) { can1ParityCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PARITY ) ) { SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PARITY_ERROR ) } - } + } + // Bus off - our transmitter has counted 255+ errors else if ( notification & canLEVEL_BUS_OFF ) { can1BusOffCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_OFF ) ) { SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_CAN_OFF_ERROR ) } - } + } + // Warning - our transmitter has counted 96+ errors else if ( notification & canLEVEL_WARNING ) { can1WarningCnt++; } - else if ( notification & canLEVEL_PASSIVE ) - { - can1PassiveCnt++; - if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PASSIVE ) ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PASSIVE_WARNING ) - } - } else { - // Ignore - other notifications undefined + // Ignore - other notifications - unhandled } } } Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r78cee9347b3766ac7c14d413ed848be758c7e9cd -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 78cee9347b3766ac7c14d413ed848be758c7e9cd) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -327,14 +327,6 @@ { canTransmit( canREG1, lastCANPacketSentChannel, lastCANPacketSent ); } -#ifdef DEBUG_ENABLED - { - char debugStr[100]; - sprintf( debugStr, "SystemComm-HD resend Last Frame. %2d\n", lastCANPacketSentChannel ); - sendDebugData( (U08*)debugStr, strlen(debugStr) ); - sendDebugDataToUI( (U08*)debugStr ); - } -#endif } // We must be only node on CAN bus - nobody is ACKing our transmitted frames else @@ -343,13 +335,6 @@ canXmitRetryCtr = MAX_XMIT_RETRIES; signalCANXmitsCompleted(); // Clear pending xmit flag clearCANXmitBuffers(); // Clear xmit buffers - nothing is going out right now -#ifdef DEBUG_ENABLED - { - char debugStr[100]; - sprintf( debugStr, "SystemComm-HD is only node.\n" ); - sendDebugData( (U08*)debugStr, strlen(debugStr) ); - } -#endif } } } @@ -968,13 +953,6 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_COMM_TOO_MANY_BAD_CRCS, (U32)ALARM_SOURCE_HD ); #endif } -#ifdef DEBUG_ENABLED - { - char debugStr[100]; - sprintf( debugStr, "SystemComm-HD-Bad Msg CRC.\n" ); - sendDebugDataToUI( (U08*)debugStr ); - } -#endif } /*********************************************************************//** @@ -1548,6 +1526,14 @@ handleTestDialOutPumpHomeRequest( message ); break; + case MSG_ID_SUPER_CLEAR_ALARMS_CMD: + handleTestSuperClearAlarmsRequest( message ); + break; + + case MSG_ID_HD_SET_OP_MODE_REQUEST: + handleTestSetOpModeRequest( message ); + break; + case MSG_ID_HD_FLUID_LEAK_SEND_INTERVAL_OVERRIDE: handleSetFluidLeakBroadcastIntervalOverrideRequest( message ); break; @@ -1580,12 +1566,12 @@ handleBubbleSelfTestRequest( message ); break; - case MSG_ID_HD_SET_OP_MODE_REQUEST: - handleTestSetOpModeRequest( message ); + case MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE: + handleBloodPrimeVolumeOverrideRequest( message ); break; - case MSG_ID_SUPER_CLEAR_ALARMS_CMD: - handleTestSuperClearAlarmsRequest( message ); + case MSG_ID_HD_BLOOD_PRIME_SAFETY_VOLUME_OVERRIDE: + handleBloodPrimeSafetyVolumeOverrideRequest( message ); break; case MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rc52bfbc3f41fecde11bbec3eb71dc812154fc760 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c52bfbc3f41fecde11bbec3eb71dc812154fc760) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -570,8 +570,33 @@ result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); return result; -} +} + +/*********************************************************************//** + * @brief + * The sendTreatmentPeriodicDataToUI function constructs a treatment periodic + * data message to the UI and queues the msg for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment parameter ranges msg constructed and queued. + * @param periodDataPtr treatment log period data record pointer + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendTreatmentPeriodicDataToUI( TREATMENT_LOG_DATA_PERIODIC_T * periodDataPtr ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_PERIODIC_DATA; + msg.hdr.payloadLen = sizeof( TREATMENT_LOG_DATA_PERIODIC_T ); + + memcpy( payloadPtr, periodDataPtr, sizeof( TREATMENT_LOG_DATA_PERIODIC_T ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + /*********************************************************************//**  * @brief  * The handlePatientDisconnectionConfirmCmd function handles user confirms @@ -587,8 +612,10 @@ { signalUserConfirmPatientDisconnection(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -606,8 +633,10 @@ { signalUserConfirmDisposableRemoval(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -638,10 +667,12 @@ { if ( 0 == message->hdr.payloadLen ) { - handleTreatmentLogDataRequest(); + sendTreatmentLogDataToUI(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -650,6 +681,8 @@ * for UI and queues the msg for transmit on the appropriate CAN channel. * @details Inputs: none * @details Outputs: Treatment log data msg constructed and queued. + * @param accepted T/F - was treatment log request accepted? + * @param reason reason why request was rejected (or zero if accepted) * @param logDataPtr treatment log data record pointer * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ @@ -672,9 +705,296 @@ // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); } - + /*********************************************************************//** * @brief + * The handleUIDisinfectRequest function handles a disinfect/flush user + * action command message from the UI. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleUIDisinfectRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( message->hdr.payloadLen == sizeof(U32) ) + { + U32 cmd; + + memcpy( &cmd, message->payload, sizeof(U32) ); + + if ( 0 == cmd ) // Command 0 = Flush + { + result = signalUserInitiateFlushMode(); + } + else if ( 1 == cmd ) // Command 1 = Heat disinfect + { + result = signalUserInitiateHeatDisinfectMode(); + } + else if ( 2 == cmd ) // Command 2 = chemical disinfect + { + result = signalUserInitiateChemicalDisinfectMode(); + } + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, result ); +} + +/*********************************************************************//** + * @brief + * The sendDisinfectConfirmResponse function constructs a disinfect or flush + * confirm user action response to the UI and queues the msg for + * transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Disposable removal confirm response msg constructed + * and queued. + * @param accepted T/F - was disinfect or flush confirm request accepted? + * @param reason reason why request was rejected (or zero if accepted) + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendDisinfectConfirmResponse( BOOL accepted, U32 reason ) +{ + return sendUIResponseMsg( MSG_ID_HD_DISINFECT_RESPONSE, accepted, reason ); +} + +/*********************************************************************//** + * @brief + * The handleSetHDStandbyDisinfectSubmode function handles setting the + * standby submode to wait for disisnfect state. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleSetHDStandbyDisinfectSubmodeRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // The payload should be 0 in this case because there is mode in this command + if ( 0 == message->hdr.payloadLen ) + { + signalInitiateStandbyDisinfectSubmode(); + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, result ); +} + +/*********************************************************************//** + * @brief + * The handleSetHDStandbyDisinfectSubmodeResponse function constructs a + * standby submode change to wait for disinfect confirm user action response + * to the UI and queues the msg for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Disposable removal confirm response msg constructed + * and queued. + * @param accepted T/F - was set standby submode confirm request accepted? + * @param reason reason why request was rejected (or zero if accepted) + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL handleSetHDStandbyDisinfectSubmodeResponse( BOOL accepted, U32 reason ) +{ + return sendUIResponseMsg( MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_RESPONSE, accepted, reason ); +} + +/*********************************************************************//** + * @brief + * The handleFlushUIStateReadingFromDG function handles the readings of DG + * flush mode. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleFlushUIStateReadingFromDG( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof(MODE_FLUSH_DATA_T) ) + { + MODE_FLUSH_DATA_T payload; + DG_DISINFECT_UI_STATES_T uiStates; + + memcpy( &payload, message->payload, sizeof(MODE_FLUSH_DATA_T) ); + + uiStates.heatDisinfectUIState = 0; + uiStates.chemDisinfectUIState = 0; + uiStates.flushUIState = payload.flushUIState; + + setDGDisinfectsStates( uiStates ); + } +} + +/*********************************************************************//** + * @brief + * The handleHeatDisinfectUIStateReadingFromDG function handles the readings + * of DG heat disinfect mode. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleHeatDisinfectUIStateReadingFromDG( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof(MODE_HEAT_DISINFECT_DATA_T) ) + { + MODE_HEAT_DISINFECT_DATA_T payload; + DG_DISINFECT_UI_STATES_T uiStates; + + memcpy( &payload, message->payload, sizeof(MODE_HEAT_DISINFECT_DATA_T) ); + + uiStates.heatDisinfectUIState = payload.heatDisinfectUIState; + uiStates.chemDisinfectUIState = 0; + uiStates.flushUIState = 0; + + setDGDisinfectsStates( uiStates ); + } +} + +/*********************************************************************//** + * @brief + * The handleUIActiveAlarmsListRequest function handles UI active alarms list request. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none. + *************************************************************************/ +void handleUIActiveAlarmsListRequest( MESSAGE_T *message ) +{ + if ( 0 == message->hdr.payloadLen ) + { + handleActiveAlarmListRequest(); + } + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } +} + +/*********************************************************************//** + * @brief + * The handleChemDisinfectUIStateReadingFromDG function handles the readings + * of DG chemical disinfect mode. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleChemDisinfectUIStateReadingFromDG( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof(MODE_CHEMICAL_DISINFECT_DATA_T) ) + { + MODE_CHEMICAL_DISINFECT_DATA_T payload; + DG_DISINFECT_UI_STATES_T uiStates; + + memcpy( &payload, message->payload, sizeof(MODE_CHEMICAL_DISINFECT_DATA_T) ); + + uiStates.heatDisinfectUIState = 0; + uiStates.chemDisinfectUIState = payload.chemDisinfectUIState; + uiStates.flushUIState = 0; + + setDGDisinfectsStates( uiStates ); + } +} + +/*********************************************************************//** + * The sendActiveAlarmsList function constructs a treatment log data message + * for UI and queues the msg for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment log data msg constructed and queued. + * @details Outputs: Treatment log data msg constructed and queued. + * @param accepted T/F - was treatment log request accepted? + * @param alarmList pointer to active alarms list record + * @param size the size of active alarms list + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendActiveAlarmsList( BOOL accepted, U32 reason, U32 *alarmList, U32 size ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_ACTIVE_ALARMS_LIST_REQUEST_RESPONSE; + msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ) + size; + + memcpy( payloadPtr, &accepted, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &reason, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, alarmList, size ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + +/*********************************************************************//** + * @brief + * The sendTreatmentLogAlarmEventData function constructs a treatment log + * alarm event data message for UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment log alarm event data msg constructed and queued. + * @param alarmID ID of the occurred alarm + * @param almData1 data associates with the alarm + * @param almData1 data associates with the alarm + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + U32 id = (U32)alarmID; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT; + msg.hdr.payloadLen = sizeof( ALARM_ID_T ) + 3 * sizeof( F32 ); + + memcpy( payloadPtr, &id, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &almData1.data, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &almData2.data, sizeof( F32 ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + +/*********************************************************************//** + * @brief + * The sendTreatmentLogEventData function constructs a treatment log parameter + * change event data message for UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Treatment log event data msg constructed and queued. + * @param event ID of parameter change event + * @param oldValue parameter change event old data value + * @param newValue parameter change event new data value + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendTreatmentLogEventData( EVENT_ID_T event, F32 oldValue, F32 newValue ) +{ + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + U32 eventID = (U32)event; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_EVENT; + msg.hdr.payloadLen = sizeof( EVENT_ID_T ) + 3 * sizeof( F32 ); + + memcpy( payloadPtr, &eventID, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &oldValue, sizeof( F32 ) ); + payloadPtr += sizeof( F32 ); + memcpy( payloadPtr, &newValue, sizeof( F32 ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + return serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); +} + +/*********************************************************************//** + * @brief * The handleSampleWaterCmd function handles a sample water user action command * message from the UI. * @details Inputs: none @@ -691,8 +1011,10 @@ memcpy( &cmd, &message->payload[0], sizeof( U32 ) ); signalSampleWaterUserAction( (REQUESTED_SAMPLE_WATER_USER_ACTIONS_T)cmd ); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -727,8 +1049,10 @@ memcpy( &result, &message->payload[0], sizeof( U32 ) ); setSampleWaterResult( (BOOL) result ); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -746,8 +1070,10 @@ { signalUserConfirmConsumableInstall(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -765,8 +1091,10 @@ { signalUserConfirmInstallation(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -784,8 +1112,10 @@ { signalStartPrime(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -818,8 +1148,10 @@ { signalUserContinueToTreatment(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -852,8 +1184,10 @@ { signalUserConfirmPatientConnection(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -885,8 +1219,10 @@ { signalUserStartTreatment(); } - - sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** @@ -1232,6 +1568,92 @@ /*********************************************************************//** * @brief + * The sendDGStartFlushModeCommand function constructs a DG start/stop + * flush mode command message and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: DG start flush mode command msg constructed and queued. + * @param start TRUE indicates start flush mode + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendDGStartFlushModeCommand( BOOL start ) +{ + BOOL result; + MESSAGE_T msg; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_START_STOP_FLUSH; + msg.hdr.payloadLen = sizeof( BOOL ); + + memcpy( msg.payload, &start, sizeof( BOOL ) ); + + // 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_2_DG, ACK_REQUIRED ); + + return result; +} + +/*********************************************************************//** + * @brief + * The sendDGStartHeatDisinfectModeCommand function constructs a DG start/stop + * heat disinfect mode command message and queues the msg for transmit on + * the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: DG start heat disinfect mode command msg constructed + * and queued. + * @param start TRUE indicates start heat disinfect mode + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendDGStartHeatDisinfectModeCommand( BOOL start ) +{ + BOOL result; + MESSAGE_T msg; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_START_STOP_HEAT_DISINFECT; + msg.hdr.payloadLen = sizeof( BOOL ); + + memcpy( msg.payload, &start, sizeof( BOOL ) ); + + // 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_2_DG, ACK_REQUIRED ); + + return result; +} + +/*********************************************************************//** + * @brief + * The sendDGStartChemicalDisinfectModeCommand function constructs a DG + * start/stop chemical disinfect mode command message and queues the msg + * for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: DG start chemical disinfect mode command msg + * constructed and queued. + * @param start TRUE indicates start chemical disinfect mode + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendDGStartChemicalDisinfectModeCommand( BOOL start ) +{ + BOOL result; + MESSAGE_T msg; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_START_STOP_CHEM_DISINFECT; + msg.hdr.payloadLen = sizeof( BOOL ); + + memcpy( msg.payload, &start, sizeof( BOOL ) ); + + // 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_2_DG, ACK_REQUIRED ); + + return result; +} + +/*********************************************************************//** + * @brief * The broadcastAccelData function constructs an accelerometer data msg to * be broadcast and queues the msg for transmit on the appropriate CAN channel. * @details Inputs: none @@ -2350,6 +2772,33 @@ return result; } +/*********************************************************************//** + * @brief + * The broadcastDisinfectsData function sends out the disinfects data. + * @details Inputs: none + * @details Outputs: disinfects data msg constructed and queued + * @param disinfectsData which is disinfects msg constructed and queued + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastDisinfectsData( DISINFECTS_DATA_T *disinfectsData ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_DISINFECT_STANDBY_DATA; + msg.hdr.payloadLen = sizeof( DISINFECTS_DATA_T ); + + memcpy( payloadPtr, disinfectsData, sizeof( DISINFECTS_DATA_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 ); + + return result; +} + #ifdef EMC_TEST_BUILD BOOL broadcastCANErrorCount( U32 count ) { @@ -2684,12 +3133,12 @@ *************************************************************************/ void handleDGTemperatureData( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == sizeof(DG_TEMPERATURES_T) ) + if ( message->hdr.payloadLen == sizeof( TEMPERATURE_SENSORS_DATA_T ) ) { - DG_TEMPERATURES_T payload; - - memcpy( &payload, message->payload, sizeof(DG_TEMPERATURES_T) ); - setDialysateTemperatureReadings( payload.TDi, payload.TRo ); + TEMPERATURE_SENSORS_DATA_T payload; + + memcpy( &payload, message->payload, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); + setDialysateTemperatureReadings( payload.inletDialysate, payload.outletRedundant ); } // TODO - what to do if invalid payload length? // TODO - how to know if DG stops sending these? @@ -5245,13 +5694,13 @@ *************************************************************************/ void handleSetFluidLeakStateOverrideRequest( MESSAGE_T *message ) { - TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; // Verify payload length - if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetFluidLeakStateOverride( ( FLUID_LEAK_STATES_T)( payload.state.u32 ) ); @@ -6082,13 +6531,46 @@ /*********************************************************************//** * @brief - * The handleTestMonitoredVoltagesSendIntervalOverrideRequest function handles a - * request to override the monitored HD voltages data publication interval. + * The handleTestValvesCurrentOverrideRequest function handles a + * request to override HD valves' current. * @details Inputs: none * @details Outputs: message handled * @param message : a pointer to the message to handle * @return none *************************************************************************/ +void handleTestValvesCurrentOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetValvesCurrentOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetValvesCurrentOverride( payload.index ); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestMonitoredVoltagesSendIntervalOverrideRequest function + * handles a request to override the monitored HD voltages data + * publication interval. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ void handleTestMonitoredVoltagesSendIntervalOverrideRequest( MESSAGE_T *message ) { TEST_OVERRIDE_PAYLOAD_T payload; @@ -6114,6 +6596,38 @@ /*********************************************************************//** * @brief + * The handleTestValvesPositionCountOverrideRequest function handles a + * request to override HD valves' position in counts. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestValvesPositionCountOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetValvesPositionCountOverride( payload.index, payload.state.u32 ); + } + else + { + result = testResetValvesPositionCountOverride( payload.index ); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief * The handleTestMonitoredVoltageOverrideRequest function handles a * request to override the monitored HD voltage override. * @details Inputs: none Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rc52bfbc3f41fecde11bbec3eb71dc812154fc760 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision c52bfbc3f41fecde11bbec3eb71dc812154fc760) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -37,6 +37,7 @@ #include "NVDataMgmt.h" #include "PresOccl.h" #include "Rinseback.h" +#include "ModeStandby.h" #include "SyringePump.h" #include "Valves.h" #include "Voltages.h" @@ -163,6 +164,9 @@ // MSG_ID_TREATMENT_PARAM_CHANGE_RANGES BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); +// MSG_ID_HD_TREATMENT_LOG_PERIODIC_DATA +BOOL sendTreatmentPeriodicDataToUI( TREATMENT_LOG_DATA_PERIODIC_T * periodDataPtr ); + // MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST void handleChangeBloodDialysateRateChangeRequest( MESSAGE_T *message ); @@ -265,6 +269,39 @@ // MSG_ID_HD_TREATMENT_LOG_DATA_RESPONSE BOOL sendTreatmentLogData( BOOL accepted, U32 reason, TREATMENT_LOG_DATA_PAYLOAD_T *logDataPtr ); +// MSG_ID_UI_DISINFECT_REQUEST +void handleUIDisinfectRequest( MESSAGE_T *message ); + +// MSG_ID_HD_DISINFECT_RESPONSE +BOOL sendDisinfectConfirmResponse( BOOL accepted, U32 reason ); + +// MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_REQUEST +void handleSetHDStandbyDisinfectSubmodeRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_RESPONSE +BOOL handleSetHDStandbyDisinfectSubmodeResponse( BOOL accepted, U32 reason ); + +// MSG_ID_DG_FLUSH_DATA +void handleFlushUIStateReadingFromDG( MESSAGE_T *message ); + +// MSG_ID_DG_HEAT_DISINFECT_DATA +void handleHeatDisinfectUIStateReadingFromDG( MESSAGE_T *message ); + +// MSG_ID_DG_CHEM_DISINFECT_DATA +void handleChemDisinfectUIStateReadingFromDG( MESSAGE_T *message ); + +// MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST +void handleUIActiveAlarmsListRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ACTIVE_ALARMS_LIST_REQUEST_RESPONSE +BOOL sendActiveAlarmsList( BOOL accepted, U32 reason, U32 *alarmList, U32 size ); + +// MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT +BOOL sendTreatmentLogAlarmEventData( ALARM_ID_T alarmID, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); + +// MSG_ID_HD_TREATMENT_LOG_EVENT +BOOL sendTreatmentLogEventData( EVENT_ID_T event, F32 oldValue, F32 newValue ); + // *********** public DG command functions ********** // MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS @@ -300,6 +337,15 @@ // MSG_ID_DG_OP_MODE void handleDGOpMode( MESSAGE_T *message ); +// MSG_ID_DG_START_STOP_FLUSH +BOOL sendDGStartFlushModeCommand( BOOL start ); + +// MSG_ID_DG_START_STOP_HEAT_DISINFECT +BOOL sendDGStartHeatDisinfectModeCommand( BOOL start ); + +// MSG_ID_DG_START_STOP_CHEM_DISINFECT +BOOL sendDGStartChemicalDisinfectModeCommand( BOOL start ); + // *********** public data broad cast functions ********** // MSG_ID_HD_ACCELEROMETER_DATA @@ -314,9 +360,6 @@ // MSG_ID_ALARM_TRIGGERED BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); -// MSG_ID_ALARM_CONDITION_CLEARED -BOOL broadcastAlarmConditionCleared( U32 alarm ); - // MSG_ID_ALARM_CLEARED BOOL broadcastAlarmCleared( U32 alarm ); @@ -413,6 +456,9 @@ // MSG_ID_Hd_SEND_SERVICE_RECORD BOOL sendHDServiceRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* srvcRcrdAddress ); +// MSG_ID_HD_DISINFECT_STANDBY_DATA +BOOL broadcastDisinfectsData( DISINFECTS_DATA_T *disinfectsData ); + #ifdef EMC_TEST_BUILD // MSG_ID_CAN_ERROR_COUNT BOOL broadcastCANErrorCount( U32 count ); @@ -677,6 +723,12 @@ // MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: void handleTestSyringePumpMeasuredVolumeOverrideRequest( MESSAGE_T *message ); +// MSG_ID_HD_VALVES_CURRENT_OVERRIDE +void handleTestValvesCurrentOverrideRequest( MESSAGE_T *message ); + +// MSD_ID_HD_VALVES_POSITION_COUNT_OVERRIDE +void handleTestValvesPositionCountOverrideRequest( MESSAGE_T *message ); + // MSG_ID_HD_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE void handleTestMonitoredVoltagesSendIntervalOverrideRequest( MESSAGE_T *message ); Index: firmware/HD.dil =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/HD.dil (.../HD.dil) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/HD.dil (.../HD.dil) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -1,4 +1,4 @@ -# RM46L852PGE 04/21/21 08:43:45 +# RM46L852PGE 07/22/21 16:57:31 # ARCH=RM46L852PGE # @@ -61,7 +61,7 @@ DRIVER.SYSTEM.VAR.SAFETY_INIT_MIBSPI2_RAMPARITYCHECK_ENA.VALUE=0 DRIVER.SYSTEM.VAR.CRC_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.MIBSPI1_ENABLE.VALUE=1 -DRIVER.SYSTEM.VAR.CLKT_HCLK_FREQ.VALUE=206.670 +DRIVER.SYSTEM.VAR.CLKT_HCLK_FREQ.VALUE=208.000 DRIVER.SYSTEM.VAR.CLKT_PLL2_FREQ.VALUE=220.00 DRIVER.SYSTEM.VAR.VIM_CHANNEL_81_MAPPING.VALUE=81 DRIVER.SYSTEM.VAR.VIM_CHANNEL_73_MAPPING.VALUE=73 @@ -181,7 +181,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_9_INT_PRAGMA_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.ADC1_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.MIBSPI_ENABLE.VALUE=1 -DRIVER.SYSTEM.VAR.ECLK_VCLK1_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.ECLK_VCLK1_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.CLKT_EXTERNAL_FREQ.VALUE=00.0 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_11_SIZE_VALUE.VALUE=0x0F DRIVER.SYSTEM.VAR.VIM_CHANNEL_125_NAME.VALUE=phantomInterrupt @@ -249,7 +249,7 @@ DRIVER.SYSTEM.VAR.CLKT_EXTERNAL_FREQ_INPUT.VALUE=16.0 DRIVER.SYSTEM.VAR.STC_INTERVAL.VALUE=24 DRIVER.SYSTEM.VAR.CLKT_LPO_HIGH_TRIM_VALUE.VALUE=16 -DRIVER.SYSTEM.VAR.CLKT_GCLK_FREQ.VALUE=206.670 +DRIVER.SYSTEM.VAR.CLKT_GCLK_FREQ.VALUE=208.000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_1_PERMISSION_VALUE.VALUE=0x1000 DRIVER.SYSTEM.VAR.VIM_CHANNEL_80_MAPPING.VALUE=80 DRIVER.SYSTEM.VAR.VIM_CHANNEL_72_MAPPING.VALUE=72 @@ -520,7 +520,7 @@ DRIVER.SYSTEM.VAR.ETPWM_OLDCODE.VALUE=1 DRIVER.SYSTEM.VAR.SCI2_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.LIN_ENABLE.VALUE=0 -DRIVER.SYSTEM.VAR.CLKT_RTI1_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_RTI1_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_4_SIZE_VALUE.VALUE=0x11 DRIVER.SYSTEM.VAR.VIM_CHANNEL_6_MAPPING.VALUE=6 DRIVER.SYSTEM.VAR.CLKT_PLL2_SPEADING_AMOUNT.VALUE=61 @@ -542,8 +542,8 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_58_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_MIBSPI5_DP_PBISTCHECK_ENA.VALUE=0x00000100 DRIVER.SYSTEM.VAR.CLKT_PLL2_RESET_ON_SLIP.VALUE=0x00000000 -DRIVER.SYSTEM.VAR.ECLK_FREQ.VALUE=12.917 -DRIVER.SYSTEM.VAR.CLKT_AVCLK1_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.ECLK_FREQ.VALUE=13.000 +DRIVER.SYSTEM.VAR.CLKT_AVCLK1_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.VIM_CHANNEL_100_MAPPING.VALUE=100 DRIVER.SYSTEM.VAR.VIM_CHANNEL_93_NAME.VALUE=etpwm2TripZoneInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_85_NAME.VALUE=phantomInterrupt @@ -568,8 +568,8 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_1_INT_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.SPI4_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.CLKT_AVCLK4_POST_SOURCE.VALUE=VCLKA4_DIVR -DRIVER.SYSTEM.VAR.CLKT_VCLK1_FREQ.VALUE=103.335 -DRIVER.SYSTEM.VAR.CLKT_AVCLK3_FREQ1.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_VCLK1_FREQ.VALUE=104.000 +DRIVER.SYSTEM.VAR.CLKT_AVCLK3_FREQ1.VALUE=104.000 DRIVER.SYSTEM.VAR.VIM_CHANNEL_93_MAPPING.VALUE=93 DRIVER.SYSTEM.VAR.VIM_CHANNEL_85_MAPPING.VALUE=85 DRIVER.SYSTEM.VAR.VIM_CHANNEL_77_MAPPING.VALUE=77 @@ -588,7 +588,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_28_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_25_INT_TYPE.VALUE=IRQ DRIVER.SYSTEM.VAR.VIM_CHANNEL_17_INT_TYPE.VALUE=IRQ -DRIVER.SYSTEM.VAR.CLKT_PLL1_MUL.VALUE=155 +DRIVER.SYSTEM.VAR.CLKT_PLL1_MUL.VALUE=156 DRIVER.SYSTEM.VAR.VIM_CHANNEL_60_NAME.VALUE=phantomInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_52_NAME.VALUE=phantomInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_44_NAME.VALUE=phantomInterrupt @@ -709,7 +709,7 @@ DRIVER.SYSTEM.VAR.SAFETY_INIT_CAN3_RAMPARITYCHECK_ENA.VALUE=1 DRIVER.SYSTEM.VAR.SAFETY_INIT_RAMECC_SELFCHECK_ENA.VALUE=1 DRIVER.SYSTEM.VAR.ADC2_ENABLE.VALUE=0 -DRIVER.SYSTEM.VAR.CLKT_VCLK2_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_VCLK2_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.FLASH_DATA_2_WAIT_STATE_FREQ.VALUE=165.0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_5_MAPPING.VALUE=5 DRIVER.SYSTEM.VAR.VIM_PARITY_INTERRUPT_MAPPED_TO_VIM.VALUE=FALSE @@ -808,7 +808,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_19_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_13_INT_TYPE.VALUE=IRQ DRIVER.SYSTEM.VAR.SAFETY_INIT_ADC2_RAMPARITYCHECK_ENA.VALUE=1 -DRIVER.SYSTEM.VAR.CLKT_AVCLK3_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_AVCLK3_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_9_TYPE_VALUE.VALUE=0x0010 DRIVER.SYSTEM.VAR.VIM_CHANNEL_95_NAME.VALUE=etpwm3TripZoneInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_87_NAME.VALUE=phantomInterrupt @@ -844,8 +844,8 @@ DRIVER.SYSTEM.VAR.DCC1_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.HET2_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_PBIST_ESRAM_SELECTED.VALUE=1 -DRIVER.SYSTEM.VAR.CLKT_VCLK3_FREQ.VALUE=103.335 -DRIVER.SYSTEM.VAR.CLKT_AVCLK4_FREQ1.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_VCLK3_FREQ.VALUE=104.000 +DRIVER.SYSTEM.VAR.CLKT_AVCLK4_FREQ1.VALUE=104.000 DRIVER.SYSTEM.VAR.PBIST_ALGO_11_12.VALUE=0 DRIVER.SYSTEM.VAR.CLKT_PLL2_SOURCE_ENABLE.VALUE=0x00000000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_10_SUB_7_DISABLE.VALUE=0 @@ -934,7 +934,7 @@ DRIVER.SYSTEM.VAR.MIBSPI5_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.FLASH_BANK_CONFIG_0.VALUE=ACTIVE DRIVER.SYSTEM.VAR.PMM_PMCTRL_PWRDN.VALUE=0 -DRIVER.SYSTEM.VAR.CLKT_AVCLK4_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_AVCLK4_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.FLASH_BANK_CONFIG_1.VALUE=ACTIVE DRIVER.SYSTEM.VAR.VIM_CHANNEL_96_NAME.VALUE=etpwm4Interrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_91_MAPPING.VALUE=91 @@ -978,7 +978,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_56_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_48_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_HTU1_RAMPARITYCHECK_ENA.VALUE=1 -DRIVER.SYSTEM.VAR.CLKT_VCLK4_FREQ.VALUE=103.335 +DRIVER.SYSTEM.VAR.CLKT_VCLK4_FREQ.VALUE=104.000 DRIVER.SYSTEM.VAR.VIM_CHANNEL_60_MAPPING.VALUE=60 DRIVER.SYSTEM.VAR.VIM_CHANNEL_52_MAPPING.VALUE=52 DRIVER.SYSTEM.VAR.VIM_CHANNEL_44_MAPPING.VALUE=44 @@ -1174,10 +1174,10 @@ DRIVER.SYSTEM.VAR.SAFETY_INIT_CAN2_RAMPARITYCHECK_ENA.VALUE=1 DRIVER.SYSTEM.VAR.ERRATA_WORKAROUND_13.VALUE=1 DRIVER.SYSTEM.VAR.POM_ENABLE.VALUE=0 -DRIVER.SYSTEM.VAR.CLKT_PLL1_MUL_VAL.VALUE=9A00 +DRIVER.SYSTEM.VAR.CLKT_PLL1_MUL_VAL.VALUE=9B00 DRIVER.SYSTEM.VAR.ERRATA_WORKAROUND_14.VALUE=1 DRIVER.SYSTEM.VAR.CLKT_AVCLK3_SOURCE.VALUE=VCLK -DRIVER.SYSTEM.VAR.CLKT_PLL1_FREQ.VALUE=206.67 +DRIVER.SYSTEM.VAR.CLKT_PLL1_FREQ.VALUE=208.00 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_1_SIZE_VALUE.VALUE=0x1F DRIVER.SYSTEM.VAR.VIM_CHANNEL_31_NAME.VALUE=phantomInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_23_NAME.VALUE=gioLowLevelInterrupt @@ -1354,7 +1354,7 @@ DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL37_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL29_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL58_INT_LEVEL.VALUE=0 -DRIVER.ESM.VAR.ESM_LOW_TIME.VALUE=158.552 +DRIVER.ESM.VAR.ESM_LOW_TIME.VALUE=157.538 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL30_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL22_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL14_ENABLE.VALUE=0 @@ -1390,7 +1390,7 @@ DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL12_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL56_INT_LEVEL.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL48_INT_LEVEL.VALUE=0 -DRIVER.ESM.VAR.ESM_VCLK_FREQ.VALUE=103.335 +DRIVER.ESM.VAR.ESM_VCLK_FREQ.VALUE=104 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL30_INT_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL22_INT_ENABLE.VALUE=0 DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL14_INT_ENABLE.VALUE=0 @@ -1472,50 +1472,50 @@ DRIVER.ESM.VAR.ESM_GROUP0_CHANNEL49_INT_LEVEL.VALUE=0 DRIVER.RTI.VAR.RTI_1_COMPARE_2_SOURCE.VALUE=0x00000100 DRIVER.RTI.VAR.RTI_1_COMPARE_3_FREQ.VALUE=0.000100000 -DRIVER.RTI.VAR.RTI_1_FREQ.VALUE=103.335 +DRIVER.RTI.VAR.RTI_1_FREQ.VALUE=104.000 DRIVER.RTI.VAR.RTI_1_COMPARE_1_ACTUALTIME.VALUE=10.000 DRIVER.RTI.VAR.RTI_1_COUNTER_1_UC_COMPARE.VALUE=9 DRIVER.RTI.VAR.RTI_1_COMPARE_1_TIME.VALUE=10.0 -DRIVER.RTI.VAR.RTI_1_COMPARE_3_UPDATE.VALUE=516675 +DRIVER.RTI.VAR.RTI_1_COMPARE_3_UPDATE.VALUE=520000 DRIVER.RTI.VAR.RTI_1_CONTINUE_ON_SUSPEND_ENABLE.VALUE=0x00000000 -DRIVER.RTI.VAR.RTI_1_COMPARE_1_INPUT_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COMPARE_1_INPUT_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COMPARE_0_SOURCE.VALUE=0x00000000 DRIVER.RTI.VAR.RTI_1_COMPARE_2_TIME.VALUE=8.000 DRIVER.RTI.VAR.RTI_1_COMPARE_0_ACTUALTIME.VALUE=1.000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_UC_COMPARE.VALUE=9 -DRIVER.RTI.VAR.RTI_1_COMPARE_1_UPDATE.VALUE=103335 +DRIVER.RTI.VAR.RTI_1_COMPARE_1_UPDATE.VALUE=104000 DRIVER.RTI.VAR.RTI_1_COMPARE_3_TIME.VALUE=50.0 DRIVER.RTI.VAR.RTI_1_COUNTER_0_NTU_SOURCE.VALUE=0 -DRIVER.RTI.VAR.RTI_1_COMPARE_0_INPUT_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COMPARE_0_INPUT_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_RTI_FREQ.VALUE=0.0 -DRIVER.RTI.VAR.RTI_1_COUNTER_0_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COUNTER_0_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COUNTER_1_FREQUENCY.VALUE=10.000 DRIVER.RTI.VAR.RTI_1_COMPARE_3_SOURCE.VALUE=0x00000000 -DRIVER.RTI.VAR.RTI_1_COUNTER_1_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COUNTER_1_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_NTU_SOURCE_REG.VALUE=0x0 DRIVER.RTI.VAR.RTI_1_COMPARE_1_SOURCE.VALUE=0x00000000 DRIVER.RTI.VAR.RTI_1_NTU_1_FREQ.VALUE=0.0 DRIVER.RTI.VAR.RTI_1_COMPARE_3_ACTUALTIME.VALUE=50.000 DRIVER.RTI.VAR.RTI_1_COMPARE_0_FREQ.VALUE=0.001000000 -DRIVER.RTI.VAR.RTI_1_COMPARE_2_UPDATE.VALUE=82668 +DRIVER.RTI.VAR.RTI_1_COMPARE_2_UPDATE.VALUE=83200 DRIVER.RTI.VAR.RTI_1_BASE.VALUE=0xFFFFFC00 DRIVER.RTI.VAR.RTI_1_NTU_2_FREQ.VALUE=0.0 -DRIVER.RTI.VAR.RTI_1_COMPARE_3_INPUT_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COMPARE_3_INPUT_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COMPARE_1_FREQ.VALUE=0.000200000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_CAPTURE_SOURCE_ENABLE.VALUE=0 DRIVER.RTI.VAR.RTI_1_COUNTER_1_CAPTURE_SOURCE_ENABLE.VALUE=0 -DRIVER.RTI.VAR.RTI_1_COMPARE_0_UPDATE.VALUE=10334 +DRIVER.RTI.VAR.RTI_1_COMPARE_0_UPDATE.VALUE=10400 DRIVER.RTI.VAR.RTI_1_NTU_3_FREQ.VALUE=220.000 -DRIVER.RTI.VAR.RTI_1_COMPARE_0.VALUE=10334 +DRIVER.RTI.VAR.RTI_1_COMPARE_0.VALUE=10400 DRIVER.RTI.VAR.RTI_1_COMPARE_2_ACTUALTIME.VALUE=8.000 -DRIVER.RTI.VAR.RTI_1_COMPARE_1.VALUE=103335 -DRIVER.RTI.VAR.RTI_1_COMPARE_2.VALUE=82668 -DRIVER.RTI.VAR.RTI_1_COMPARE_3.VALUE=516675 +DRIVER.RTI.VAR.RTI_1_COMPARE_1.VALUE=104000 +DRIVER.RTI.VAR.RTI_1_COMPARE_2.VALUE=83200 +DRIVER.RTI.VAR.RTI_1_COMPARE_3.VALUE=520000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_NTU_FREQ.VALUE=0.000 DRIVER.RTI.VAR.RTI_1_COMPARE_2_FREQ.VALUE=0.000125000 DRIVER.RTI.VAR.RTI_1_COMPARE_0_TIME.VALUE=1 DRIVER.RTI.VAR.RTI_1_NTU_4_FREQ.VALUE=0.000 -DRIVER.RTI.VAR.RTI_1_COMPARE_2_INPUT_FREQ.VALUE=10.333500000 +DRIVER.RTI.VAR.RTI_1_COMPARE_2_INPUT_FREQ.VALUE=10.400000000 DRIVER.RTI.VAR.RTI_1_COUNTER_0_FREQUENCY.VALUE=10.000 DRIVER.GIO.VAR.GIO_PORT1_BIT4_PULL.VALUE=1 DRIVER.GIO.VAR.GIO_PORT0_BIT5_DIR.VALUE=0 @@ -1673,7 +1673,7 @@ DRIVER.SCI.VAR.SCI_PORT_BIT2_PULL.VALUE=2 DRIVER.SCI.VAR.SCILIN_PORT_BIT1_DIR.VALUE=0 DRIVER.SCI.VAR.SCI_PORT_BIT0_DIR.VALUE=0 -DRIVER.SCI.VAR.SCI_ACTUALBAUDRATE.VALUE=115329 +DRIVER.SCI.VAR.SCI_ACTUALBAUDRATE.VALUE=116071 DRIVER.SCI.VAR.SCI_EVENPARITY.VALUE=0 DRIVER.SCI.VAR.SCILIN_PORT_BIT0_FUN.VALUE=0 DRIVER.SCI.VAR.SCILIN_PORT_BIT2_DIR.VALUE=1 @@ -1752,7 +1752,7 @@ DRIVER.SCI.VAR.SCILIN_RXINTENA.VALUE=0 DRIVER.SCI.VAR.SCILIN_LENGTH.VALUE=8 DRIVER.SCI.VAR.SCILIN_FEINTLVL.VALUE=0 -DRIVER.SCI.VAR.SCILIN_ACTUALBAUDRATE.VALUE=922634 +DRIVER.SCI.VAR.SCILIN_ACTUALBAUDRATE.VALUE=928571 DRIVER.SCI.VAR.SCILIN_PORT_BIT1_PULDIS.VALUE=0 DRIVER.SCI.VAR.SCI_PORT_BIT0_PULDIS.VALUE=0 DRIVER.SCI.VAR.SCI_BASE.VALUE=0xFFF7E500 @@ -1790,7 +1790,7 @@ DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT25_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_TG5_ONESHOT.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI1_TG1_PRST.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.MIBSPI.VAR.MIBSPI1_C2TDELAYACTUAL.VALUE=19.231 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT1_DIR.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT11_DIR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_TIMEOUTLVL.VALUE=0 @@ -1817,17 +1817,17 @@ DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT2_PSL.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_TG4_BUF_WDEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG0_ONESHOT.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI3_TG2_TRGSRC.VALUE=TRG_DISABLED -DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT0_FUN.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT10_FUN.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT3_PULL.VALUE=2 DRIVER.MIBSPI.VAR.MIBSPI1_TG0_LENGTH.VALUE=8 DRIVER.MIBSPI.VAR.MIBSPI5_TG0_CS_ENCODE.VALUE=0xFF DRIVER.MIBSPI.VAR.MIBSPI3_TG0_BUF_LOCK.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI3_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_TG2_ONESHOT.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_TG7_PRST.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_C2EDELAYACTUAL.VALUE=0.000 @@ -1839,7 +1839,7 @@ DRIVER.MIBSPI.VAR.MIBSPI3_TG3_CS_ENCODE.VALUE=0xFF DRIVER.MIBSPI.VAR.MIBSPI3_TG0_BUF_MODE.VALUE=4 DRIVER.MIBSPI.VAR.MIBSPI5_TG6_BUF_WDEL.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI5_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.MIBSPI.VAR.MIBSPI5_T2CDELAYACTUAL.VALUE=9.615 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT4_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG7_TRGEVT.VALUE=TRG_ALWAYS DRIVER.MIBSPI.VAR.MIBSPI3_TG5_BUF_CSHOLD_LASTBUF.VALUE=0 @@ -1885,38 +1885,38 @@ DRIVER.MIBSPI.VAR.MIBSPI1_TXINTENA.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG0_BUF_DFSEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT5_PDR.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE0.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE0.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI1_CLKMOD.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI5_TG3_TRGSRC.VALUE=TRG_DISABLED -DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE1.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE1.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI5_TG5_BUF_CSHOLD_LASTBUF.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TXINTLVL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG2_BUF_CSHOLD.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG1_LENGTH.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE2.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE2.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT9_PULDIS.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TIMEOUTENA.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE3.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI1_PRESCALE3.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT1_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT11_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG3_BUF_DFSEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PARITYENA0.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT8_PSL.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI1_TG5_BUF_WDEL.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI3_PARITYENA1.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT9_PULL.VALUE=2 DRIVER.MIBSPI.VAR.MIBSPI3_PARITYENA2.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_DLENERRLVL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_TG4_TRGEVT.VALUE=TRG_ALWAYS DRIVER.MIBSPI.VAR.MIBSPI1_TG2_BUF_CSHOLD_LASTBUF.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT2_PULDIS.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PARITYENA3.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_BITERRENA.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI1_TG1_BUF_LOCK.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI1_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_TG4_PRST.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT4_PSL.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI1_TG6_BUF_DFSEL.VALUE=0 @@ -1935,7 +1935,7 @@ DRIVER.MIBSPI.VAR.MIBSPI3_WDELAY0.VALUE=20 DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT17_DOUT.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT25_DOUT.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI1_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.MIBSPI.VAR.MIBSPI1_T2CDELAYACTUAL.VALUE=9.615 DRIVER.MIBSPI.VAR.MIBSPI3_WDELAY1.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG1_TRGEVT.VALUE=TRG_ALWAYS DRIVER.MIBSPI.VAR.MIBSPI3_WDELAY2.VALUE=0 @@ -2136,7 +2136,7 @@ DRIVER.MIBSPI.VAR.MIBSPI1_TG0_BUF_MODE.VALUE=4 DRIVER.MIBSPI.VAR.MIBSPI3_TG6_BUF_WDEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG4_ONESHOT.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI3_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.MIBSPI.VAR.MIBSPI3_C2TDELAYACTUAL.VALUE=19.231 DRIVER.MIBSPI.VAR.MIBSPI1_WDELAY0.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI1_WDELAY1.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT11_DIR.VALUE=1 @@ -2273,7 +2273,7 @@ DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT5_PULDIS.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT10_PSL.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI5_TG5_ONESHOT.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI3_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.MIBSPI.VAR.MIBSPI3_T2CDELAYACTUAL.VALUE=9.615 DRIVER.MIBSPI.VAR.MIBSPI3_TG1_TRGSRC.VALUE=TRG_DISABLED DRIVER.MIBSPI.VAR.MIBSPI5_TG1_BUF_CSHOLD_LASTBUF.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG7_BUF_MODE.VALUE=4 @@ -2398,16 +2398,16 @@ DRIVER.MIBSPI.VAR.MIBSPI3_TG1_BUF_MODE.VALUE=4 DRIVER.MIBSPI.VAR.MIBSPI5_TG7_BUF_WDEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG4_BUF_DFSEL.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE0.VALUE=102 -DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE1.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE0.VALUE=103 +DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE1.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT25_DIR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT17_DIR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG1_LENGTH.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE2.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE2.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT1_DIR.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_TG4_BUF_CSHOLD.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG3_BUF_LOCK.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE3.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI5_PRESCALE3.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI3_RAM_PARITY_ENA.VALUE=0x00000005 DRIVER.MIBSPI.VAR.MIBSPI5_PARITYENA0.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG7_BUF_DFSEL.VALUE=0 @@ -2509,7 +2509,7 @@ DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT25_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT17_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG3_ONESHOT.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI5_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.MIBSPI.VAR.MIBSPI5_C2TDELAYACTUAL.VALUE=19.231 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT1_PDR.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_TG7_BUF_CSNR.VALUE=CS_NONE DRIVER.MIBSPI.VAR.MIBSPI1_TG3_BUF_DFSEL.VALUE=0 @@ -2544,24 +2544,24 @@ DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT3_PULDIS.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG3_BUF_WDEL.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI5_TG2_BUF_DFSEL.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI3_TG6_PRST.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE0.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE0.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI1_PORT_BIT5_DOUT.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE1.VALUE=1003.252 -DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE1.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE1.VALUE=1000.000 +DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE1.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI3_BASE_RAM.VALUE=0xFF0C0000 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT3_PULL.VALUE=2 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT0_DIR.VALUE=1 -DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_PARPOL0.VALUE=0 DRIVER.MIBSPI.VAR.MIBSPI3_PORT_BIT10_DIR.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI3_TG3_BUF_CSHOLD.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE2.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE2.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI3_CHARLEN0.VALUE=8 -DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.MIBSPI.VAR.MIBSPI5_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.MIBSPI.VAR.MIBSPI5_PARPOL1.VALUE=0 -DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE3.VALUE=102 +DRIVER.MIBSPI.VAR.MIBSPI3_PRESCALE3.VALUE=103 DRIVER.MIBSPI.VAR.MIBSPI3_CHARLEN1.VALUE=16 DRIVER.MIBSPI.VAR.MIBSPI3_DLENERRENA.VALUE=1 DRIVER.MIBSPI.VAR.MIBSPI5_PORT_BIT26_PDR.VALUE=0 @@ -2583,7 +2583,7 @@ DRIVER.SPI.VAR.SPI5_PORT_BIT17_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI3_PHASE3.VALUE=0 DRIVER.SPI.VAR.SPI2_PORT_BIT11_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI4_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.SPI.VAR.SPI4_T2CDELAYACTUAL.VALUE=9.615 DRIVER.SPI.VAR.SPI4_POLARITY0.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT1_PDR.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT4_DOUT.VALUE=1 @@ -2618,15 +2618,15 @@ DRIVER.SPI.VAR.SPI1_PORT_BIT17_DIR.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT0_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT9_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI3_PRESCALE0.VALUE=102 -DRIVER.SPI.VAR.SPI3_PRESCALE1.VALUE=102 +DRIVER.SPI.VAR.SPI3_PRESCALE0.VALUE=103 +DRIVER.SPI.VAR.SPI3_PRESCALE1.VALUE=103 DRIVER.SPI.VAR.SPI1_C2EDELAY.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT27_DIR.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT19_DIR.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT0_DIR.VALUE=1 -DRIVER.SPI.VAR.SPI3_PRESCALE2.VALUE=102 +DRIVER.SPI.VAR.SPI3_PRESCALE2.VALUE=103 DRIVER.SPI.VAR.SPI1_MASTER.VALUE=1 -DRIVER.SPI.VAR.SPI3_PRESCALE3.VALUE=102 +DRIVER.SPI.VAR.SPI3_PRESCALE3.VALUE=103 DRIVER.SPI.VAR.SPI3_PORT_BIT2_PDR.VALUE=0 DRIVER.SPI.VAR.SPI3_C2TDELAY.VALUE=0 DRIVER.SPI.VAR.SPI2_BASE_PORT.VALUE=0xFFF7F618 @@ -2635,7 +2635,7 @@ DRIVER.SPI.VAR.SPI1_PORT_BIT9_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT25_PDR.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT17_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI5_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.SPI.VAR.SPI5_C2TDELAYACTUAL.VALUE=19.231 DRIVER.SPI.VAR.SPI4_PORT_BIT10_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT8_PSL.VALUE=1 DRIVER.SPI.VAR.SPI4_WAITENA0.VALUE=0 @@ -2714,7 +2714,7 @@ DRIVER.SPI.VAR.SPI2_PORT_BIT10_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT25_PDR.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT17_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI1_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.SPI.VAR.SPI1_C2TDELAYACTUAL.VALUE=19.231 DRIVER.SPI.VAR.SPI1_ENABLEHIGHZ.VALUE=0 DRIVER.SPI.VAR.SPI5_WDELAY1.VALUE=0 DRIVER.SPI.VAR.SPI4_C2EDELAY.VALUE=0 @@ -2754,39 +2754,39 @@ DRIVER.SPI.VAR.SPI4_PORT_BIT9_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT5_PDR.VALUE=0 DRIVER.SPI.VAR.SPI3_C2EDELAYACTUAL.VALUE=0.000 -DRIVER.SPI.VAR.SPI1_PRESCALE0.VALUE=102 +DRIVER.SPI.VAR.SPI1_PRESCALE0.VALUE=103 DRIVER.SPI.VAR.SPI4_BASE_RAM.VALUE=0xFF0E0000 -DRIVER.SPI.VAR.SPI1_PRESCALE1.VALUE=102 +DRIVER.SPI.VAR.SPI1_PRESCALE1.VALUE=103 DRIVER.SPI.VAR.SPI4_CHARLEN0.VALUE=16 DRIVER.SPI.VAR.SPI2_PORT_BIT1_PULL.VALUE=2 -DRIVER.SPI.VAR.SPI1_PRESCALE2.VALUE=102 +DRIVER.SPI.VAR.SPI1_PRESCALE2.VALUE=103 DRIVER.SPI.VAR.SPI4_CHARLEN1.VALUE=16 DRIVER.SPI.VAR.SPI1_PORT_BIT0_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI1_PRESCALE3.VALUE=102 +DRIVER.SPI.VAR.SPI1_PRESCALE3.VALUE=103 DRIVER.SPI.VAR.SPI5_PORT_BIT1_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI5_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.SPI.VAR.SPI5_T2CDELAYACTUAL.VALUE=9.615 DRIVER.SPI.VAR.SPI4_CHARLEN2.VALUE=16 DRIVER.SPI.VAR.SPI1_PORT_BIT8_PSL.VALUE=1 DRIVER.SPI.VAR.SPI4_CHARLEN3.VALUE=16 DRIVER.SPI.VAR.SPI1_BASE.VALUE=0xFFF7F400 DRIVER.SPI.VAR.SPI3_BITERRENA.VALUE=0 DRIVER.SPI.VAR.SPI3_OVRNINTENA.VALUE=0 DRIVER.SPI.VAR.SPI3_RXINTENA.VALUE=0 -DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI3_PORT_BIT10_PDR.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT4_PSL.VALUE=1 DRIVER.SPI.VAR.SPI3_PORT_BIT2_DOUT.VALUE=1 DRIVER.SPI.VAR.SPI1_PORT_BIT25_PSL.VALUE=1 DRIVER.SPI.VAR.SPI1_PORT_BIT17_PSL.VALUE=1 -DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_PORT_BIT2_FUN.VALUE=1 -DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_PARPOL0.VALUE=0 DRIVER.SPI.VAR.SPI5_BITERRLVL.VALUE=0 DRIVER.SPI.VAR.SPI4_SHIFTDIR0.VALUE=0 DRIVER.SPI.VAR.SPI4_OVRNINTLVL.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT8_DIR.VALUE=0 -DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.SPI.VAR.SPI5_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_PARPOL1.VALUE=0 DRIVER.SPI.VAR.SPI4_SHIFTDIR1.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT27_PSL.VALUE=1 @@ -2832,20 +2832,20 @@ DRIVER.SPI.VAR.SPI4_WDELAY3.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT3_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT10_PSL.VALUE=1 -DRIVER.SPI.VAR.SPI1_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.SPI.VAR.SPI1_T2CDELAYACTUAL.VALUE=9.615 DRIVER.SPI.VAR.SPI4_MASTER.VALUE=1 DRIVER.SPI.VAR.SPI2_PORT_BIT2_PULL.VALUE=2 DRIVER.SPI.VAR.SPI5_PORT_BIT8_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT3_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_PORT_BIT0_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_BASE.VALUE=0xFFF7F600 DRIVER.SPI.VAR.SPI4_PORT_BIT10_DIR.VALUE=1 DRIVER.SPI.VAR.SPI3_PORT_BIT8_FUN.VALUE=1 DRIVER.SPI.VAR.SPI3_PORT_BIT0_PULL.VALUE=2 -DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE2.VALUE=1003.252 -DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE2.VALUE=1000.000 +DRIVER.SPI.VAR.SPI3_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.SPI.VAR.SPI3_PARERRENA.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT3_DOUT.VALUE=1 DRIVER.SPI.VAR.SPI2_C2TDELAY.VALUE=0 @@ -2870,7 +2870,7 @@ DRIVER.SPI.VAR.SPI2_TXINTENA.VALUE=0 DRIVER.SPI.VAR.SPI5_BAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_PORT_BIT1_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI2_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.SPI.VAR.SPI2_C2TDELAYACTUAL.VALUE=19.231 DRIVER.SPI.VAR.SPI5_BAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_BAUDRATE2.VALUE=1000.000 DRIVER.SPI.VAR.SPI4_PORT_BIT11_DIR.VALUE=0 @@ -2909,34 +2909,34 @@ DRIVER.SPI.VAR.SPI3_T2EDELAYACTUAL.VALUE=0.000 DRIVER.SPI.VAR.SPI2_SHIFTDIR2.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT8_DOUT.VALUE=0 -DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_SHIFTDIR3.VALUE=0 -DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI4_PORT_BIT10_FUN.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT0_DIR.VALUE=1 DRIVER.SPI.VAR.SPI2_PORT_BIT3_PULL.VALUE=2 -DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_PORT_BIT11_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.SPI.VAR.SPI1_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.SPI.VAR.SPI5_PORT_BIT9_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI4_C2EDELAYACTUAL.VALUE=0.000 DRIVER.SPI.VAR.SPI2_PORT_BIT2_PDR.VALUE=0 DRIVER.SPI.VAR.SPI3_BASE.VALUE=0xFFF7F800 DRIVER.SPI.VAR.SPI3_PORT_BIT1_PULL.VALUE=2 DRIVER.SPI.VAR.SPI3_PORT_BIT8_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI4_PRESCALE0.VALUE=102 +DRIVER.SPI.VAR.SPI4_PRESCALE0.VALUE=103 DRIVER.SPI.VAR.SPI3_PORT_BIT8_PSL.VALUE=1 DRIVER.SPI.VAR.SPI3_PORT_BIT4_DOUT.VALUE=1 DRIVER.SPI.VAR.SPI3_WDELAY0.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT25_DOUT.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT17_DOUT.VALUE=0 -DRIVER.SPI.VAR.SPI4_PRESCALE1.VALUE=102 +DRIVER.SPI.VAR.SPI4_PRESCALE1.VALUE=103 DRIVER.SPI.VAR.SPI3_C2EDELAY.VALUE=0 DRIVER.SPI.VAR.SPI3_WDELAY1.VALUE=0 -DRIVER.SPI.VAR.SPI4_PRESCALE2.VALUE=102 +DRIVER.SPI.VAR.SPI4_PRESCALE2.VALUE=103 DRIVER.SPI.VAR.SPI3_WDELAY2.VALUE=0 DRIVER.SPI.VAR.SPI2_PORT_BIT3_FUN.VALUE=1 -DRIVER.SPI.VAR.SPI4_PRESCALE3.VALUE=102 +DRIVER.SPI.VAR.SPI4_PRESCALE3.VALUE=103 DRIVER.SPI.VAR.SPI4_TIMEOUTENA.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT1_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI3_WDELAY3.VALUE=0 @@ -2987,7 +2987,7 @@ DRIVER.SPI.VAR.SPI2_PORT_BIT8_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT10_PSL.VALUE=1 DRIVER.SPI.VAR.SPI3_PARPOL2.VALUE=0 -DRIVER.SPI.VAR.SPI2_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.SPI.VAR.SPI2_T2CDELAYACTUAL.VALUE=9.615 DRIVER.SPI.VAR.SPI4_BASE.VALUE=0xFFF7FA00 DRIVER.SPI.VAR.SPI3_PARPOL3.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT2_PULL.VALUE=2 @@ -3030,17 +3030,17 @@ DRIVER.SPI.VAR.SPI2_WDELAY2.VALUE=0 DRIVER.SPI.VAR.SPI2_WDELAY3.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT10_DOUT.VALUE=0 -DRIVER.SPI.VAR.SPI3_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.SPI.VAR.SPI3_C2TDELAYACTUAL.VALUE=19.231 DRIVER.SPI.VAR.SPI5_PORT_BIT11_DIR.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT9_FUN.VALUE=1 DRIVER.SPI.VAR.SPI4_PORT_BIT11_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT11_DOUT.VALUE=0 -DRIVER.SPI.VAR.SPI2_PRESCALE0.VALUE=102 -DRIVER.SPI.VAR.SPI2_PRESCALE1.VALUE=102 +DRIVER.SPI.VAR.SPI2_PRESCALE0.VALUE=103 +DRIVER.SPI.VAR.SPI2_PRESCALE1.VALUE=103 DRIVER.SPI.VAR.SPI2_PORT_BIT8_DIR.VALUE=0 -DRIVER.SPI.VAR.SPI2_PRESCALE2.VALUE=102 +DRIVER.SPI.VAR.SPI2_PRESCALE2.VALUE=103 DRIVER.SPI.VAR.SPI3_TIMEOUTENA.VALUE=0 -DRIVER.SPI.VAR.SPI2_PRESCALE3.VALUE=102 +DRIVER.SPI.VAR.SPI2_PRESCALE3.VALUE=103 DRIVER.SPI.VAR.SPI1_PORT_BIT8_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT0_PSL.VALUE=1 DRIVER.SPI.VAR.SPI1_PARITYENA0.VALUE=0 @@ -3139,25 +3139,25 @@ DRIVER.SPI.VAR.SPI5_PORT_BIT10_PSL.VALUE=1 DRIVER.SPI.VAR.SPI5_WAITENA0.VALUE=0 DRIVER.SPI.VAR.SPI5_ENABLEHIGHZ.VALUE=0 -DRIVER.SPI.VAR.SPI3_T2CDELAYACTUAL.VALUE=9.677 +DRIVER.SPI.VAR.SPI3_T2CDELAYACTUAL.VALUE=9.615 DRIVER.SPI.VAR.SPI1_PORT_BIT1_PDR.VALUE=0 DRIVER.SPI.VAR.SPI5_WAITENA1.VALUE=0 DRIVER.SPI.VAR.SPI5_WAITENA2.VALUE=0 DRIVER.SPI.VAR.SPI4_DEYSNCLVL.VALUE=0 DRIVER.SPI.VAR.SPI2_PORT_BIT9_FUN.VALUE=1 DRIVER.SPI.VAR.SPI5_WAITENA3.VALUE=0 DRIVER.SPI.VAR.SPI4_PORT_BIT9_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI1_PORT_BIT10_PDR.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT2_DOUT.VALUE=1 -DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_T2CDELAY.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT27_PULL.VALUE=2 DRIVER.SPI.VAR.SPI5_PORT_BIT19_PULL.VALUE=2 DRIVER.SPI.VAR.SPI5_PORT_BIT0_PULL.VALUE=2 -DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.SPI.VAR.SPI1_PORT_BIT2_FUN.VALUE=1 -DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.SPI.VAR.SPI4_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.SPI.VAR.SPI4_TXINTENA.VALUE=0 DRIVER.SPI.VAR.SPI5_PORT_BIT3_DOUT.VALUE=1 DRIVER.SPI.VAR.SPI2_PORT_BIT0_DOUT.VALUE=1 @@ -3188,7 +3188,7 @@ DRIVER.SPI.VAR.SPI3_SHIFTDIR1.VALUE=0 DRIVER.SPI.VAR.SPI1_PARPOL1.VALUE=0 DRIVER.SPI.VAR.SPI5_PHASE0.VALUE=0 -DRIVER.SPI.VAR.SPI4_C2TDELAYACTUAL.VALUE=19.355 +DRIVER.SPI.VAR.SPI4_C2TDELAYACTUAL.VALUE=19.231 DRIVER.SPI.VAR.SPI3_SHIFTDIR2.VALUE=0 DRIVER.SPI.VAR.SPI2_PORT_BIT8_PSL.VALUE=1 DRIVER.SPI.VAR.SPI1_PORT_BIT11_PDR.VALUE=0 @@ -3207,27 +3207,27 @@ DRIVER.SPI.VAR.SPI4_PORT_BIT8_DIR.VALUE=0 DRIVER.SPI.VAR.SPI1_PORT_BIT5_DIR.VALUE=1 DRIVER.SPI.VAR.SPI1_TXINTLVL.VALUE=0 -DRIVER.SPI.VAR.SPI5_PRESCALE0.VALUE=102 +DRIVER.SPI.VAR.SPI5_PRESCALE0.VALUE=103 DRIVER.SPI.VAR.SPI1_PORT_BIT10_PSL.VALUE=1 DRIVER.SPI.VAR.SPI5_C2EDELAY.VALUE=0 -DRIVER.SPI.VAR.SPI5_PRESCALE1.VALUE=102 -DRIVER.SPI.VAR.SPI5_PRESCALE2.VALUE=102 +DRIVER.SPI.VAR.SPI5_PRESCALE1.VALUE=103 +DRIVER.SPI.VAR.SPI5_PRESCALE2.VALUE=103 DRIVER.SPI.VAR.SPI3_PORT_BIT5_PULL.VALUE=2 DRIVER.SPI.VAR.SPI3_PORT_BIT1_DIR.VALUE=1 -DRIVER.SPI.VAR.SPI5_PRESCALE3.VALUE=102 +DRIVER.SPI.VAR.SPI5_PRESCALE3.VALUE=103 DRIVER.SPI.VAR.SPI3_PORT_BIT9_PULDIS.VALUE=0 DRIVER.SPI.VAR.SPI5_T2EDELAYACTUAL.VALUE=0.000 DRIVER.SPI.VAR.SPI3_PORT_BIT8_DOUT.VALUE=0 -DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE0.VALUE=1003.252 +DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE0.VALUE=1000.000 DRIVER.SPI.VAR.SPI1_PORT_BIT3_PDR.VALUE=0 -DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE1.VALUE=1003.252 +DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE1.VALUE=1000.000 DRIVER.SPI.VAR.SPI4_BASE_PORT.VALUE=0xFFF7FA18 DRIVER.SPI.VAR.SPI2_PORT_BIT10_DIR.VALUE=1 -DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE2.VALUE=1003.252 +DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE2.VALUE=1000.000 DRIVER.SPI.VAR.SPI1_PORT_BIT0_PULL.VALUE=2 DRIVER.SPI.VAR.SPI5_OVRNINTENA.VALUE=0 DRIVER.SPI.VAR.SPI3_PORT_BIT2_PULDIS.VALUE=0 -DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE3.VALUE=1003.252 +DRIVER.SPI.VAR.SPI2_ACTUALBAUDRATE3.VALUE=1000.000 DRIVER.SPI.VAR.SPI2_PORT_BIT9_PSL.VALUE=1 DRIVER.SPI.VAR.SPI1_PORT_BIT3_DOUT.VALUE=1 DRIVER.SPI.VAR.SPI5_PORT_BIT1_PULL.VALUE=2 @@ -3359,7 +3359,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_64_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_56_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_48_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_3_NOMINAL_BIT_RATE.VALUE=499.203 +DRIVER.CAN.VAR.CAN_3_NOMINAL_BIT_RATE.VALUE=500.000 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_43_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_35_MASK.VALUE=0x000007FF @@ -3507,7 +3507,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_25_ID.VALUE=25 DRIVER.CAN.VAR.CAN_2_MESSAGE_17_ID.VALUE=17 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_RTR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_2_BRP_FREQ.VALUE=4.493 +DRIVER.CAN.VAR.CAN_2_BRP_FREQ.VALUE=4.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_21_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_13_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_PORT_TX_DIR.VALUE=1 @@ -3522,7 +3522,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_11_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_6_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_4_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PROP_SEG.VALUE=2 +DRIVER.CAN.VAR.CAN_1_PROP_SEG.VALUE=3 DRIVER.CAN.VAR.CAN_3_MESSAGE_1_ID.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_INT_LEVEL.VALUE=0x00000000 @@ -3542,7 +3542,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_28_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_57_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_2_MESSAGE_49_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_2_NOMINAL_BIT_RATE.VALUE=499.203 +DRIVER.CAN.VAR.CAN_2_NOMINAL_BIT_RATE.VALUE=500.000 DRIVER.CAN.VAR.CAN_1_MESSAGE_64_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_56_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_48_BOOL_ENA.VALUE=0 @@ -3589,14 +3589,14 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_18_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_ID.VALUE=2 DRIVER.CAN.VAR.CAN_1_MESSAGE_6_INT_LEVEL.VALUE=0x00000040 -DRIVER.CAN.VAR.CAN_3_NOMINAL_BIT_TIME.VALUE=9 +DRIVER.CAN.VAR.CAN_3_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_20_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_12_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_7_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_58_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_58_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_10_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_2_SAMPLE_POINT.VALUE=77.778 +DRIVER.CAN.VAR.CAN_2_SAMPLE_POINT.VALUE=75.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_61_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_53_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_45_MASK.VALUE=0x000007FF @@ -3735,15 +3735,15 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_21_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_13_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_8_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_RATE.VALUE=249.601 +DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_RATE.VALUE=250.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_5_ID.VALUE=5 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_33_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_25_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_17_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_8_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_3_RTR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_3_BRPE_FREQ.VALUE=4.493 +DRIVER.CAN.VAR.CAN_3_BRPE_FREQ.VALUE=4.000 DRIVER.CAN.VAR.CAN_2_MESSAGE_59_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_DIR.VALUE=0x20000000 @@ -3768,7 +3768,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_46_ID.VALUE=46 DRIVER.CAN.VAR.CAN_2_MESSAGE_38_ID.VALUE=38 DRIVER.CAN.VAR.CAN_1_MESSAGE_11_INT_LEVEL.VALUE=0x00000800 -DRIVER.CAN.VAR.CAN_2_NOMINAL_BIT_TIME.VALUE=9 +DRIVER.CAN.VAR.CAN_2_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_50_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_42_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_34_DLC.VALUE=8 @@ -3787,7 +3787,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_37_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_29_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_TQ.VALUE=445.154 +DRIVER.CAN.VAR.CAN_1_TQ.VALUE=500.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_55_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_47_RTR.VALUE=0x00000000 @@ -3851,7 +3851,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_17_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_2_MESSAGE_14_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_9_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_2_TQ.VALUE=222.577 +DRIVER.CAN.VAR.CAN_2_TQ.VALUE=250.000 DRIVER.CAN.VAR.CAN_1_MESSAGE_7_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_1_BRPE.VALUE=0 DRIVER.CAN.VAR.CAN_3_MESSAGE_7_ID.VALUE=7 @@ -3903,7 +3903,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_20_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_13_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_12_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_3_TQ.VALUE=222.577 +DRIVER.CAN.VAR.CAN_3_TQ.VALUE=250.000 DRIVER.CAN.VAR.CAN_1_MESSAGE_60_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_52_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_44_BOOL_ENA.VALUE=0 @@ -3956,7 +3956,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_11_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT_REFERENCE.VALUE=75 -DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=700 +DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=1050 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_50_INT_ENA_REF.VALUE=0x00000000 @@ -3982,7 +3982,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_1_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_11_ID.VALUE=0x400 -DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=9 +DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_ENA_REF.VALUE=0x00000000 @@ -4148,8 +4148,8 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_37_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=2.246 -DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=2.246 +DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=2.000 +DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=2.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_EOB.VALUE=0x00000000 @@ -4264,7 +4264,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_13_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_13_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_3_SAMPLE_POINT.VALUE=77.778 +DRIVER.CAN.VAR.CAN_3_SAMPLE_POINT.VALUE=75.000 DRIVER.CAN.VAR.CAN_1_PORT_TX_DIR.VALUE=1 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_DIR.VALUE=0x00000000 @@ -4420,9 +4420,9 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_19_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_BRP.VALUE=45 +DRIVER.CAN.VAR.CAN_1_BRP.VALUE=51 DRIVER.CAN.VAR.CAN_3_MESSAGE_7_BOOL_ENA.VALUE=0 -DRIVER.CAN.VAR.CAN_3_PROP_SEG.VALUE=4 +DRIVER.CAN.VAR.CAN_3_PROP_SEG.VALUE=3 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_13_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_10_MASK.VALUE=0x000007FF @@ -4441,7 +4441,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_26_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_18_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_2_ID.VALUE=0x2 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=1033350 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=1040000 DRIVER.CAN.VAR.CAN_3_MESSAGE_31_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_23_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_15_DLC.VALUE=8 @@ -4554,7 +4554,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_3_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_3_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_58_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_2_BRP.VALUE=22 +DRIVER.CAN.VAR.CAN_2_BRP.VALUE=25 DRIVER.CAN.VAR.CAN_3_MESSAGE_57_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_49_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_2_PORT_RX_PULDIS.VALUE=0 @@ -4691,7 +4691,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_29_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_4_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_4_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_3_BRP.VALUE=22 +DRIVER.CAN.VAR.CAN_3_BRP.VALUE=25 DRIVER.CAN.VAR.CAN_1_MESSAGE_60_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_52_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_44_INT_ENA_REF.VALUE=0x00000000 @@ -4706,7 +4706,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_6_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_57_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_49_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=3 +DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_3_MESSAGE_22_ID.VALUE=22 DRIVER.CAN.VAR.CAN_3_MESSAGE_14_ID.VALUE=14 @@ -4931,7 +4931,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_9_ID.VALUE=0x100 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_59_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_SJW.VALUE=3 +DRIVER.CAN.VAR.CAN_1_SJW.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_EOB.VALUE=0x00000000 @@ -5145,8 +5145,8 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_7_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_1_ID.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_8_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_3_BRP_FREQ.VALUE=4.493 -DRIVER.CAN.VAR.CAN_2_BRPE_FREQ.VALUE=4.493 +DRIVER.CAN.VAR.CAN_3_BRP_FREQ.VALUE=4.000 +DRIVER.CAN.VAR.CAN_2_BRPE_FREQ.VALUE=4.000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_DIR.VALUE=0x20000000 @@ -5163,7 +5163,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_6_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_11_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_6_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_2_PROP_SEG.VALUE=4 +DRIVER.CAN.VAR.CAN_2_PROP_SEG.VALUE=3 DRIVER.CAN.VAR.CAN_1_MESSAGE_41_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_33_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_25_MASK.VALUE=0x000007FF @@ -5214,7 +5214,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_8_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_DIR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=66.667 +DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=75.000 DRIVER.CAN.VAR.CAN_2_MESSAGE_51_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_43_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_35_BOOL_ENA.VALUE=0 @@ -5572,7 +5572,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_PIN4_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN22_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN14_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC2_GROUP2_ACTUAL_SAMPLE_TIME.VALUE=387.08 +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 @@ -5598,7 +5598,7 @@ DRIVER.ADC.VAR.ADC2_BND.VALUE=2 DRIVER.ADC.VAR.ADC2_GROUP1_DISCHARGE_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_PORT_BIT0_PDR.VALUE=0 -DRIVER.ADC.VAR.ADC2_ACTUAL_CYCLE_TIME.VALUE=96.77 +DRIVER.ADC.VAR.ADC2_ACTUAL_CYCLE_TIME.VALUE=96.15 DRIVER.ADC.VAR.ADC2_GROUP1_SAMPLE_PRESCALER.VALUE=2 DRIVER.ADC.VAR.ADC2_GROUP1_PIN9_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP1_SAMPLE_TIME.VALUE=300.00 @@ -5623,7 +5623,7 @@ 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_ACTUAL_SAMPLE_TIME.VALUE=503.22 +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 DRIVER.ADC.VAR.ADC2_PORT_BIT0_PSL.VALUE=1 @@ -5658,7 +5658,7 @@ DRIVER.ADC.VAR.ADC1_GROUP2_PIN7_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP0_PIN17_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_PARITY_ENABLE.VALUE=0x00000005 -DRIVER.ADC.VAR.ADC1_ACTUAL_CYCLE_TIME.VALUE=251.61 +DRIVER.ADC.VAR.ADC1_ACTUAL_CYCLE_TIME.VALUE=250.00 DRIVER.ADC.VAR.ADC2_GROUP2_HW_TRIGGER_SOURCE_ALT.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP2_PIN15_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN0_ENABLE.VALUE=0x00000000 @@ -5681,7 +5681,7 @@ DRIVER.ADC.VAR.ADC2_RAM_PARITY_ENA.VALUE=0x00000005 DRIVER.ADC.VAR.ADC2_GROUP2_HW_TRIGGER_SOURCE.VALUE=EVENT DRIVER.ADC.VAR.ADC2_GROUP2_ID_ENABLE.VALUE=0x00000000 -DRIVER.ADC.VAR.ADC2_GROUP1_ACTUAL_SAMPLE_TIME.VALUE=387.08 +DRIVER.ADC.VAR.ADC2_GROUP1_ACTUAL_SAMPLE_TIME.VALUE=384.60 DRIVER.ADC.VAR.ADC1_GROUP2_LENGTH.VALUE=44 DRIVER.ADC.VAR.ADC1_GROUP0_BND.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP2_CHANNEL_TOTAL_TIME.VALUE=0.000000 @@ -5732,7 +5732,7 @@ DRIVER.ADC.VAR.ADC1_GROUP0_LENGTH.VALUE=0 DRIVER.ADC.VAR.ADC2_GROUP1_CONVERSION_TIME.VALUE=1.300 DRIVER.ADC.VAR.ADC1_GROUP0_PINS.VALUE=0 -DRIVER.ADC.VAR.ADC1_GROUP0_ACTUAL_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP0_ACTUAL_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC2_GROUP1_PIN3_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN10_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_ID_ENABLE.VALUE=0x00000000 @@ -5797,7 +5797,7 @@ DRIVER.ADC.VAR.ADC2_GROUP0_PIN5_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP2_PIN19_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_PRESCALE.VALUE=25 -DRIVER.ADC.VAR.ADC2_GROUP0_ACTUAL_SAMPLE_TIME.VALUE=387.08 +DRIVER.ADC.VAR.ADC2_GROUP0_ACTUAL_SAMPLE_TIME.VALUE=384.60 DRIVER.ADC.VAR.ADC1_GROUP2_PINS.VALUE=0 DRIVER.ADC.VAR.ADC2_PORT_BIT0_PULL.VALUE=2 DRIVER.ADC.VAR.ADC1_LENGTH.VALUE=64 @@ -5809,7 +5809,7 @@ DRIVER.ADC.VAR.ADC2_GROUP2_PIN2_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_CONTINUOUS_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC1_GROUP1_PIN5_ENABLE.VALUE=0x00000020 -DRIVER.ADC.VAR.ADC1_GROUP2_ACTUAL_SAMPLE_TIME.VALUE=503.22 +DRIVER.ADC.VAR.ADC1_GROUP2_ACTUAL_SAMPLE_TIME.VALUE=500.00 DRIVER.ADC.VAR.ADC1_GROUP0_SCAN_TIME.VALUE=0.000 DRIVER.ADC.VAR.ADC2_GROUP1_PIN6_ENABLE.VALUE=0x00000000 DRIVER.ADC.VAR.ADC2_GROUP0_PIN13_ENABLE.VALUE=0x00000000 @@ -5831,7 +5831,7 @@ DRIVER.LIN.VAR.LIN_BEINTLVL.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_TOA3WUSINTENA.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_PORT_BIT1_DOUT.VALUE=0 -DRIVER.LIN.VAR.LIN_MAXPRESCALE.VALUE=4651 +DRIVER.LIN.VAR.LIN_MAXPRESCALE.VALUE=4680 DRIVER.LIN.VAR.LIN_LENGTH.VALUE=8 DRIVER.LIN.VAR.LIN_PARITYENA.VALUE=0 DRIVER.LIN.VAR.LIN_BREAKINTENA.VALUE=0x00000000 @@ -5866,7 +5866,7 @@ DRIVER.LIN.VAR.LIN_PBEINTLVL.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_PORT_BIT2_PDR.VALUE=0 DRIVER.LIN.VAR.LIN_BASE_PORT.VALUE=0xFFF7E440 -DRIVER.LIN.VAR.LIN_ACTUALBAUDRATE.VALUE=19.995 +DRIVER.LIN.VAR.LIN_ACTUALBAUDRATE.VALUE=20.000 DRIVER.LIN.VAR.LIN_PORT_BIT1_PSL.VALUE=0 DRIVER.LIN.VAR.LIN_ISFEINTENA.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_FEINTENA.VALUE=0x00000000 @@ -5888,13 +5888,13 @@ DRIVER.LIN.VAR.LIN_IDINTLVL.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_PEINTENA.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_TOINTLVL.VALUE=0x00000000 -DRIVER.LIN.VAR.LIN_MAXBAUDRATE.VALUE=22.218 +DRIVER.LIN.VAR.LIN_MAXBAUDRATE.VALUE=22.222 DRIVER.LIN.VAR.LIN_BEINTENA.VALUE=0x00000000 DRIVER.LIN.VAR.LIN_RXINTLVL.VALUE=0x00000000 -DRIVER.LIN.VAR.LIN_PRESCALE.VALUE=322 +DRIVER.LIN.VAR.LIN_PRESCALE.VALUE=324 DRIVER.LIN.VAR.LIN_PORT_BIT0_PULDIS.VALUE=0 DRIVER.HET.VAR.HET2_EDGE5_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM5_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM5_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_PWM0_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT0_PULL.VALUE=2 DRIVER.HET.VAR.HET2_INT_X0.VALUE=0x00000000 @@ -5912,7 +5912,7 @@ DRIVER.HET.VAR.HET2_BIT3_DOUT.VALUE=0 DRIVER.HET.VAR.HET2_INT_X2.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X3.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM2_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM2_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_INT_X4.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM6_ACTION.VALUE=3 DRIVER.HET.VAR.HET1_PWM0_DUTY_LVL.VALUE=0x00000000 @@ -5926,7 +5926,7 @@ DRIVER.HET.VAR.HET1_BIT22_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT18_HRSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT14_PULDIS.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM4_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM4_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT3_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X6.VALUE=0x00000000 DRIVER.HET.VAR.HET1_EDGE0_PIN_SELECT.VALUE=12 @@ -5942,7 +5942,7 @@ DRIVER.HET.VAR.HET2_BIT11_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT11_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_PWM4_PIN_SELECT.VALUE=16 -DRIVER.HET.VAR.HET2_PWM4_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM4_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET1_RAM_BASE.VALUE=0xFF460000 DRIVER.HET.VAR.HET2_EDGE6_BOTH.VALUE=0 DRIVER.HET.VAR.HET2_PWM2_DUTY_LVL.VALUE=0x00000000 @@ -5977,17 +5977,17 @@ DRIVER.HET.VAR.HET1_BIT29_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT0_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT8_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM4_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM4_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_BIT1_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT12_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM7_ACTION.VALUE=3 -DRIVER.HET.VAR.HET2_PWM4_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM4_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_BIT18_PULL.VALUE=1 DRIVER.HET.VAR.HET2_BIT16_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM3_DUTY_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM3_POLARITY.VALUE=3 DRIVER.HET.VAR.HET1_BIT0_XORSHARE.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM1_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM1_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT6_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_CAP5_PIN_SELECT.VALUE=26 DRIVER.HET.VAR.HET1_BIT28_PSL.VALUE=0x00000000 @@ -5997,7 +5997,7 @@ DRIVER.HET.VAR.HET2_BIT1_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE7_EVENT.VALUE=1 DRIVER.HET.VAR.HET1_EDGE5_BOTH.VALUE=0 -DRIVER.HET.VAR.HET1_PWM5_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM5_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_BIT3_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE7_POLARITY.VALUE=0 DRIVER.HET.VAR.HET1_EDGE1_INTENA.VALUE=0x00040000 @@ -6013,13 +6013,13 @@ DRIVER.HET.VAR.HET2_PWM0_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT2_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT5_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM7_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM7_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET1_BIT8_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT1_PDR.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_LR_ACTUALTIME.VALUE=1238.690 -DRIVER.HET.VAR.HET1_PWM5_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_LR_ACTUALTIME.VALUE=1230.769 +DRIVER.HET.VAR.HET1_PWM5_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_PWM5_PERIOD_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM4_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM4_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_BIT9_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM3_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM0_DUTY_INTENA.VALUE=0x00000000 @@ -6042,8 +6042,8 @@ DRIVER.HET.VAR.HET1_BIT29_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT0_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET_DIS_BLACKBOX.VALUE=0 -DRIVER.HET.VAR.HET2_PWM7_DUTYTIME.VALUE=501.669 -DRIVER.HET.VAR.HET2_HR_ACTUALFREQUENCY.VALUE=103.335 +DRIVER.HET.VAR.HET2_PWM7_DUTYTIME.VALUE=500.923 +DRIVER.HET.VAR.HET2_HR_ACTUALFREQUENCY.VALUE=104.000 DRIVER.HET.VAR.HET2_PWM5_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM4_ACTION.VALUE=3 DRIVER.HET.VAR.HET1_BIT25_PULL.VALUE=1 @@ -6059,7 +6059,7 @@ DRIVER.HET.VAR.HET2_INT_X11.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X20.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X12.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM3_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM3_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_PWM6_ENA.VALUE=0 DRIVER.HET.VAR.HET2_BIT16_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X21.VALUE=0x00000000 @@ -6077,7 +6077,7 @@ DRIVER.HET.VAR.HET2_INT_X31.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X23.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X15.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM3_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM3_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_INT_X24.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X16.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BASE_PORT.VALUE=0xFFF7B84C @@ -6096,19 +6096,19 @@ DRIVER.HET.VAR.HET2_BIT18_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X28.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM2_PERIOD_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM1_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM1_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_PWM0_DUTY.VALUE=50 DRIVER.HET.VAR.HET2_BIT18_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X29.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM1_ENA.VALUE=0 DRIVER.HET.VAR.HET2_CAP7_PIN_SELECT.VALUE=6 DRIVER.HET.VAR.HET2_BIT8_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM5_PERIOD.VALUE=1000.000 -DRIVER.HET.VAR.HET1_PWM4_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM4_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET1_PWM3_PIN_SELECT.VALUE=14 DRIVER.HET.VAR.HET1_BIT11_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT1_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM0_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM0_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_BIT2_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE6_BOTH.VALUE=0 DRIVER.HET.VAR.HET1_BIT5_DIR.VALUE=0x00000000 @@ -6121,7 +6121,7 @@ DRIVER.HET.VAR.HET1_PIN_ENABLE.VALUE=0 DRIVER.HET.VAR.HET2_BIT16_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT5_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM0_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM0_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_BIT6_PULL.VALUE=1 DRIVER.HET.VAR.HET2_PWM7_ENA.VALUE=0 DRIVER.HET.VAR.HET1_PWM0_DUTY_INTENA.VALUE=0x00000000 @@ -6143,7 +6143,7 @@ DRIVER.HET.VAR.HET2_BIT9_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT2_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE0_EVENT.VALUE=1 -DRIVER.HET.VAR.HET1_PWM2_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM2_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_BIT26_PULL.VALUE=1 DRIVER.HET.VAR.HET1_BIT18_PULL.VALUE=1 DRIVER.HET.VAR.HET1_BIT6_DIR.VALUE=0x00000000 @@ -6153,19 +6153,19 @@ DRIVER.HET.VAR.HET1_CAP4_PIN_SELECT.VALUE=24 DRIVER.HET.VAR.HET1_BIT29_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT0_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM2_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM2_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_EDGE3_POLARITY.VALUE=0 DRIVER.HET.VAR.HET1_BIT3_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT2_HRSHARE.VALUE=0x00000002 DRIVER.HET.VAR.HET2_PWM6_PERIOD.VALUE=1000.000 DRIVER.HET.VAR.HET2_BIT8_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM1_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM1_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET1_BIT4_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT4_HRSHARE.VALUE=0x00000004 DRIVER.HET.VAR.HET1_BIT25_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT17_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT16_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM1_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM1_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_PWM4_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM2_ACTION.VALUE=3 DRIVER.HET.VAR.HET2_PWM1_DUTY.VALUE=50 @@ -6191,21 +6191,21 @@ DRIVER.HET.VAR.HET1_BIT10_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X21.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X13.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM5_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM5_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT18_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT6_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_EDGE4_PIN_SELECT.VALUE=20 DRIVER.HET.VAR.HET1_INT_X30.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X22.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X14.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM3_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM3_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET1_INT_X31.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X23.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X15.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE5_EVENT.VALUE=1 DRIVER.HET.VAR.HET2_PWM1_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM7_PERIOD_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM6_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM6_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_BIT7_PULL.VALUE=1 DRIVER.HET.VAR.HET1_INT_X24.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X16.VALUE=0x00000000 @@ -6229,16 +6229,16 @@ DRIVER.HET.VAR.HET2_BIT17_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT14_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_PWM3_PERIOD.VALUE=1000.000 -DRIVER.HET.VAR.HET2_PWM5_DUTY_PRESCALER.VALUE=51968 -DRIVER.HET.VAR.HET1_PWM1_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM5_DUTY_PRESCALER.VALUE=52224 +DRIVER.HET.VAR.HET1_PWM1_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_BIT10_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_CAP4_POLARITY.VALUE=0 DRIVER.HET.VAR.HET2_BIT8_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT4_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM4_ENA.VALUE=0 DRIVER.HET.VAR.HET1_PWM0_POLARITY.VALUE=3 DRIVER.HET.VAR.HET1_BIT4_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM1_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM1_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_EDGE1_LVL.VALUE=0x00040000 DRIVER.HET.VAR.HET1_PWM1_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT27_PULL.VALUE=1 @@ -6259,7 +6259,7 @@ DRIVER.HET.VAR.HET1_BIT8_HRSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT4_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE3_PIN_SELECT.VALUE=6 -DRIVER.HET.VAR.HET2_PWM2_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM2_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT18_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT11_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT10_PULL.VALUE=1 @@ -6272,11 +6272,11 @@ DRIVER.HET.VAR.HET1_BIT21_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT13_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT5_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM4_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM4_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_BIT4_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE2_LVL.VALUE=0x00080000 DRIVER.HET.VAR.HET1_PWM2_DUTY_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM2_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM2_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_BIT9_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT6_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM6_DUTY.VALUE=50 @@ -6292,17 +6292,17 @@ DRIVER.HET.VAR.HET1_BIT15_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_CAP3_PIN_SELECT.VALUE=6 DRIVER.HET.VAR.HET1_BIT7_PDR.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM6_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM6_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_PWM4_DUTY_LVL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM1_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM1_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_BIT12_PULL.VALUE=1 -DRIVER.HET.VAR.HET1_PWM0_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM0_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_PWM0_ACTION.VALUE=3 DRIVER.HET.VAR.HET1_CAP5_POLARITY.VALUE=0 DRIVER.HET.VAR.HET1_BIT26_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT18_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT15_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM0_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET2_PWM0_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_EDGE4_EVENT.VALUE=1 DRIVER.HET.VAR.HET1_BIT20_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT12_DIR.VALUE=0x00000000 @@ -6333,8 +6333,8 @@ DRIVER.HET.VAR.HET2_BIT2_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT2_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM7_PIN_SELECT.VALUE=19 -DRIVER.HET.VAR.HET1_PWM5_ACTUALPERIOD.VALUE=1000.862 -DRIVER.HET.VAR.HET1_LR_ACTUALTIME.VALUE=1238.690 +DRIVER.HET.VAR.HET1_PWM5_ACTUALPERIOD.VALUE=1000.615 +DRIVER.HET.VAR.HET1_LR_ACTUALTIME.VALUE=1230.769 DRIVER.HET.VAR.HET1_BIT21_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT13_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT11_PULL.VALUE=1 @@ -6345,7 +6345,7 @@ DRIVER.HET.VAR.HET1_BIT22_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT14_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT7_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_HR_ACTUALFREQUENCY.VALUE=103.335 +DRIVER.HET.VAR.HET1_HR_ACTUALFREQUENCY.VALUE=104.000 DRIVER.HET.VAR.HET2_PWM1_ACTION.VALUE=3 DRIVER.HET.VAR.HET2_BIT5_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE4_LVL.VALUE=0x00000000 @@ -6356,7 +6356,7 @@ DRIVER.HET.VAR.HET1_PWM2_DUTY_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT8_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT11_PDR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM7_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM7_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_EDGE6_EVENT.VALUE=1 DRIVER.HET.VAR.HET2_MASTER.VALUE=1 DRIVER.HET.VAR.HET1_PWM5_DUTY_LVL.VALUE=0x00000000 @@ -6368,7 +6368,7 @@ DRIVER.HET.VAR.HET1_PWM1_PIN_SELECT.VALUE=10 DRIVER.HET.VAR.HET1_BIT9_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT13_PULL.VALUE=1 -DRIVER.HET.VAR.HET1_PWM7_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM7_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_PWM5_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT24_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT16_XORSHARE.VALUE=0x00000000 @@ -6395,7 +6395,7 @@ DRIVER.HET.VAR.HET1_DIS_BLACKBOX.VALUE=0 DRIVER.HET.VAR.HET2_LR_TIME.VALUE=800.000 DRIVER.HET.VAR.HET1_INT_X3.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM6_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM6_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_EDGE5_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM5_ACTION.VALUE=3 DRIVER.HET.VAR.HET1_BIT29_PULL.VALUE=1 @@ -6405,12 +6405,12 @@ DRIVER.HET.VAR.HET1_BIT21_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT13_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X5.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM2_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM2_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET1_BIT20_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT12_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT3_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_INT_X6.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM0_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM0_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET1_INT_X7.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BASE_PORT.VALUE=0xFFF7B94C DRIVER.HET.VAR.HET1_INT_X8.VALUE=0x00000000 @@ -6427,7 +6427,7 @@ DRIVER.HET.VAR.HET2_BIT10_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_CAP2_PIN_SELECT.VALUE=4 DRIVER.HET.VAR.HET1_BIT11_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM2_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM2_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_PWM0_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT31_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT23_DIR.VALUE=0x00000000 @@ -6440,7 +6440,7 @@ DRIVER.HET.VAR.HET1_BIT30_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT22_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT14_ANDSHARE.VALUE=0x00000000 -DRIVER.HET.VAR.HET2_PWM6_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM6_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET1_PWM6_PERIOD.VALUE=1000.000 DRIVER.HET.VAR.HET1_BIT31_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT23_DOUT.VALUE=0 @@ -6456,7 +6456,7 @@ DRIVER.HET.VAR.HET1_BIT13_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM2_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT0_DIR.VALUE=0x00000001 -DRIVER.HET.VAR.HET1_PWM3_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM3_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_CAP3_POLARITY.VALUE=0 DRIVER.HET.VAR.HET2_BIT0_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM3_PIN_SELECT.VALUE=14 @@ -6468,7 +6468,7 @@ DRIVER.HET.VAR.HET1_BIT20_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT12_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_HR_FREQUENCY.VALUE=110.000 -DRIVER.HET.VAR.HET2_PWM2_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM2_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_EDGE5_EVENT.VALUE=1 DRIVER.HET.VAR.HET1_EDGE1_BOTH.VALUE=0 DRIVER.HET.VAR.HET1_PWM5_PERIOD_LVL.VALUE=0x00000000 @@ -6496,8 +6496,8 @@ DRIVER.HET.VAR.HET1_BIT4_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE7_PIN_SELECT.VALUE=14 DRIVER.HET.VAR.HET2_PWM7_PERIOD.VALUE=1000.000 -DRIVER.HET.VAR.HET2_PWM3_ACTUALPERIOD.VALUE=1000.862 -DRIVER.HET.VAR.HET1_PWM3_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM3_ACTUALPERIOD.VALUE=1000.615 +DRIVER.HET.VAR.HET1_PWM3_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_EDGE3_BOTH.VALUE=0 DRIVER.HET.VAR.HET1_PWM1_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM2_PERIOD_INTENA.VALUE=0x00000000 @@ -6523,7 +6523,7 @@ DRIVER.HET.VAR.HET1_BIT11_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT24_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT16_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM5_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM5_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_RAM_BASE.VALUE=0xFF440000 DRIVER.HET.VAR.HET2_PWM3_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT7_PULL.VALUE=1 @@ -6560,10 +6560,10 @@ DRIVER.HET.VAR.HET2_RAM_PARITY_ENA.VALUE=0x00000005 DRIVER.HET.VAR.HET1_PWM7_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM0_DUTY.VALUE=50 -DRIVER.HET.VAR.HET2_PWM0_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM0_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT1_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_CAP1_PIN_SELECT.VALUE=2 -DRIVER.HET.VAR.HET1_PWM7_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM7_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_BIT2_PULL.VALUE=1 DRIVER.HET.VAR.HET2_PWM6_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM4_POLARITY.VALUE=3 @@ -6574,13 +6574,13 @@ DRIVER.HET.VAR.HET1_BIT24_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT16_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT5_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM7_PERIOD_PRESCALER.VALUE=103296 -DRIVER.HET.VAR.HET2_PWM7_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM7_PERIOD_PRESCALER.VALUE=103936 +DRIVER.HET.VAR.HET2_PWM7_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_PWM4_ACTION.VALUE=3 DRIVER.HET.VAR.HET2_BIT3_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_EDGE5_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT6_ANDSHARE.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM6_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM6_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_EDGE4_BOTH.VALUE=0 DRIVER.HET.VAR.HET2_PWM1_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT11_DIR.VALUE=0x00000000 @@ -6591,7 +6591,7 @@ DRIVER.HET.VAR.HET1_BIT31_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT23_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT15_PSL.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM6_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET1_PWM6_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_EDGE2_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM4_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT30_PULL.VALUE=1 @@ -6626,7 +6626,7 @@ DRIVER.HET.VAR.HET1_BIT16_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT16_PULL.VALUE=1 DRIVER.HET.VAR.HET2_BIT12_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM4_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM4_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_PWM1_ACTION.VALUE=3 DRIVER.HET.VAR.HET2_BIT0_HRSHARE.VALUE=0x00000001 DRIVER.HET.VAR.HET1_EDGE7_POLARITY.VALUE=0 @@ -6639,7 +6639,7 @@ DRIVER.HET.VAR.HET2_EDGE3_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_EDGE6_EVENT.VALUE=1 DRIVER.HET.VAR.HET1_EDGE3_BOTH.VALUE=0 -DRIVER.HET.VAR.HET1_PWM6_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM6_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET1_BIT28_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT13_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM5_POLARITY.VALUE=3 @@ -6649,17 +6649,17 @@ DRIVER.HET.VAR.HET2_CAP3_PIN_SELECT.VALUE=6 DRIVER.HET.VAR.HET2_BIT10_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT2_DOUT.VALUE=0 -DRIVER.HET.VAR.HET1_PWM3_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM3_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_EDGE3_EVENT.VALUE=1 -DRIVER.HET.VAR.HET2_PWM6_PERIOD_PRESCALER.VALUE=103296 -DRIVER.HET.VAR.HET2_PWM3_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET2_PWM6_PERIOD_PRESCALER.VALUE=103936 +DRIVER.HET.VAR.HET2_PWM3_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET1_BIT3_PULL.VALUE=1 DRIVER.HET.VAR.HET2_PWM1_ENA.VALUE=0 DRIVER.HET.VAR.HET2_BIT1_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT26_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT18_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT6_DOUT.VALUE=0 -DRIVER.HET.VAR.HET2_PWM1_DUTYTIME.VALUE=501.669 +DRIVER.HET.VAR.HET2_PWM1_DUTYTIME.VALUE=500.923 DRIVER.HET.VAR.HET2_BIT5_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM7_POLARITY.VALUE=3 DRIVER.HET.VAR.HET2_BIT16_HRSHARE.VALUE=0x00000000 @@ -6673,7 +6673,7 @@ DRIVER.HET.VAR.HET2_BIT13_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT3_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_EDGE0_POLARITY.VALUE=0 -DRIVER.HET.VAR.HET2_PWM7_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET2_PWM7_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_BIT3_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT25_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT17_PSL.VALUE=0x00000000 @@ -6704,18 +6704,18 @@ DRIVER.HET.VAR.HET1_BIT27_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT19_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT6_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM0_DUTY_PRESCALER.VALUE=51968 +DRIVER.HET.VAR.HET1_PWM0_DUTY_PRESCALER.VALUE=52224 DRIVER.HET.VAR.HET2_EDGE7_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM0_POLARITY.VALUE=3 DRIVER.HET.VAR.HET1_BIT26_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT18_XORSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT10_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_EDGE6_PIN_SELECT.VALUE=22 -DRIVER.HET.VAR.HET1_PWM0_ACTUALPERIOD.VALUE=1000.862 +DRIVER.HET.VAR.HET1_PWM0_ACTUALPERIOD.VALUE=1000.615 DRIVER.HET.VAR.HET2_HR_FREQUENCY.VALUE=110.000 DRIVER.HET.VAR.HET2_BIT17_PULL.VALUE=1 DRIVER.HET.VAR.HET2_BIT14_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_PWM5_PERIOD_PRESCALER.VALUE=103296 +DRIVER.HET.VAR.HET1_PWM5_PERIOD_PRESCALER.VALUE=103936 DRIVER.HET.VAR.HET2_EDGE4_POLARITY.VALUE=0 DRIVER.HET.VAR.HET2_EDGE0_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT7_PULDIS.VALUE=0x00000000 @@ -7090,7 +7090,7 @@ DRIVER.DCC.VAR.DCC1_VALID0_SEED.VALUE=792 DRIVER.DCC.VAR.DCC1_BASE.VALUE=0xFFFFEC00 DRIVER.DCC.VAR.DCC2_COUNT1_SEED.VALUE=0 -DRIVER.DCC.VAR.DCC1_CLOCK_SOURCE1_FREQ.VALUE=206.67 +DRIVER.DCC.VAR.DCC1_CLOCK_SOURCE1_FREQ.VALUE=208.00 DRIVER.DCC.VAR.DCC1_CLOCK_DRIFT.VALUE=1.0 DRIVER.DCC.VAR.DCC1_ENABLE.VALUE=0xA DRIVER.DCC.VAR.DCC1_ENABLE_SINGLESHOT_MODE.VALUE=0x5 @@ -7104,7 +7104,7 @@ DRIVER.DCC.VAR.DCC1_CLOCK_SOURCE0.VALUE=OSCIN DRIVER.DCC.VAR.DCC1_CLOCK_SOURCE1.VALUE=PLL1 DRIVER.DCC.VAR.CLKT_TCK_FREQ.VALUE=12.0 -DRIVER.DCC.VAR.DCC1_COUNT1_SEED.VALUE=511508 +DRIVER.DCC.VAR.DCC1_COUNT1_SEED.VALUE=514800 DRIVER.PINMUX.VAR.DMA_EIDXS_28.VALUE=0 DRIVER.PINMUX.VAR.DMA_FIDXD_20.VALUE=0 DRIVER.PINMUX.VAR.DMA_FIDXD_12.VALUE=0 @@ -10322,7 +10322,7 @@ DRIVER.FEE.VAR.FEE_FLASH_ERROR_CORRECTION_ENABLE.VALUE=STD_ON DRIVER.FEE.VAR.FEE_VIRTUAL_SECTOR_2_BANK.VALUE=7 DRIVER.FEE.VAR.FEE_DATASELECT_BITS.VALUE=0 -DRIVER.FEE.VAR.FEE_OPERATING_FREQ.VALUE=206.670 +DRIVER.FEE.VAR.FEE_OPERATING_FREQ.VALUE=208.000 DRIVER.FEE.VAR.FEE_TOTAL_SECTORS.VALUE=4 DRIVER.FEE.VAR.FEE_BLOCK_INDEX_16_NUMBER.VALUE=16 DRIVER.FEE.VAR.FEE_BLOCK_INDEX_15_WRITE_CYCLES.VALUE=0x8 Index: firmware/source/i2c.c =================================================================== diff -u -rd2d9f19fd458bad756c2468ea10fceb0c11d4200 -rafa9d4924d55ac4fc98270a012e92dd1f6ee65d0 --- firmware/source/i2c.c (.../i2c.c) (revision d2d9f19fd458bad756c2468ea10fceb0c11d4200) +++ firmware/source/i2c.c (.../i2c.c) (revision afa9d4924d55ac4fc98270a012e92dd1f6ee65d0) @@ -202,7 +202,7 @@ uint32 prescale; uint32 d; uint32 ck; - float64 vclk = 103.335F * 1000000.0F; + float64 vclk = 104.000F * 1000000.0F; float64 divider= 0.0F; uint32 temp = 0U;