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