Tengo un boceto que se ejecuta en un Arduino Ethernet (que viene con un lector de tarjetas SD y, por supuesto, una interfaz Ethernet).
Hay un lugar único en este boceto donde escribo en un archivo en la tarjeta SD, que básicamente tiene este aspecto:
char dpath[13]; // File path
char logline[30]; // String to be stored in
/* ... */
File dataFile;
if (dataFile = SD.open(dpath, FILE_WRITE)) {
dataFile.println(logline);
}
dataFile.close();
No tuve ningún problema durante algunos meses con un par de Arduinos ejecutando este boceto.
Recientemente, puse a trabajar otro que se está comportando de manera extraña. En particular, veo que en la tarjeta SD generó un archivo algo dañado.
El tamaño del archivo parece ser de 4.0 GB, aunque el tamaño total de la tarjeta SD es de 3.7 GB, y si intento leerlo con un editor hexadecimal, aparece vacío:
$ du -h 20130206.DAT_
4,0G 20130206.DAT_
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 3,7G 58M 3,6G 2% /media/B045-FE58
$ hexdump 20130206.DAT_
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
fd000000
¿Qué podría estar pasando con el microcontrolador?
Estoy preguntando esto aquí, porque no puedo notar ningún problema de programación, y el croquis se está ejecutando bien en otras placas. ¿Debo estar al tanto de algunos problemas eléctricos conocidos? ¿Podría, por ejemplo, una fuente de alimentación no estabilizada o alguna radiación electromagnética conducir a este comportamiento? Agradecería cualquier sugerencia sobre problemas electrónicos que debería revisar.