Обновление
This commit is contained in:
parent
355ddf3c20
commit
8008cb6192
|
|
@ -20,7 +20,7 @@ typedef struct {
|
||||||
|
|
||||||
uint8_t TPU_PWM_CHANNEL;
|
uint8_t TPU_PWM_CHANNEL;
|
||||||
|
|
||||||
bool isDisabled;
|
|
||||||
|
|
||||||
} tPwmFlagchip;
|
} tPwmFlagchip;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
@ -20,7 +20,7 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) {
|
||||||
static void TPU_StopChannel(uint8_t channel) {
|
static void TPU_StopChannel(uint8_t channel) {
|
||||||
TPU_E_Type *const pTPUE = TPU_E_BASE_PTRS;
|
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) {
|
static void TPU_StartChannelSpecific(uint8_t channel) {
|
||||||
TPU_E_Type *const pTPUE = TPU_E_BASE_PTRS;
|
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->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% и т.д.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue