- Quita el comentario a la línea:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Cuando subes tu sketch, a partir de que fecha el RTC está contando y se mantendrá gracias a la batería que incorpora.
Las constantes date y time son la fecha y hora que tienes en el sistema de tu PC o el dispositivo que uses.
Una vez tu proyecto esté completo esa línea aunque resetees el Arduino no cambiará el valor (Seguirá contando el tiempo desde esta fecha) a menos que se detecte que el RTC ya no tiene batería.
- Pon una pequeña pausa en el setup, un delay corto antes de la lectura de la SD igual que tienes otro antes del RTC (Esto suele ayudar con algunos errores en las lecturas al iniciar)
[Edito]
Por cierto para la SD recomiendo la librería:
#include "SdFat.h"
#include "sdios.h"