Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u --- firmware/App/Controllers/Heaters.c (revision 0) +++ firmware/App/Controllers/Heaters.c (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -0,0 +1,233 @@ +/**********************************************************************//** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file Heaters.c + * + * @date 21-Apr-2020 + * @author Dara Navaei + * + * @brief DG heaters controller + * + **************************************************************************/ + +#include "etpwm.h" + +// TODO for testing only remove +#include "mibspi.h" +// TODO for testing only remove + +#include "AlarmMgmt.h" +#include "Common.h" +#include "Heaters.h" +#include "TemperatureSensors.h" +#include "PIControllers.h" + +#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 0.795 ///< Main primary heater (heater A) max duty cycle (79.5%) +#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 0.25 ///< Small Primary heater (heater B) max duty cycle (25%) +#define TRIMMER_HEATER_MAX_DUTY_CYCLE 0.25 ///< Trimmer heater max duty cycle (25%) +#define HEATERS_MIN_DUTY_CYCLE 0.00 ///< Primary and trimmer heaters min duty cycle (0.00%) + +#define PRIMARY_HEATERS_P_COEFFICIENT 0.005 +#define PRIMARY_HEATERS_I_COEFFICIENT 0.001 + +#define TRIMMER_HEATER_P_COEFFICIENT 0.003 +#define TRIMMER_HEATER_I_COEFFICIENT 0.001 + +// TODO make these macros functions +#define INITIAL_DUTY_CYCLE_MAIN_PRIMARY_HEATER 0.50 +#define INITIAL_DUTY_CYCLE_SMALL_PRIMARY_HEATER 0.10 +#define INITIAL_DUTY_CYCLE_TRIMMER_HEATER 0.10 + +typedef enum heaters_self_tesst_states +{ + HEATERS_SELF_TEST_START = 0, + HEATERS_SELF_TEST_START_SMALL_PRIMARY_AND_TRIMMER, + HEATERS_SELF_TEST_START_MAIN_PRIMARY, + HEATERS_SELF_TEST_COMPLETE, + NUM_OF_HEATERS_SELF_TEST_STATES +} HEATERS_SELF_TEST_STATES_T ; + +typedef enum primary_heaters_exec_states +{ + PRIMARY_HEATERS_EXEC_STATE_OFF = 0, + PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET, + NUM_OF_PRIMARY_HEATERS_EXEC_STATES +} PRIMARY_HEATERS_EXEC_STATES_T; + +typedef enum trimmer_heater_exec_states +{ + TRIMMER_HEATER_EXEC_STATE_OFF = 0, + TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET, + NUM_OF_TRIMMER_HEATER_EXEC_STATES +} TRIMMER_HEATER_EXEC_STATES_T; + +// Private variables + +static SELF_TEST_STATUS_T heatersSelfTestResult; +static HEATERS_SELF_TEST_STATES_T heatersSelfTestState; +static PRIMARY_HEATERS_EXEC_STATES_T primaryHeatersExecState; +static TRIMMER_HEATER_EXEC_STATES_T trimmerHeaterExecState; +static F32 smallPrimaryHeaterPWMDutyCycle; +static F32 mainPrimaryHeaterPWMDutyCycle; +static F32 trimmerHeaterPWMDutyCycle; + +// private functions prototypes + +static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateOff ( void ); +static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateControlToTarget ( void ); + +static void setMainPrimaryHeaterPWM( F32 pwm ); +static void setSmallPrimaryHeaterPWM ( F32 pwm ); +static void setTrimmerHeaterPWM( F32 pwm ); + +// TODo GPIO for enabling the primary heater +#define PRIMARY_HEATER_MIBSPI1_PORT_MASK 0x00000002 // (CS1 - re-purposed as input GPIO) +#define TOGGLEPRIMAYHEATER() ( ( mibspiREG1->PC2 & PRIMARY_HEATER_MIBSPI1_PORT_MASK ) != 0 ) + +// Public functions + +void initHeaters ( void ) +{ + heatersSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; + heatersSelfTestState = HEATERS_SELF_TEST_START; + primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_OFF; + trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_OFF; + smallPrimaryHeaterPWMDutyCycle = 0.0; + mainPrimaryHeaterPWMDutyCycle = 0.0; + trimmerHeaterPWMDutyCycle = 0.0; +} + +void startPrimaryHeater ( void ) +{ + setMainPrimaryHeaterPWM ( 0.5 ); + setSmallPrimaryHeaterPWM ( 0.25 ); +} + +void startTrimmerHeater ( void ) +{ + setTrimmerHeaterPWM ( INITIAL_DUTY_CYCLE_MAIN_PRIMARY_HEATER ); +} + +void stopPrimaryHeater ( void ) +{ + setMainPrimaryHeaterPWM ( 0.0 ); + setSmallPrimaryHeaterPWM ( 0.0 ); +} + +SELF_TEST_STATUS_T execHeatersSelfTest ( void ) +{ + switch ( heatersSelfTestState ) + { + case HEATERS_SELF_TEST_START: + + break; + case HEATERS_SELF_TEST_START_SMALL_PRIMARY_AND_TRIMMER: + + break; + case HEATERS_SELF_TEST_START_MAIN_PRIMARY: + + break; + case HEATERS_SELF_TEST_COMPLETE: + + break; + + default: + + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_SELF_TEST_INVALID_STATE, + heatersSelfTestState ); + heatersSelfTestState = HEATERS_SELF_TEST_COMPLETE; + break; + } + + return heatersSelfTestResult; +} + + +void execPrimaryHeaters ( void ) +{ + switch ( primaryHeatersExecState ) + { + case PRIMARY_HEATERS_EXEC_STATE_OFF: + + primaryHeatersExecState = handlePrimaryHeaterStateOff(); + break; + + case PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET: + + primaryHeatersExecState = handlePrimaryHeaterStateControlToTarget(); + break; + + default: + + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_PRIMARY_HEATER_EXEC_INVALID_STATE, + primaryHeatersExecState ); + primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; + break; + } +} + +void execTrimmerHeater ( void ) +{ + switch ( trimmerHeaterExecState ) + { + case TRIMMER_HEATER_EXEC_STATE_OFF: + + break; + + case TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET: + + break; + + default: + + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_TRIMMER_HEATER_EXEC_INVALID_STATE, + trimmerHeaterExecState ); + trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET; + break; + } +} + +static void setMainPrimaryHeaterPWM( F32 pwm ) +{ + etpwmSetCmpA( etpwmREG1, (U32)( (S32)( ( pwm * (F32)(etpwmREG1->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); +} + +static void setSmallPrimaryHeaterPWM ( F32 pwm ) +{ + etpwmSetCmpB( etpwmREG1, (U32)( (S32)( ( pwm * (F32)(etpwmREG1->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); +} +static void setTrimmerHeaterPWM( F32 pwm ) +{ + etpwmSetCmpA( etpwmREG3, (U32)( (S32)( ( pwm * (F32)(etpwmREG3->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); +} + +static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateOff ( void ) +{ + PRIMARY_HEATERS_EXEC_STATES_T state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; + + return state; +} +static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateControlToTarget ( void ) +{ + PRIMARY_HEATERS_EXEC_STATES_T state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; + + // TODO remove this code for testing + if ( TOGGLEPRIMAYHEATER() ) + { + startPrimaryHeater(); + } + + if ( !TOGGLEPRIMAYHEATER() ) + { + stopPrimaryHeater(); + } + // TODO remove this code for testing + + + return state; +} + Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u --- firmware/App/Controllers/Heaters.h (revision 0) +++ firmware/App/Controllers/Heaters.h (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -0,0 +1,42 @@ +/**********************************************************************//** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file Heaters.h + * + * @date 21-Apr-2020 + * @author Dara Navaei + * + * @brief DG heaters controller + * + **************************************************************************/ + +#ifndef _HEATERS_H_ +#define _HEATERS_H_ + +void initHeaters ( void ); + +void setPrimaryHeaterTargetTemperature ( F32 targetTemp ); +void setTrimmerHeaterTargetTemperature ( F32 targetTemp ); + +void startPrimaryHeater ( void ); +void startTrimmerHeater ( void ); + +void stopPrimaryHeater ( void ); +void stopTrimmerHeater ( void ); + +void execHeatersMonitor ( void ); // Todo decide the functionality + +SELF_TEST_STATUS_T execHeatersSelfTest ( void ); + +void execPrimaryHeaters ( void ); + +void execTrimmerHeater ( void ); + + + + +#endif Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rdc45f2e844dd200ecde6c3a90196d40354676712 -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision dc45f2e844dd200ecde6c3a90196d40354676712) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -359,7 +359,7 @@ static void processADCRead (U32 sensorIndex, U32 adc, U32 fpgaError, U32 fpgaCount ) { U32 error; - U32 heatersInternalTemperature; + U32 heatersTemperature; BOOL isADCValid = FALSE; F32 temperature; @@ -415,9 +415,8 @@ // If the fault is 1, should we check the individuals? } - // Mask off the thermocouple section - heatersInternalTemperature = adc & MASK_OFF_MSW; - heatersInternalTemperature = heatersInternalTemperature & MASK_OFF_NIBBLE_LSB; + heatersTemperature = adc & 0xFF05; + heatersTemperature = (heatersTemperature & 0x7FFF) >> 2; } U32 previousReadCount = readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ]; @@ -486,7 +485,6 @@ temperatureValues [ sensorIndex ] = temperature; } } - /************************************************************************* * @brief handleSelfTestStart * The handleSelfTestStart function waits for the ADC read array to be Index: firmware/App/DGCommon.h =================================================================== diff -u -re7f256098e5c23cc621af73b17160a247d40559c -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision e7f256098e5c23cc621af73b17160a247d40559c) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -28,7 +28,7 @@ // ********** build switches ********** #ifndef _VECTORCAST_ -// #define RM46_EVAL_BOARD_TARGET 1 + // #define RM46_EVAL_BOARD_TARGET 1 // #define SIMULATE_UI 1 #ifdef DEBUG_ENABLED Index: firmware/App/Drivers/SafetyShutdown.c =================================================================== diff -u -rb64c49fdcf2b6d95e61e63f8e258c4e600935bbd -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision b64c49fdcf2b6d95e61e63f8e258c4e600935bbd) +++ firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -1,57 +1,54 @@ -/************************************************************************** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file SafetyShutdown.c - * - * @date 20-Sep-2019 - * @author S. Nash - * - * @brief Controller for the safety shutdown signal. - * - **************************************************************************/ - -#include "gio.h" - -#include "SafetyShutdown.h" - -// ********** private definitions ********** - -// GIO port A pin assignments for pins connected to CPLD -#define SAFETY_GIO_PORT_PIN 3U - -// CPLD pin I/O macros -#define SET_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) -#define CLR_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_LOW ) - -/************************************************************************* - * @brief initSafetyShutdown - * The initSafetyShutdown function initializes the Buttons module. - * @details - * Inputs : none - * Outputs : Safety Shutdown module signal output set to initial state. - * @param none - * @return none - *************************************************************************/ -void initSafetyShutdown( void ) -{ - CLR_SAFETY_SHUTDOWN(); -} - -/************************************************************************* - * @brief activateSafetyShutdown - * The activateSafetyShutdown function activates the safety shutdown signal. - * @details - * Inputs : none - * Outputs : Safety Shutdown signal output set to active state. - * @param none - * @return none - *************************************************************************/ -void activateSafetyShutdown( void ) -{ - SET_SAFETY_SHUTDOWN(); -} - +/************************************************************************** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file SafetyShutdown.c + * + * @date 20-Sep-2019 + * @author S. Nash + * + * @brief Controller for the safety shutdown signal. + * + **************************************************************************/ + +#include "mibspi.h" + +#include "SafetyShutdown.h" + +// ********** private definitions ********** + +// pin I/O macros +#define SAFETY_SPI1_PORT_MASK 0x00000010 // (CS[4] - re-purposed as output GPIO) +#define SET_SAFETY_SHUTDOWN() {mibspiREG1->PC3 |= SAFETY_SPI1_PORT_MASK;} +#define CLR_SAFETY_SHUTDOWN() {mibspiREG1->PC3 &= ~SAFETY_SPI1_PORT_MASK;} + +/************************************************************************* + * @brief initSafetyShutdown + * The initSafetyShutdown function initializes the Buttons module. + * @details + * Inputs : none + * Outputs : Safety Shutdown module signal output set to initial state. + * @param none + * @return none + *************************************************************************/ +void initSafetyShutdown( void ) +{ + CLR_SAFETY_SHUTDOWN(); +} + +/************************************************************************* + * @brief activateSafetyShutdown + * The activateSafetyShutdown function activates the safety shutdown signal. + * @details + * Inputs : none + * Outputs : Safety Shutdown signal output set to active state. + * @param none + * @return none + *************************************************************************/ +void activateSafetyShutdown( void ) +{ + SET_SAFETY_SHUTDOWN(); +} Index: firmware/App/Drivers/SafetyShutdown.h =================================================================== diff -u -rb64c49fdcf2b6d95e61e63f8e258c4e600935bbd -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision b64c49fdcf2b6d95e61e63f8e258c4e600935bbd) +++ firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -1,27 +1,27 @@ -/************************************************************************** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file SafetyShutdown.h - * - * @date 20-Sep-2019 - * @author S. Nash - * - * @brief Header file for Safety Shutdown Controller. - * - **************************************************************************/ - -#ifndef __SAFETY_SHUTDOWN_H__ -#define __SAFETY_SHUTDOWN_H__ - -#include "DGCommon.h" - -// ********** public function prototypes ********** - -void initSafetyShutdown( void ); -void activateSafetyShutdown( void ); - -#endif +/************************************************************************** + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file SafetyShutdown.h + * + * @date 20-Sep-2019 + * @author S. Nash + * + * @brief Header file for Safety Shutdown Controller. + * + **************************************************************************/ + +#ifndef __SAFETY_SHUTDOWN_H__ +#define __SAFETY_SHUTDOWN_H__ + +#include "DGCommon.h" + +// ********** public function prototypes ********** + +void initSafetyShutdown( void ); +void activateSafetyShutdown( void ); + +#endif Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r4ed5e33f4bb86748661754208699e66eca184792 -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 4ed5e33f4bb86748661754208699e66eca184792) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -126,6 +126,9 @@ SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, + 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, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -rf267c42c91fd6e22db80e19039b8993582de51e9 -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision f267c42c91fd6e22db80e19039b8993582de51e9) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -48,6 +48,8 @@ // manage data to be transmitted to other sub-systems execSystemCommTx(); + execPrimaryHeaters(); + // toggle GPIO to indicate general task has executed // gioToggleBit( gioPORTB, 1 ); } Index: firmware/DG.dil =================================================================== diff -u -re7f256098e5c23cc621af73b17160a247d40559c -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/DG.dil (.../DG.dil) (revision e7f256098e5c23cc621af73b17160a247d40559c) +++ firmware/DG.dil (.../DG.dil) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -1,4 +1,4 @@ -# RM46L852PGE 04/16/20 12:41:08 +# RM46L852PGE 04/23/20 15:20:51 # ARCH=RM46L852PGE # @@ -9348,10 +9348,10 @@ DRIVER.PMM.VAR.PMM_PWR_DOMAIN4_ENABLE.VALUE=0 DRIVER.PMM.VAR.PMM_PWR_DOMAIN2_ENABLE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM6_OSHT_WIDTH.VALUE=100 -DRIVER.ETPWM.VAR.ETPWM3_PWMA_PERIOD_REG.VALUE=6888 +DRIVER.ETPWM.VAR.ETPWM3_PWMA_PERIOD_REG.VALUE=64583 DRIVER.ETPWM.VAR.ETPWM2_PWMA_COMPARE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM5_CHOPPER_PERIOD.VALUE=100.000 -DRIVER.ETPWM.VAR.ETPWM3_PWMA_ACTUALPERIOD.VALUE=66666.667 +DRIVER.ETPWM.VAR.ETPWM3_PWMA_ACTUALPERIOD.VALUE=1250004.839 DRIVER.ETPWM.VAR.ETPWM3_PWMA_DUTY.VALUE=0 DRIVER.ETPWM.VAR.ETPWM7_PWMB_PERIOD.VALUE=1000 DRIVER.ETPWM.VAR.ETPWM3_PWMB_DEADBAND_OUT.VALUE=0 @@ -9387,10 +9387,10 @@ DRIVER.ETPWM.VAR.ETPWM1_OSHT4.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM5_OSHT_WIDTH_REG.VALUE=0 DRIVER.ETPWM.VAR.ETPWM1_OSHT5.VALUE=0x0000 -DRIVER.ETPWM.VAR.ETPWM1_PWMA_PERIOD_REG.VALUE=6888 +DRIVER.ETPWM.VAR.ETPWM1_PWMA_PERIOD_REG.VALUE=10333 DRIVER.ETPWM.VAR.ETPWM1_OSHT6.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM1_CHOPPER_PERIOD.VALUE=100.000 -DRIVER.ETPWM.VAR.ETPWM1_PWMB_PERIOD.VALUE=66667 +DRIVER.ETPWM.VAR.ETPWM1_PWMB_PERIOD.VALUE=100000 DRIVER.ETPWM.VAR.ETPWM2_CBC.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM4_CLKDIV.VALUE=0 DRIVER.ETPWM.VAR.ETPWM2_PWMB_ENA.VALUE=1 @@ -9446,7 +9446,7 @@ DRIVER.ETPWM.VAR.ETPWM6_PWMA_FALLING_EDGE_DELAY_REG.VALUE=1 DRIVER.ETPWM.VAR.ETPWM6_PWMA_RISING_EDGE_DELAY_REG.VALUE=1 DRIVER.ETPWM.VAR.ETPWM4_CHOPPER_MODE.VALUE=0 -DRIVER.ETPWM.VAR.ETPWM3_CLKDIV_REG.VALUE=0 +DRIVER.ETPWM.VAR.ETPWM3_CLKDIV_REG.VALUE=1 DRIVER.ETPWM.VAR.ETPWM2_PWMB_DEADBAND_OUT.VALUE=0 DRIVER.ETPWM.VAR.ETPWM6_TB_FREQUENCY.VALUE=110.000 DRIVER.ETPWM.VAR.ETPWM4_CBC.VALUE=0x0000 @@ -9503,7 +9503,7 @@ DRIVER.ETPWM.VAR.ETPWM3_PWMA_COMPARE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM2_OSHT5.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM3_DEADBAND_OUTPUT.VALUE=PWMA_PWMB_NIL -DRIVER.ETPWM.VAR.ETPWM3_PWMB_ACTUALPERIOD.VALUE=66666.667 +DRIVER.ETPWM.VAR.ETPWM3_PWMB_ACTUALPERIOD.VALUE=1250004.839 DRIVER.ETPWM.VAR.ETPWM2_OSHT6.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM6_CBC.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM2_PWMB_DUTYTIME.VALUE=0.000 @@ -9545,7 +9545,7 @@ DRIVER.ETPWM.VAR.ETPWM2_CBC4.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM1_OST.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM1_CHOPPER_ACTUALPERIOD.VALUE=77.418 -DRIVER.ETPWM.VAR.ETPWM1_PWMA_ACTUALPERIOD.VALUE=66666.667 +DRIVER.ETPWM.VAR.ETPWM1_PWMA_ACTUALPERIOD.VALUE=100004.839 DRIVER.ETPWM.VAR.ETPWM7_PWMB_DUTYTIME.VALUE=0.000 DRIVER.ETPWM.VAR.ETPWM3_FDELAY_SOURCE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM2_CBC5.VALUE=0x0000 @@ -9562,7 +9562,7 @@ DRIVER.ETPWM.VAR.ETPWM6_ENABLE_SOCB.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM1_PWMB_ENA.VALUE=1 DRIVER.ETPWM.VAR.ETPWM5_CHOPPER_ACTUALPERIOD.VALUE=77.418 -DRIVER.ETPWM.VAR.ETPWM3_PWMB_PERIOD.VALUE=66667 +DRIVER.ETPWM.VAR.ETPWM3_PWMB_PERIOD.VALUE=1250000 DRIVER.ETPWM.VAR.ETPWM1_DEADBAND_OUTPUT.VALUE=PWMA_PWMB_NIL DRIVER.ETPWM.VAR.ETPWM4_TB_ACTUALFREQUENCY.VALUE=103.335 DRIVER.ETPWM.VAR.ETPWM2_OSHT_WIDTH_REG.VALUE=0 @@ -9701,16 +9701,16 @@ DRIVER.ETPWM.VAR.ETPWM3_PWMB_FALLING_EDGE_DELAY_REG.VALUE=1 DRIVER.ETPWM.VAR.ETPWM6_DEADBAND_OUTPUT.VALUE=PWMA_PWMB_NIL DRIVER.ETPWM.VAR.ETPWM3_INTERRUPT_PERIOD.VALUE=1 -DRIVER.ETPWM.VAR.ETPWM1_PWMA_PERIOD.VALUE=66667 +DRIVER.ETPWM.VAR.ETPWM1_PWMA_PERIOD.VALUE=100000 DRIVER.ETPWM.VAR.ETPWM7_RDELAY_SOURCE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM7_PWMA_DUTYTIME.VALUE=0.000 DRIVER.ETPWM.VAR.ETPWM1_TB_FREQUENCY.VALUE=110.000 -DRIVER.ETPWM.VAR.ETPWM3_CLKDIV.VALUE=0 +DRIVER.ETPWM.VAR.ETPWM3_CLKDIV.VALUE=2 DRIVER.ETPWM.VAR.ETPWM2_PWMA_DEADBAND_INVERT.VALUE=0 DRIVER.ETPWM.VAR.ETPWM7_CHOPPER_PERIOD_REG.VALUE=0 DRIVER.ETPWM.VAR.ETPWM6_CLKDIV_REG.VALUE=0 DRIVER.ETPWM.VAR.ETPWM4_SOCA_PERIOD.VALUE=1 -DRIVER.ETPWM.VAR.ETPWM1_PWMB_ACTUALPERIOD.VALUE=66666.667 +DRIVER.ETPWM.VAR.ETPWM1_PWMB_ACTUALPERIOD.VALUE=100004.839 DRIVER.ETPWM.VAR.ETPWM5_CBC1.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM5_PWMB_RISING_EDGE_DELAY.VALUE=9.091 DRIVER.ETPWM.VAR.ETPWM5_CBC2.VALUE=0x0000 @@ -9769,7 +9769,7 @@ DRIVER.ETPWM.VAR.ETPWM1_DCBEVT1.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM4_CHOPPER_PERIOD.VALUE=100.000 DRIVER.ETPWM.VAR.ETPWM1_DCBEVT2.VALUE=0x0000 -DRIVER.ETPWM.VAR.ETPWM3_TB_ACTUALFREQUENCY.VALUE=103.335 +DRIVER.ETPWM.VAR.ETPWM3_TB_ACTUALFREQUENCY.VALUE=51.667 DRIVER.ETPWM.VAR.ETPWM2_ENABLE_SOCA.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM2_ENABLE_SOCB.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM2_HSPCLKDIV.VALUE=0 @@ -9799,7 +9799,7 @@ DRIVER.ETPWM.VAR.ETPWM1_CLKDIV.VALUE=0 DRIVER.ETPWM.VAR.ETPWM6_CHOPPER_DUTY.VALUE=50 DRIVER.ETPWM.VAR.ETPWM6_PWMA_POLARITY.VALUE=0 -DRIVER.ETPWM.VAR.ETPWM3_PWMB_PERIOD_REG.VALUE=6888 +DRIVER.ETPWM.VAR.ETPWM3_PWMB_PERIOD_REG.VALUE=64583 DRIVER.ETPWM.VAR.ETPWM4_PWMB_DEADBAND_OUT.VALUE=0 DRIVER.ETPWM.VAR.ETPWM7_FDELAY_SOURCE.VALUE=0 DRIVER.ETPWM.VAR.ETPWM4_RDELAY_SOURCE.VALUE=0 @@ -9847,7 +9847,7 @@ DRIVER.ETPWM.VAR.ETPWM5_PWMA_COMPARE.VALUE=52 DRIVER.ETPWM.VAR.ETPWM3_PWMA_RISING_EDGE_DELAY_REG.VALUE=1 DRIVER.ETPWM.VAR.ETPWM1_CHOPPER_PERIOD_REG.VALUE=0 -DRIVER.ETPWM.VAR.ETPWM1_PWMB_PERIOD_REG.VALUE=6888 +DRIVER.ETPWM.VAR.ETPWM1_PWMB_PERIOD_REG.VALUE=10333 DRIVER.ETPWM.VAR.ETPWM7_PWMA_FALLING_EDGE_DELAY.VALUE=9.091 DRIVER.ETPWM.VAR.ETPWM7_PWMA_RISING_EDGE_DELAY.VALUE=9.091 DRIVER.ETPWM.VAR.ETPWM6_BASE.VALUE=0xFCF79100 @@ -9870,7 +9870,7 @@ DRIVER.ETPWM.VAR.ETPWM7_PWMA_DEADBAND_OUT.VALUE=0 DRIVER.ETPWM.VAR.ETPWM7_HSPCLKDIV_REG.VALUE=0 DRIVER.ETPWM.VAR.ETPWM2_CHOPPER_DUTY_NEW.VALUE=50.0 -DRIVER.ETPWM.VAR.ETPWM3_PWMA_PERIOD.VALUE=66667 +DRIVER.ETPWM.VAR.ETPWM3_PWMA_PERIOD.VALUE=1250000 DRIVER.ETPWM.VAR.ETPWM2_TB_FREQUENCY.VALUE=110.000 DRIVER.ETPWM.VAR.ETPWM6_DCAEVT1.VALUE=0x0000 DRIVER.ETPWM.VAR.ETPWM3_PWMA_POLARITY.VALUE=0 Index: firmware/include/etpwm.h =================================================================== diff -u -re7f256098e5c23cc621af73b17160a247d40559c -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/include/etpwm.h (.../etpwm.h) (revision e7f256098e5c23cc621af73b17160a247d40559c) +++ firmware/include/etpwm.h (.../etpwm.h) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -468,7 +468,7 @@ #define ETPWM1_TBCTL_CONFIGVALUE ((uint16)((uint16)0U << 7U) | (uint16)((uint16)0U << 10U)) #define ETPWM1_TBPHS_CONFIGVALUE 0x00000000U -#define ETPWM1_TBPRD_CONFIGVALUE 6888U +#define ETPWM1_TBPRD_CONFIGVALUE 10333U #define ETPWM1_CMPCTL_CONFIGVALUE 0x00000000U #define ETPWM1_CMPA_CONFIGVALUE 0U #define ETPWM1_CMPB_CONFIGVALUE 0U @@ -518,9 +518,9 @@ #define ETPWM2_DCFWINDOW_CONFIGVALUE 0x00000000U #define ETPWM2_DCFWINDOWCNT_CONFIGVALUE 0x00000000U -#define ETPWM3_TBCTL_CONFIGVALUE ((uint16)((uint16)0U << 7U) | (uint16)((uint16)0U << 10U)) +#define ETPWM3_TBCTL_CONFIGVALUE ((uint16)((uint16)0U << 7U) | (uint16)((uint16)1U << 10U)) #define ETPWM3_TBPHS_CONFIGVALUE 0x00000000U -#define ETPWM3_TBPRD_CONFIGVALUE 6888U +#define ETPWM3_TBPRD_CONFIGVALUE 64583U #define ETPWM3_CMPCTL_CONFIGVALUE 0x00000000U #define ETPWM3_CMPA_CONFIGVALUE 0U #define ETPWM3_CMPB_CONFIGVALUE 0U Index: firmware/source/etpwm.c =================================================================== diff -u -re7f256098e5c23cc621af73b17160a247d40559c -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/source/etpwm.c (.../etpwm.c) (revision e7f256098e5c23cc621af73b17160a247d40559c) +++ firmware/source/etpwm.c (.../etpwm.c) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -82,7 +82,7 @@ etpwmREG1->TBCTL |= (uint16)((uint16)0U << 10U); /** - Sets time period or frequency for ETPWM block both PWMA and PWMB*/ - etpwmREG1->TBPRD = 6888U; + etpwmREG1->TBPRD = 10333U; /** - Setup the duty cycle for PWMA */ etpwmREG1->CMPA = 0U; @@ -269,10 +269,10 @@ etpwmREG3->TBCTL = (uint16)0U << 7U; /** - Sets time-base clock prescale bits */ - etpwmREG3->TBCTL |= (uint16)((uint16)0U << 10U); + etpwmREG3->TBCTL |= (uint16)((uint16)1U << 10U); /** - Sets time period or frequency for ETPWM block both PWMA and PWMB*/ - etpwmREG3->TBPRD = 6888U; + etpwmREG3->TBPRD = 64583U; /** - Setup the duty cycle for PWMA */ etpwmREG3->CMPA = 0U; Index: firmware/source/sys_main.c =================================================================== diff -u -r4ed5e33f4bb86748661754208699e66eca184792 -ref5ef16518466c92687b869cabfa16eaf3365dc0 --- firmware/source/sys_main.c (.../sys_main.c) (revision 4ed5e33f4bb86748661754208699e66eca184792) +++ firmware/source/sys_main.c (.../sys_main.c) (revision ef5ef16518466c92687b869cabfa16eaf3365dc0) @@ -137,6 +137,7 @@ etpwmSetCmpA( etpwmREG3, 0 ); etpwmSetCmpA( etpwmREG6, 0 ); etpwmSetCmpB( etpwmREG6, 0 ); + etpwmStartTBCLK(); canInit(); // CAN1 = CAN, re-purposing CAN2 and CAN3 Rx and Tx pins as GPIO sciInit(); // SCI1 used for PC serial interface, SCI2 used for FPGA serial interface dmaEnable(); // enable DMA