2024-12-27 10:50:32 +03:00
|
|
|
|
/**************************************************************************
|
|
|
|
|
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> init28335, detcoeff, isr.
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
TMS320F28335/TMS320F28379D (ADC, PWM, QEP <EFBFBD> <EFBFBD>.<EFBFBD>.).
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD>.
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2021.11.08
|
|
|
|
|
**************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "simstruc.h"
|
|
|
|
|
#include "controller.h"
|
2025-01-13 13:05:34 +03:00
|
|
|
|
#include "init28335.h"
|
2025-01-13 16:58:59 +03:00
|
|
|
|
#include "param.h"
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
2025-01-14 13:26:48 +03:00
|
|
|
|
UMotorMeasure motor;
|
|
|
|
|
double dt;
|
2025-01-13 11:09:58 +03:00
|
|
|
|
|
2025-01-14 13:26:48 +03:00
|
|
|
|
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>
|
|
|
|
|
int j;
|
|
|
|
|
unsigned short paramNo;
|
|
|
|
|
unsigned short paramNew[PAR_NUMBER];
|
2024-12-27 10:50:32 +03:00
|
|
|
|
void processSFunctionIfChanged(SimStruct *S, int_T *iW) {
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> S-Function <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if ( iW[0] == 1 ) {
|
|
|
|
|
iW[0] = 0;
|
2025-01-13 16:58:59 +03:00
|
|
|
|
int kkk = 0;
|
|
|
|
|
for (int lll = 0; lll < NPARAMS; lll++ ) {
|
2024-12-27 10:50:32 +03:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-13 16:58:59 +03:00
|
|
|
|
int dimen = mxGetNumberOfElements(ssGetSFcnParam(S,lll));
|
2024-12-27 10:50:32 +03:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if ( dimen > LEN_PARAM_MATR*2 ) {
|
|
|
|
|
ssSetErrorStatus(S,"<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else if ( dimen > 1 ) {
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
paramMatrDimen = dimen;
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-13 16:58:59 +03:00
|
|
|
|
for (int mmm = 0; mmm < dimen; mmm++ )
|
2024-12-27 10:50:32 +03:00
|
|
|
|
paramMatr[mmm] = mxGetPr(ssGetSFcnParam(S,lll))[mmm];
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
paramScal[kkk++] = mxGetPr(ssGetSFcnParam(S,lll))[0];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (begin)
|
2025-01-13 16:58:59 +03:00
|
|
|
|
int nn = 0;
|
2025-01-14 13:26:48 +03:00
|
|
|
|
dt = paramScal[nn++];//<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> S-function <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!)
|
2024-12-27 10:50:32 +03:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (end)
|
|
|
|
|
} //if ( iW[0] == 1 )
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void initialisationOnStart(int_T *iW) {
|
2025-01-13 13:05:34 +03:00
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>-<2D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if ( iW[1] == 1 ) {
|
|
|
|
|
iW[1] = 0;
|
2025-01-14 13:26:48 +03:00
|
|
|
|
Init_Timers();
|
2025-01-13 13:05:34 +03:00
|
|
|
|
init28335();
|
|
|
|
|
} //if ( iW[1] == 1 )
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void update_norm_ADC_array()
|
|
|
|
|
{
|
|
|
|
|
//// Udc1
|
|
|
|
|
//if ( udc1_ml > UDC_SENS_MAX )
|
|
|
|
|
// udc1_ml = UDC_SENS_MAX;
|
|
|
|
|
//else if ( udc1_ml < -UDC_SENS_MAX )
|
|
|
|
|
// udc1_ml = -UDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[0] = _IQ(udc1_ml/NORMA_ACP);
|
|
|
|
|
//// Udc2
|
|
|
|
|
//if ( udc2_ml > UDC_SENS_MAX )
|
|
|
|
|
// udc2_ml = UDC_SENS_MAX;
|
|
|
|
|
//else if ( udc2_ml < -UDC_SENS_MAX )
|
|
|
|
|
// udc2_ml = -UDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[1] = _IQ(udc2_ml/NORMA_ACP);
|
|
|
|
|
//// Udc3
|
|
|
|
|
//if ( udc3_ml > UDC_SENS_MAX )
|
|
|
|
|
// udc3_ml = UDC_SENS_MAX;
|
|
|
|
|
//else if ( udc3_ml < -UDC_SENS_MAX )
|
|
|
|
|
// udc3_ml = -UDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[7] = _IQ(udc3_ml/NORMA_ACP);
|
|
|
|
|
//// Udc4
|
|
|
|
|
//if ( udc4_ml > UDC_SENS_MAX )
|
|
|
|
|
// udc4_ml = UDC_SENS_MAX;
|
|
|
|
|
//else if ( udc4_ml < -UDC_SENS_MAX )
|
|
|
|
|
// udc4_ml = -UDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[8] = _IQ(udc4_ml/NORMA_ACP);
|
|
|
|
|
//// Idc1
|
|
|
|
|
//if ( idc1_ml > IDC_SENS_MAX )
|
|
|
|
|
// idc1_ml = IDC_SENS_MAX;
|
|
|
|
|
//else if ( idc1_ml < -IDC_SENS_MAX )
|
|
|
|
|
// idc1_ml = -IDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[2] = _IQ(idc1_ml/NORMA_ACP);
|
|
|
|
|
//// Idc2
|
|
|
|
|
//if ( idc2_ml > IDC_SENS_MAX )
|
|
|
|
|
// idc2_ml = IDC_SENS_MAX;
|
|
|
|
|
//else if ( idc2_ml < -IDC_SENS_MAX )
|
|
|
|
|
// idc2_ml = -IDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[3] = _IQ(idc2_ml/NORMA_ACP);
|
|
|
|
|
//// Idc3
|
|
|
|
|
//if ( idc3_ml > IDC_SENS_MAX )
|
|
|
|
|
// idc3_ml = IDC_SENS_MAX;
|
|
|
|
|
//else if ( idc3_ml < -IDC_SENS_MAX )
|
|
|
|
|
// idc3_ml = -IDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[9] = _IQ(idc3_ml/NORMA_ACP);
|
|
|
|
|
//// Idc4
|
|
|
|
|
//if ( idc4_ml > IDC_SENS_MAX )
|
|
|
|
|
// idc4_ml = IDC_SENS_MAX;
|
|
|
|
|
//else if ( idc4_ml < -IDC_SENS_MAX )
|
|
|
|
|
// idc4_ml = -IDC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[10] = _IQ(idc4_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
//// Ia1
|
|
|
|
|
//if ( ia1_ml > IAC_SENS_MAX )
|
|
|
|
|
// ia1_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ia1_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ia1_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[4] = _IQ(ia1_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
//// Ib1
|
|
|
|
|
//if ( ib1_ml > IAC_SENS_MAX )
|
|
|
|
|
// ib1_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ib1_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ib1_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[5] = _IQ(ib1_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
//// Ic1
|
|
|
|
|
//if ( ic1_ml > IAC_SENS_MAX )
|
|
|
|
|
// ic1_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ic1_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ic1_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[6] = _IQ(ic1_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//// Ia2
|
|
|
|
|
//if ( ia2_ml > IAC_SENS_MAX )
|
|
|
|
|
// ia2_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ia2_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ia2_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[11] = _IQ(ia2_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
//// Ib2
|
|
|
|
|
//if ( ib2_ml > IAC_SENS_MAX )
|
|
|
|
|
// ib2_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ib2_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ib2_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[12] = _IQ(ib2_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
//// Ic2
|
|
|
|
|
//if ( ic2_ml > IAC_SENS_MAX )
|
|
|
|
|
// ic2_ml = IAC_SENS_MAX;
|
|
|
|
|
//else if ( ic2_ml < -IAC_SENS_MAX )
|
|
|
|
|
// ic2_ml = -IAC_SENS_MAX;
|
|
|
|
|
//iq_norm_ADC[13] = _IQ(ic2_ml/NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//vect_control.off_curr_pi = mst.off_curr_pi;
|
|
|
|
|
//vect_control.only_one_km = mst.only_one_km;
|
|
|
|
|
//vect_control.enable_compens_iq1_iq2 = mst.enable_compens_iq1_iq2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void simulateAdcAndCallIsr() {
|
|
|
|
|
|
|
|
|
|
///* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> nAdc <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
|
|
|
|
//if ( tAdc < Tadc ) {
|
|
|
|
|
// tAdc++;
|
|
|
|
|
//}
|
|
|
|
|
//else {
|
|
|
|
|
|
|
|
|
|
// tAdc = 1;
|
|
|
|
|
// timers_adc++;
|
|
|
|
|
// if (timers_adc>=FREQ_ADC_TIMER)
|
|
|
|
|
// timers_adc = 0;
|
|
|
|
|
|
|
|
|
|
// update_norm_ADC_array();
|
|
|
|
|
// // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> isr()
|
|
|
|
|
// acp_Handler();
|
|
|
|
|
// //isr();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // nAdc++;
|
|
|
|
|
// // switch ( nAdc ) {
|
|
|
|
|
// // case 5:
|
|
|
|
|
//
|
|
|
|
|
// // break;
|
|
|
|
|
// // case 6:
|
|
|
|
|
|
|
|
|
|
// // break;
|
|
|
|
|
|
|
|
|
|
// // case 7:
|
|
|
|
|
// // // <20><><EFBFBD> <20><> <20> <20><>
|
|
|
|
|
// // for ( j = FIRST_WRITE_PAR_NUM; j < paramNo; j++ ) {
|
|
|
|
|
// // if ( paramNew[j] != param[j] ) {
|
|
|
|
|
// // input_param((short)j, paramNew[j]);
|
|
|
|
|
// // break;
|
|
|
|
|
// // }
|
|
|
|
|
// // }
|
|
|
|
|
// // // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> isr()
|
|
|
|
|
// // isr();
|
|
|
|
|
// // break;
|
|
|
|
|
// // } //switch ( nAdc )
|
|
|
|
|
|
|
|
|
|
//} //tAdc
|
|
|
|
|
|
|
|
|
|
// if (calcAlgUpr) {
|
|
|
|
|
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// upr();
|
|
|
|
|
// calcAlgUpr = 0;
|
|
|
|
|
// timers_pwm++;
|
|
|
|
|
// if (timers_pwm>=FREQ_PWM_TIMER)
|
|
|
|
|
// timers_pwm = 0;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void controller(SimStruct *S, const real_T *u, real_T *xD, real_T *rW, int_T *iW) {
|
|
|
|
|
|
2025-01-13 13:05:34 +03:00
|
|
|
|
|
2024-12-27 10:50:32 +03:00
|
|
|
|
readInputParameters(u);
|
|
|
|
|
processSFunctionIfChanged(S, iW);
|
|
|
|
|
initialisationOnStart(iW);
|
|
|
|
|
|
2025-01-14 13:26:48 +03:00
|
|
|
|
Simulate_Timers();
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
simulateAdcAndCallIsr();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
writeOutputParameters(xD);
|
|
|
|
|
|
2025-01-13 16:58:59 +03:00
|
|
|
|
mcu_simulate_step();
|
2024-12-27 10:50:32 +03:00
|
|
|
|
} //void controller(SimStruct ...
|