Sto lavorando su un dispositivo che utilizza la libreria Microchip MDDFS per archiviare i dati su una scheda SD. Il logger registrerà i dati alla velocità massima di 1 voce (56 byte) ogni minuto. Il problema è che il dispositivo potrebbe perdere energia in qualsiasi momento, potenzialmente nel mezzo di una sequenza di scrittura. Mi chiedo quale sia il modo migliore per proteggere i miei dati dalla corruzione. Ho scoperto che se il file è aperto quando viene persa l'alimentazione, tutti i dati scritti nel file dopo l'ultima chiusura del file vengono persi. Non so se lo stesso vale se si perde potenza nel mezzo della sequenza di scrittura.
Poiché la procedura di scrittura non si verifica molto frequentemente, potrei aprire il file, scrivere i dati e quindi chiudere il file, ogni volta che i dati vengono registrati. Questo approccio danneggerebbe la scheda SD nel tempo?
Un altro approccio potrebbe essere quello di mantenere il file aperto ma dopo ogni 10 o 50 scritture potrei chiudere il file e quindi riaprirlo.
Potrei anche bufferizzare i dati in memoria, quindi svuotare i dati di tanto in tanto forse dopo un kbyte o giù di lì.
L'ultima idea che ho avuto è stata, nel mio circuito, di aggiungere un grande condensatore in grado di fornire energia alla mia scheda pic / sd abbastanza a lungo dopo che l'alimentazione è stata disconnessa per chiudere rapidamente il file. Il problema con questo approccio è che il tempo necessario per chiudere il file e / o salvare i dati è molto incoerente. Da quanto ho capito, questa volta può dipendere molto dalla posizione corrente in una pagina flash in cui si trova il file.
Comunque, cosa suggerireste ragazzi?