Solved: Timestamp für File auf SD-Karte.

Hallo,

ich bräuchte mal euere Hilfe bei folgendem Problem:
Ich betreibe einen Arduino Mega mit SD-Karte und RTC unter anderem als Datenlogger.

Das funktioniert auch hervorragend, aber alle Dateien, die erzeugt werden haben den 1.1.2000 als Timestamp.

Wie kriege ich den Arduino dazu, die Zeit des RTC als als Timestamp zu nutzen?
Also die korrekte Zeit und das Korrekte Datum für die Datei in die FAT zu schreiben?

ich verwende die SD Library und die
DS1307RTC lib aus der Time library, (möchte aber später auf die DS1307new.h Library von Peter Schmelzer wechseln, wegen der darin enthaltenen Sommerzeit Funktion - doch dazu vielleicht ein anderes Mal.)

Es scheinen in der SD Bibliothek Funktionen zu existieren, um den Timestamp der Datei zu beinflussen, wie dateTime() oder dateTimeCallback() in der \utility\SdFat, aber ich verstehe nicht, wie ich die benutzen kann!
ich dachte, dass mit dem Befehl "#include <utility/SdFat.h>" in der SD.h alle Funktionen, die in der SdFat.h als public definiert sind, auch im Sketch bekannt sein müßten, aber die sind immer unbekannt.

Könnt Ihr mir helfen?

Hilfe bitte in leicht Verständlichen Worten. Ich habe zwar ein ganz gutes Systemverständnis, bin aber die die Tiefen von C noch nicht vorgedrungen.

Danke

Gunther

Wenn man lange genug sucht, findet man in diesem Forum für alles die Lösung!

In diesem Falle habe ich die Lösung hier gefunden:
Lipo überwachung - #6 by ardubu - Deutsch - Arduino Forum in der Anwort von ardubu.

man muß die Funktion DateTime, die in der lib auskommentiert ist, als Funktion in den eigenen Sketch einfügen:

// call back for datei timestamps
void dateTime(uint16_t* date, uint16_t* time) {
  DateTime now = RTC.now();

  // return date using FAT_DATE macro to format fields
  *date = FAT_DATE(now.year(), now.month(), now.day());

  // return time using FAT_TIME macro to format fields
  *time = FAT_TIME(now.hour(), now.minute(), now.second());
}

und dann noch, ebenfalls im eigenen Sketch noch die Timestampfunktion einschalten:

  // setzt die date time callback function
  SdFile::dateTimeCallback(dateTime);

Ich such' mir seit gut 2 Wochen den Wolf um die Lösung dafür zu finden (und zu verstehen), bis ich endlich dann doch die Frage ins Forum gestellt habe.
Warum ich ausgerechnet jetzt, ein paar Stunden nach dem ich die Frage gestellt habe, selbst die Lösung finde, ist mir ein Rätsel!

sei's drum, vielleicht ist es ja jemand Anderem nütze!

Siehst Du , die Frage im Forum zu stellen hat geholfen!!! :wink: :wink: :wink:
Gratuliere zu Deiner Lösung.
Uwe

...sei's drum, vielleicht ist es ja jemand Anderem nütze!

Aber sowas von, Gunter...!!
Ganz vielen Dank, das hat mit sehr geholfen!

Ich glaube, das hat mit Ducking zu tun (oder wie hiess das...). Problem formulieren und man kommt auf die Lösung.

Rubber duck debugging:

Genau, bin gerade auch wieder drauf gekommen. Hauptsache alles Ente