чебля
This commit is contained in:
@@ -421,6 +421,7 @@ void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState Pin
|
||||
{
|
||||
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
|
||||
}
|
||||
__GPIO_BSRR_Sim(GPIOx);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -442,6 +443,7 @@ void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||
|
||||
/* Set selected pins that were at low level, and reset ones that were high */
|
||||
GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
|
||||
__GPIO_BSRR_Sim(GPIOx);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,18 @@ void Simulate_GPIO_BSRR(void)
|
||||
#ifdef GPIOD
|
||||
__GPIO_BSRR_Sim(GPIOD);
|
||||
#endif
|
||||
#ifdef GPIOE
|
||||
__GPIO_BSRR_Sim(GPIOE);
|
||||
#endif
|
||||
#ifdef GPIOF
|
||||
__GPIO_BSRR_Sim(GPIOF);
|
||||
#endif
|
||||
#ifdef GPIOG
|
||||
__GPIO_BSRR_Sim(GPIOG);
|
||||
#endif
|
||||
#ifdef GPIOH
|
||||
__GPIO_BSRR_Sim(GPIOH);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ void Simulate_Periph_Sim(void)
|
||||
{
|
||||
Simulate_TIMs();
|
||||
Simulate_ADCs();
|
||||
Simulate_GPIO_BSRR();
|
||||
}
|
||||
|
||||
// MCU PERIPH DEINIT
|
||||
|
||||
@@ -37,9 +37,10 @@ const int inOffsets[IN_PORT_NUMB] = {
|
||||
*/
|
||||
const int outLengths[OUT_PORT_NUMB] = {
|
||||
THYR_PORT_1_WIDTH,
|
||||
PM_PORT_2_WIDTH,
|
||||
ANGLE_PORT_3_WIDTH,
|
||||
OUT_PORT_4_WIDTH
|
||||
DO_PORT_2_WIDTH,
|
||||
PM_PORT_3_WIDTH,
|
||||
ANGLE_PORT_4_WIDTH,
|
||||
OUT_PORT_5_WIDTH
|
||||
};
|
||||
/**
|
||||
* @brief Таблица смещений в выходном массиве OUT
|
||||
@@ -48,7 +49,8 @@ const int outOffsets[OUT_PORT_NUMB] = {
|
||||
OFFSET_OUT_ARRAY_1,
|
||||
OFFSET_OUT_ARRAY_2,
|
||||
OFFSET_OUT_ARRAY_3,
|
||||
OFFSET_OUT_ARRAY_4
|
||||
OFFSET_OUT_ARRAY_4,
|
||||
OFFSET_OUT_ARRAY_5
|
||||
};
|
||||
|
||||
// INPUT/OUTPUTS AUTO-PARAMS END
|
||||
|
||||
@@ -57,11 +57,12 @@
|
||||
#define ADC_PORT_1_WIDTH 6
|
||||
#define IN_PORT_2_WIDTH 16
|
||||
|
||||
#define OUT_PORT_NUMB 4
|
||||
#define OUT_PORT_NUMB 5
|
||||
#define THYR_PORT_1_WIDTH 6
|
||||
#define PM_PORT_2_WIDTH 32
|
||||
#define ANGLE_PORT_3_WIDTH 16
|
||||
#define OUT_PORT_4_WIDTH 16
|
||||
#define DO_PORT_2_WIDTH 3
|
||||
#define PM_PORT_3_WIDTH 32
|
||||
#define ANGLE_PORT_4_WIDTH 16
|
||||
#define OUT_PORT_5_WIDTH 16
|
||||
|
||||
// INPUT/OUTPUTS PARAMS END
|
||||
/** WRAPPER_CONF
|
||||
@@ -100,13 +101,14 @@
|
||||
#define OFFSET_IN_ARRAY_2 (OFFSET_IN_ARRAY_1 + ADC_PORT_1_WIDTH)
|
||||
|
||||
/// === Полный размер буфера ===
|
||||
#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + PM_PORT_2_WIDTH + ANGLE_PORT_3_WIDTH + OUT_PORT_4_WIDTH)
|
||||
#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + DO_PORT_2_WIDTH + PM_PORT_3_WIDTH + ANGLE_PORT_4_WIDTH + OUT_PORT_5_WIDTH)
|
||||
|
||||
/// === Смещения массивов (внутри общего буфера) ===
|
||||
#define OFFSET_OUT_ARRAY_1 0
|
||||
#define OFFSET_OUT_ARRAY_2 (OFFSET_OUT_ARRAY_1 + THYR_PORT_1_WIDTH)
|
||||
#define OFFSET_OUT_ARRAY_3 (OFFSET_OUT_ARRAY_2 + PM_PORT_2_WIDTH)
|
||||
#define OFFSET_OUT_ARRAY_4 (OFFSET_OUT_ARRAY_3 + ANGLE_PORT_3_WIDTH)
|
||||
#define OFFSET_OUT_ARRAY_3 (OFFSET_OUT_ARRAY_2 + DO_PORT_2_WIDTH)
|
||||
#define OFFSET_OUT_ARRAY_4 (OFFSET_OUT_ARRAY_3 + PM_PORT_3_WIDTH)
|
||||
#define OFFSET_OUT_ARRAY_5 (OFFSET_OUT_ARRAY_4 + ANGLE_PORT_4_WIDTH)
|
||||
|
||||
// INPUT/OUTPUTS AUTO-PARAMS END
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ void app_init(void) {
|
||||
UPP_SetDefault(1, 1);
|
||||
UPP_Init();
|
||||
UPP_PreWhile();
|
||||
UPP_DO.CEN(DISABLE);
|
||||
|
||||
// USER APP INIT END
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ float dbg[16];
|
||||
extern float iref_dbg;
|
||||
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
|
||||
|
||||
void Write_Thyristors(real_T* Buffer, int ind_port)
|
||||
void Write_UPP_Outputs(real_T* Buffer, int ind_port)
|
||||
{
|
||||
int pwm1_pin = PIN_READ(PWM1);
|
||||
int pwm2_pin = PIN_READ(PWM2);
|
||||
@@ -18,14 +18,39 @@ void Write_Thyristors(real_T* Buffer, int ind_port)
|
||||
int pwm4_pin = PIN_READ(PWM4);
|
||||
int pwm5_pin = PIN_READ(PWM5);
|
||||
int pwm6_pin = PIN_READ(PWM6);
|
||||
int err = PIN_READ(RDO1);
|
||||
int work = PIN_READ(RDO2);
|
||||
int ready = PIN_READ(RDO3);
|
||||
|
||||
if (CEN_GPIO_Port->ODR & CEN_Pin)
|
||||
{
|
||||
WriteOutputArray(0, ind_port, 0);
|
||||
WriteOutputArray(0, ind_port, 1);
|
||||
WriteOutputArray(0, ind_port, 2);
|
||||
WriteOutputArray(0, ind_port, 3);
|
||||
WriteOutputArray(0, ind_port, 4);
|
||||
WriteOutputArray(0, ind_port, 5);
|
||||
|
||||
|
||||
WriteOutputArray(0, ind_port+1, 0);
|
||||
WriteOutputArray(0, ind_port+1, 1);
|
||||
WriteOutputArray(0, ind_port+1, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteOutputArray(pwm1_pin, ind_port, 0);
|
||||
WriteOutputArray(pwm2_pin, ind_port, 1);
|
||||
WriteOutputArray(pwm3_pin, ind_port, 2);
|
||||
WriteOutputArray(pwm4_pin, ind_port, 3);
|
||||
WriteOutputArray(pwm5_pin, ind_port, 4);
|
||||
WriteOutputArray(pwm6_pin, ind_port, 5);
|
||||
|
||||
WriteOutputArray(ready, ind_port+1, 0);
|
||||
WriteOutputArray(work, ind_port+1, 1);
|
||||
WriteOutputArray(err, ind_port+1, 2);
|
||||
}
|
||||
|
||||
|
||||
WriteOutputArray(pwm1_pin, ind_port, 0);
|
||||
WriteOutputArray(pwm2_pin, ind_port, 1);
|
||||
WriteOutputArray(pwm3_pin, ind_port, 2);
|
||||
WriteOutputArray(pwm4_pin, ind_port, 3);
|
||||
WriteOutputArray(pwm5_pin, ind_port, 4);
|
||||
WriteOutputArray(pwm6_pin, ind_port, 5);
|
||||
}
|
||||
|
||||
void Write_PowerMonitor(real_T* Buffer, int ind_port)
|
||||
@@ -71,9 +96,9 @@ void Write_AngleControl(real_T* Buffer, int ind_port)
|
||||
WriteOutputArray(upp.hangle.alpha, ind_port, nn++);
|
||||
|
||||
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR1) - upp.hangle.htim->Instance->CNT, 2, nn++);
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR2) - upp.hangle.htim->Instance->CNT, 2, nn++);
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR3) - upp.hangle.htim->Instance->CNT, 2, nn++);
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR1) - upp.hangle.htim->Instance->CNT, ind_port, nn++);
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR2) - upp.hangle.htim->Instance->CNT, ind_port, nn++);
|
||||
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR3) - upp.hangle.htim->Instance->CNT, ind_port, nn++);
|
||||
|
||||
}
|
||||
|
||||
@@ -108,11 +133,11 @@ void app_readInputs(const real_T* Buffer) {
|
||||
*/
|
||||
void app_writeOutputBuffer(real_T* Buffer) {
|
||||
// USER APP OUTPUT START
|
||||
Write_Thyristors(Buffer, 0);
|
||||
Write_UPP_Outputs(Buffer, 0);
|
||||
|
||||
Write_PowerMonitor(Buffer, 1);
|
||||
Write_PowerMonitor(Buffer, 2);
|
||||
|
||||
Write_AngleControl(Buffer, 2);
|
||||
Write_AngleControl(Buffer, 3);
|
||||
|
||||
int nn = 0;
|
||||
//WriteOutputArray(upp.hangle.htim->Instance->CNT, 2, nn++);
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user