Обновление
This commit is contained in:
parent
0bfa1f70b2
commit
e556f8538d
|
|
@ -44,7 +44,7 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env);
|
|||
|
||||
#define TPU_FREQ (BUS_CLK / SCG_CLK_DIV)
|
||||
|
||||
#define PWM_FREQ 100 // 100 Hz
|
||||
#define PWM_FREQ 50 // 100 Hz
|
||||
|
||||
#define PERIOD_TICKS (TPU_FREQ / PWM_FREQ)
|
||||
|
||||
|
|
|
|||
|
|
@ -80,17 +80,25 @@ static void vPwmRun(tPwmFlagchip *env) {
|
|||
}
|
||||
|
||||
static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
|
||||
uint8_t final_percent;
|
||||
|
||||
// Ограничения
|
||||
if (percent >= 100)
|
||||
percent = 85;
|
||||
|
||||
percent = 95;
|
||||
if (percent == 0)
|
||||
percent = 5;
|
||||
|
||||
// Расчет времени активности в тактах
|
||||
uint32_t data = PERIOD_TICKS * percent / 100;
|
||||
osMessageQueuePut(env->q_u32ActiveTime, &data, 0, 0);
|
||||
// Для active LOW (bActiveHigh = false) нужна инверсия
|
||||
// 10% → 90%, 20% → 80% и т.д.
|
||||
if (env->etpu_pwmconfig_tbl.bActiveHigh == false) {
|
||||
final_percent = 100 - percent;
|
||||
} else {
|
||||
final_percent = percent;
|
||||
}
|
||||
|
||||
// Расчет времени активности в тактах
|
||||
uint32_t data = env->etpu_pwmconfig_tbl.u32PeriodTime * final_percent / 100;
|
||||
osMessageQueuePut(env->q_u32ActiveTime, &data, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue