commit 44defb82561a08db184f8849d382d87557ef57a9
parent 3482a2cce4b4715c4c2bdf287152fa7f24bd5f07
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Sun, 22 Mar 2026 12:50:53 -0300
Modificar parametros de DS18B20
Reducir tiempo de conversion a 100 ms. Intentar leer multiples veces (en
lugar de una unica vez) cuando el DMA no recibe el byte mas
significativo.
Diffstat:
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/firmware/app/src/ds18b20.c b/firmware/app/src/ds18b20.c
@@ -15,8 +15,8 @@
#include "task_menu_attribute.h"
#include "task_menu_interface.h"
-#define G_DS18B20_CONV_TIME_MS 180ul // ~188ms for 10 bit resolution
-#define G_DS18B20_DMA_TIMEOUT_MS 50ul
+#define G_DS18B20_CONV_TIME_MS 100ul // ~188ms for 10 bit resolution
+#define G_DS18B20_DMA_TIMEOUT_MS 10ul
#define G_TEMP_PERIOD_MS 1000ul
// Private global variables
@@ -214,9 +214,9 @@ void DS18B20_Update(void)
}
else if (0 == g_DS18B20_tick) // Error handling
{
- if (0 == l_DS18B20_DMA_error_count)
+ if (5 > l_DS18B20_DMA_error_count)
{
- // Try again readying scratchpad (only once)
+ // Try again readying scratchpad
g_DS18B20_DMA_error_count++;
l_DS18B20_DMA_error_count++;
put_event_task_menu(EV_MEN_DISPLAY_UPDATE);
@@ -233,15 +233,13 @@ void DS18B20_Update(void)
HAL_UART_Transmit_DMA(&huart1, g_buffer, 8);
HAL_UART_Receive_DMA(&huart1, g_DS18B20_Received_data_buffer, 8);
-
- g_DS18B20_tick = G_DS18B20_DMA_TIMEOUT_MS;
*/
g_DS18B20_state = ST_DS18B20_BUSY_WAITING_CONV;
}
else
{
- // DMA Timeout, start conversion again
+ // Give up on reading temp for this update
__HAL_UART_DISABLE(&huart1);
__HAL_UART_ENABLE(&huart1);
g_DS18B20_state = ST_DS18B20_READY;