Ethernet-Shield SD Speicherdatum falsch

Für die Zeit im Arduino Mega verwende ich die Library Time. Die Zeit selbst wird per Internet aktualisiert. Zu speichernde Dateien auf der SD-Karte erhalten aber immer ein falsches, altes Datum z. B. 1.1.1970 oder 1.1.2000.
Muss die aktuelle Zeit für das SD-Laufwerk separat eingestellt werden?
Gruß Gerd

gerd-wolfgang:
Für die Zeit im Arduino Mega verwende ich die Library Time. Die Zeit selbst wird per Internet aktualisiert. Zu speichernde Dateien auf der SD-Karte erhalten aber immer ein falsches, altes Datum z. B. 1.1.1970 oder 1.1.2000.
Muss die aktuelle Zeit für das SD-Laufwerk separat eingestellt werden?

Ein Arduino ist kein Computer mit Betriebssystem.
Wenn Du im Dateisystem auf der SD-Karte nicht selbst mit eigenem Programmcode einen Timestamp hinschreibst, dann ist da auch kein Timestamp, weil es kein Betriebssystem gibt, das einen Timestamp für Dich verwaltet.

Die Standard SD-Library von Arduino kann meines Erachtens auch überhaupt keine Timestamps setzen.

Bei Verwendung alternativer SD-Libraries wie SDFat kann man es über eine eigene "Callback-Funktion" realisieren, wenn Timestamps gesetzt werden sollen.

Moin Gerd,

wie jurs schon schrieb:
abhängig von der jeweils verwendeten SD-Library muss für die Lösung dieses Problems eine Callback-Funktion aus der Library in den eigenen Code (Sketch) kopiert, ggf. angepasst und in setup initialisiert werden. Bei Verwendung der <SdFat.h>-Library beispielsweise könntest Du folgende Funktion in Deinem Sketch probieren:

void dateTime(uint16_t* date, uint16_t* time) {  // Dies ist die Callback-Funktion zum Setzen
                                                 // des TimeStamps für die Datei auf der 
                                                 // SD-Karte. (Kopie dieser Funktion aus der 
                                                 // SdFat-Lib.)
   uint16_t xyear;
   uint8_t xmonth, xday, xhour, xminute, xsecond;

   // User gets date and time from GPS or real-time clock here
   xyear = year();
   xmonth = month();
   xday = day();
   
   xhour = hour();
   xminute = minute();
   xsecond = second();
   // return date using FAT_DATE macro to format fields
   *date = FAT_DATE(xyear, xmonth, xday);

   // return time using FAT_TIME macro to format fields
   *time = FAT_TIME(xhour, xminute, xsecond);
 }

In setup() wird dann der Bezug zu dieser Funktion hergestellt mit:

SdFile::dateTimeCallback(dateTime);

Das sollte es dann gewesen sein...

OK, das war mir nicht bewusst. Am PC ist das so selbstverständlich. Ich werde das mit dem Code mal probieren. Danke für die schnelle Hilfe.
Gruß Gerd

Braucht wie gesagt SdFat:
http://code.google.com/p/sdfatlib/

Das ist auch ein Beispiel namens "Timestamp" dabei