From 8008cb61922f751cf98f6311bcf57294e7842c0d Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 18 Jun 2026 16:17:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/PwmFlagchip.h | 2 +- Src/PwmFlagchip.c | 22 ++++++++-------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Inc/PwmFlagchip.h b/Inc/PwmFlagchip.h index 9980d60..9c6aaac 100644 --- a/Inc/PwmFlagchip.h +++ b/Inc/PwmFlagchip.h @@ -20,7 +20,7 @@ typedef struct { uint8_t TPU_PWM_CHANNEL; - bool isDisabled; + } tPwmFlagchip; diff --git a/Src/PwmFlagchip.c b/Src/PwmFlagchip.c index b6ed86c..0d445e6 100644 --- a/Src/PwmFlagchip.c +++ b/Src/PwmFlagchip.c @@ -6,7 +6,7 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) { // Обновляем только если есть запрос и канал не отключен - if ((env->updatePending) && (!env->isDisabled)) { + if (env->updatePending) { env->etpu_pwmconfig_tbl.u32ActiveTime = env->pendingActiveTime; env->updatePending = false; } @@ -20,7 +20,7 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) { static void TPU_StopChannel(uint8_t channel) { TPU_E_Type *const pTPUE = TPU_E_BASE_PTRS; // Отключаем выход буфера канала - TPU_E_HWA_EnableChOutputBuf(pTPUE, channel, (bool)false); + TPU_E_HWA_EnableChOutputBuf(pTPUE, channel, (bool) false); // Опционально: устанавливаем выход в безопасное состояние // (нужно определить, какое состояние безопасно для вашей системы) } @@ -29,7 +29,7 @@ static void TPU_StopChannel(uint8_t channel) { static void TPU_StartChannelSpecific(uint8_t channel) { TPU_E_Type *const pTPUE = TPU_E_BASE_PTRS; // Включаем выход буфера канала - TPU_E_HWA_EnableChOutputBuf(pTPUE, channel, (bool)true); + TPU_E_HWA_EnableChOutputBuf(pTPUE, channel, (bool) true); } @@ -62,7 +62,6 @@ void PWM_Initial( env->etpu_Int_config_tbl.eChTrigType = TPUH_ANY_EVENT_GATED_BY_MSRTSR; env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL; - env->isDisabled = false; env->updatePending = false; env->pendingActiveTime = 0; @@ -100,12 +99,8 @@ static void setActivePercent(tPwmFlagchip *env, uint8_t percent) { // Обработка отключения (0%) if (percent == 0) { - // Если канал уже отключен, ничего не делаем - if (!env->isDisabled) { - // Отключаем канал ШИМ - TPU_StopChannel(env->TPU_PWM_CHANNEL); - env->isDisabled = true; - } + // Отключаем канал ШИМ + TPU_StopChannel(env->TPU_PWM_CHANNEL); return; } @@ -120,11 +115,10 @@ static void setActivePercent(tPwmFlagchip *env, uint8_t percent) { percent = 1; // Минимальный рабочий процент } + TPU_StartChannel(); + // Если был отключен, включаем заново - if (env->isDisabled) { - TPU_StartChannelSpecific(env->TPU_PWM_CHANNEL); - env->isDisabled = false; - } + TPU_StartChannelSpecific(env->TPU_PWM_CHANNEL); // Для active LOW (bActiveHigh = false) нужна инверсия // 10% → 90%, 20% → 80% и т.д.