Rework polarity switching to get rid of flicker

This commit is contained in:
Jan Mrna
2026-05-16 19:13:26 +02:00
parent 44560253f8
commit 1b40078c67
+4 -4
View File
@@ -137,8 +137,8 @@ int main(void)
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
GPIO_PinState state = GPIO_PIN_RESET; GPIO_PinState state = GPIO_PIN_RESET;
const uint32_t polarity_switch_period_ms = 1; const uint32_t polarity_switch_period_iter = 10;
uint32_t next_polarity_switch_ms = HAL_GetTick() + polarity_switch_period_ms; uint32_t next_polarity_switch_iter = polarity_switch_period_iter;
bool polarity = true; bool polarity = true;
while (1) while (1)
{ {
@@ -162,9 +162,9 @@ int main(void)
HAL_GPIO_WritePin(VDD_LEDL_EN_GPIO_Port, VDD_LEDL_EN_Pin, state); HAL_GPIO_WritePin(VDD_LEDL_EN_GPIO_Port, VDD_LEDL_EN_Pin, state);
// Polarity switch (H-bridge control) // Polarity switch (H-bridge control)
if (HAL_GetTick() > next_polarity_switch_ms) if (--next_polarity_switch_iter == 0)
{ {
next_polarity_switch_ms = HAL_GetTick() + polarity_switch_period_ms; next_polarity_switch_iter = polarity_switch_period_iter;
polarity = !polarity; polarity = !polarity;
H_bridge_set_direction(polarity); H_bridge_set_direction(polarity);
} }