commit cc11dedf53aeb0d6ed333d9815847d973a71f777
parent 0dcb074f4b49a65b570ee2d8a1de21ddffcddd53
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Tue, 7 Apr 2026 16:55:09 -0300
Disminuir frecuencia de salida PWM de 10kHz a 500Hz
Diffstat:
3 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/firmware/Core/Src/main.c b/firmware/Core/Src/main.c
@@ -312,9 +312,9 @@ static void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 1 */
htim1.Instance = TIM1;
- htim1.Init.Prescaler = 64-1;
+ htim1.Init.Prescaler = 640-1;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim1.Init.Period = 100-1;
+ htim1.Init.Period = 200-1;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
diff --git a/firmware/app/src/task_temp_ctrl.c b/firmware/app/src/task_temp_ctrl.c
@@ -26,6 +26,7 @@ static const task_temp_ctrl_cfg_t task_temp_ctrl_cfg = {&htim1, TIM_CHANNEL_1};
// Private functions declaration
static inline int16_t ceil_i16(int16_t val, int16_t max_val);
+static void task_temp_ctrl_set_duty(TIM_HandleTypeDef *htim, uint32_t ch, uint8_t duty);
// Public data definition
volatile uint32_t g_task_temp_ctrl_tick_cnt; // Incremented by HAL_SysTick callback
@@ -38,9 +39,13 @@ void task_temp_ctrl_init(void *parameters)
const task_temp_ctrl_cfg_t *p_task_cfg = &task_temp_ctrl_cfg;
shared_data_type *p_shared_data = (shared_data_type *)parameters;
- __HAL_TIM_SET_COMPARE(p_task_cfg->htim,
+ task_temp_ctrl_set_duty(p_task_cfg->htim,
p_task_cfg->tim_channel,
p_shared_data->temp_ctrl_pwm_dc);
+
+ // __HAL_TIM_SET_COMPARE(p_task_cfg->htim,
+ // p_task_cfg->tim_channel,
+ // p_shared_data->temp_ctrl_pwm_dc);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
LOGGER_INFO("Done initializing `task_temp_ctrl`");
@@ -86,14 +91,14 @@ void task_temp_ctrl_update(void *parameters)
p_shared_data->temp_ctrl_pwm_dc = ceil_i16(error*error, 80);
}
else {
- p_shared_data->temp_ctrl_pwm_dc = 0;
+ task_temp_ctrl_set_duty(p_task_cfg->htim, p_task_cfg->tim_channel, 0);
}
if (true == p_shared_data->temp_ctrl_enabled)
{
if (p_shared_data->temp_ctrl_pwm_dc != TIM1->CCR1)
{
- __HAL_TIM_SET_COMPARE(p_task_cfg->htim,
+ task_temp_ctrl_set_duty(p_task_cfg->htim,
p_task_cfg->tim_channel,
p_shared_data->temp_ctrl_pwm_dc);
}
@@ -105,3 +110,9 @@ void task_temp_ctrl_update(void *parameters)
}
}
}
+static void task_temp_ctrl_set_duty(TIM_HandleTypeDef *htim, uint32_t ch, uint8_t duty)
+{
+ uint32_t ARR = __HAL_TIM_GET_AUTORELOAD(htim); // Auto Reload Reg
+ uint32_t CCR = (uint32_t)((ARR + 1) * duty / 100); // Capture/Compare Reg
+ __HAL_TIM_SET_COMPARE(htim, ch, CCR);
+}
diff --git a/firmware/tdse-tf_3-02.ioc b/firmware/tdse-tf_3-02.ioc
@@ -248,8 +248,8 @@ SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1
SH.S_TIM3_CH1.ConfNb=1
TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM1.IPParameters=Channel-PWM Generation1 CH1,Prescaler,Period
-TIM1.Period=100-1
-TIM1.Prescaler=64-1
+TIM1.Period=200-1
+TIM1.Prescaler=640-1
TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM3.IPParameters=Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1
TIM3.Period=8000