Xadow Watch with RGB OLED

Dependents:   Xadow_Watch_RGBOLED Xadow_Watch_RGBOLED

Committer:
loovee
Date:
Tue Apr 01 07:02:12 2014 +0000
Revision:
0:9d7c6f478d8c
..;

Who changed what in which revision?

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