Обновление

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; uint8_t TPU_PWM_CHANNEL;
bool isDisabled;
} tPwmFlagchip; } tPwmFlagchip;

View File

@ -6,7 +6,7 @@
void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) { void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) {
// Обновляем только если есть запрос и канал не отключен // Обновляем только если есть запрос и канал не отключен
if ((env->updatePending) && (!env->isDisabled)) { if (env->updatePending) {
env->etpu_pwmconfig_tbl.u32ActiveTime = env->pendingActiveTime; env->etpu_pwmconfig_tbl.u32ActiveTime = env->pendingActiveTime;
env->updatePending = false; env->updatePending = false;
} }
@ -62,7 +62,6 @@ void PWM_Initial(
env->etpu_Int_config_tbl.eChTrigType = TPUH_ANY_EVENT_GATED_BY_MSRTSR; env->etpu_Int_config_tbl.eChTrigType = TPUH_ANY_EVENT_GATED_BY_MSRTSR;
env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL; env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL;
env->isDisabled = false;
env->updatePending = false; env->updatePending = false;
env->pendingActiveTime = 0; env->pendingActiveTime = 0;
@ -100,12 +99,8 @@ static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
// Обработка отключения (0%) // Обработка отключения (0%)
if (percent == 0) { if (percent == 0) {
// Если канал уже отключен, ничего не делаем
if (!env->isDisabled) {
// Отключаем канал ШИМ // Отключаем канал ШИМ
TPU_StopChannel(env->TPU_PWM_CHANNEL); TPU_StopChannel(env->TPU_PWM_CHANNEL);
env->isDisabled = true;
}
return; return;
} }
@ -120,11 +115,10 @@ static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
percent = 1; // Минимальный рабочий процент percent = 1; // Минимальный рабочий процент
} }
TPU_StartChannel();
// Если был отключен, включаем заново // Если был отключен, включаем заново
if (env->isDisabled) {
TPU_StartChannelSpecific(env->TPU_PWM_CHANNEL); TPU_StartChannelSpecific(env->TPU_PWM_CHANNEL);
env->isDisabled = false;
}
// Для active LOW (bActiveHigh = false) нужна инверсия // Для active LOW (bActiveHigh = false) нужна инверсия
// 10% → 90%, 20% → 80% и т.д. // 10% → 90%, 20% → 80% и т.д.