137 uint_least8_t estNumber = 0;
143 USER_setParams_priv(&gUserParams);
146 halHandle =
HAL_init(&hal,
sizeof(hal));
152 calHandle =
CAL_init(&cal,
sizeof(cal));
158 clarkeHandle_I =
CLARKE_init(&clarke_I,
sizeof(clarke_I));
159 clarkeHandle_V =
CLARKE_init(&clarke_V,
sizeof(clarke_V));
178 iparkHandle =
IPARK_init(&ipark,
sizeof(ipark));
181 parkHandle =
PARK_init(&park,
sizeof(park));
184 piHandle_Id =
PI_init(&pi_Id,
sizeof(pi_Id));
185 piHandle_Iq =
PI_init(&pi_Iq,
sizeof(pi_Iq));
186 piHandle_spd =
PI_init(&pi_spd,
sizeof(pi_spd));
192 svgenHandle =
SVGEN_init(&svgen,
sizeof(svgen));
313 if(calState == CAL_State_Done)
383 CAL_run(calHandle,&AdcDataWithOffset);
443 IPARK_run(iparkHandle,&Vdq_out_V,&Vab_out_V);
478 if(numCurrentSensors == 3)
483 else if(numCurrentSensors == 2)
507 if(numVoltageSensors == 3)
532 float_t RdoverLd_rps = Rs_d_Ohm / Ls_d_H;
533 float_t RqoverLq_rps = Rs_q_Ohm / Ls_q_H;
538 float_t Kp_Id = Ls_d_H * BWc_rps;
539 float_t Ki_Id = RdoverLd_rps * currentCtrlPeriod_sec;
541 float_t Kp_Iq = Ls_q_H * BWc_rps;
542 float_t Ki_Iq = RqoverLq_rps * currentCtrlPeriod_sec;
#define USER_SYSTEM_FREQ_MHz
CLOCKS & TIMERS.
float_t EST_getRsOnLine_Ohm(EST_Handle handle)
EST_State_e gEstState
Global variable for the estimator state.
float_t angleDelayed_sf_sec
void EST_setFlag_enableForceAngle(EST_Handle handle, const bool state)
static void CAL_enable(CAL_Handle handle)
IPARK_Handle IPARK_init(void *pMemory, const size_t numBytes)
#define MATH_ONE_OVER_TWO_PI
void HAL_enableGlobalInts(HAL_Handle handle)
void HAL_enableAdcInts(HAL_Handle handle)
float_t EST_getFlux_Wb(EST_Handle handle)
CPU_USAGE_Handle cpu_usageHandle
void updateGlobalVariables_motor(EST_Handle estHandle)
Updates the global motor variables.
float_t gId_rs_recalc_ref_A
void EST_setRsOnLineId_mag_A(EST_Handle handle, const float_t Id_mag_A)
static void PI_setFfwdValue(PI_Handle handle, const _iq ffwdValue)
static void HAL_readAdcDataWithOffsets(HAL_Handle handle, HAL_AdcData_t *pAdcData)
static void CAL_run(CAL_Handle handle, const HAL_AdcData_t *pAdcData)
SVGEN_Handle svgenHandle
the handle for the space vector generator
volatile bool gFlag_updateRs
float_t gLs_d_H
Global variable for the stator inductance in the direct coordinate direction, Henry.
PARK_Handle parkHandle
the handle for the Park object
#define USER_EST_FREQ_Hz
Defines the estimator frequency, Hz.
static void HAL_writePwmData(HAL_Handle handle, HAL_PwmData_t *pPwmData)
struct _EST_Obj_ * EST_Handle
void HAL_writeDrvData(HAL_Handle handle, DRV_SPI_8301_Vars_t *Spi_8301_Vars)
static void PI_setUi(PI_Handle handle, const _iq Ui)
EST_OutputData_t gEstOutputData
static void HAL_acqAdcInt(HAL_Handle handle, const ADC_IntNumber_e intNumber)
volatile bool gFlag_enableForceAngle
PI_Obj pi_Id
the Id PI controller object
static void CAL_setFlag_enableAdcOffset(CAL_Handle handle, const bool value)
uint_least8_t numCurrentSensors
bool EST_isEnabled(EST_Handle handle)
EST_Handle estHandle
the handle for the estimator
void CAL_setParams(CAL_Handle handle, const USER_Params *pUserParams)
void EST_setParams(EST_Handle handle, USER_Params *pUserParams)
static void SVGEN_run(SVGEN_Handle handle, const MATH_vec2 *pVab, MATH_vec3 *pT)
PARK_Obj park
the Park transform object
static uint32_t CPU_USAGE_getAvgDeltaCntObserved(CPU_USAGE_Handle handle)
volatile float_t gSpeed_Ki
volatile float_t gSpeed_Kp
uint_least16_t numCtrlTicksPerCurrentTick
#define MATH_ONE_OVER_THREE
void USER_setParams(USER_Params *pUserParams)
Sets the user parameter values.
CAL_Obj cal
the calibrator object
void setupClarke_V(CLARKE_Handle handle, const uint_least8_t numVoltageSensors)
Sets the number of voltage sensors.
void EST_setFlag_updateRs(EST_Handle handle, const bool state)
float_t EST_computeTorque_Nm(EST_Handle handle)
volatile float_t gRsOnLinePole_Hz
static void CLARKE_setScaleFactors(CLARKE_Handle handle, const _iq alpha_sf, const _iq beta_sf)
PI_Handle piHandle_spd
the handle for the speed PI controller
void EST_enable(EST_Handle handle)
void HAL_setupFaults(HAL_Handle handle)
float_t EST_getLs_d_H(EST_Handle handle)
void EST_setFlag_enableRsRecalc(EST_Handle handle, const bool state)
USER_Params gUserParams
The user parameters.
void EST_getIdq_A(EST_Handle handle, MATH_vec2 *pIdq_A)
static void HAL_enablePwm(HAL_Handle handle)
PI_Obj pi_spd
the speed PI controller object
SVGEN_Obj svgen
the space vector generator object
void HAL_enableDrv(HAL_Handle handle)
EST_Handle EST_initEst(const uint_least8_t estNumber)
CLARKE_Handle clarkeHandle_I
the handle for the current Clarke transform
PI_Handle PI_init(void *pMemory, const size_t numBytes)
void HAL_setupDrvSpi(HAL_Handle handle, DRV_SPI_8301_Vars_t *Spi_8301_Vars)
uint_least8_t numVoltageSensors
float_t EST_getLs_q_H(EST_Handle handle)
void HAL_enableDebugInt(HAL_Handle handle)
volatile float_t gRsOnLineId_mag_A
CLARKE_Handle CLARKE_init(void *pMemory, const size_t numBytes)
float_t oneOverDcBus_invV
void sincos_fastRTS(float_t angle_rad, float_t *pSin, float_t *pCos)
Calculates sine and cosine in a single function call, using callable assembly, fast RTS...
static void IPARK_run(IPARK_Handle handle, const MATH_vec2 *pInVec, MATH_vec2 *pOutVec)
EST_State_e EST_getState(EST_Handle handle)
static void CAL_disable(CAL_Handle handle)
void setupClarke_I(CLARKE_Handle handle, const uint_least8_t numCurrentSensors)
Sets the number of current sensors.
HAL_DacData_t gDacData
Defines the DAC data.
float_t gCpuUsagePercentageAvg
volatile bool gFlag_enableRsOnLine
float_t gLs_q_H
Global variable for the stator inductance in the quadrature coordinate direction, Henry...
volatile float_t gRsOnLineFreq_Hz
EST_InputData_t gEstInputData
void EST_setFlag_enableRsOnLine(EST_Handle handle, const bool state)
interrupt void mainISR(void)
The main interrupt service (ISR) routine.
static uint32_t HAL_readTimerCnt(HAL_Handle handle, const uint_least8_t timerNumber)
static _iq CAL_getOffsetValue_V(CAL_Handle handle, const uint_least8_t sensorNumber)
CAL_Handle calHandle
the handle for the calibrator
static void CLARKE_setNumSensors(CLARKE_Handle handle, const uint_least8_t numSensors)
float_t EST_getRs_Ohm(EST_Handle handle)
float_t gCpuUsagePercentageMax
HAL_Obj hal
the hardware abstraction layer object
uint_least16_t numCtrlTicksPerSpeedTick
void CPU_USAGE_setParams(CPU_USAGE_Handle handle, const uint32_t timerPeriod_cnts, const uint32_t numDeltaCntsAvg)
#define USER_ISR_FREQ_Hz
Defines the Interrupt Service Routine (ISR) frequency, Hz.
static void IPARK_setPhasor(IPARK_Handle handle, const MATH_vec2 *pPhasor)
float_t gCpuUsagePercentageMin
CPU_USAGE_Handle CPU_USAGE_init(void *pMemory, const size_t numBytes)
static void HAL_disablePwm(HAL_Handle handle)
void EST_setRsOnLineAngleDelta_rad(EST_Handle handle, const float_t angleDelta_rad)
HAL_Handle HAL_init(void *pMemory, const size_t numBytes)
static void CLARKE_run(CLARKE_Handle handle, const MATH_vec3 *pInVec, MATH_vec2 *pOutVec)
static uint32_t CPU_USAGE_getMaxDeltaCntObserved(CPU_USAGE_Handle handle)
HAL_Handle halHandle
the handle for the hardware abstraction layer
void EST_setRsOnLine_beta_rad(EST_Handle handle, const float_t beta_rad)
void updateCPUusage(void)
Updates CPU usage.
static CAL_State_e CAL_getState(CAL_Handle handle)
CLARKE_Handle clarkeHandle_V
the handle for the voltage Clarke transform
PI_Obj pi_Iq
the Iq PI controller object
float_t EST_getRsOnLineId_A(EST_Handle handle)
float_t gFlux_Wb
Global variable for the rotor flux estimate, Wb.
uint_least32_t ctrlFreq_Hz
CAL_Handle CAL_init(void *pMemory, const size_t numBytes)
void SVGEN_setup(SVGEN_Handle svgenHandle)
static void PI_setMinMax(PI_Handle handle, const _iq outMin, const _iq outMax)
static void PI_setRefValue(PI_Handle handle, const _iq refValue)
CLARKE_Obj clarke_I
the current Clarke transform object
static void CPU_USAGE_updateCnts(CPU_USAGE_Handle handle, const uint32_t cnt)
void setupControllers(void)
Setups the controllers.
float_t sqrt_fastRTS(float_t x)
Calculates square root using callable assembly, fast RTS.
volatile bool gFlag_enableSys
Global flag to enable/disable the system.
static uint32_t CPU_USAGE_getMinDeltaCntObserved(CPU_USAGE_Handle handle)
#define MATH_ONE_OVER_SQRT_THREE
static void HAL_initIntVectorTable(HAL_Handle handle)
volatile bool gFlag_runOnLine
static float_t MATH_incrAngle(const float_t angle_rad, const float_t angleDelta_rad)
PI_Handle piHandle_Iq
the handle for the Iq PI controller
CLARKE_Obj clarke_V
the voltage Clarke transform object
PARK_Handle PARK_init(void *pMemory, const size_t numBytes)
static void PI_setFbackValue(PI_Handle handle, const _iq fbackValue)
static uint16_t HAL_readPwmPeriod(HAL_Handle handle, const PWM_Number_e pwmNumber)
HAL_PwmData_t gPwmData
Defines the PWM data.
IPARK_Obj ipark
the inverse Park transform object
bool EST_updateState(EST_Handle handle, const _iq Id_target_pu)
void EST_disable(EST_Handle handle)
static _iq CAL_getOffsetValue_I(CAL_Handle handle, const uint_least8_t sensorNumber)
void HAL_setParams(HAL_Handle handle, const USER_Params *pUserParams)
static void CPU_USAGE_run(CPU_USAGE_Handle handle)
volatile bool gFlag_enableRsRecalc
bool CAL_updateState(CAL_Handle handle)
HAL_AdcData_t gAdcData
Defines the ADC data.
float_t EST_getFe_Hz(EST_Handle handle)
void HAL_readDrvData(HAL_Handle handle, DRV_SPI_8301_Vars_t *Spi_8301_Vars)
float_t maxCurrent_resEst_A
static bool CAL_isEnabled(CAL_Handle handle)
volatile bool gFlag_runCal
float_t gTorque_Nm
Global variable for the estimated torque, N*m.
PI_Handle piHandle_Id
the handle for the Id PI controller
IPARK_Handle iparkHandle
the handle for the inverse Park transform
SVGEN_Handle SVGEN_init(void *pMemory, const size_t numBytes)
volatile float_t gId_ref_A
static void PI_setGains(PI_Handle handle, const _iq Kp, const _iq Ki)
static void PI_run_series(PI_Handle handle, const _iq refValue, const _iq fbackValue, const _iq ffwdValue, _iq *pOutValue)
void EST_run(EST_Handle handle, const MATH_vec2 *pIab_pu, const MATH_vec2 *pVab_pu, const _iq dcBus_pu, const _iq speed_ref_pu)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK
DECIMATION.