RTC Zeit auf SD-Karte oder im EEPROM speichern ?

Hallo zusammen,
ich möchte die aktuelle Zeit aus der RTC (DS1307) auf Tastendruck(Interrupt) im EEPROM, bzw. auf der SD-Karte speichern. Die Zeit lese ich mit dem Code (Werte sind 'int') aus:

void rtcReceive()
{
  Wire.beginTransmission(DS1307RTC_ID);
  Wire.send(0x00);
  Wire.endTransmission();
  Second = bcd2dec(Wire.receive() & 0x7f);
  Minute = bcd2dec(Wire.receive() );
  Hour   = bcd2dec(Wire.receive() & 0x3f);
  WDay   = bcd2dec(Wire.receive() );
  Day    = bcd2dec(Wire.receive() );
  Month  = bcd2dec(Wire.receive() );
  Year   = bcd2dec(Wire.receive() );
  Wire.requestFrom(DS1307RTC_ID, NumberOfFields);
}

Die Uhrzeit soll im Format "hh:mm dd.mm.yy" gespeichert werden. Es soll auch ein Wert zusätzlich gespeichert werden (z.B. 'T1'). Die Anzeige erfolgt auf einem GLCD-Display. Leider bekomme ich die Zeit weder über Seriell, noch über Wire gespeichert. Kann mir jemand weiterhelfen ?.
Danke.

Was soll das requestFrom() am Ende? Damit fordert der Master Daten vom Slave an. Das muss vor dem Auslesen gemacht werden.

Das müsste eher so aussehen:

void rtcReceive()
{
  Wire.beginTransmission(DS1307RTC_ID);
  Wire.send((byte)0x00);
  Wire.endTransmission();

  Wire.requestFrom(DS1307RTC_ID, 7);

  Second = bcd2dec(Wire.read() & 0x7f);
  Minute = bcd2dec(Wire.read());
  Hour   = bcd2dec(Wire.read() & 0x3f);
  WDay   = bcd2dec(Wire.read());
  Day    = bcd2dec(Wire.read());
  Month  = bcd2dec(Wire.read());
  Year   = bcd2dec(Wire.read());
}

Warum speicherst du sie nicht im DS1307 ?

@ michael_x
das speichern im DS1307 bringt nicht viel. Die Daten (Uhrzeit/Datum) sollen nach dem Tastendruck in einem Array und zusätzlich auf SD-Karte oder im EEProm (extern) gespeichert werden. Bei neuem Tastendruck soll der Wert im Array überschrieben und im EEPROM/SD-Karte an den alten Wert angehängt werden. Es werden 8 Taster abgefragt und die aktuellen Daten im TFT-Display angezeigt. Abruf der SD-Karte/EEPROM soll dann über ein entsprechendes Menü oder den PC erfolgen.

Hi,

wenn du die Zeit wirklich in dem Format gespeichert haben willst, dann musst du sie wahrscheinlich als Sting speichern.
Ich habe vor ein paar Wochen ein ähnliches Problem gehabtr und festgestellt, dass es sich am besten machst wenn du die Bestandteile des Stings als Int speicherst und beim auslesen wieder zusammensetzt.
Du könntest dir jeweils für Stunden, Minuten usw ein einzelnes Arry anlegen und dann immer mit i++ erweitern. Beim Auslesen fragst du im EEPROM nach i und ließt deine letzten Werte aus.