watch

Dependents:   Xadow_Watch_OLED Seeed_Arch_GPRS_V2_Humidty_Alert

Committer:
loovee
Date:
Tue Apr 01 07:01:08 2014 +0000
Revision:
0:f4f9b627adf9
watch

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loovee 0:f4f9b627adf9 1 /*
loovee 0:f4f9b627adf9 2 DS1337.h - library for DS1337 rtc
loovee 0:f4f9b627adf9 3 */
loovee 0:f4f9b627adf9 4
loovee 0:f4f9b627adf9 5 // ensure this library description is only included once
loovee 0:f4f9b627adf9 6 #ifndef DS1337_h
loovee 0:f4f9b627adf9 7 #define DS1337_h
loovee 0:f4f9b627adf9 8
loovee 0:f4f9b627adf9 9 // include types & constants of Wiring core API
loovee 0:f4f9b627adf9 10 #include "mbed.h"
loovee 0:f4f9b627adf9 11
loovee 0:f4f9b627adf9 12 typedef int8_t byte;
loovee 0:f4f9b627adf9 13
loovee 0:f4f9b627adf9 14 // indices within the rtc_bcd[] buffer
loovee 0:f4f9b627adf9 15 #define DS1337_SEC 0
loovee 0:f4f9b627adf9 16 #define DS1337_MIN 1
loovee 0:f4f9b627adf9 17 #define DS1337_HR 2
loovee 0:f4f9b627adf9 18 #define DS1337_DOW 3
loovee 0:f4f9b627adf9 19 #define DS1337_DATE 4
loovee 0:f4f9b627adf9 20 #define DS1337_MTH 5
loovee 0:f4f9b627adf9 21 #define DS1337_YR 6
loovee 0:f4f9b627adf9 22
loovee 0:f4f9b627adf9 23 #define DS1337_BASE_YR 2000
loovee 0:f4f9b627adf9 24
loovee 0:f4f9b627adf9 25 #define DS1337_CTRL_ID 0xD0
loovee 0:f4f9b627adf9 26
loovee 0:f4f9b627adf9 27
loovee 0:f4f9b627adf9 28
loovee 0:f4f9b627adf9 29 // Define register bit masks
loovee 0:f4f9b627adf9 30 #define DS1337_CLOCKHALT (1<<7)
loovee 0:f4f9b627adf9 31
loovee 0:f4f9b627adf9 32 #define DS1337_LO_BCD 0xf
loovee 0:f4f9b627adf9 33 #define DS1337_HI_BCD 0xf0
loovee 0:f4f9b627adf9 34
loovee 0:f4f9b627adf9 35 #define DS1337_HI_SEC 0x70
loovee 0:f4f9b627adf9 36 #define DS1337_HI_MIN 0x70
loovee 0:f4f9b627adf9 37 #define DS1337_HI_HR 0x30
loovee 0:f4f9b627adf9 38 #define DS1337_LO_DOW 0x07
loovee 0:f4f9b627adf9 39 #define DS1337_HI_DATE 0x30
loovee 0:f4f9b627adf9 40 #define DS1337_HI_MTH 0x30
loovee 0:f4f9b627adf9 41 #define DS1337_HI_YR 0xf0
loovee 0:f4f9b627adf9 42
loovee 0:f4f9b627adf9 43 #define DS1337_ARLM1 0x07
loovee 0:f4f9b627adf9 44 #define DS1337_ARLM1_LO_SEC 0xf
loovee 0:f4f9b627adf9 45 #define DS1337_ARLM1_HI_SEC 0x70
loovee 0:f4f9b627adf9 46 #define DS1337_ARLM1_LO_MIN 0x70
loovee 0:f4f9b627adf9 47 #define DS1337_ARLM1_HI_MIN 0xf
loovee 0:f4f9b627adf9 48
loovee 0:f4f9b627adf9 49 #define DS1337_SP 0x0E
loovee 0:f4f9b627adf9 50 #define DS1337_SP_EOSC (1<<7)
loovee 0:f4f9b627adf9 51 #define DS1337_SP_RS2 (1<<4)
loovee 0:f4f9b627adf9 52 #define DS1337_SP_RS1 (1<<3)
loovee 0:f4f9b627adf9 53 #define DS1337_SP_INTCN (1<<2)
loovee 0:f4f9b627adf9 54 #define DS1337_SP_A2IE (1<<1)
loovee 0:f4f9b627adf9 55 #define DS1337_SP_A1IE (1<<0)
loovee 0:f4f9b627adf9 56
loovee 0:f4f9b627adf9 57 #define DS1337_STATUS 0x0F
loovee 0:f4f9b627adf9 58 #define DS1337_STATUS_OSF (1<<7)
loovee 0:f4f9b627adf9 59 #define DS1337_STATUS_A2F (1<<1)
loovee 0:f4f9b627adf9 60 #define DS1337_STATUS_A1F (1<<0)
loovee 0:f4f9b627adf9 61
loovee 0:f4f9b627adf9 62 /* Definitions for alarm repeat */
loovee 0:f4f9b627adf9 63 /* The private variable alarm_repeat holds the user's alarm repeat preference. However, the DS1337 encodes these in the topmost bit(s) of the 4 alarm registers. */
loovee 0:f4f9b627adf9 64 /* Splattering these bits across the alarm regs is handled in the writeAlarm() function. */
loovee 0:f4f9b627adf9 65 /* If DY/DT is set, the day field is interpreted as a DayOfWeek (1 ~ 7), else it is interpreted as a DayOfMonth.*/
loovee 0:f4f9b627adf9 66
loovee 0:f4f9b627adf9 67 /* user alarm_repeat bit mask:
loovee 0:f4f9b627adf9 68 7 6 5 4 3 2 1 0
loovee 0:f4f9b627adf9 69 [x x x A1M4 DY/DT A1M3 A1M2 A1M1]
loovee 0:f4f9b627adf9 70 */
loovee 0:f4f9b627adf9 71
loovee 0:f4f9b627adf9 72 #define EVERY_SECOND B00010111
loovee 0:f4f9b627adf9 73 #define EVERY_MINUTE B00010110
loovee 0:f4f9b627adf9 74 #define EVERY_HOUR B00010100
loovee 0:f4f9b627adf9 75 #define EVERY_DAY B00010000
loovee 0:f4f9b627adf9 76 #define EVERY_WEEK B00001000
loovee 0:f4f9b627adf9 77 #define EVERY_MONTH B00000000
loovee 0:f4f9b627adf9 78
loovee 0:f4f9b627adf9 79
loovee 0:f4f9b627adf9 80 /* typedef struct {
loovee 0:f4f9b627adf9 81 unsigned int year;
loovee 0:f4f9b627adf9 82 unsigned char month;
loovee 0:f4f9b627adf9 83 unsigned char day;
loovee 0:f4f9b627adf9 84 unsigned char dayOfWeek;
loovee 0:f4f9b627adf9 85 unsigned char hour;
loovee 0:f4f9b627adf9 86 unsigned char minute;
loovee 0:f4f9b627adf9 87 unsigned char second;
loovee 0:f4f9b627adf9 88 } TIME; */
loovee 0:f4f9b627adf9 89
loovee 0:f4f9b627adf9 90
loovee 0:f4f9b627adf9 91 // library interface description
loovee 0:f4f9b627adf9 92 class DS1337 {
loovee 0:f4f9b627adf9 93 // user-accessible "public" interface
loovee 0:f4f9b627adf9 94 public:
loovee 0:f4f9b627adf9 95
loovee 0:f4f9b627adf9 96 void readTime(void);
loovee 0:f4f9b627adf9 97 unsigned char getSeconds();
loovee 0:f4f9b627adf9 98 unsigned char getMinutes();
loovee 0:f4f9b627adf9 99 unsigned char getHours();
loovee 0:f4f9b627adf9 100 unsigned char getDays();
loovee 0:f4f9b627adf9 101 unsigned char getDayOfWeek();
loovee 0:f4f9b627adf9 102 unsigned char getMonths();
loovee 0:f4f9b627adf9 103 unsigned int getYears();
loovee 0:f4f9b627adf9 104
loovee 0:f4f9b627adf9 105 void setSeconds(unsigned char);
loovee 0:f4f9b627adf9 106 void setMinutes(unsigned char);
loovee 0:f4f9b627adf9 107 void setHours(unsigned char);
loovee 0:f4f9b627adf9 108 void setDays(unsigned char);
loovee 0:f4f9b627adf9 109 void setDayOfWeek(unsigned char);
loovee 0:f4f9b627adf9 110 void setMonths(unsigned char);
loovee 0:f4f9b627adf9 111 void setYears(unsigned int);
loovee 0:f4f9b627adf9 112
loovee 0:f4f9b627adf9 113 void setTime();
loovee 0:f4f9b627adf9 114
loovee 0:f4f9b627adf9 115
loovee 0:f4f9b627adf9 116 void start(void);
loovee 0:f4f9b627adf9 117 void stop(void);
loovee 0:f4f9b627adf9 118 unsigned char getRegister(unsigned char registerNumber);
loovee 0:f4f9b627adf9 119 void setRegister(unsigned char registerNumber, unsigned char registerValue);
loovee 0:f4f9b627adf9 120 //void unsetRegister(unsigned char registerNumber, unsigned char registerMask);
loovee 0:f4f9b627adf9 121
loovee 0:f4f9b627adf9 122 // library-accessible "private" interface
loovee 0:f4f9b627adf9 123 private:
loovee 0:f4f9b627adf9 124
loovee 0:f4f9b627adf9 125 byte time_set;
loovee 0:f4f9b627adf9 126 byte alarm_repeat;
loovee 0:f4f9b627adf9 127 byte rtc_bcd[7]; // used prior to read/set DS1337 registers;
loovee 0:f4f9b627adf9 128 void read(void);
loovee 0:f4f9b627adf9 129 void save(void);
loovee 0:f4f9b627adf9 130 byte bcd2bin(byte);
loovee 0:f4f9b627adf9 131 byte bin2bcd(byte);
loovee 0:f4f9b627adf9 132 };
loovee 0:f4f9b627adf9 133
loovee 0:f4f9b627adf9 134 //extern DS1337 RTC;
loovee 0:f4f9b627adf9 135
loovee 0:f4f9b627adf9 136 #endif