Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -83,12 +83,14 @@ // ********** private data ********** -static U32 concentratePumpMonitorTimerCounter; ///< Timer counter to perform monitor on concentrate pump. +static U32 concentratePumpMonitorTimerCounter; ///< Timer counter to perform monitor on concentrate pump. /// Concentrate pump data publish interval. static OVERRIDE_U32_T concentratePumpDataPublishInterval = { CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL, CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL, 0, 0 }; -static CONCENTRATE_PUMP_T concentratePumps[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Array of concentrate pumps' data structure. +static CONCENTRATE_PUMP_T concentratePumps[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Array of concentrate pumps' data structure. +static DG_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. +static DG_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. // ********** private function prototypes ********** @@ -101,6 +103,7 @@ static U32 getPublishConcentratePumpDataInterval( void ); static void calcMeasuredPumpsSpeed( CONCENTRATE_PUMPS_T pumpId, U16 pulseWidthCount ); static F32 getMeasuredPumpSpeed( CONCENTRATE_PUMPS_T pumpId ); +static BOOL processCalibrationData( void ); /*********************************************************************//** * @brief @@ -145,6 +148,13 @@ *************************************************************************/ void execConcentratePumpMonitor( void ) { + // Check if a new calibration is available + if ( TRUE == isNewCalibrationRecordAvailable() ) + { + // Get the new calibration data and check its validity + processCalibrationData(); + } + if ( ++concentratePumpMonitorTimerCounter >= getPublishConcentratePumpDataInterval() ) { CONCENTRATE_PUMP_DATA_T data; @@ -203,6 +213,32 @@ /*********************************************************************//** * @brief + * The execConcenratePumpsSelfTest function executes the concentrate pumps + * self-test. + * @details Inputs: none + * @details Outputs: none + * @return PressuresSelfTestResult (SELF_TEST_STATUS_T) + *************************************************************************/ +SELF_TEST_STATUS_T execConcenratePumpsSelfTest( void ) +{ + SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; + + BOOL calStatus = processCalibrationData(); + + if ( TRUE == calStatus ) + { + result = SELF_TEST_STATUS_PASSED; + } + else + { + result = SELF_TEST_STATUS_FAILED; + } + + return result; +} + +/*********************************************************************//** + * @brief * The requestConcentratePumpsOn function requests the module to turn on * the concentrate pumps. * @details Inputs: none @@ -285,10 +321,37 @@ /*********************************************************************//** * @brief - * The stopConcentratePump function sets the concentrate pump step speed to zero - * and turns off concentrate pumps. + * The getAcidConcentrateCalRecord function returns the acid concentrate + * calibration record. * @details Inputs: none - * @details Outputs: targetPumpSpeed[], currentPumpSpeed[], turn concentrate pumps off + * @details Outputs: acidConcentrateCalRecord + * @return acid concentrate calibration record + *************************************************************************/ +DG_ACID_CONCENTRATES_RECORD_T getAcidConcentrateCalRecord( void ) +{ + return acidConcentrateCalRecord; +} + +/*********************************************************************//** + * @brief + * The getBicarbConcentrateCalRecord function returns the bicarb + * concentrate calibration record. + * @details Inputs: none + * @details Outputs: bicarbConcentrateCalRecord + * @return bicarb concentrate calibration record + *************************************************************************/ +DG_BICARB_CONCENTRATES_RECORD_T getBicarbConcentrateCalRecord( void ) +{ + return bicarbConcentrateCalRecord; +} + +/*********************************************************************//** + * @brief + * The stopConcentratePump function sets the concentrate pump step speed + * to zero and turns off concentrate pumps. + * @details Inputs: none + * @details Outputs: targetPumpSpeed[], currentPumpSpeed[], turn + * concentrate pumps off * @param pumpId concentrate pump id * @return none *************************************************************************/ @@ -472,7 +535,63 @@ return result; } +/*********************************************************************//** + * @brief + * The processCalibrationData function gets the calibration data and makes + * sure it is valid by checking the calibration date. The calibration date + * should not be 0. + * @details Inputs: none + * @details Outputs: acidConcentrateCalRecord, bicarbConcentrateCalRecord + * @return TRUE if the calibration record is valid, otherwise FALSE + *************************************************************************/ +static BOOL processCalibrationData( void ) +{ + BOOL status = TRUE; + // Get the calibration record from NVDataMgmt + DG_ACID_CONCENTRATES_RECORD_T acidCalRecord = getDGAcidConcentratesRecord(); + DG_BICARB_CONCENTRATES_RECORD_T bicarbCalRecord = getDGBicarbConcentratesRecord(); + + // Check if the calibration data that was received from NVDataMgmt is legitimate + // The calibration date item should not be zero. If the calibration date is 0, + // then the data is not stored in the NV memory or it was corrupted. + if ( 0 == acidCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].calibrationTime ) + { + activateAlarmNoData( ALARM_ID_DG_ACID_CONCENTRATE_INVALID_CAL_RECORD ); + status = FALSE; + } + + // NOTE: Right now only acid concentrate 1 is used, therefore there is no for loop + acidConcentrateCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].startVolume = + acidCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].startVolume; + + acidConcentrateCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidConcMixRatio = + acidCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidConcMixRatio; + + acidConcentrateCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].reserverdSpace = + acidCalRecord.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].reserverdSpace; + + // Check the validity of the bicarb concentrate values + if ( 0 == bicarbCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].calibrationTime ) + { + activateAlarmNoData( ALARM_ID_DG_BICARB_CONCENTRATE_INVALID_CAL_RECORD ); + status = FALSE; + } + + // NOTE: Right now only bicarb concentrate 1 is used, therefore there is no for loop + bicarbConcentrateCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].startVolume = + bicarbCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].startVolume; + + bicarbConcentrateCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbConcMixRatio = + bicarbCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbConcMixRatio; + + bicarbConcentrateCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].reservedSpace = + bicarbCalRecord.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].reservedSpace; + + return status; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -19,6 +19,7 @@ #define __CONCENTRATEPUMPS_H__ #include "DGCommon.h" +#include "NVDataMgmt.h" /** * @defgroup ConcentratePumps ConcentratePumps @@ -53,11 +54,16 @@ void execConcentratePumpMonitor( void ); void execConcentratePumpController( void ); +SELF_TEST_STATUS_T execConcenratePumpsSelfTest( void ); + void requestConcentratePumpsOn( CONCENTRATE_PUMPS_T pumpId ); void requestConcentratePumpsOff( CONCENTRATE_PUMPS_T pumpId ); void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min ); +DG_ACID_CONCENTRATES_RECORD_T getAcidConcentrateCalRecord( void ); +DG_BICARB_CONCENTRATES_RECORD_T getBicarbConcentrateCalRecord( void ); + BOOL testSetConcentratePumpDataPublishIntervalOverride( U32 value ); BOOL testResetConcentratePumpDataPublishIntervalOverride( void ); BOOL testSetConcentratePumpTargetSpeedOverride( U32 pumpId, F32 value ); Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -602,9 +602,7 @@ // then the data is not stored in the NV memory or it was corrupted. if ( 0 == calData.condSensors[ sensor ].calibrationTime ) { -#ifndef DISABLE_CAL_CHECK - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_COND_SENSORS_INVALID_CALIBRATION, (U32)sensor ); -#endif + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_COND_SENSORS_INVALID_CAL_RECORD, (U32)sensor ); status = FALSE; } Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -49,7 +49,7 @@ #define DRAIN_PUMP_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the Drain Pump data is published on the CAN bus. -#define DRP_CONTROL_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the Drain pump is controlled. +#define DRP_CONTROL_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the Drain pump is controlled. TODO original one is 1 second #define RPM_2_DAC_SLOPE 0.0547 ///< RPM to DAC conversion slope. #define RPM_2_DAC_INTERCEPT 2.9968 ///< RPM to DAC conversion intercept. @@ -675,9 +675,7 @@ // then the data is not stored in the NV memory or it was corrupted. if ( 0 == calData.calibrationTime ) { -#ifndef DISABLE_CAL_CHECK - activateAlarmNoData( ALARM_ID_DG_DRAIN_LINE_VOLUME_INVALID_CALIBRATION ); -#endif + activateAlarmNoData( ALARM_ID_DG_DRAIN_LINE_VOLUME_INVALID_CAL_RECORD ); status = FALSE; } Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -32,9 +32,11 @@ #define FANS_SELF_TEST_WAIT_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Fans self test wait time for the fans to get to RPM. #define FANS_SELF_TEST_TARGET_PWM 0.5 ///< Fans self test target PWM for testing the fans are running. #define FANS_MAX_ALLOWED_RPM_OUT_OF_RANGE_INTERVAL ( 3 * MS_PER_SECOND ) ///< Fans max allowed RPM out of range time interval. -#define FANS_MAX_ALLOWED_RPM 7000 ///< Fans max allowed RPM value. +#define FANS_MAX_ALLOWED_RPM 5500 ///< Fans max allowed RPM value. #define FANS_MIN_ALLOWED_RPM 150 ///< Fans max allowed RPM value. #define FANS_MONITOR_INTERVAL_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Fans monitor time interval in counts. +#define FANS_MIN_RPM_OUT_OF_RANGE_TOL 0.25 ///< Fans min RPM out of range tolerance. +#define FANS_MAX_RPM_OUT_OF_RANGE_TOL 0.5 ///< Fans max RPM out of range tolerance. /// Fans self test states typedef enum fans_Self_Test @@ -61,12 +63,11 @@ } FAN_STATUS_T; static FAN_STATUS_T fansStatus; ///< Fans status. -static SELF_TEST_STATUS_T fansSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< Fans self test result. -static FANS_SELF_TEST_STATES_T fansSelfTestState = FANS_SELF_TEST_START_STATE; ///< Fans self test state. static FANS_EXEC_STATES_T fansExecState = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; ///< Fans exec state. static U32 fansControlCounter = 0; ///< Fans control interval counter. static U32 fansPublishCounter = 0; ///< Fans data publish interval counter. static U32 fansMonitorCounter = 0; ///< Fans monitor interval counter. +static BOOL isPOSTComplete = FALSE; ///< Flag that indicates whether POST is complete or not. /// Temperature to duty cycle conversion slope (duty cycle not in percent) static const F32 SLOPE = ( FANS_MAX_DUTY_CYCLE - FANS_MIN_DUTY_CYCLE ) / ( MAX_ALLOWED_AMBINET_TEMPERATURE - MIN_ALLOWED_AMBIENT_TEMPERATURE ); @@ -76,9 +77,6 @@ static OVERRIDE_U32_T fansPublishInterval = { FANS_DATA_PUBLISH_INTERVAL, FANS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Fans publish time interval override -static FANS_SELF_TEST_STATES_T handleSelfTestStart( void ); -static FANS_SELF_TEST_STATES_T handleSelfTestCheckRPM( void ); - static FANS_EXEC_STATES_T handleExecStateWaitForPOST( void ); static FANS_EXEC_STATES_T handleExecStateRun( void ); @@ -93,22 +91,20 @@ /*********************************************************************//** * @brief * The initFans function initializes the fans module. - * @details Inputs: fansExecState, fansSelfTestReslt, fansSelfTestState, - * fansStatus, fansControlCounter, fansPublishCounter - * @details Outputs: fansExecState, fansSelfTestReslt, fansSelfTestState, - * fansStatus, fansControlCounter, fansPublishCounter + * @details Inputs: fansExecState, fansStatus, fansControlCounter, + * fansPublishCounter + * @details Outputs: fansExecState, fansStatus, fansControlCounter, + * fansPublishCounter * @return none *************************************************************************/ void initFans( void ) { // Initialize the variables fansExecState = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; - fansSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; - fansSelfTestState = FANS_SELF_TEST_START_STATE; - fansExecState = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; fansControlCounter = 0; fansPublishCounter = 0; fansMonitorCounter = 0; + isPOSTComplete = FALSE; // Initialize a persistent alarm for fans RPM out of range initPersistentAlarm( ALARM_ID_DG_FAN_RPM_OUT_OF_RANGE, FANS_MAX_ALLOWED_RPM_OUT_OF_RANGE_INTERVAL, FANS_MAX_ALLOWED_RPM_OUT_OF_RANGE_INTERVAL ); @@ -117,34 +113,21 @@ /*********************************************************************//** * @brief * The execFansSelfTest function executes the fans self test. - * @details Inputs: fansSelfTestState, fansSelfTestReslt - * @details Outputs: fansSelfTestState, fansSelfTestReslt + * @details Inputs: none + * @details Outputs: isPOSTComplete * @return Status of self test *************************************************************************/ SELF_TEST_STATUS_T execFansSelfTest( void ) { - switch ( fansSelfTestState ) - { - case FANS_SELF_TEST_START_STATE: - fansSelfTestState = handleSelfTestStart(); - break; + SELF_TEST_STATUS_T status = SELF_TEST_STATUS_IN_PROGRESS; - case FANS_SELF_TEST_CHECK_RPM_STATE: - fansSelfTestState = handleSelfTestCheckRPM(); - break; + // TODO implement the calibration processing function. + // It returns a pass for now - case FAN_SELF_TEST_COMPLETE_STATE: - // Done with POST. Do nothing - break; + isPOSTComplete = TRUE; + status = SELF_TEST_STATUS_PASSED; - default: - // Wrong state called - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FAN_INVALID_SELF_TEST_STATE, fansSelfTestState ); - fansSelfTestState = FAN_SELF_TEST_COMPLETE_STATE; - break; - } - - return fansSelfTestResult; + return status; } /*********************************************************************//** @@ -205,69 +188,6 @@ /*********************************************************************//** * @brief - * The handleSelfTestStart function handles the start state of the fans' - * self test. - * @details Inputs: none - * @details Outputs: none - * @return next state of self test - *************************************************************************/ -static FANS_SELF_TEST_STATES_T handleSelfTestStart( void ) -{ - FANS_SELF_TEST_STATES_T state = FANS_SELF_TEST_CHECK_RPM_STATE; - - // Set the fans to the target PWM for the next stage - setInletFansDutyCycle( FANS_SELF_TEST_TARGET_PWM ); - setOutletFansDutyCycle( FANS_SELF_TEST_TARGET_PWM ); - state = FANS_SELF_TEST_CHECK_RPM_STATE; - - return state; -} - -/*********************************************************************//** - * @brief - * The handleSelfTestCheckRPM function handles the check RPM state of the - * fans' self test. - * @details Inputs: fansStatus - * @details Outputs: none - * @return next state of self test - *************************************************************************/ -static FANS_SELF_TEST_STATES_T handleSelfTestCheckRPM( void ) -{ - FANS_SELF_TEST_STATES_T state = FANS_SELF_TEST_CHECK_RPM_STATE; - - FAN_NAMES_T fan; - - // Wait for the fans to run for a certain period of time before checking their RPM - if ( ++fansControlCounter > FANS_SELF_TEST_WAIT_INTERVAL ) - { - // Assuming the test will pass - fansSelfTestResult = SELF_TEST_STATUS_PASSED; - - convertTogglePeriod2RPM(); - - // Loop through all the fans to check their RPM. They should be above the specified RPM - for( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) - { - if ( fansStatus.rpm[ fan ] < MIN_TARGET_RPM_IN_SELF_TEST ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_FAN_RPM_OUT_OF_RANGE, fan, fansStatus.rpm[ fan ] ); - - fansSelfTestResult = SELF_TEST_STATUS_FAILED; - } - } - - // Turn off the fans, done with self test - setInletFansDutyCycle( 0.0 ); - setOutletFansDutyCycle( 0.0 ); - - state = FAN_SELF_TEST_COMPLETE_STATE; - } - - return state; -} - -/*********************************************************************//** - * @brief * The handleFansExecStateStart function handles the start state of the * fans exec state machine. * @details Inputs: none @@ -279,7 +199,7 @@ FANS_EXEC_STATES_T state = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; // Wait for the self test to finish before starting the fans - if ( fansSelfTestState == FAN_SELF_TEST_COMPLETE_STATE ) + if ( TRUE == isPOSTComplete ) { // Start the fans with minimum PWM. The control will decide the next PWM automatically. setInletFansDutyCycle( FANS_MIN_DUTY_CYCLE ); @@ -313,10 +233,6 @@ // Get the maximum temperature among all the thermistors and temperature sensors to run fan from the hottest temperature F32 temperature = getMaximumTemperature(); - //TODO REMOVE FOR TESTING - temperature = getThermistorTemperatureValue( THERMISTOR_ONBOARD_NTC ); - //TODO REMOVE FOR TESTING only - // Solve the linear equation to calculate the duty cycle from temperature F32 dutyCycle = ( SLOPE * ( temperature - MIN_ALLOWED_AMBIENT_TEMPERATURE ) ) + FANS_MIN_DUTY_CYCLE; @@ -477,11 +393,18 @@ if ( ++fansMonitorCounter >= FANS_MONITOR_INTERVAL_COUNT ) { + // The RPM is expected to be 5500 @ 100% duty cycle + // The nominal RPM = duty cycle * 5500 / 1.0 + // The RPM tolerance is -25% to +50% of the nominal RPM + F32 fansNominalRPM = fansStatus.targetDutyCycle * FANS_MAX_ALLOWED_RPM; + F32 fansMinAllowedRPM = fansNominalRPM - ( fansNominalRPM * FANS_MIN_RPM_OUT_OF_RANGE_TOL ); + F32 fansMaxAllowedRPM = fansNominalRPM - ( fansNominalRPM * FANS_MAX_RPM_OUT_OF_RANGE_TOL ); + convertTogglePeriod2RPM(); for ( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) { - BOOL const fanRpmOutOfRange = ( fansStatus.rpm[ fan ] >= FANS_MAX_ALLOWED_RPM ) || ( fansStatus.rpm[ fan ] <= FANS_MIN_ALLOWED_RPM ); + BOOL const fanRpmOutOfRange = ( fansStatus.rpm[ fan ] < fansMinAllowedRPM ) || ( fansStatus.rpm[ fan ] > fansMaxAllowedRPM ); checkPersistentAlarm( ALARM_ID_DG_FAN_RPM_OUT_OF_RANGE, fanRpmOutOfRange, fansStatus.rpm[ fan ], FANS_MAX_ALLOWED_RPM ); } Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r81cd7f8794002173ba1b8bb886d33a03ce3c6f83 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 81cd7f8794002173ba1b8bb886d33a03ce3c6f83) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -23,6 +23,7 @@ #include "AlarmMgmt.h" #include "DGDefs.h" #include "Heaters.h" +#include "InternalADC.h" #include "OperationModes.h" #include "PIControllers.h" #include "ROPump.h" @@ -40,38 +41,42 @@ // ********** private definitions ********** #ifndef V_2_SYSTEM -#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 1.00 ///< Main primary heater (heater A) max duty cycle (100%). -#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 1.00 ///< Small Primary heater (heater B) max duty cycle (100%). -#define TRIMMER_HEATER_MAX_DUTY_CYCLE 1.00 ///< Trimmer heater max duty cycle (100%). +#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 1.00 ///< Main primary heater (heater A) max duty cycle (100%). +#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 1.00 ///< Small Primary heater (heater B) max duty cycle (100%). +#define TRIMMER_HEATER_MAX_DUTY_CYCLE 1.00 ///< Trimmer heater max duty cycle (100%). #else -#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 0.89 ///< Main primary heater (heater A) max duty cycle (89%). -#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 0.50 ///< Small Primary heater (heater B) max duty cycle (50%). -#define TRIMMER_HEATER_MAX_DUTY_CYCLE 0.50 ///< Trimmer heater max duty cycle (50%). +#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 0.89 ///< Main primary heater (heater A) max duty cycle (89%). +#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 0.50 ///< Small Primary heater (heater B) max duty cycle (50%). +#define TRIMMER_HEATER_MAX_DUTY_CYCLE 0.50 ///< Trimmer heater max duty cycle (50%). #endif -#define HEATERS_MIN_DUTY_CYCLE 0.00 ///< Primary and trimmer heaters minimum duty cycle (0.00%). +#define HEATERS_MIN_DUTY_CYCLE 0.00 ///< Primary and trimmer heaters minimum duty cycle (0.00%). #define PRIMARY_HEATERS_CUMULATIVE_DUTY_CYCLE ( MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE + \ - SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE ) ///< Primary heaters cumulative duty cycle. -#define PRIMARY_HEATER_INITIAL_DUTY_CYCLE_ESTIMATE_DIVISOR 2.0 ///< Primary heaters initial duty cycle estimation divisor. -#define MAIN_AND_SMALL_PRIMARY_HEATER_DUTY_CYCLE_DIVISOR 2.0 ///< Main and small primary heater duty cycle divisor + SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE ) ///< Primary heaters cumulative duty cycle. +#define PRIMARY_HEATER_INITIAL_DUTY_CYCLE_ESTIMATE_DIVISOR 2.0 ///< Primary heaters initial duty cycle estimation divisor. +#define MAIN_AND_SMALL_PRIMARY_HEATER_DUTY_CYCLE_DIVISOR 2.0 ///< Main and small primary heater duty cycle divisor -#define PRIMARY_HEATERS_P_COEFFICIENT 0.15 ///< Primary heaters proportional coefficient. -#define PRIMARY_HEATERS_I_COEFFICIENT 0.001 ///< Primary heaters integral coefficient. +#define PRIMARY_HEATERS_P_COEFFICIENT 0.15 ///< Primary heaters proportional coefficient. +#define PRIMARY_HEATERS_I_COEFFICIENT 0.001 ///< Primary heaters integral coefficient. -#define TRIMMER_HEATER_P_COEFFICIENT 0.02 ///< Trimmer heater proportional coefficient. -#define TRIMMER_HEATER_I_COEFFICIENT 0.001 ///< Trimmer heater integral coefficient. +#define TRIMMER_HEATER_P_COEFFICIENT 0.02 ///< Trimmer heater proportional coefficient. +#define TRIMMER_HEATER_I_COEFFICIENT 0.001 ///< Trimmer heater integral coefficient. -#define CONTROLLER_CHECK_INTERVAL_COUNT 10U ///< Time interval count to check the PI controller. -#define TEMP_SENSORS_INTERVAL_COUNT 10U ///< Temperature sensors interval count. +#define CONTROLLER_CHECK_INTERVAL_COUNT 10U ///< Time interval count to check the PI controller. +#define TEMP_SENSORS_INTERVAL_COUNT 10U ///< Temperature sensors interval count. -#define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. +#define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. -#define MINIMUM_TARGET_TEMPERATURE 10.0 ///< Minimum allowed target temperature for the heaters. -#define MAXIMUM_TARGET_TEMPERATURE 90.0 ///< Maximum allowed target temperature for the heaters. +#define MINIMUM_TARGET_TEMPERATURE 10.0 ///< Minimum allowed target temperature for the heaters. +#define MAXIMUM_TARGET_TEMPERATURE 90.0 ///< Maximum allowed target temperature for the heaters. -#define HEATERS_ON_WITH_NO_FLOW_TIMEOUT_COUNT ( ( 3 * MS_PER_SECOND ) / TASK_PRIORITY_INTERVAL ) ///< Heaters are on but there is no sufficient flow timeout in counts. -#define HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C 190.0 ///< Heaters max allowed internal temperature in degrees C. TODO figure out the max temperature value -#define HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heaters max allowed internal temperature timeout in milliseconds. -#define HEATERS_ON_NO_FLOW_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heaters on with no flow time out in milliseconds. +#define HEATERS_ON_WITH_NO_FLOW_TIMEOUT_COUNT ( ( 3 * MS_PER_SECOND ) / TASK_PRIORITY_INTERVAL ) ///< Heaters are on but there is no sufficient flow timeout in counts. +#define HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C 170.0 ///< Heaters max allowed internal temperature in C. +#define HEATERS_MAX_ALLOWED_COLD_JUNCTION_TEMPERATURE_C 80.0 ///< Heaters max allowed cold junction temperature in C. +#define HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heaters max allowed internal temperature timeout in milliseconds. +#define HEATERS_ON_NO_FLOW_TIMEOUT_MS ( 2 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heaters on with no flow time out in milliseconds. +#define HEATERS_MAX_OPERATING_VOLTAGE_V 24.0 ///< Heaters max operating voltage in volts. +#define HEATERS_VOLTAGE_MONITOR_TIME_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters voltage monitor timer interval. +#define HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL 0.2 ///< Heaters max voltage out of range tolerance. /// Primary heaters exec states typedef enum primary_heaters_exec_states @@ -121,11 +126,12 @@ static U32 heatersOnWithNoFlowTimer; ///< Heaters are on but there is no sufficient flow. static TEMPERATURE_SENSORS_T primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_PRIMARY_HEATER; ///< Primary heaters feedback temperature sensors. static TEMPERATURE_SENSORS_T trimmerHeaterFeedbackTempSensor = TEMPSENSORS_INLET_DIALYSATE; ///< Trimmer heater feedback temperature sensors. -static U32 primaryHeatersInternalTempOutTimer = 0; ///< Primary heaters internal temperature out of range timer. -static U32 trimmerHeaterInternalTempOutTimer = 0; ///< Trimmer heater internal temperature out of range timer. -static BOOL isPrimaryHeatersTempOutOfRange = FALSE; ///< Boolean flag to indicate if the primary heaters internal temperature out of range. +static U32 primaryHeaterTempOutTimer = 0; ///< Primary heaters temperature out of range start timer. +static U32 trimmerHeaterTempOutTimer = 0; ///< Trimmer heater internal temperature out of range timer. +static BOOL isPrimaryHeaterTempOutOfRange = FALSE; ///< Boolean flag to indicate if the primary heaters internal temperature out of range. static BOOL isTrimmerHeaterTempOutOfRange = FALSE; ///< Boolean flag to indicate if the trimmer heater internal temperature out of range. static BOOL isFlowBelowMin = FALSE; ///< Boolean flag to indicate if the flow is below the minimum. +static U32 heatersVoltageMonitorTimeCounter = 0; ///< Heaters voltage monitor counter. // ********** private function prototypes ********** @@ -139,8 +145,11 @@ static void setSmallPrimaryHeaterPWM( F32 pwm ); static void setTrimmerHeaterPWM( F32 pwm ); static void resetHeaterState( NAME_OF_HEATER_T heater ); -static void publishHeatersData( void ); static U32 getPublishHeatersDataInterval( void ); +static void publishHeatersData( void ); +static void checkPrimaryHeaterTempSensors( void ); +static void checkTrimmerHeaterTempSensors( void ); +static void monitorHeatersVoltage( void ); /*********************************************************************//** * @brief @@ -152,22 +161,23 @@ *************************************************************************/ void initHeaters( void ) { - primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_OFF; - trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_OFF; - primaryHeaterTargetTemperature = 0.0; - trimmerHeaterTargetTemperature = 0.0; - primaryHeaterTimerCounter = 0; - trimmerHeaterTimerCounter = 5; - dataPublicationTimerCounter = 0; - isPrimaryHeaterOn = FALSE; - isTrimmerHeaterOn = FALSE; - primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_PRIMARY_HEATER; - trimmerHeaterFeedbackTempSensor = TEMPSENSORS_INLET_DIALYSATE; - primaryHeatersInternalTempOutTimer = 0; - trimmerHeaterInternalTempOutTimer = 0; - isPrimaryHeatersTempOutOfRange = FALSE; - isTrimmerHeaterTempOutOfRange = FALSE; - isFlowBelowMin = FALSE; + primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_OFF; + trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_OFF; + primaryHeaterTargetTemperature = 0.0; + trimmerHeaterTargetTemperature = 0.0; + primaryHeaterTimerCounter = 0; + trimmerHeaterTimerCounter = 5; + dataPublicationTimerCounter = 0; + isPrimaryHeaterOn = FALSE; + isTrimmerHeaterOn = FALSE; + primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_PRIMARY_HEATER; + trimmerHeaterFeedbackTempSensor = TEMPSENSORS_INLET_DIALYSATE; + primaryHeaterTempOutTimer = 0; + trimmerHeaterTempOutTimer = 0; + isPrimaryHeaterTempOutOfRange = FALSE; + isTrimmerHeaterTempOutOfRange = FALSE; + isFlowBelowMin = FALSE; + heatersVoltageMonitorTimeCounter = 0; // Initialize the PI controller for the primary heaters initializePIController( PI_CONTROLLER_ID_PRIMARY_HEATER, HEATERS_MIN_DUTY_CYCLE, PRIMARY_HEATERS_P_COEFFICIENT, PRIMARY_HEATERS_I_COEFFICIENT, @@ -318,59 +328,26 @@ /*********************************************************************//** * @brief - * The execHeatersMonitor function turns off the heaters when RO pump is - * not on. - * @details Inputs: none - * @details Outputs: Turns off the heaters when RO pump is not on + * The execHeatersMonitor function monitors the status of the heaters. + * The internal temperature sensors and the voltages of the heaters are + * monitored. The flow is continuously checked and if there is no flow + * for a period of time, the heaters are turned off. + * @details Inputs: isTrimmerHeaterOn, mainPrimaryHeaterDutyCycle, + * smallPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle, + * heatersOnWithNoFlowTimer, isFlowBelowMin + * @details Outputs: heatersOnWithNoFlowTimer, isFlowBelowMin * @return none *************************************************************************/ void execHeatersMonitor( void ) { #ifndef IGNORE_HEATERS_MONITOR - F32 primaryHeatersInternalTemp = getTemperatureValue( TEMPSENSORS_PRIMARY_HEATER_INTERNAL ); - F32 trimmerHeaterInternalTemp = getTemperatureValue( TEMPSENSORS_TRIMMER_HEATER_INTERNAL ); - - // Check if the primary heaters' internal temperature is above the limit - if ( primaryHeatersInternalTemp > HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_PRIMARY_HEATERS_INTERNAL_TEMP_OUT_OF_RANGE, primaryHeatersInternalTemp ); - - // If it is above the range for the first time, stop the primary heaters - // and set the variables - if ( FALSE == isPrimaryHeatersTempOutOfRange ) - { - stopPrimaryHeater(); - isPrimaryHeatersTempOutOfRange = TRUE; - primaryHeatersInternalTempOutTimer = getMSTimerCount(); - } - // If the primary heaters internal temperature was out for more than the define period, activate the safety shutdown - else if ( TRUE == didTimeout( primaryHeatersInternalTempOutTimer, HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ) ) - { - activateSafetyShutdown(); - } - } - - // Check if the trimmer heater internal temperature is above the limit - if ( trimmerHeaterInternalTemp > HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_TRIMMER_HEATER_INTERNAL_TEMP_OUT_OF_RANGE, trimmerHeaterInternalTemp ); - - // If it is above the range for the first time, stop the trimmer heater - // and set the variables - if ( FALSE == isTrimmerHeaterTempOutOfRange ) - { - stopTrimmerHeater(); - isTrimmerHeaterTempOutOfRange = TRUE; - trimmerHeaterInternalTempOutTimer = getMSTimerCount(); - } - // If the trimmer heater internal temperature was out for more than the define period, activate the safety shutdown - else if ( TRUE == didTimeout( trimmerHeaterInternalTempOutTimer, HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ) ) - { - activateSafetyShutdown(); - } - } + checkPrimaryHeaterTempSensors(); + checkTrimmerHeaterTempSensors(); #endif + // Monitor the heaters voltage + monitorHeatersVoltage(); + /* * If any of the heaters are on or any of the heaters' PWMs are not zero, check if the flow is below than the minimum value * If the flow is below minimum for the first time, set the variables @@ -403,7 +380,7 @@ stopPrimaryHeater(); stopTrimmerHeater(); - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_HEATERS_ON_WITH_NO_FLOW_TIMEOUT, measuredFlow ); + activateAlarmNoData( ALARM_ID_DG_HEATERS_ON_WITH_NO_FLOW_TIMEOUT ); } } else @@ -545,7 +522,7 @@ // Once the primary heaters duty cycle is set, it is divided into 2 so both heaters will start and both elements are heated up smallPrimaryHeaterDutyCycle = mainPrimaryHeaterDutyCycle / MAIN_AND_SMALL_PRIMARY_HEATER_DUTY_CYCLE_DIVISOR; - mainPrimaryHeaterDutyCycle = mainPrimaryHeaterDutyCycle / MAIN_AND_SMALL_PRIMARY_HEATER_DUTY_CYCLE_DIVISOR; + mainPrimaryHeaterDutyCycle = mainPrimaryHeaterDutyCycle / MAIN_AND_SMALL_PRIMARY_HEATER_DUTY_CYCLE_DIVISOR; } setMainPrimaryHeaterPWM( mainPrimaryHeaterDutyCycle ); @@ -767,6 +744,135 @@ } } +/*********************************************************************//** + * @brief + * The checkPrimaryHeaterTempSensors function checks the primary heater's + * thermocouple and cold junction temperature sensors. + * @details Inputs: isPrimaryHeaterTempOutOfRange + * @details Outputs: isPrimaryHeaterTempOutOfRange + * @return none + *************************************************************************/ +static void checkPrimaryHeaterTempSensors( void ) +{ + F32 primaryHeaterInternalTemp = getTemperatureValue( TEMPSENSORS_PRIMARY_HEATER_INTERNAL ); + F32 primaryHeaterColdJunctionTemp = getTemperatureValue( TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION ); + BOOL isTempOut = FALSE; + + // Check if the primary heater's internal temperature or the cold junction temperature is above the allowed limit + if ( primaryHeaterInternalTemp > HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C ) + { + isTempOut = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_PRIMARY_HEATER_INTERNAL_TEMP_OUT_OF_RANGE, primaryHeaterInternalTemp ); + } + else if ( primaryHeaterColdJunctionTemp > HEATERS_MAX_ALLOWED_COLD_JUNCTION_TEMPERATURE_C ) + { + isTempOut = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_PRIMARY_HEATER_CJ_TEMP_OUT_OF_RANGE, primaryHeaterInternalTemp ); + } + + // If any of the temperatures are above the range + if ( ( FALSE == isPrimaryHeaterTempOutOfRange ) && ( TRUE == isTempOut ) ) + { + stopPrimaryHeater(); + isPrimaryHeaterTempOutOfRange = TRUE; + primaryHeaterTempOutTimer = getMSTimerCount(); + } + // If the primary heaters internal temperature was out for more than the define period, activate the safety shutdown + else if ( ( TRUE == isPrimaryHeaterTempOutOfRange ) && + ( TRUE == didTimeout( primaryHeaterTempOutTimer, HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ) ) ) + { + isPrimaryHeaterTempOutOfRange = FALSE; + activateSafetyShutdown(); + } +} + +/*********************************************************************//** + * @brief + * The checkTrimmerHeaterTempSensors function checks the trimmer heater's + * thermocouple and cold junction temperature sensors. + * @details Inputs: isTrimmerHeaterTempOutOfRange + * @details Outputs: isTrimmerHeaterTempOutOfRange + * @return none + *************************************************************************/ +static void checkTrimmerHeaterTempSensors( void ) +{ + F32 trimmerHeaterInternalTemp = getTemperatureValue( TEMPSENSORS_TRIMMER_HEATER_INTERNAL ); + F32 trimmerHeaterColdJunctionTemp = getTemperatureValue( TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION ); + BOOL isTempOut = FALSE; + + // Check if the primary heater's internal temperature or the cold junction temperature is above the allowed limit + if ( trimmerHeaterInternalTemp > HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_C ) + { + isTempOut = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_TRIMMER_HEATER_INTERNAL_TEMP_OUT_OF_RANGE, trimmerHeaterInternalTemp ); + } + else if ( trimmerHeaterColdJunctionTemp > HEATERS_MAX_ALLOWED_COLD_JUNCTION_TEMPERATURE_C ) + { + isTempOut = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_TRIMMER_HEATER_CJ_TEMP_OUT_OF_RANGE, trimmerHeaterColdJunctionTemp ); + } + + // If it is above the range for the first time, stop the trimmer heater + // and set the variables + if ( ( FALSE == isTrimmerHeaterTempOutOfRange ) && ( TRUE == isTempOut ) ) + { + stopTrimmerHeater(); + isTrimmerHeaterTempOutOfRange = TRUE; + trimmerHeaterTempOutTimer = getMSTimerCount(); + } + // If the trimmer heater internal temperature was out for more than the define period, activate the safety shutdown + else if ( ( TRUE == isTrimmerHeaterTempOutOfRange ) && + ( TRUE == didTimeout( trimmerHeaterTempOutTimer, HEATERS_MAX_ALLOWED_INTERNAL_TEMPERATURE_TIMEOUT_MS ) ) ) + { + activateSafetyShutdown(); + } +} + +/*********************************************************************//** + * @brief + * The monitorHeatersVoltage function monitors the heaters' voltages + * @details Inputs: heatersVoltageMonitorTimeCounter + * @details Outputs: heatersVoltageMonitorTimeCounter + * @return none + *************************************************************************/ +static void monitorHeatersVoltage( void ) +{ + if ( ++heatersVoltageMonitorTimeCounter >= HEATERS_VOLTAGE_MONITOR_TIME_INTERVAL ) + { + F32 mainPriVoltage = getIntADCVoltageConverted( INT_ADC_PRIMARY_HEATER_24_VOLTS ); + // TODO it is assumed that the main and small primary heaters have equal voltage since the PWMs are divided into 2 + // before applying the PWMs to the heaters. Right now, there is no ADC channel available for the small primary + // heater so the main primary heater's ADC channel is used for the small primary heater as well. + F32 smallPriVoltage = getIntADCVoltageConverted( INT_ADC_PRIMARY_HEATER_24_VOLTS ); + F32 trimmerVoltage = getIntADCVoltageConverted( INT_ADC_TRIMMER_HEATER_24_VOLTS ); + + // Voltage to PWM is reverse. If PWM = 0 -> V = 24V + F32 mainPri = 1.0 - mainPrimaryHeaterDutyCycle; + F32 smallPri = 1.0 - smallPrimaryHeaterDutyCycle; + F32 trimmer = 1.0 - trimmerHeaterDutyCycle; + + // Check main primary heater's voltage + // The corresponding voltage of the current PWM must be close to the sensed voltage + if ( fabs( ( HEATERS_MAX_OPERATING_VOLTAGE_V * mainPri ) - mainPriVoltage ) > HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL * mainPriVoltage ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_MAIN_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, mainPriVoltage ); + } + // Check small primary heater's voltage + if ( fabs( ( HEATERS_MAX_OPERATING_VOLTAGE_V * smallPri ) - smallPriVoltage ) > HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL * smallPriVoltage ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_SMALL_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, smallPriVoltage ); + } + // Check trimmer heater's voltage + if ( fabs( ( HEATERS_MAX_OPERATING_VOLTAGE_V * trimmer ) - trimmerVoltage ) > HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL * trimmerVoltage ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE, trimmerVoltage ); + } + + heatersVoltageMonitorTimeCounter = 0; + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -158,9 +158,9 @@ // update sums for load cell average calculations loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].rawReading = a1 & MASK_OFF_U32_MSB; - loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading = a2 & MASK_OFF_U32_MSB; + loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading = a2 & MASK_OFF_U32_MSB; loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].rawReading = b1 & MASK_OFF_U32_MSB; - loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading = b2 & MASK_OFF_U32_MSB; + loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading = b2 & MASK_OFF_U32_MSB; // Check error bits from new readings a1 = ( a1 >> 31 ) << SHIFT_24_BITS; @@ -192,14 +192,15 @@ loadcells[ ii ].weight.data = loadcells[ ii ].weight.data - loadcells[ ii ].autoCalOffset; - loadcells[ ii ].loadCellVelocity_g_min = ( getLoadCellWeight( (LOAD_CELL_ID_T)ii ) - loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ] ) * (F32)SEC_PER_MIN; + loadcells[ ii ].loadCellVelocity_g_min = ( getLoadCellWeight( (LOAD_CELL_ID_T)ii ) - + loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ] ) * (F32)SEC_PER_MIN; // Update small filter with new weight sample loadcells[ ii ].smallFilterTotal -= loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ]; loadcells[ ii ].smallFilterReadings[ smallReadingsIdx ] = getLoadCellWeight( (LOAD_CELL_ID_T)ii ); loadcells[ ii ].smallFilterTotal += getLoadCellWeight( (LOAD_CELL_ID_T)ii ); - // Calculate the load cell value before appyling calibration to it + // Calculate the load cell value before applying calibration to it F32 loadCell = (F32)( loadcells[ ii ].smallFilterTotal / (F64)SIZE_OF_SMALL_LOAD_CELL_AVG ); // Apply the calibration factors to the data. // load_cell_weight = fourth_order_coeff * (load_cell^4) + third_order_coeff * (load_cell^3) + second_order_coeff * (load_cell^2) + gain * load_cell + offset @@ -231,13 +232,17 @@ // broadcast load cell data if we are at scheduled interval. if ( ++loadCellDataPublicationTimerCounter >= getLoadCellDataPublishInterval() ) { - loadCellDataPublicationTimerCounter = 0; + LOAD_CELL_DATA_T loadCellData; - // broadcast small filtered load cell data - broadcastLoadCellData( loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].smallFilteredWeight, - loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].smallFilteredWeight, - loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].smallFilteredWeight, - loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].smallFilteredWeight ); + loadCellData.loadCellA1inGram = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ); + loadCellData.loadCellA2inGram = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_1_BACKUP ); + loadCellData.loadCellB1inGram = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ); + loadCellData.loadCellB2inGram = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_BACKUP ); + + // Broadcast small filtered load cell data + broadcastLoadCellData( &loadCellData ); + + loadCellDataPublicationTimerCounter = 0; } } @@ -330,18 +335,14 @@ *************************************************************************/ F32 getLoadCellWeight( LOAD_CELL_ID_T loadCellID ) { - F32 result = 0; + F32 result = loadcells[ loadCellID ].weight.data; if ( loadCellID < NUM_OF_LOAD_CELLS ) { if ( OVERRIDE_KEY == loadcells[ loadCellID ].weight.override ) { result = loadcells[ loadCellID ].weight.ovData; } - else - { - result = loadcells[ loadCellID ].weight.data; - } } else { @@ -353,20 +354,26 @@ /*********************************************************************//** * @brief - * The getLoadCellSmallFilteredWeight function gets the small filtered load cell - * weight for a given load cell ID. + * The getLoadCellSmallFilteredWeight function gets the small filtered + * load cell weight for a given load cell ID. * @details Inputs: load cell filtered weight * @details Outputs: none * @param loadCellID ID of load cell to get large filtered weight * @return the small filtered load cell weight for the given load cell ID. *************************************************************************/ F32 getLoadCellSmallFilteredWeight( LOAD_CELL_ID_T loadCellID ) { - F32 result = 0; + F32 result = 0.0; if ( loadCellID < NUM_OF_LOAD_CELLS ) { result = loadcells[ loadCellID ].smallFilteredWeight; + + // If the load cell is in override mode, return the override weight + if ( OVERRIDE_KEY == loadcells[ loadCellID ].weight.override ) + { + result = loadcells[ loadCellID ].weight.ovData; + } } else { @@ -469,9 +476,7 @@ // then the load cells data is not stored in the NV memory or it was corrupted. if ( 0 == calData.loadCells[ cell ].calibrationTime ) { -#ifndef DISABLE_CAL_CHECK SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_LOAD_CELLS_INVALID_CALIBRATION, (U32)cell ); -#endif status = FALSE; } Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -253,7 +253,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, pressuresSelfTestState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_DG_PRESSURES_INVALID_SELF_TEST_STATE, pressuresSelfTestState ); break; } @@ -393,9 +393,7 @@ // then the data is not stored in the NV memory or it was corrupted. if ( 0 == calData.pressureSensors[ sensor ].calibrationTime ) { -#ifndef DISABLE_CAL_CHECK - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_PRESSURE_SENSORS_INVALID_CALIBRATION, (U32)sensor ); -#endif + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_PRESSURE_SENSORS_INVALID_CAL_RECORD, (U32)sensor ); status = FALSE; } Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -194,15 +194,6 @@ roPumpControlMode = NUM_OF_PUMP_CONTROL_MODES; roPumpControlModeSet = roPumpControlMode; isROPumpOn = FALSE; - - // TODO temporary initialization - // Reset the calibration variables - flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].fourthOrderCoeff = 0.0; - flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].thirdOrderCoeff = 0.0; - flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].secondOrderCoeff = 0.0; - flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].gain = 1.0; - flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].offset = 0.0; - // TODO temporary initialization, remove } /*********************************************************************//** @@ -409,12 +400,12 @@ F32 pressureInlet = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); BOOL isPumpRunning = ( pressureInlet + MAX_PRESSURE_TARGET_TOLERANCE ) < actualPressure; - //checkPersistentAlarm( ALARM_ID_RO_PUMP_OFF_FAULT, isPumpRunning, pressureInlet, ( pressureInlet + MAX_PRESSURE_TARGET_TOLERANCE ) ); + checkPersistentAlarm( ALARM_ID_RO_PUMP_OFF_FAULT, isPumpRunning, pressureInlet, ( pressureInlet + MAX_PRESSURE_TARGET_TOLERANCE ) ); // Check if it has timed out - //if ( isAlarmActive( ALARM_ID_RO_PUMP_OFF_FAULT ) ) + if ( isAlarmActive( ALARM_ID_RO_PUMP_OFF_FAULT ) ) { - //activateSafetyShutdown(); + activateSafetyShutdown(); } } @@ -845,9 +836,7 @@ // then the flow sensors data is not stored in the NV memory or it was corrupted. if ( 0 == calData.flowSensors[ sensor ].calibrationTime ) { -#ifndef DISABLE_CAL_CHECK - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_FLOW_SENSORS_INVALID_CALIBRATION, (U32)sensor ); -#endif + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_FLOW_SENSORS_INVALID_CAL_RECORD, (U32)sensor ); status = FALSE; } Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -ra2c32d4d221603054ca9ad7a097112caebf08c4e -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision a2c32d4d221603054ca9ad7a097112caebf08c4e) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -37,7 +37,6 @@ #define PRIMARY_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE 1000U ///< Primary heater external temperature sensors zero degree resistance. #define COND_SENSORS_TEMP_SENSOR_GAIN 8U ///< Temperature sensor for conductivity gain. - #define COND_SENSORS_TEMP_SENSOR_REF_RESISTANCE 19600U ///< Temperature sensor for conductivity reference resistance. #define COND_SENSORS_TEMP_SENSOR_0_DEGREE_RESISTANCE 1000U ///< Temperature sensor for conductivity zero degree resistance. @@ -78,15 +77,20 @@ #define FPGA_RAW_ADC_READ_INTERVAL_COUNT 8 ///< Time interval in counts to read the raw ADC reads from FPGA. #define TEMPERATURE_SENSORS_ERROR_FLAG_PERSISTENT_PERIOD ( 5 * MS_PER_SECOND ) ///< Temperature sensors error flag persistent period. -/// Temperature sensor self-test states. -typedef enum tempSensors_Self_Test_States -{ - TEMPSENSORS_SELF_TEST_START = 0, ///< Temperature sensors self-test start - TEMPSENSORS_SELF_TEST_ADC_CHECK, ///< Temperature sensors self ADC check - TEMPSENSORS_SELF_TEST_COMPLETE, ///< Temperature sensors self-test complete - NUM_OF_TEMPSENSORS_SELF_TEST_STATES ///< Total number of self-test states -} TEMPSENSORS_SELF_TEST_STATES_T; +#define TEMP_SENSORS_MIN_ALLOWED_DEGREE_C 0.0 ///< Temperature sensors minimum allowed temperature in C. +#define TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 120.0 ///< Temperature sensors maximum allowed temperature in C. +#define NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 80.0 ///< Non fluid temperature sensors path maximum allowed temperature in C. +#define TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS ( 5 * MS_PER_SECOND ) ///< Temperature sensor out of range persistent period in milliseconds. +// The count cannot be within 0.1V of the rail on both sides therefore: +// ADC count = ((2^12) - 1 / ref voltage) * voltage +// Max allowed voltage = 3.0 - 0.1 = 2.0V +// Min allowed voltage = 0.1 - 0.0 = 0.1V +// Max count = ((2^12) - 1 / ref voltage) * voltage -> ((4096 - 1)/3.0) * (3.0 - 0.1) +// Min count = ((2^12) - 1 / ref voltage) * voltage -> ((4096 - 1)/3.0) * (0.1 - 0.0) +#define TEMP_SENSORS_MAX_ALLOWED_ADC_COUNT 3959U ///< Temperature sensors max allowed ADC count. +#define TEMP_SESNORS_MIN_ALLOWED_ADC_COUNT 137U ///< Temperature sensors min allowed ADC count. + /// Temperature sensor exec states. typedef enum tempSensors_Exec_States { @@ -107,12 +111,11 @@ S32 adcRunningSum; ///< ADC running sum U32 readCount; ///< Read counts from FPGA OVERRIDE_F32_T temperatureValues; ///< Temperature values with override + F32 maxAllowedTemperature; ///< Maximum allowed temperature of the sensor } TEMP_SENSOR_T; // ********** private data ********** -static SELF_TEST_STATUS_T tempSensorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< Self-test result of the TemperatureSensors module. -static TEMPSENSORS_SELF_TEST_STATES_T tempSensorsSelfTestState; ///< TemperatureSensor self-test state. static TEMPSENSORS_EXEC_STATES_T tempSensorsExecState; ///< TemperatureSensor exec state. static TEMP_SENSOR_T tempSensors [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors' data structure. static U32 fpgaRawADCReadInterval = 0; ///< FPGA raw ADC read interval count. @@ -142,16 +145,12 @@ -1.228034E-2, 9.804036E-4, -4.413030E-5, 1.057734E-6, -1.052755E-8 }; ///< Thermocouple inverse coefficient for positive cold junction temperature. -static const U32 TEMP_SENSORS_ADC_MAX_COUNT = ( 1 << TEMP_SENSORS_ADC_BITS ) - 1; ///< ADC 24 bit max count which is (2^24 - 1). static const U32 TEMP_EQUATION_RESISTOR_CALC = 1 << ( TEMP_SENSORS_ADC_BITS - 1 ); ///< Temperature sensors resistor calculation (2^(24 - 1)). static const F32 TEMP_EQUATION_COEFF_A = 3.9083E-3; ///< ADC to temperature conversion coefficient A. static const F32 TEMP_EQUATION_COEFF_B = -5.775E-7; ///< ADC to temperature conversion coefficient B. // ********** private function prototypes ********** -static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestStart( void ); -static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestADCCheck( void ); - static TEMPSENSORS_EXEC_STATES_T handleExecStart( void ); static TEMPSENSORS_EXEC_STATES_T handleExecGetADCValues( void ); @@ -162,15 +161,14 @@ static void processHtrsTempSnsrsADCRead( U32 sensorIndex, U16 adc, U32 fpgaError, U32 fpgaCount ); static BOOL isADCReadValid( U32 sensorIndex, U32 fpgaError, U32 fpgaCount ); static void processADCRead( U32 sensorIndex, S32 adc ); -static void publishTemperatureSensorsData( void ); static U32 getPublishTemperatureSensorsDataInterval( void ); +static void publishTemperatureSensorsData( void ); +static void monitorTemperatureSnsrs( U32 sensorIndex, F32 temperature ); /*********************************************************************//** * @brief * The initTemperatureSensors function initializes the module. - * @details Inputs: tempSensorsSelfTestState, tempSensorsExecState, - * elapsedTime, internalHeatersConversionTimer, dataPublicationTimerCounter, - * tempSensors, fpgaRawADCReadInterval + * @details Inputs: none * @details Outputs: tempSensorsSelfTestState, tempSensorsExecState, * elapsedTime, internalHeatersConversionTimer, dataPublicationTimerCounter, * tempSensors, fpgaRawADCReadInterval @@ -181,13 +179,11 @@ U08 i; // Initialize the variables - tempSensorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; - tempSensorsSelfTestState = TEMPSENSORS_SELF_TEST_START; - tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; - elapsedTime = 0; - internalHeatersConversionTimer = 0; - dataPublicationTimerCounter = 0; - fpgaRawADCReadInterval = 0; + tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; + elapsedTime = 0; + internalHeatersConversionTimer = 0; + dataPublicationTimerCounter = 0; + fpgaRawADCReadInterval = 0; /* NOTE: The temperature sensors do not have conversion coefficient. * The conversion coefficients are used for the heaters internal temperature sensors and @@ -206,28 +202,34 @@ tempSensors[ TEMPSENSORS_INLET_PRIMARY_HEATER ].gain = PRIMARY_HEATER_EXT_TEMP_SENSORS_GAIN; tempSensors[ TEMPSENSORS_INLET_PRIMARY_HEATER ].refResistance = PRIMARY_HEATER_EXT_TEMP_SENSORS_REF_RESISTANCE; tempSensors[ TEMPSENSORS_INLET_PRIMARY_HEATER ].zeroDegreeResistance = PRIMARY_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_INLET_PRIMARY_HEATER ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; tempSensors[ TEMPSENSORS_OUTLET_PRIMARY_HEATER ].gain = PRIMARY_HEATER_EXT_TEMP_SENSORS_GAIN; tempSensors[ TEMPSENSORS_OUTLET_PRIMARY_HEATER ].refResistance = PRIMARY_HEATER_EXT_TEMP_SENSORS_REF_RESISTANCE; tempSensors[ TEMPSENSORS_OUTLET_PRIMARY_HEATER ].zeroDegreeResistance = PRIMARY_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_OUTLET_PRIMARY_HEATER ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; // Initialize TD1 and TD2 constants tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_1 ].gain = COND_SENSORS_TEMP_SENSOR_GAIN; tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_1 ].refResistance = COND_SENSORS_TEMP_SENSOR_REF_RESISTANCE; tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_1 ].zeroDegreeResistance = COND_SENSORS_TEMP_SENSOR_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_1 ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ].gain = COND_SENSORS_TEMP_SENSOR_GAIN; tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ].refResistance = COND_SENSORS_TEMP_SENSOR_REF_RESISTANCE; tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ].zeroDegreeResistance = COND_SENSORS_TEMP_SENSOR_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; // Initialize TRo and TDi constants tempSensors[ TEMPSENSORS_OUTLET_REDUNDANT ].gain = TRIMMER_HEATER_EXT_TEMP_SENSORS_GAIN; tempSensors[ TEMPSENSORS_OUTLET_REDUNDANT ].refResistance = TRIMMER_HEATER_EXT_TEMP_SENSORS_REF_RESISTANCE; tempSensors[ TEMPSENSORS_OUTLET_REDUNDANT ].zeroDegreeResistance = TRIMMER_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_OUTLET_REDUNDANT ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; tempSensors[ TEMPSENSORS_INLET_DIALYSATE ].gain = TRIMMER_HEATER_EXT_TEMP_SENSORS_GAIN; tempSensors[ TEMPSENSORS_INLET_DIALYSATE ].refResistance = TRIMMER_HEATER_EXT_TEMP_SENSORS_REF_RESISTANCE; tempSensors[ TEMPSENSORS_INLET_DIALYSATE ].zeroDegreeResistance = TRIMMER_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ TEMPSENSORS_INLET_DIALYSATE ].maxAllowedTemperature = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; // Initialize the heaters internal thermocouples constants tempSensors[ TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE ].conversionCoeff = HEATERS_INTERNAL_TC_ADC_TO_TEMP_CONVERSION_COEFF; @@ -239,57 +241,69 @@ // FPGA board temperature conversion coefficient tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].conversionCoeff = 503.975 / (F32)TWELVE_BIT_RESOLUTION; + tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; F32 const conversionCoeff = 1.0 / 13584.0; - // Board temperature sensors conversion coefficient - tempSensors[ TEMPSENSORS_LOAD_CELL_A1_B1 ].conversionCoeff = conversionCoeff; - tempSensors[ TEMPSENSORS_LOAD_CELL_A2_B2 ].conversionCoeff = conversionCoeff; - tempSensors[ TEMPSENSORS_INTERNAL_THDO_RTD ].conversionCoeff = conversionCoeff; - tempSensors[ TEMPSENSORS_INTERNAL_TDI_RTD ].conversionCoeff = conversionCoeff; - tempSensors[ TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_LOAD_CELL_A1_B1 ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_LOAD_CELL_A1_B1 ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + tempSensors[ TEMPSENSORS_LOAD_CELL_A2_B2 ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_LOAD_CELL_A2_B2 ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + + tempSensors[ TEMPSENSORS_INTERNAL_THDO_RTD ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_INTERNAL_THDO_RTD ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + + tempSensors[ TEMPSENSORS_INTERNAL_TDI_RTD ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_INTERNAL_TDI_RTD ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + + tempSensors[ TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR ].conversionCoeff = conversionCoeff; + tempSensors[ TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR ].maxAllowedTemperature = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + // Persistent alarms for inlet water high/low temperature - initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); - initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, + INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, + INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); + + // Persistent alarm for the temperature sensors range check + initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_OUT_OF_RANGE, TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS, + TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS ); + + // Persistent alarm for the temperature sensors range check + initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_ADC_OUT_OF_RANGE, TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS, + TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS ); + + // Persistent alarm for the temperature sensors error bit fault check + initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_FAULT, TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS, + TEMP_SENSORS_OUT_OF_RANGE_PERSISTENT_PEROID_MS ); + // Persistent alarm for temperature sensors ADC error // When the FPGA read count does not increment for a period of time, it is considered as an internal error of the temperature sensors // driver. This is internal because FPGA does not error out if the FPGA read count does not increment. - initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSORS_ADC_FAULT, TEMPERATURE_SENSORS_FPGA_ERROR_PERSISTENT_PERIOD, TEMPERATURE_SENSORS_FPGA_ERROR_PERSISTENT_PERIOD ); + initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSORS_ADC_FAULT, TEMPERATURE_SENSORS_FPGA_ERROR_PERSISTENT_PERIOD, + TEMPERATURE_SENSORS_FPGA_ERROR_PERSISTENT_PERIOD ); } /*********************************************************************//** * @brief * The execTemperatureSensorsSelfTest function runs the TemperatureSensors * POST during the self-test. - * @details Inputs: tempSensorsSelfTestState - * @details Outputs: tempSensorsSelfTestState + * @details Inputs: none + * @details Outputs: none * @return tempSensorsSelfTestState which is the status of the self test *************************************************************************/ SELF_TEST_STATUS_T execTemperatureSensorsSelfTest( void ) { - switch ( tempSensorsSelfTestState ) - { - case TEMPSENSORS_SELF_TEST_START: - tempSensorsSelfTestState = handleSelfTestStart(); - break; + SELF_TEST_STATUS_T status = SELF_TEST_STATUS_IN_PROGRESS; - case TEMPSENSORS_SELF_TEST_ADC_CHECK: - tempSensorsSelfTestState = handleSelfTestADCCheck(); - break; + // TODO implement the calibration processing function. + // It returns a pass for now - case TEMPSENSORS_SELF_TEST_COMPLETE: - // Done with self-test, do nothing - break; + status = SELF_TEST_STATUS_PASSED; - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, tempSensorsSelfTestState ); - tempSensorsSelfTestState = TEMPSENSORS_SELF_TEST_COMPLETE; - break; - } - - return tempSensorsSelfTestResult; + return status; } /*********************************************************************//** @@ -304,7 +318,7 @@ // Read the sensors all the time switch ( tempSensorsExecState ) { - case TEMPSENSORS_SELF_TEST_START: + case TEMPSENSORS_EXEC_STATE_START: tempSensorsExecState = handleExecStart(); break; @@ -644,6 +658,12 @@ // Calculate the average F32 const avgADCReads = tempSensors[ sensorIndex ].adcRunningSum >> SHIFT_BITS_BY_2_FOR_AVERAGING; + // Check if the ADC value of the sensor is not out of range + if ( ( (U32)avgADCReads < TEMP_SESNORS_MIN_ALLOWED_ADC_COUNT ) || ( (U32)avgADCReads > TEMP_SENSORS_MAX_ALLOWED_ADC_COUNT ) ) + { + checkPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_ADC_OUT_OF_RANGE, TRUE, sensorIndex, avgADCReads ); + } + // Different sensors have different ADC to temperature conversion methods switch( sensorIndex ) { @@ -688,51 +708,13 @@ // Update the temperature tempSensors[ sensorIndex ].temperatureValues.data = temperature; -} -/*********************************************************************//** - * @brief - * The handleSelfTestStart function transitions the self-test state to - * check ADC. - * @details Inputs: tempSensorsSelfTestResult - * @details Outputs: none - * @return the next state of state machine - *************************************************************************/ -static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestStart( void ) -{ - tempSensorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; - return TEMPSENSORS_SELF_TEST_ADC_CHECK; + // Monitor the temperature value + monitorTemperatureSnsrs( sensorIndex, temperature ); } /*********************************************************************//** * @brief - * The handleSelfTestADCCheck function checks whether the ADC reads. If the - * reads are above the maximum 24bit ADC count, it will throw an alarm and - * switches to the next state. - * @details Inputs: tempSensorsSelfTestResult - * @details Outputs: tempSensorsSelfTestResult - * @return the next state of the state machine - *************************************************************************/ -static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestADCCheck( void ) -{ - tempSensorsSelfTestResult = SELF_TEST_STATUS_PASSED; - - S32 const tpiADC = (S32)getFPGATPiTemp(); - - BOOL const isLessThanZero = tpiADC <= 0; - BOOL const isGreaterThanFullScale = tpiADC >= TEMP_SENSORS_ADC_MAX_COUNT; - - if ( ( TRUE == isLessThanZero ) || ( TRUE == isGreaterThanFullScale ) ) - { - tempSensorsSelfTestResult = SELF_TEST_STATUS_FAILED; - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_TEMPERATURE_SENSORS_ADC_FAULT, TEMPSENSORS_SELF_TEST_ADC_CHECK ); - } - - return TEMPSENSORS_SELF_TEST_COMPLETE; -} - -/*********************************************************************//** - * @brief * The handleExecStart function waits for a period of time and switches to * the state that reads the ADC values from FPGA. * @details Inputs: elapsedTime @@ -743,7 +725,7 @@ { TEMPSENSORS_EXEC_STATES_T state = TEMPSENSORS_EXEC_STATE_START; - if ( elapsedTime == 0 ) + if ( 0 == elapsedTime ) { elapsedTime = getMSTimerCount(); } @@ -906,7 +888,31 @@ } } +/*********************************************************************//** + * @brief + * The monitorTemperatureSnsrs function monitors the temperature sensors' + * temperature value and raises an alarm if any of them are out of range + * for more than the specified time. + * @details Inputs: tempSensors + * @details Outputs: tempSensors + * @param sensorIndex the index of the temperature sensor + * @param temperature the temperature value to be checked + * @return none + *************************************************************************/ +static void monitorTemperatureSnsrs( U32 sensorIndex, F32 temperature ) +{ + // The maximum allowed temperature is different for the sensors that are in the fluid path + // with the ones that are not in the fluid path + F32 maxLimit = tempSensors[ sensorIndex ].maxAllowedTemperature; + // Check both temperature and to be in range + if ( ( temperature < TEMP_SENSORS_MIN_ALLOWED_DEGREE_C ) || ( temperature > maxLimit ) ) + { + checkPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_OUT_OF_RANGE, TRUE, sensorIndex, temperature ); + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/Thermistors.c =================================================================== diff -u -rc8fa40dde08a25bf61fae9f4fe770606a234db57 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision c8fa40dde08a25bf61fae9f4fe770606a234db57) +++ firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -15,19 +15,19 @@ // ********** private definitions ********** -#define THERMISTORS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Thermistors publish data time interval. -#define THERMISTORS_ADC_READ_INTERVAL ( MS_PER_SECOND / ( 2 * TASK_GENERAL_INTERVAL ) ) ///< Thermistors ADC read time interval. -#define ADC_FPGA_READ_DELAY_COUNT 1.0 ///< FGPA read delay upon startup. -#define TWELVE_BIT_RESOLUTION 4096U ///< 12 bit resolution conversion. -#define THERMISTOR_REFERENCE_VOLTAGE 3.0 ///< Thermistors source voltage. -#define THERMISTOR_REFERENCE_RESISTOR_AT_25 10000.0 ///< Thermistors reference resistor in ohms. -#define THERMISTOR_REFERENCE_TEMPERATURE 298.0 ///< Thermistors reference temperature in kelvin. -#define ONBOARD_THERMISTOR_BETA_VALUE 3380.0 ///< Onboard thermistor beta value. -#define POWER_SUPPLY_THERMISTOR_BETA_VALUE 3345.0 ///< Power supply beta value. -#define CELSIUS_TO_KELVIN_CONVERSION 273.15 ///< Celsius to Kelvin temperature conversion. -#define MIN_ALLOWED_TEMPERATURE 5.0 ///< Thermistors/sensors minimum allowed temperature reading. -#define MAX_ALLOWED_TEMPERATURE 70.0 ///< Thermistors/sensors maximum allowed temperature reading. -#define MAX_ALLOWED_TEMP_OUT_OF_RANGE_PERIOD ( 5 * MS_PER_SECOND ) ///< Thermistors/sensors maximum allowed temperature out of range period. +#define THERMISTORS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Thermistors publish data time interval. +#define THERMISTORS_ADC_READ_INTERVAL ( MS_PER_SECOND / ( 2 * TASK_GENERAL_INTERVAL ) ) ///< Thermistors ADC read time interval. +#define ADC_FPGA_READ_DELAY_COUNT 1.0 ///< FGPA read delay upon startup. +#define TWELVE_BIT_RESOLUTION 4096U ///< 12 bit resolution conversion. +#define THERMISTOR_REFERENCE_VOLTAGE 3.0 ///< Thermistors source voltage. +#define THERMISTOR_REFERENCE_RESISTOR_AT_25 10000.0 ///< Thermistors reference resistor in ohms. +#define THERMISTOR_REFERENCE_TEMPERATURE 298.0 ///< Thermistors reference temperature in kelvin. +#define ONBOARD_THERMISTOR_BETA_VALUE 3380.0 ///< Onboard thermistor beta value. +#define POWER_SUPPLY_THERMISTOR_BETA_VALUE 3345.0 ///< Power supply beta value. +#define CELSIUS_TO_KELVIN_CONVERSION 273.15 ///< Celsius to Kelvin temperature conversion. +#define MIN_ALLOWED_TEMPERATURE 0.0 ///< Thermistors/sensors minimum allowed temperature reading. +#define MAX_ALLOWED_TEMPERATURE 80.0 ///< Thermistors/sensors maximum allowed temperature reading. +#define MAX_ALLOWED_TEMP_OUT_OF_RANGE_PERIOD ( 5 * MS_PER_SECOND ) ///< Thermistors/sensors maximum allowed temperature out of range period. /// Thermistors self test states typedef enum thermistors_Self_Test_States @@ -53,8 +53,6 @@ F32 betaValue; ///< Thermistor beta value used to calculate temperature } THERMISTOR_T; -static SELF_TEST_STATUS_T thermistorsSelfTestReslt = SELF_TEST_STATUS_IN_PROGRESS; ///< Thermistors self test result. -static THERMISTORS_SELF_TEST_STATES_T thermistorsSelfTestState = THERMISTROS_SELF_TEST_CHECK_RANGE_STATE; ///< Thermistors self test state. static THERMISTORS_EXEC_STATES_T thermistorsExecState = THERMISTORS_EXEC_STATE_START_STATE; ///< Thermistors exec state. static THERMISTOR_T thermistorsStatus[ NUM_OF_THERMISTORS ]; ///< Thermistors array. static OVERRIDE_U32_T thermistorsPublishInterval = { THERMISTORS_DATA_PUBLISH_INTERVAL, @@ -68,8 +66,6 @@ // ********** private function prototypes ********** -static THERMISTORS_SELF_TEST_STATES_T handleSelfTestCheckRange( void ); - static THERMISTORS_EXEC_STATES_T handleExecStart( void ); static THERMISTORS_EXEC_STATES_T handleExecGetADCValues( void ); @@ -82,18 +78,14 @@ /*********************************************************************//** * @brief * The initThermistors function initializes the thermistors module. - * @details Inputs: thermistorsSelfTestReslt, thermistorsExecState, - * thermistorsExecState, dataPublishCounter - * @details Outputs: thermistorsSelfTestReslt, thermistorsExecState, - * thermistorsExecState, dataPublishCounter + * @details Inputs: none + * @details Outputs: thermistorsExecState, dataPublishCounter * @return none *************************************************************************/ void initThermistors( void ) { // Reset the thermistors values for a run - thermistorsSelfTestReslt = SELF_TEST_STATUS_IN_PROGRESS; thermistorsExecState = THERMISTORS_EXEC_STATE_START_STATE; - thermistorsSelfTestState = THERMISTROS_SELF_TEST_CHECK_RANGE_STATE; dataPublishCounter = 0; // Initialize the beta values of each thermistor @@ -108,30 +100,19 @@ /*********************************************************************//** * @brief * The execThermistorsSelfTest function executes the thermistors self test. - * @details Inputs: thermistorsSelfTestState - * @details Outputs: thermistorsSelfTestState + * @details Inputs: none + * @details Outputs: none * @return Status of self test *************************************************************************/ SELF_TEST_STATUS_T execThermistorsSelfTest( void ) { - switch ( thermistorsSelfTestState ) - { - case THERMISTROS_SELF_TEST_CHECK_RANGE_STATE: - thermistorsSelfTestState = handleSelfTestCheckRange(); - break; + SELF_TEST_STATUS_T status = SELF_TEST_STATUS_IN_PROGRESS; - case THERMISTORS_SELF_TEST_COMPLETE_STATE: - // Done with POST. Do nothing. - break; + // TODO implement the calibration processing function. + // It returns a pass for now + status = SELF_TEST_STATUS_PASSED; - default: - // Wrong state was called, raise an alarm - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_THERMISTORS_INVALID_SELF_TEST_STATE, thermistorsSelfTestState ); - thermistorsSelfTestState = THERMISTORS_SELF_TEST_COMPLETE_STATE; - break; - } - - return thermistorsSelfTestReslt; + return status; } /*********************************************************************//** @@ -199,55 +180,6 @@ /*********************************************************************//** * @brief - * The handleSelfTestRangeCheck function checks whether the thermistors - * are in range upon staring the device. - * @details Inputs: thermistorsStatus, adcReadCounter - * @details Outputs: thermistorsStatus, adcReadCounter - * @return next state of self test - *************************************************************************/ -static THERMISTORS_SELF_TEST_STATES_T handleSelfTestCheckRange( void ) -{ - THERMISTORS_SELF_TEST_STATES_T state = THERMISTROS_SELF_TEST_CHECK_RANGE_STATE; - - // Give a short time for FPGA to boot up and start sending the ADC reads - if ( ++adcReadCounter > ADC_FPGA_READ_DELAY_COUNT ) - { - THERMISTORS_TEMP_SENSORS_T thermistor; - F32 temperature; - - // Assuming self test passed - thermistorsSelfTestReslt = SELF_TEST_STATUS_PASSED; - - // Get all the raw readings in ADC - thermistorsStatus[ THERMISTOR_ONBOARD_NTC ].rawADCRead = getIntADCReading( INT_ADC_BOARD_THERMISTOR ); - thermistorsStatus[ THERMISTOR_POWER_SUPPLY_1 ].rawADCRead = getIntADCReading( INT_ADC_POWER_SUPPLY_1_THERMISTOR ); - thermistorsStatus[ THERMISTOR_POWER_SUPPLY_2 ].rawADCRead = getIntADCReading( INT_ADC_POWER_SUPPLY_2_THERMISTOR ); - - // Convert the ADC values to temperature - convertADC2Temperature(); - - for ( thermistor = THERMISTOR_ONBOARD_NTC; thermistor < NUM_OF_THERMISTORS; thermistor++ ) - { - // Get the actual temperature value and not the override value - temperature = thermistorsStatus[ thermistor ].temperatureValue.data; - // If the values are out of range, raise an alarm - if ( temperature < MIN_ALLOWED_TEMPERATURE || temperature >= MAX_ALLOWED_TEMPERATURE ) - { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_THERMISTORS_TEMPERATURE_OUT_OF_RANGE, thermistor, temperature ); - // If any thermistor/sensor is not in range, POST has failed - thermistorsSelfTestReslt = SELF_TEST_STATUS_FAILED; - } - } - // Done with POST - state = THERMISTORS_SELF_TEST_COMPLETE_STATE; - adcReadCounter = 0; - } - - return state; -} - -/*********************************************************************//** - * @brief * The handleExecStart function handles the start state of the exec state * machine. * @details Inputs: adcReadCounter Index: firmware/App/Controllers/Voltages.h =================================================================== diff -u -r5156a859330f51537606ffdab32ea63d8fac9cac -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 5156a859330f51537606ffdab32ea63d8fac9cac) +++ firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -78,7 +78,7 @@ void initVoltagesMonitor( void ); void execVoltagesMonitor( void ); -F32 getMonitoredLineLevel( MONITORED_VOLTAGES_T signal ); +F32 getMonitoredLineLevel( MONITORED_VOLTAGES_T signal ); BOOL testSetVoltagesDataPublishIntervalOverride( U32 value ); BOOL testResetVoltagesDataPublishIntervalOverride( void ); Index: firmware/App/DGCommon.h =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/DGCommon.h (.../DGCommon.h) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -40,6 +40,7 @@ // #define DISABLE_ACCELS 1 // #define SKIP_POST 1 #define DISABLE_CAL_CHECK 1 + #define IGNORE_CAL_TIMESTAMP 1 // #define ENABLE_DIP_SWITCHES 1 // #define EMC_TEST_BUILD 1 #define ALARMS_DEBUG 1 Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -rcea079b61dbd17b2ddaec99b1124248147d14e72 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision cea079b61dbd17b2ddaec99b1124248147d14e72) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -42,9 +42,6 @@ #define TARGET_RO_PRESSURE_PSI 130 ///< Target pressure for RO pump. #define TARGET_RO_FLOW_RATE_L 0.8 ///< Target flow rate for RO pump. -#define DIALYSATE_ACID_CONCENTRATE_RATIO ( 2.35618 / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and acid concentrate. -#define DIALYSATE_BICARB_CONCENTRATE_RATIO ( 4.06812 / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and bicarbonate concentrate. - #define DIALYSATE_FILL_TIME_OUT ( 5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Time out period when reservoir is not filled with correct dialysate. #define ACID_BICARB_CONCENTRATE_ADDITION_MULTIPLER 1.06 ///< Acid and bicarbonate concentrates make up around 6% to total volume. @@ -421,10 +418,14 @@ static void handleDialysateMixing( void ) { #ifndef DISABLE_MIXING + // TODO what should we do with start volume from the structure? + DG_ACID_CONCENTRATES_RECORD_T acid = getAcidConcentrateCalRecord(); + DG_BICARB_CONCENTRATES_RECORD_T bicarb = getBicarbConcentrateCalRecord(); + // Set concentrate pumps speed based off RO pump flow rate F32 const measuredROFlowRate = getMeasuredROFlowRate(); - F32 const acidCP1PumpFlowRate = DIALYSATE_ACID_CONCENTRATE_RATIO * measuredROFlowRate * ML_PER_LITER; - F32 const bicarbCP2PumpFlowRate = DIALYSATE_BICARB_CONCENTRATE_RATIO * measuredROFlowRate * ML_PER_LITER; + F32 const acidCP1PumpFlowRate = acid.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidConcMixRatio * measuredROFlowRate * ML_PER_LITER; + F32 const bicarbCP2PumpFlowRate = bicarb.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbConcMixRatio * measuredROFlowRate * ML_PER_LITER; setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, acidCP1PumpFlowRate ); setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, bicarbCP2PumpFlowRate ); Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -83,7 +83,7 @@ // R1 to R2 & R2 to R1 heat disinfect circulation #define HEAT_DISINFECT_TARGET_RO_FLOW_LPM 1.3 ///< Heat disinfect target RO flow rate in L/min. #define HEAT_DISINFECT_MAX_RO_PRESSURE_PSI 30 ///< Heat disinfect maximum RO pressure in psi. -#define HEAT_DISINFECT_TARGET_DRAIN_PRES_PSI 10.0 ///< Heat disinfect target drain outlet pressure in psi. +#define HEAT_DISINFECT_TARGET_DRAIN_PRES_PSI 12.0 ///< Heat disinfect target drain outlet pressure in psi. #define HEAT_DISINFECT_TIME_MS ( 10 * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect time for each section in milliseconds. #define HEAT_DISINFECT_START_TEMP_TIMOUT_MS ( 4 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect reaching to minimum temperature timeout in milliseconds. #define RSRVRS_TARGET_VOL_OUT_TIMEOUT_MS ( 0.5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 maximum volume out of range timeout during heat disinfect. TODO change this to 5 seconds @@ -2043,6 +2043,10 @@ #endif } } + else if ( ( TRUE == isPartialDisinfectInProgress ) && ( ThdTemp > HEAT_DISINFECT_START_TEMPERATURE_C ) ) + { + status = HEAT_DISINFECT_DISINFECT_IN_PROGRESS; + } // If heat disinfect temperature has been reached, check if this stage of heat disinfect is done if ( ( TRUE == isPartialDisinfectInProgress ) && ( TRUE == didTimeout( heatDisinfectTimer, HEAT_DISINFECT_TIME_MS ) ) ) Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -131,13 +131,8 @@ // NVDataMgmt must load all the calibration data into RAM so the actuators // can query their corresponding calibration value successfully case DG_POST_STATE_TEMPERATURE_SENSORS: -#ifdef DONT_SKIP_NV_POST - // Skip the rest of the POSTs - postState = DG_POST_STATE_PRESSURES; -#else testStatus = execTemperatureSensorsSelfTest(); postState = handlePOSTStatus( testStatus ); -#endif break; case DG_POST_STATE_ACCELEROMETER: @@ -151,7 +146,6 @@ case DG_POST_STATE_PRESSURES: testStatus = execPressureSelfTest(); - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; @@ -162,31 +156,24 @@ case DG_POST_STATE_DRAIN_PUMP: testStatus = execDrainPumpSelfTest(); - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case DG_POST_STATE_CONCENTRATE_PUMPS: - // TODO implement - testStatus = SELF_TEST_STATUS_PASSED; + testStatus = execConcenratePumpsSelfTest(); postState = handlePOSTStatus( testStatus ); break; case DG_POST_STATE_CONDUCTIVITY_SENSORS: testStatus = execConductivitySensorsSelfTest(); - testStatus = SELF_TEST_STATUS_PASSED; postState = handlePOSTStatus( testStatus ); break; case DG_POST_STATE_RESERVOIRS: - // TODO implement - testStatus = SELF_TEST_STATUS_PASSED; + testStatus = execReservoirsSelfTest(); postState = handlePOSTStatus( testStatus ); - postState = DG_POST_STATE_LOAD_CELL; break; - // To be able to run integration test in VectorCAST. - // Not all the fans and thermistors have been implemented so POST might fail case DG_POST_STATE_UV_REACTORS: testStatus = execUVReactorsSelfTest(); postState = handlePOSTStatus( testStatus ); @@ -210,7 +197,8 @@ // Should be last POST (and last POST test must be a test that completes in a single call) case DG_POST_STATE_LOAD_CELL: testStatus = execLoadCellsSelfTest(); - handlePOSTStatus( testStatus ); // ignoring return value because last test + handlePOSTStatus( testStatus ); + // Ignoring return value because last test if ( TRUE == tempPOSTPassed ) { postState = DG_POST_STATE_COMPLETED; @@ -219,7 +207,7 @@ { postState = DG_POST_STATE_FAILED; } - postState = DG_POST_STATE_COMPLETED; + postState = DG_POST_STATE_COMPLETED; // TODO remove, make sure the POSTs pass break; case DG_POST_STATE_COMPLETED: Index: firmware/App/Modes/ModeRecirculate.c =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -45,13 +45,11 @@ #define TARGET_RO_FLOW_RATE_L 0.3 ///< Target flow rate for RO pump. #define TARGET_FLUSH_LINES_RO_FLOW_RATE_L 0.6 ///< Target flow rate for RO pump. -#define FLUSH_LINES_VOLUME_L 0.01 ///< Water volume (in Liters) to flush when starting re-circulate mode. TODO remove this and add it NVDataMgmt // ********** private data ********** static DG_RECIRCULATE_MODE_STATE_T recircState; ///< Currently active re-circulation state. static F32 flushLinesVolumeL = 0.0; ///< Volume of water pumped by RO pump during flush lines state. -static F32 flushLinesTargetVolumeL = FLUSH_LINES_VOLUME_L; ///< Flush lines target volume in liters. // ********** private function prototypes ********** Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -rdf0a0b9ce1414b00b381e516714f9089d8e4ae21 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision df0a0b9ce1414b00b381e516714f9089d8e4ae21) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -113,11 +113,11 @@ SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, // 35 - SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, + SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, // 35 SW_FAULT_ID_HEATERS_SELF_TEST_INVALID_STATE, SW_FAULT_ID_HEATERS_PRIMARY_HEATER_EXEC_INVALID_STATE, - SW_FAULT_ID_HEATERS_TRIMMER_HEATER_EXEC_INVALID_STATE, + SW_FAULT_ID_HEATERS_TRIMMER_HEATER_EXEC_INVALID_STATE, + SW_FAULT_ID_DG_PRESSURES_INVALID_SELF_TEST_STATE, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME, // 40 SW_FAULT_ID_VALVES_INVALID_VALVE_ID, SW_FAULT_ID_CAN_PARITY_ERROR, @@ -139,10 +139,8 @@ SW_FAULT_ID_UV_REACTORS_INVALID_EXEC_STATE, SW_FAULT_ID_UV_REACTORS_INVALID_SELF_TEST_STATE, SW_FAULT_ID_THERMISTORS_INVALID_EXEC_STATE, // 60 - SW_FAULT_ID_THERMISTORS_INVALID_SELF_TEST_STATE, SW_FAULT_ID_INVALID_THERMISTOR_SELECTED, SW_FAULT_ID_FAN_INVALID_EXEC_STATE, - SW_FAULT_ID_FAN_INVALID_SELF_TEST_STATE, SW_FAULT_ID_INVALID_FAN_SELECTED, // 65 SW_FAULT_ID_RO_PUMP_INVALID_EXEC_STATE, SW_FAULT_ID_RO_PUMP_INVALID_FLOW_RATE_SET, Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r6f1f269cd7d91f41c51797d17a85a7ea249e21f3 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 6f1f269cd7d91f41c51797d17a85a7ea249e21f3) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -19,7 +19,6 @@ #include "LoadCell.h" #include "ModeRecirculate.h" -#include "NVDataMgmt.h" #include "OperationModes.h" #include "Reservoirs.h" #include "SystemCommMessages.h" @@ -37,7 +36,6 @@ #define MIN_RESERVOIR_VOLUME_ML 0 ///< Minimum reservoir volume in mL. #define MAX_RESERVOIR_VOLUME_ML 2000 ///< Maximum reservoir volume in mL. #define DEFAULT_FILL_VOLUME_ML 1700 ///< Default fill volume for treatment in mL. -#define DISINFECT_FILL_VOLUME_ML 2400 ///< Fill volume for disinfection in mL. #define MAX_FILL_VOLUME_ML MAX_RESERVOIR_VOLUME_ML ///< Maximum fill volume in mL. #define DEFAULT_DRAIN_VOLUME_ML 0 ///< Default drain volume in mL. #define MAX_DRAIN_VOLUME_ML MAX_RESERVOIR_VOLUME_ML ///< Maximum drain volume in mL. @@ -64,7 +62,7 @@ static F32 reservoirLowestWeight[ NUM_OF_DG_RESERVOIRS ] = { MAX_RESERVOIR_WEIGHT, MAX_RESERVOIR_WEIGHT }; static U32 reservoirWeightUnchangeStartTime[ NUM_OF_DG_RESERVOIRS ] = { 0, 0 }; ///< The reservoirs' weight start time when weight stop decreasing. static BOOL tareLoadCellRequest; ///< Flag indicates if load cell tare has been requested by HD. -static DG_RESERVOIR_VOLUME_RECORD_T reservoirsNVRecord; ///< DG reservoirs non-volatile record. +static DG_RESERVOIR_VOLUME_RECORD_T reservoirsCalRecord; ///< DG reservoirs non-volatile record. // ********** private function prototypes ********** @@ -113,6 +111,31 @@ broadcastReservoirData( actRes, filVol, drnVol ); reservoirDataPublicationTimerCounter = 0; } +} + +/*********************************************************************//** + * @brief + * The execDrainPumpSelfTest function executes the drain pump's self-test. + * @details Inputs: none + * @details Outputs: none + * @return PressuresSelfTestResult (SELF_TEST_STATUS_T) + *************************************************************************/ +SELF_TEST_STATUS_T execReservoirsSelfTest( void ) +{ + SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; + + BOOL calStatus = processCalibrationData(); + + if ( TRUE == calStatus ) + { + result = SELF_TEST_STATUS_PASSED; + } + else + { + result = SELF_TEST_STATUS_FAILED; + } + + return result; } /*********************************************************************//** @@ -238,8 +261,7 @@ cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; // fill command only valid in re-circulate mode - if ( ( DG_MODE_CIRC == getCurrentOperationMode() ) && - ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == getCurrentRecirculateState() ) ) + if ( ( DG_MODE_CIRC == getCurrentOperationMode() ) && ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == getCurrentRecirculateState() ) ) { // validate parameters if ( fillToVolMl < MAX_FILL_VOLUME_ML ) @@ -422,6 +444,19 @@ /*********************************************************************//** * @brief + * The getReservoirsCalRecord function returns the reservoirs' calibration + * record. + * @details Inputs: reservoirsCalRecord + * @details Outputs: none + * @return reservoirs' calibration record + *************************************************************************/ +DG_RESERVOIR_VOLUME_RECORD_T getReservoirsCalRecord( void ) +{ + return reservoirsCalRecord; +} + +/*********************************************************************//** + * @brief * The hasTargetFillVolumeReached function checks if the target fill volume * for specific reservoir has been reached. * @details Inputs: fillVolumeTargetMl @@ -578,7 +613,7 @@ * sure it is valid by checking the calibration date. The calibration date * should not be 0. * @details Inputs: none - * @details Outputs: reservoirsNVRecord + * @details Outputs: reservoirsCalRecord * @return TRUE if the calibration record is valid, otherwise FALSE *************************************************************************/ static BOOL processCalibrationData( void ) @@ -593,22 +628,18 @@ { // Check if the calibration data that was received from NVDataMgmt is legitimate // The calibration date item should not be zero. If the calibration date is 0, - // then the flow sensors data is not stored in the NV memory or it was corrupted. + // then the data is not stored in the NV memory or it was corrupted. if ( 0 == calData.reservoir[ reservoir ].calibrationTime ) { -#ifndef DISABLE_CAL_CHECK - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_RESERVOIRS_INVALID_NV_RECORD, (U32)reservoir ); -#endif + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_RESERVOIRS_INVALID_CAL_RECORD, (U32)reservoir ); status = FALSE; } - else - { - // The calibration data was valid, update the local copy - reservoirsNVRecord.reservoir[ reservoir ].maxResidualFluid = calData.reservoir[ reservoir ].maxResidualFluid; - reservoirsNVRecord.reservoir[ reservoir ].normalFillVolume = calData.reservoir[ reservoir ].normalFillVolume; - reservoirsNVRecord.reservoir[ reservoir ].rsrvrUnfilledWeight = calData.reservoir[ reservoir ].rsrvrUnfilledWeight; - reservoirsNVRecord.reservoir[ reservoir ].rsrvrVolume = calData.reservoir[ reservoir ].rsrvrVolume; - } + + // The calibration data was valid, update the local copy + reservoirsCalRecord.reservoir[ reservoir ].maxResidualFluid = calData.reservoir[ reservoir ].maxResidualFluid; + reservoirsCalRecord.reservoir[ reservoir ].normalFillVolume = calData.reservoir[ reservoir ].normalFillVolume; + reservoirsCalRecord.reservoir[ reservoir ].rsrvrUnfilledWeight = calData.reservoir[ reservoir ].rsrvrUnfilledWeight; + reservoirsCalRecord.reservoir[ reservoir ].rsrvrVolume = calData.reservoir[ reservoir ].rsrvrVolume; } return status; Index: firmware/App/Services/Reservoirs.h =================================================================== diff -u -r99b0c8f1ff9f9319f68e5043cd8c007e317a05c0 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision 99b0c8f1ff9f9319f68e5043cd8c007e317a05c0) +++ firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -20,6 +20,7 @@ #include "DGCommon.h" #include "DGDefs.h" +#include "NVDataMgmt.h" /** * @defgroup Reservoirs Reservoirs @@ -68,8 +69,10 @@ // ********** public function prototypes ********** void initReservoirs( void ); -void execReservoirs( void ); +void execReservoirs( void ); +SELF_TEST_STATUS_T execReservoirsSelfTest( void ); + void setActiveReservoirCmd( DG_RESERVOIR_ID_T resID ); // handle switch reservoirs command from HD void changeValveSettingCmd( DG_VALVE_SETTING_ID_T valveSettingID ); // handle valve setting change command from HD void startFillCmd( U32 fillToVolMl ); // handle fill command from HD @@ -82,6 +85,8 @@ DG_RESERVOIR_ID_T getInactiveReservoir( void ); F32 getReservoirWeight( DG_RESERVOIR_ID_T reservoirId ); + +DG_RESERVOIR_VOLUME_RECORD_T getReservoirsCalRecord( void ); BOOL hasTargetFillVolumeBeenReached( DG_RESERVOIR_ID_T reservoirId ); BOOL hasTargetDrainVolumeBeenReached( DG_RESERVOIR_ID_T reservoirId, U32 timeout ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r3d131237935eb36e56e0d057a713430e31dc6405 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -22,10 +22,8 @@ #include "Accel.h" #include "ConcentratePumps.h" #include "ConductivitySensors.h" -#include "DrainPump.h" #include "FPGA.h" #include "Heaters.h" -#include "LoadCell.h" #include "ModeFlush.h" #include "ModeStandby.h" #include "ModeRecirculate.h" @@ -34,7 +32,6 @@ #include "OperationModes.h" #include "Pressures.h" #include "Reservoirs.h" -#include "ROPump.h" #include "RTC.h" #include "SystemComm.h" #include "SafetyShutdown.h" @@ -385,31 +382,22 @@ * The broadcastLoadCellData function sends out load cell data. * @details Inputs: none * @details Outputs: load cell data msg constructed and queued - * @param loadCellA1 load cell A 1 data in grams - * @param loadCellA2 load cell A 2 data in grams - * @param loadCellB1 load cell B 1 data in grams - * @param loadCellB2 load cell B 2 data in grams + * @param loadCell which is the loadcells data structure pointer * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ) +BOOL broadcastLoadCellData( LOAD_CELL_DATA_T *loadCell ) { BOOL result; MESSAGE_T msg; U08 *payloadPtr = msg.payload; - LOAD_CELL_DATA_T payload; // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_LOAD_CELL_READINGS; msg.hdr.payloadLen = sizeof( LOAD_CELL_DATA_T ); - payload.loadCellA1inGram = loadCellA1; - payload.loadCellA2inGram = loadCellA2; - payload.loadCellB1inGram = loadCellB1; - payload.loadCellB2inGram = loadCellB2; + memcpy( payloadPtr, loadCell, sizeof( LOAD_CELL_DATA_T ) ); - memcpy( payloadPtr, &payload, sizeof( LOAD_CELL_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_DG_BROADCAST, ACK_NOT_REQUIRED ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -23,6 +23,7 @@ #include "Fans.h" #include "FluidLeak.h" #include "Heaters.h" +#include "LoadCell.h" #include "ModeChemicalDisinfect.h" #include "ModeFlush.h" #include "ModeHeatDisinfect.h" @@ -69,7 +70,7 @@ BOOL broadcastDGOperationMode( U32 mode, U32 subMode ); // MSG_ID_LOAD_CELL_READINGS -BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ); +BOOL broadcastLoadCellData( LOAD_CELL_DATA_T *loadCell ); // MSG_ID_DG_VALVES_STATES BOOL broadcastValvesStates( U16 valvesStates ); Index: firmware/DG.dil =================================================================== diff -u -rba0335ef18c7859109251f130178acc785c1d39e -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/DG.dil (.../DG.dil) (revision ba0335ef18c7859109251f130178acc785c1d39e) +++ firmware/DG.dil (.../DG.dil) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -1,4 +1,4 @@ -# RM46L852PGE 06/17/21 10:51:22 +# RM46L852PGE 07/07/21 16:03:35 # 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 @@ -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=0 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=0x402 -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=0x20000000 @@ -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=0x110 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=40 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=9 @@ -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=0x00000008 DRIVER.HET.VAR.HET2_EDGE7_POLARITY.VALUE=0 DRIVER.HET.VAR.HET1_EDGE1_INTENA.VALUE=0x00000000 @@ -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=0x00000000 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=0x00000000 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=0x00000000 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=0x80000000 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=0x00008000 -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=0x10000000 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=0x00020000 @@ -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 @@ -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/include/can.h =================================================================== diff -u -r36a2fa774e2f5721c30261a40360d706bb4ea4bb -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/include/can.h (.../can.h) (revision 36a2fa774e2f5721c30261a40360d706bb4ea4bb) +++ firmware/include/can.h (.../can.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -635,11 +635,11 @@ | (uint32)((uint32)0x0000000AU << 10U) | 0x00020002U) #define CAN1_ES_CONFIGVALUE 0x00000007U #define CAN1_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ - | (uint32)((uint32)(3U - 1U) << 12U) \ - | (uint32)((uint32)((2U + 3U) - 1U) << 8U) \ - | (uint32)((uint32)(3U - 1U) << 6U) | (uint32)45U) + | (uint32)((uint32)(2U - 1U) << 12U) \ + | (uint32)((uint32)((3U + 2U) - 1U) << 8U) \ + | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)51U) #define CAN1_TEST_CONFIGVALUE 0x00000080U -#define CAN1_ABOTR_CONFIGVALUE ((uint32)(1033350U)) +#define CAN1_ABOTR_CONFIGVALUE ((uint32)(1040000U)) #define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ | (uint32)0x00000002U \ | (uint32)0x00000004U \ @@ -729,8 +729,8 @@ #define CAN2_ES_CONFIGVALUE 0x00000007U #define CAN2_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ | (uint32)((uint32)(2U - 1U) << 12U) \ - | (uint32)((uint32)((4U + 2U) - 1U) << 8U) \ - | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)22U) + | (uint32)((uint32)((3U + 2U) - 1U) << 8U) \ + | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)25U) #define CAN2_TEST_CONFIGVALUE 0x00000080U #define CAN2_ABOTR_CONFIGVALUE ((uint32)(0U)) #define CAN2_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ @@ -821,8 +821,8 @@ #define CAN3_ES_CONFIGVALUE 0x00000007U #define CAN3_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ | (uint32)((uint32)(2U - 1U) << 12U) \ - | (uint32)((uint32)((4U + 2U) - 1U) << 8U) \ - | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)22U) + | (uint32)((uint32)((3U + 2U) - 1U) << 8U) \ + | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)25U) #define CAN3_TEST_CONFIGVALUE 0x00000080U #define CAN3_ABOTR_CONFIGVALUE ((uint32)(0U)) #define CAN3_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ Index: firmware/include/lin.h =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/include/lin.h (.../lin.h) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/include/lin.h (.../lin.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -263,10 +263,10 @@ | 0x00000000U) #define LIN_FORMAT_CONFIGVALUE ((uint32)((uint32)(8U - 1U) << 16U)) -#define LIN_BRSR_CONFIGVALUE (322U) +#define LIN_BRSR_CONFIGVALUE (324U) #define LIN_COMP_CONFIGVALUE ((uint32)((uint32)(1U - 1U) << 8U) | (13U - 13U)) #define LIN_MASK_CONFIGVALUE ((uint32)((uint32)0x00U << 16U) | 0x00U) -#define LIN_MBRSR_CONFIGVALUE (4651U) +#define LIN_MBRSR_CONFIGVALUE (4680U) #define LIN_FUN_CONFIGVALUE (4U | 2U | 0U) #define LIN_DIR_CONFIGVALUE (0U | 0U | 0U) #define LIN_ODR_CONFIGVALUE (0U | 0U | 0U) Index: firmware/include/mibspi.h =================================================================== diff -u -r216bd924f989182e648ee5f33f4c91c43ac438ac -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/include/mibspi.h (.../mibspi.h) (revision 216bd924f989182e648ee5f33f4c91c43ac438ac) +++ firmware/include/mibspi.h (.../mibspi.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -200,10 +200,10 @@ #define MIBSPI1_DELAY_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)0U << 8U) | (uint32)((uint32)0U << 0U)) -#define MIBSPI1_FMT0_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI1_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI1_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI1_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI1_FMT0_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI1_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI1_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI1_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) #define MIBSPI1_MIBSPIE_CONFIGVALUE 1U #define MIBSPI1_LTGPEND_CONFIGVALUE ((uint32)((uint32)((8U+0U+0U+0U+0U+0U+0U+0U)-1U) << 8U)) @@ -232,10 +232,10 @@ #define MIBSPI3_DELAY_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)0U << 8U) | (uint32)((uint32)0U << 0U)) -#define MIBSPI3_FMT0_CONFIGVALUE ((uint32)((uint32)20U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)1U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)8U << 0U)) -#define MIBSPI3_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI3_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI3_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI3_FMT0_CONFIGVALUE ((uint32)((uint32)20U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)1U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)8U << 0U)) +#define MIBSPI3_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI3_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI3_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) #define MIBSPI3_MIBSPIE_CONFIGVALUE 1U #define MIBSPI3_LTGPEND_CONFIGVALUE ((uint32)((uint32)((11U+0U+0U+0U+0U+0U+0U+0U)-1U) << 8U)) @@ -263,10 +263,10 @@ #define MIBSPI5_DELAY_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)0U << 8U) | (uint32)((uint32)0U << 0U)) -#define MIBSPI5_FMT0_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI5_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI5_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) -#define MIBSPI5_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)102U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI5_FMT0_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI5_FMT1_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI5_FMT2_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) +#define MIBSPI5_FMT3_CONFIGVALUE ((uint32)((uint32)0U << 24U) | (uint32)((uint32)0U << 23U) | (uint32)((uint32)0U << 22U) | (uint32)((uint32)0U << 21U) | (uint32)((uint32)0U << 20U) | (uint32)((uint32)0U << 17U) | (uint32)((uint32)0U << 16U) | (uint32)((uint32)103U << 8U) | (uint32)((uint32)16U << 0U)) #define MIBSPI5_MIBSPIE_CONFIGVALUE 1U #define MIBSPI5_LTGPEND_CONFIGVALUE ((uint32)((uint32)((8U+0U+0U+0U+0U+0U+0U+0U)-1U) << 8U)) Index: firmware/include/rti.h =================================================================== diff -u -rf068446fdb7889d320ddb6ffbd58f347ce0501e7 -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/include/rti.h (.../rti.h) (revision f068446fdb7889d320ddb6ffbd58f347ce0501e7) +++ firmware/include/rti.h (.../rti.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -255,10 +255,10 @@ #define RTI_TBCTRL_CONFIGVALUE 0x00000000U #define RTI_CAPCTRL_CONFIGVALUE (0U | 0U) #define RTI_COMPCTRL_CONFIGVALUE (0x00000000U | 0x00000100U | 0x00000000U | 0x00000000U) -#define RTI_UDCP0_CONFIGVALUE 10334U -#define RTI_UDCP1_CONFIGVALUE 103335U -#define RTI_UDCP2_CONFIGVALUE 82668U -#define RTI_UDCP3_CONFIGVALUE 516675U +#define RTI_UDCP0_CONFIGVALUE 10400U +#define RTI_UDCP1_CONFIGVALUE 104000U +#define RTI_UDCP2_CONFIGVALUE 83200U +#define RTI_UDCP3_CONFIGVALUE 520000U /** Index: firmware/include/system.h =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/include/system.h (.../system.h) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/include/system.h (.../system.h) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -115,7 +115,7 @@ * * PLL 1 clock source exported from HALCoGen GUI */ -#define PLL1_FREQ 206.67F +#define PLL1_FREQ 208.00F /** @def LPO_LF_FREQ * @brief LPO Low Freq Oscillator source exported from HALCoGen GUI @@ -143,28 +143,28 @@ * * GCLK domain frequency exported from HALCoGen GUI */ -#define GCLK_FREQ 206.670F +#define GCLK_FREQ 208.000F /** @def HCLK_FREQ * @brief HCLK domain frequency exported from HALCoGen GUI * * HCLK domain frequency exported from HALCoGen GUI */ -#define HCLK_FREQ 206.670F +#define HCLK_FREQ 208.000F /** @def RTI_FREQ * @brief RTI Clock frequency exported from HALCoGen GUI * * RTI Clock frequency exported from HALCoGen GUI */ -#define RTI_FREQ 103.335F +#define RTI_FREQ 104.000F /** @def AVCLK1_FREQ * @brief AVCLK1 Domain frequency exported from HALCoGen GUI * * AVCLK Domain frequency exported from HALCoGen GUI */ -#define AVCLK1_FREQ 103.335F +#define AVCLK1_FREQ 104.000F /** @def AVCLK2_FREQ * @brief AVCLK2 Domain frequency exported from HALCoGen GUI @@ -178,42 +178,42 @@ * * AVCLK3 Domain frequency exported from HALCoGen GUI */ -#define AVCLK3_FREQ 103.335F +#define AVCLK3_FREQ 104.000F /** @def AVCLK4_FREQ * @brief AVCLK4 Domain frequency exported from HALCoGen GUI * * AVCLK4 Domain frequency exported from HALCoGen GUI */ -#define AVCLK4_FREQ 103.335F +#define AVCLK4_FREQ 104.000F /** @def VCLK1_FREQ * @brief VCLK1 Domain frequency exported from HALCoGen GUI * * VCLK1 Domain frequency exported from HALCoGen GUI */ -#define VCLK1_FREQ 103.335F +#define VCLK1_FREQ 104.000F /** @def VCLK2_FREQ * @brief VCLK2 Domain frequency exported from HALCoGen GUI * * VCLK2 Domain frequency exported from HALCoGen GUI */ -#define VCLK2_FREQ 103.335F +#define VCLK2_FREQ 104.000F /** @def VCLK3_FREQ * @brief VCLK3 Domain frequency exported from HALCoGen GUI * * VCLK3 Domain frequency exported from HALCoGen GUI */ -#define VCLK3_FREQ 103.335F +#define VCLK3_FREQ 104.000F /** @def VCLK4_FREQ * @brief VCLK4 Domain frequency exported from HALCoGen GUI * * VCLK4 Domain frequency exported from HALCoGen GUI */ -#define VCLK4_FREQ 103.335F +#define VCLK4_FREQ 104.000F /** @def SYS_PRE1 @@ -337,7 +337,7 @@ | (uint32)((uint32)0x1FU << 24U) \ | (uint32)0x00000000U \ | (uint32)((uint32)(6U - 1U)<< 16U)\ - | (uint32)(0x9A00U)) + | (uint32)(0x9B00U)) #define SYS_PLLCTL1_CONFIGVALUE_2 (((SYS_PLLCTL1_CONFIGVALUE_1) & 0xE0FFFFFFU) | (uint32)((uint32)(1U - 1U) << 24U)) Index: firmware/source/can.c =================================================================== diff -u -r9301b9ec99beedbb49076dc03526622d313bd8cf -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/can.c (.../can.c) (revision 9301b9ec99beedbb49076dc03526622d313bd8cf) +++ firmware/source/can.c (.../can.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -180,7 +180,7 @@ | (uint32)0x00000000U; /** - Setup auto bus on timer period */ - canREG1->ABOTR = (uint32)1033350U; + canREG1->ABOTR = (uint32)1040000U; /** - Initialize message 1 * - Wait until IF1 is ready for use @@ -439,10 +439,10 @@ * - Setup baud rate prescaler */ canREG1->BTR = (uint32)((uint32)0U << 16U) | - (uint32)((uint32)(3U - 1U) << 12U) | - (uint32)((uint32)((2U + 3U) - 1U) << 8U) | - (uint32)((uint32)(3U - 1U) << 6U) | - (uint32)45U; + (uint32)((uint32)(2U - 1U) << 12U) | + (uint32)((uint32)((3U + 2U) - 1U) << 8U) | + (uint32)((uint32)(2U - 1U) << 6U) | + (uint32)51U; /** - CAN1 Port output values */ Index: firmware/source/het.c =================================================================== diff -u -rba0335ef18c7859109251f130178acc785c1d39e -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/het.c (.../het.c) (revision ba0335ef18c7859109251f130178acc785c1d39e) +++ firmware/source/het.c (.../het.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -783,7 +783,7 @@ /* Control */ (0x00004007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)8U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -800,7 +800,7 @@ /* Control */ (0x00052007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -817,7 +817,7 @@ /* Control */ (0x00008007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)10U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -834,7 +834,7 @@ /* Control */ (0x00056007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -851,7 +851,7 @@ /* Control */ (0x0000C007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)12U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -868,7 +868,7 @@ /* Control */ (0x0005A007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -885,7 +885,7 @@ /* Control */ (0x00010007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)14U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -902,7 +902,7 @@ /* Control */ (0x0005E007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -919,7 +919,7 @@ /* Control */ (0x00014007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)16U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -936,7 +936,7 @@ /* Control */ (0x00062007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -953,7 +953,7 @@ /* Control */ (0x00018007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)17U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -970,7 +970,7 @@ /* Control */ (0x00066007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -987,7 +987,7 @@ /* Control */ (0x0001C007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)18U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -1004,7 +1004,7 @@ /* Control */ (0x0006A007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -1021,7 +1021,7 @@ /* Control */ (0x00020007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)19U << 8U) | (uint32)((uint32)3U << 3U)), /* Data */ - 51968U, + 52224U, /* Reserved */ 0x00000000U }, @@ -1038,7 +1038,7 @@ /* Control */ (0x0006E007U), /* Data */ - 103296U, + 103936U, /* Reserved */ 0x00000000U }, @@ -1578,7 +1578,7 @@ if(hetRAM == hetRAM1) { - pwmPeriod = (signal.period * 1000.0F) / 1238.690F; + pwmPeriod = (signal.period * 1000.0F) / 1230.769F; pwmPolarity = s_het1pwmPolarity[pwm]; } else @@ -1636,11 +1636,11 @@ if(hetRAM == hetRAM1) { - signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + signal->period = ((float64)pwmPeriod * 1230.769F) / 1000.0F; } else { - signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + signal->period = ((float64)pwmPeriod * 1230.769F) / 1000.0F; } } @@ -1834,11 +1834,11 @@ if( hetRAM == hetRAM1) { - signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + signal->period = ((float64)pwmPeriod * 1230.769F) / 1000.0F; } else { - signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + signal->period = ((float64)pwmPeriod * 1230.769F) / 1000.0F; } } Index: firmware/source/mibspi.c =================================================================== diff -u -r216bd924f989182e648ee5f33f4c91c43ac438ac -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/mibspi.c (.../mibspi.c) (revision 216bd924f989182e648ee5f33f4c91c43ac438ac) +++ firmware/source/mibspi.c (.../mibspi.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -94,7 +94,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 1 */ @@ -105,7 +105,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 2 */ @@ -116,7 +116,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 3 */ @@ -127,7 +127,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Default Chip Select */ @@ -577,7 +577,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)1U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)8U << 0U); /* data word length */ /** - Data Format 1 */ @@ -588,7 +588,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 2 */ @@ -599,7 +599,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 3 */ @@ -610,7 +610,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Default Chip Select */ @@ -1051,7 +1051,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 1 */ @@ -1062,7 +1062,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 2 */ @@ -1073,7 +1073,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Data Format 3 */ @@ -1084,7 +1084,7 @@ | (uint32)((uint32)0U << 20U) /* shift direction */ | (uint32)((uint32)0U << 17U) /* clock polarity */ | (uint32)((uint32)0U << 16U) /* clock phase */ - | (uint32)((uint32)102U << 8U) /* baudrate prescale */ + | (uint32)((uint32)103U << 8U) /* baudrate prescale */ | (uint32)((uint32)16U << 0U); /* data word length */ /** - Default Chip Select */ Index: firmware/source/rti.c =================================================================== diff -u -ree52cb8a255151dca7716a651a933eb5603902ef -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/rti.c (.../rti.c) (revision ee52cb8a255151dca7716a651a933eb5603902ef) +++ firmware/source/rti.c (.../rti.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -117,28 +117,28 @@ rtiREG1->CNT[1U].CPUCx = 9U; /** - Setup compare 0 value. This value is compared with selected free running counter. */ - rtiREG1->CMP[0U].COMPx = 10334U; + rtiREG1->CMP[0U].COMPx = 10400U; /** - Setup update compare 0 value. This value is added to the compare 0 value on each compare match. */ - rtiREG1->CMP[0U].UDCPx = 10334U; + rtiREG1->CMP[0U].UDCPx = 10400U; /** - Setup compare 1 value. This value is compared with selected free running counter. */ - rtiREG1->CMP[1U].COMPx = 103335U; + rtiREG1->CMP[1U].COMPx = 104000U; /** - Setup update compare 1 value. This value is added to the compare 1 value on each compare match. */ - rtiREG1->CMP[1U].UDCPx = 103335U; + rtiREG1->CMP[1U].UDCPx = 104000U; /** - Setup compare 2 value. This value is compared with selected free running counter. */ - rtiREG1->CMP[2U].COMPx = 82668U; + rtiREG1->CMP[2U].COMPx = 83200U; /** - Setup update compare 2 value. This value is added to the compare 2 value on each compare match. */ - rtiREG1->CMP[2U].UDCPx = 82668U; + rtiREG1->CMP[2U].UDCPx = 83200U; /** - Setup compare 3 value. This value is compared with selected free running counter. */ - rtiREG1->CMP[3U].COMPx = 516675U; + rtiREG1->CMP[3U].COMPx = 520000U; /** - Setup update compare 3 value. This value is added to the compare 3 value on each compare match. */ - rtiREG1->CMP[3U].UDCPx = 516675U; + rtiREG1->CMP[3U].UDCPx = 520000U; /** - Clear all pending interrupts */ rtiREG1->INTFLAG = 0x0007000FU; Index: firmware/source/sci.c =================================================================== diff -u -r0953a2a6940f9f096fa98cc1e8a5578deab4d8ef -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/sci.c (.../sci.c) (revision 0953a2a6940f9f096fa98cc1e8a5578deab4d8ef) +++ firmware/source/sci.c (.../sci.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -273,7 +273,7 @@ /* Requirements : HL_SR232 */ void sciSetBaudrate(sciBASE_t *sci, uint32 baud) { - float64 vclk = 103.335 * 1000000.0; + float64 vclk = 104.000 * 1000000.0; uint32 f = ((sci->GCR1 & 2U) == 2U) ? 16U : 1U; uint32 temp; float64 temp2; Index: firmware/source/system.c =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -rc0160362dc799802ec589d5b6cf4c2bd1face77e --- firmware/source/system.c (.../system.c) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/source/system.c (.../system.c) (revision c0160362dc799802ec589d5b6cf4c2bd1face77e) @@ -104,7 +104,7 @@ | (uint32)((uint32)0x1FU << 24U) | (uint32)0x00000000U | (uint32)((uint32)(6U - 1U)<< 16U) - | (uint32)(0x9A00U); + | (uint32)(0x9B00U); /** - Setup pll control register 2 * - Setup spreading rate