diciamo che una parte di operazioni è atomica (non interrompibile) e una parte è NON atomica.
dal momento in cui chiudi tutti i file, possiamo dire di essere in NON atomica, il problema è che:
1. arriva interrupt che setta un flag (non puoi chiudere un file da una ISR, causa SPI)
2. il flag interrome il loop di scrittura
3. il file viene chiuso (chiusura file, aggiornamento tabelle FAT, finalizzazione di buffer arduino e SD su memoria)
Ora, attenzione che il punto 2 non può chiudere il file immediatamente, ma deve finire di scrivere in modo che alla prossia riapertura sia interpretabile; se noi scriviamo un dato per riga, ad esempio, dovremo finire di scrivere la riga! Quindi la nostra logica rende un operazione non atomica (scrivere una serie di caratteri) in una operazione atomica, altrimenti il file risulterà corrotto. Salvo implementare un algoritmo che se vede l'ultima riga corrotta la elimina.
Restano da verificare i tempi di stacco con i tempi di esecuzione dei punti cui sopra.