From f3965db20438bca33176636008524479e9e74dae Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Fri, 21 Nov 2025 10:23:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D1=81=D0=BE=D1=84=D1=82=D0=B2?= =?UTF-8?q?=D0=B0=D1=80=D0=BD=D1=8B=D0=B9=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=20=D0=BF=D0=B0=D1=87=D0=BA=D0=B8=20=D0=B8=D0=BC=D0=BF=D1=83?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BE=D0=B2=20=D0=B2=D1=8B=D0=B1=D0=B8=D1=80?= =?UTF-8?q?=D0=B0=D0=BB=D1=81=D1=8F=20=D0=BF=D0=BE=20=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=D1=83=20=D0=B4=D0=B5=D1=84=D0=B0=D0=B9=D0=BD=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPP/Core/Configs/upp_config.h | 2 +- UPP/Core/UPP/pwm_thyristors.c | 20 ++++++++++++++++++++ UPP/Core/UPP/pwm_thyristors.h | 6 +++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/UPP/Core/Configs/upp_config.h b/UPP/Core/Configs/upp_config.h index f4f1cc9..2dc4f4d 100644 --- a/UPP/Core/Configs/upp_config.h +++ b/UPP/Core/Configs/upp_config.h @@ -30,7 +30,7 @@ #define TEMP_1 0 #define TEMP_2 1 -//#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП +#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП /** * @addtogroup UPP_PARAMS_DEFAULT Default params for external flash diff --git a/UPP/Core/UPP/pwm_thyristors.c b/UPP/Core/UPP/pwm_thyristors.c index 02ee9eb..53786b6 100644 --- a/UPP/Core/UPP/pwm_thyristors.c +++ b/UPP/Core/UPP/pwm_thyristors.c @@ -9,6 +9,7 @@ #include "tim.h" static HAL_StatusTypeDef __PWM_SetOutputState(PWM_Channel_t *hCh, uint32_t state); +static HAL_StatusTypeDef __PWM_ReConfigToSoftwarePulses(void); /** * @brief Инициализация ШИМ тиристоров. @@ -69,6 +70,7 @@ HAL_StatusTypeDef PWM_Init(PWM_Handle_t *hpwm) PWM_Stop(hpwm, 0, 1); #ifndef PWM_HARDWARE_IMPULSES_CONTROL + __PWM_ReConfigToSoftwarePulses(); HAL_TIM_Base_Start_IT(&hpwm1); #endif @@ -407,4 +409,22 @@ static HAL_StatusTypeDef __PWM_SetOutputState(PWM_Channel_t *hCh, uint32_t state } return HAL_OK; +} + +/** + * @brief Переконфигурация таймером для софтварного формирования пачки импульсов. + * @return HAL Status. + */ +static HAL_StatusTypeDef __PWM_ReConfigToSoftwarePulses(void) +{ + /* One Pulse и Repetitive не используем */ + hpwm1.Instance->RCR = 0; + hpwm1.Instance->CR1 &= ~TIM_CR1_OPM; + hpwm2.Instance->RCR = 0; + hpwm2.Instance->CR1 &= ~TIM_CR1_OPM; + /* Настраиваем Slave на втором таймере*/ + TIM_SlaveConfigTypeDef sSlaveConfig = {0}; + sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER; + sSlaveConfig.InputTrigger = TIM_TS_ITR0; + return HAL_TIM_SlaveConfigSynchro(&htim8, &sSlaveConfig); } \ No newline at end of file diff --git a/UPP/Core/UPP/pwm_thyristors.h b/UPP/Core/UPP/pwm_thyristors.h index 6516a6e..c35c208 100644 --- a/UPP/Core/UPP/pwm_thyristors.h +++ b/UPP/Core/UPP/pwm_thyristors.h @@ -9,7 +9,11 @@ #include "main.h" - +/** + * @brief Вкоючить хардварный способ формирования пачки импульсов + * @note При отключении сильно возрастет нагрузка на контроллер из-за прерываний ШИМ! + * Они поак работают всегда, независимо от того есть импулсь или нет + */ #define PWM_HARDWARE_IMPULSES_CONTROL