death_bandit
New member
I dont understand what you mean. Where did you bought your working RTC? Maybe I have luck too. But what library can you recommend me to test the RTC outside of the PCB.
RTC is NOT running!
2165/165/165 (Saturday) 165:165:85
since midnight 1/1/1970 = 978738385s = 11327d
now + 7d + 30s: 2001/1/13 12:16:31
2165/165/165 (Saturday) 165:165:85
since midnight 1/1/1970 = 978738385s = 11327d
now + 7d + 30s: 2001/1/13 12:16:31
or Codehttp://www.ebay.fr/itm/Tiny-RTC-I2C-DS1307-AT24C32-Horloge-Temps-Réel-Module-Pour-Arduino-AVR/262974347997?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
[URL]http://www.ebay.fr/itm/Tiny-RTC-I2C-DS1307-AT24C32-Horloge-Temps-Réel-Module-Pour-Arduino-AVR/262974347997?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649[/URL]
// DS1307 real time driver
boolean readDS1307(datetime_t &dt){
byte buf[8];
if (I2CreadFrom(DS1307_ADDRESS, 0x00, 8, buf, 3) != 8) {
Console.println("DS1307 comm error");
//addErrorCounter(ERR_RTC_COMM);
return false;
}
if ( ((buf[0] >> 7) != 0) || ((buf[1] >> 7) != 0) || ((buf[2] >> 7) != 0) || ((buf[3] >> 3) != 0)
|| ((buf[4] >> 6) != 0) || ((buf[5] >> 5) != 0) || ((buf[7] & B01101100) != 0) ) {
Console.println("DS1307 data1 error");
//addErrorCounter(ERR_RTC_DATA);
return false;
}
datetime_t r;
r.time.minute = 10*((buf[1] >>4) & B00000111) + (buf[1] & B00001111);
r.time.hour = 10*((buf[2] >>4) & B00000111) + (buf[2] & B00001111);
r.date.dayOfWeek = (buf[3] & B00000111) - 1;
r.date.day = 10*((buf[4] >>4) & B00000011) + (buf[4] & B00001111);
r.date.month = 10*((buf[5] >>4) & B00000001) + (buf[5] & B00001111);
r.date.year = 10*((buf[6] >>4) & B00001111) + (buf[6] & B00001111);
if ( (r.time.minute > 59) || (r.time.hour > 23) || (r.date.dayOfWeek > 6)
|| (r.date.month > 12) || (r.date.day > 31) || (r.date.day < 1)
|| (r.date.month < 1) || (r.date.year > 99) ){
Console.println("DS1307 data2 error");
//addErrorCounter(ERR_RTC_DATA);
return false;
}
r.date.year += 2000;
dt = r;
return true;
}
boolean setDS1307(datetime_t &dt){
byte buf[7];
if (I2CreadFrom(DS1307_ADDRESS, 0x00, 7, buf, 3) != 7){
Console.println("DS1307 comm error");
//addErrorCounter(ERR_RTC_COMM);
return false;
}
buf[0] = buf[0] & B01111111; // enable clock
buf[1] = ((dt.time.minute / 10) << 4) | (dt.time.minute % 10);
buf[2] = ((dt.time.hour / 10) << 4) | (dt.time.hour % 10);
buf[3] = dt.date.dayOfWeek + 1;
buf[4] = ((dt.date.day / 10) << 4) | (dt.date.day % 10);
buf[5] = ((dt.date.month / 10) << 4) | (dt.date.month % 10);
buf[6] = ((dt.date.year % 100 / 10) << 4) | (dt.date.year % 10);
I2CwriteToBuf(DS1307_ADDRESS, 0x00, 7, buf);
return true;
}