mirror of
https://github.com/adrigongv23/G26---Telemetry-Software.git
synced 2026-05-25 20:41:27 +02:00
perf(sd): activar escritura por buffer y sync periodico
- Se elimina el guardado fisico forzado en cada mensaje CAN. - Ahora los datos se acumulan en RAM y se guardan en la SD cada 1 segundo. - Esto evita que el procesador se bloquee y pierda datos. - Nota: riesgo de perder maximo 1s de log (minimo comparado al riesgo de perder paquetes del CAN por que se bloquee el procesador con el codigo anterior) si se corta la energia de golpe.
This commit is contained in:
parent
d190db3d3c
commit
9993acaba6
2 changed files with 13 additions and 6 deletions
|
|
@ -150,15 +150,18 @@ void DataProcessor::flushToSD() {
|
|||
// Verificamos que los punteros existan Y que el archivo esté abierto
|
||||
if (_sd && _logFile && _logFile->isOpen()) {
|
||||
|
||||
// 1. Escribimos los datos
|
||||
// 1. Escribimos al BUFFER (RAM) - Esto es instantáneo (microsegundos)
|
||||
_logFile->print(millis());
|
||||
_logFile->print(",");
|
||||
_logFile->println(car.ect);
|
||||
|
||||
// 2. SYNC
|
||||
// Esto fuerza a la SD a guardar físicamente los datos AHORA MISMO,
|
||||
// pero mantiene el archivo abierto para la siguiente vuelta.
|
||||
_logFile->sync();
|
||||
|
||||
// 2. SYNC CONTROLADO
|
||||
// Solo obligamos a la tarjeta a "escribir de verdad" si ha pasado X tiempo.
|
||||
// Esto evita detener el CAN cada 10ms.
|
||||
if (millis() - _last_sync_time > _sync_interval_ms) {
|
||||
_logFile->sync(); // Aquí sí gastamos tiempo, pero solo 1 vez por segundo
|
||||
_last_sync_time = millis();
|
||||
// Serial.println("[SD] Sync realizado"); // Descomentar solo para debug
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue