Pages: [1]   Go Down
Author Topic: DS1307 Zeit stellen  (Read 580 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,


wollte heute im Zuge der Zeitumstellung mein DS1307 stellen. Dazu hab ich einfach einen kleinen Sketch geschrieben...

Code:
#include <Wire.h>

#include <DS1307new.h>

void setup(){
 
Serial.begin(9600);
RTC.setTime();

RTC.fillByYMD(2013,3,31);
RTC.fillByHMS(19,17,0);

RTC.startClock();


RTC.getTime();
Serial.print(RTC.hour);
Serial.print(":");
Serial.print(RTC.minute);
Serial.print(":");
Serial.println(RTC.second);
Serial.print(RTC.day);
Serial.print(".");
Serial.print(RTC.month);
Serial.print(".");
Serial.print(RTC.year);
Serial.print("   ");
Serial.print(RTC.dow);
}

void loop()
{
 
 

Laut Konsole, haben wir jetzt nur noch 00:00:00 2046.... Bin echt am verzweifeln. Woran liegt das? Vorneweg: Ja, die RTC ist korrekt angeschlossen.

Danke für eure Hilfe.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21651
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Im Beispiel der von Dir verwendeten Bibliothek wird folgendes gemacht:
Code:
 // RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
  // if (TimeIsSet != 0xaa55)
  {
    RTC.stopClock();
        
    RTC.fillByYMD(2011,4,8);
    RTC.fillByHMS(22,7,0);
    
    RTC.setTime();
      //TimeIsSet = 0xaa55;
      //RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
    RTC.startClock();
  }

Die von mir auskommentierten Zeilen kontrollieren ob ein gewisser Wert im RAM vorhanden ist  (dies ist nicht der Fall, wenn die RTC die Zeit verloren hat) und setzt in diesem Fall die Zeit.
Die DS1307 hat auch ein Bit das die Gültigkeit der Zeit anzeigt. Auch kann man dieses dazu verwenden um die Zeit automatisch bei Verlust zu setzen (immer auf eine falsche einprogrammierte Zeit) Die Verwendete ibliothek hat diese Funktion nicht.

Laut Beschreibung http://code.google.com/p/ds1307new/downloads/list müßte die Version 1.24 die Umschaltung der Sommer-Winterzeit automatisch machen.

In dieser Bibliotek http://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code werden die Systemvariablen __TINE__ und __DATE__  verwendet um die Zeit des PCs automatisch zu erhalten. Die Zeit / Datum sind dann die Zeit / Datum im Zeitpunk der Kompilierung des Sketches.

Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: