A3. [PM] El light sleep automático puede corromper la recepción NMEA por UART2 #4

Open
opened 2026-08-05 22:20:55 +02:00 by dacowars · 0 comments
dacowars commented 2026-08-05 22:20:55 +02:00 (Migrated from gogs-gogs-1:3000)

Consecuencia directa de A2, y la razón de no activar el tickless idle a ciegas.

Cuando el ESP32 entra en light sleep automático, la APB baja de frecuencia y el UART deja
de muestrear correctamente. El GPS transmite de forma asíncrona y continua: no hay forma de
que el ESP32 "sepa" que va a llegar una trama. El resultado típico son caracteres perdidos
y sentencias NMEA con checksum inválido de forma intermitente — el peor tipo de fallo,
porque aparece solo a veces.

Enfoques posibles:

  • Adquirir un lock ESP_PM_APB_FREQ_MAX mientras la tarea de lectura del GPS está activa.
  • Habilitar el wakeup por UART (uart_set_wakeup_threshold() + esp_sleep_enable_uart_wakeup()).
  • Reestructurar hacia duty-cycling explícito del GPS (ver B2), donde el ESP32 solo duerme
    en las ventanas en que el GPS está apagado. Arquitectónicamente es la opción más limpia.

Criterio de cierre

  • Estrategia elegida y documentada
  • Prueba de ≥1 h con light sleep activo contando sentencias NMEA descartadas por checksum
  • Tasa de descarte equiparable a la del mismo test sin light sleep
Consecuencia directa de A2, y la razón de no activar el tickless idle a ciegas. Cuando el ESP32 entra en light sleep automático, la APB baja de frecuencia y el UART deja de muestrear correctamente. El GPS transmite de forma asíncrona y continua: no hay forma de que el ESP32 "sepa" que va a llegar una trama. El resultado típico son caracteres perdidos y sentencias NMEA con checksum inválido de forma intermitente — el peor tipo de fallo, porque aparece solo a veces. **Enfoques posibles:** - Adquirir un lock `ESP_PM_APB_FREQ_MAX` mientras la tarea de lectura del GPS está activa. - Habilitar el wakeup por UART (`uart_set_wakeup_threshold()` + `esp_sleep_enable_uart_wakeup()`). - Reestructurar hacia duty-cycling explícito del GPS (ver B2), donde el ESP32 solo duerme en las ventanas en que el GPS está apagado. Arquitectónicamente es la opción más limpia. **Criterio de cierre** - [ ] Estrategia elegida y documentada - [ ] Prueba de ≥1 h con light sleep activo contando sentencias NMEA descartadas por checksum - [ ] Tasa de descarte equiparable a la del mismo test sin light sleep
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dacowars/GPS_tracker_esp#4
No description provided.