DS1306, set Date Time

Hi,

I am trying to set up the date time of the DS1306 Real Time Clock. I am using the source code from here: http://www.nearfuturelaboratory.com/2006/12/14/arduino-and-ds1306-real-time-clock/.

I changed it a little bit to save the current date and time.

What I added is this on the setup section:

  //set datetime
  write_rtc_register(0x80, 0x00); // set seconds
  write_rtc_register(0x81, 0x45); // set the minutes
  write_rtc_register(0x82, 0x11); // set hours
  write_rtc_register(0x83, 0x07); // monday = 1...etc
  write_rtc_register(0x84, 0x08); // set date
  write_rtc_register(0x85, 0x05); // month
  write_rtc_register(0x86, 0x11); // year 00-99
DS1306 Arduino
Pins 1,8 GND
Pins 16,14,9 5V
Pin 2 3V
Pin 3,4 Crystal
Pin SDO,SDI,SCLK Pins 12,11,13
Pin 10 Pin 6
Pin 6(+10k in Vcc) Pin 3

But the output in the serial monitor just throw zeros...

  write_rtc_register(0x82, 0x11); // set hours

Since 0x11 is 17, that may not be valid, if the input is limited to 0 to 11.

write_rtc_register(0x81, 0x45); // set the minutes

0x45 is 69 in base 10. Not too many hours have 69 minutes.

I am using the source code from here

I changed it a little bit to save the current date and time.
What I added is this on the setup section:

Are you sure that the register addresses you specified are valid?

I used the data sheet to see which register I need to look at.

The output error is the following:

CTRL REG [FFFFFFFF]
STATUS REG [11111111111111111111111111000010]
YEAR [FFFFFFFF]
MONTH [5F]

sec alarm is FF SECS=FF MINS=FF HRS=C1

That site you linked to is a perfect example of how not to develop a web site. I can't read a damned thing on that page. Sorry I can't help you.

That site you linked to is a perfect example of how not to develop a web site. I can't read a damned thing on that page. Sorry I can't help you.

It probably looks really nice on his monitor with his browser. He must be fairly young as well judging from the font size.

Don

write_rtc_register(0x82, 0x11); // set hours

Since 0x11 is 17, that may not be valid, if the input is limited to 0 to 11.

write_rtc_register(0x81, 0x45); // set the minutes

0x45 is 69 in base 10. Not too many hours have 69 minutes.

I think these may be OK, the RTC stores it's data in binary coded decimal format.

Don

PaulS:
That site you linked to is a perfect example of how not to develop a web site. I can't read a damned thing on that page. Sorry I can't help you.

Arrrgh! My eyes!

Honestly, it's almost impossible to read the code, and the download link is not valid. But anyway, in what I can barely make out is the source is this:

// ATMega8 Code
// ATMega8 Code
#define DATAOUT 11 //MOSI
#define DATAIN  12 //MISO
#define SPICLOCK  13 //sck
#define RTC_CHIPSELECT 7 // chip select (ss/ce) for RTC, active high
#define LED 10

You had:

DS1306	Arduino
Pins 1,8	GND
Pins 16,14,9	5V
Pin 2	3V
Pin 3,4	Crystal
Pin SDO,SDI,SCLK	Pins 12,11,13
Pin 10	Pin 6
Pin 6(+10k in Vcc)	Pin 3

You have Chip Enable (pin 10 on the device) connected to pin 6, but the code requires pin 7.

If that isn't the answer, how about posting the whole sketch?