Go Down

Topic: datum und zeit auf sd karte (Read 1 time) previous topic - next topic

ardubu

ich habe mal wieder ein problem,
vor einiger zeit habe ich mir einen datenlogger gebaut, der 8 spannungen und 2 ströme mißt und auf sd speichert.
das gerät funktioniert einwandfrei.
bei den dateieigenschaften der datei auf sd habe ich festgestellt, das datum und zeit immer 01.01.2000 01:00 sind.
daraufhin habe ich mir ein neues sd shield mit rtc zugelegt.
die rtc habe ich in mein sketch mit eingebaut und läuft auch.
leider komme ich nicht weiter datum und zeit der rtc in die sd dateieigenschaften zu bringen.
ich hoffe ihr könnt mir helfen
gruß
ardubu

jurs


leider komme ich nicht weiter datum und zeit der rtc in die sd dateieigenschaften zu bringen.
ich hoffe ihr könnt mir helfen


Hast Du denn überhaupt eine SD-Library, die mit entsprechenden Library-Funktionen das Setzen von Dateidatum und -uhrzeit unterstützt?

Die FAT-Libraries für Mikrocontroller sind üblicherweise stark abgespeckte Libraries, die nur einen ganz minimalen Funktionsumfang haben, damit diese Libraries überhaupt mit so wenig RAM-Speicher laufen, wie sie z.B. ein Arduino UNO hat.

ardubu

nein, ich nutze die standard sd library, ich habe nur die utylity/sd2card.h geändert, damit ich den software spi nutzen kann, da das sd shield für den uno gebaut ist und ich es auf einem mega betreibe.
man müßte doch in dem sketch datum und uhrzeit für die sd karte übergeben können, ich übergebe ja auch den dateinamen.

MrGlasspoole

#3
Dec 16, 2012, 04:18 pm Last Edit: Dec 16, 2012, 04:19 pm by MrGlasspoole Reason: 1
Ich habe ein ähnliches Problem.
Adlerdings nutze ich die Internetzeit und liegt nur daran das ich
mit der Programmiersprache noch Probleme habe.

Serial bekommst du die Zeit angezeigt?
Wie gibst du sie serial aus?

Bei mir wird die Zeit so zusammen gestellt:
Code: [Select]
void clockDisplay(){
 Serial.print(year());
 Serial.print("-");
 Serial.print(month());
 Serial.print("-");
 Serial.print(day());
 Serial.print(" ");
 printDigits(hour());
 Serial.print(":");
 printDigits(minute());
 Serial.print(":");
 printDigits(second());
}
// prints leading 0
void printDigits(int digits){
  if(digits < 10)
  Serial.print('0');
  Serial.print(digits);
}

Und serial so auch richtig ausgegeben:
Code: [Select]
void loop() {
 clockDisplay();
}

Nur wie ich das auf die SD bekomme weiß ich noch nicht.
Meine Sensor Daten schreibe ich mit sdfat so:
Code: [Select]
void loop() {
 int furnaceState = digitalRead(furnaceInPin);

 // open the file.
 if (!dataFile.open("HOM_1.CSV", O_RDWR | O_CREAT | O_AT_END)) {
   sd.errorHalt("opening HOM_1.CSV for write failed");
 }

 // if the file is available, write to it:
 dataFile.print(";16;");dataFile.println(furnaceState);

 // print to the serial port too:
 clockDisplay(); Serial.print(";16;");Serial.println(furnaceState);

 // close the file:
 dataFile.close();

delay(5000);
}

Nur
Code: [Select]
dataFile.clockDisplay();
Geht halt nicht.
Die Zeit per string schreiben sollte gehen, aber das möchte ich eigentlich nicht.

ardubu

beim durchstöbern der SdFat.h habe herausgefunden, das datum und zeit mit einer callbackfunktion übergeben werden können. ich weiß nur noch nicht wie

Go Up