greets
I've found a sketch online at GitHub - msparks/arduino-ds1302: Arduino library for the DS1302 Real Time Clock chip based on the DS1302 library, but unfortunatelly it does not work, I'm only getting "Sunday 2000-01-01 00:00:40" as the output of Serial.print.
direct links to:
the example sketch:
/*
Example sketch for interfacing with the DS1302 timekeeping chip.
Copyright (c) 2009, Matt Sparks
All rights reserved.
http://quadpoint.org/projects/arduino-ds1302
*/
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
/* Set the appropriate digital I/O pin connections */
uint8_t CE_PIN = 4;
uint8_t IO_PIN = 5;
uint8_t SCLK_PIN = 6;
/* Create buffers */
char buf[50];
char day[10];
/* Create a DS1302 object */
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
void print_time()
{
/* Get the current time and date from the chip */
Time t = rtc.time();
/* Name the day of the week */
memset(day, 0, sizeof(day)); /* clear day buffer */
switch (t.day) {
case 1:
strcpy(day, "Sunday");
break;
case 2:
strcpy(day, "Monday");
break;
case 3:
strcpy(day, "Tuesday");
break;
case 4:
strcpy(day, "Wednesday");
break;
case 5:
strcpy(day, "Thursday");
break;
case 6:
strcpy(day, "Friday");
break;
case 7:
strcpy(day, "Saturday");
break;
}
/* Format the time and date and insert into the temporary buffer */
snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
day,
t.yr, t.mon, t.date,
t.hr, t.min, t.sec);
/* Print the formatted string to serial so we can see the time */
Serial.println(buf);
}
void setup()
{
Serial.begin(9600);
/* Initialize a new chip by turning off write protection and clearing the
clock halt flag. These methods needn't always be called. See the DS1302
datasheet for details. */
rtc.write_protect(false);
rtc.halt(false);
/* Make a new time object to set the date and time */
/* Tuesday, May 19, 2009 at 21:16:37. */
Time t(2014, 2, 26, 16, 27, 37, 3);
/* Set the time and date on the chip */
rtc.time(t);
}
/* Loop and print the time every second */
void loop()
{
print_time();
delay(2000);
}
Has anyone gotten this sketch to work, or perhaps you could post a simple example of a read and write sketch?
thanks!
btw, the sketch at Arduino Playground - DS1302 prints the correct (set in code) date but it prints an error date every few Serial.prints.
e.g. its serial output:
DS1302 Real Time Clock
Version 2, March 2013
Time = 10:08:00, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 08:04:02, Date(day of month) = 10, Month = 2, Day(day of week) = 1, Year = 2009
Time = 10:08:04, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:06, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:08, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:10, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:12, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:15, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 08:08:17, Date(day of month) = 10, Month = 2, Day(day of week) = 1, Year = 2009
Time = 10:08:19, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 08:08:21, Date(day of month) = 10, Month = 2, Day(day of week) = 1, Year = 2009
Time = 10:08:23, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:25, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:27, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:29, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:31, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 08:04:33, Date(day of month) = 10, Month = 2, Day(day of week) = 1, Year = 2009
Time = 08:08:35, Date(day of month) = 10, Month = 2, Day(day of week) = 1, Year = 2009
Time = 10:08:37, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:39, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:41, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:43, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:45, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013
Time = 10:08:47, Date(day of month) = 15, Month = 4, Day(day of week) = 2, Year = 2013