Обновление

This commit is contained in:
cfif 2026-06-18 16:17:32 +03:00
parent 355ddf3c20
commit 8008cb6192
2 changed files with 9 additions and 15 deletions

View File

@ -20,7 +20,7 @@ typedef struct {
uint8_t TPU_PWM_CHANNEL;
bool isDisabled;
} tPwmFlagchip;

View File

@ -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% и т.д.