/elec/propeller-clock

To get this branch, use:
bzr branch http://bzr.ed.am/elec/propeller-clock
34 by edam
added DS1307 real-time clock library and updated Makefile
1
/*
2
  DS1307.h - library for DS1307 rtc
3
*/
4
5
// ensure this library description is only included once
6
#ifndef DS1307_h
7
#define DS1307_h
8
9
// include types & constants of core API
10
#include <Arduino.h>
11
12
// include types & constants of Wire ic2 lib
13
#include <Wire.h>
14
15
#define DS1307_SEC 0
16
#define DS1307_MIN 1
17
#define DS1307_HR 2
18
#define DS1307_DOW 3
19
#define DS1307_DAY 4
20
#define DS1307_MTH 5
21
#define DS1307_YR 6
22
23
#define DS1307_BASE_YR 2000
24
25
#define DS1307_CTRL_ID B1101000  //DS1307
26
27
 // Define register bit masks
28
#define DS1307_CLOCKHALT B10000000
29
30
#define DS1307_LO_BCD B00001111
31
#define DS1307_HI_BCD B11110000
32
33
#define DS1307_HI_SEC B01110000
34
#define DS1307_HI_MIN B01110000
35
#define DS1307_HI_HR  B00110000
36
#define DS1307_LO_DOW B00000111
37
#define DS1307_HI_DAY B00110000
38
#define DS1307_HI_MTH B00110000
39
#define DS1307_HI_YR  B11110000
40
41
// library interface description
42
class DS1307
43
{
44
public:
45
    DS1307();
46
    void get(int *, boolean);
47
    int get(int, boolean);
48
	void set(int, int);
49
    void start(void);
50
    void stop(void);
51
52
private:
53
    // used prior to read/set ds1307 registers;
54
    byte rtc_bcd[7];
55
56
	void read(void);
57
	void save(void);
58
};
59
60
extern DS1307 RTC;
61
62
#endif