Mercurial > ~darius > hgwebdir.cgi > avr-lib
annotate ds1307.h @ 21:01e77066f72b default tip
Add TODO item
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Sun, 15 Feb 2015 16:15:23 +1030 |
parents | b5e4591b6570 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 * DS1307 headers | |
3 * | |
4 * Copyright (c) 2008 | |
5 * Daniel O'Connor <darius@dons.net.au>. All rights reserved. | |
6 * | |
7 * Redistribution and use in source and binary forms, with or without | |
8 * modification, are permitted provided that the following conditions | |
9 * are met: | |
10 * 1. Redistributions of source code must retain the above copyright | |
11 * notice, this list of conditions and the following disclaimer. | |
12 * 2. Redistributions in binary form must reproduce the above copyright | |
13 * notice, this list of conditions and the following disclaimer in the | |
14 * documentation and/or other materials provided with the distribution. | |
15 * | |
16 * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
19 * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE | |
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
26 * SUCH DAMAGE. | |
27 */ | |
28 | |
29 #define IIC_STFAIL -1 | |
30 #define IIC_FAILARB -2 | |
31 #define IIC_SLNAK -3 | |
32 #define IIC_NOREPLY -4 | |
8
119688bb743f
Don't spin forever waiting for the TWI hardware to do something.
darius@dons.net.au
parents:
0
diff
changeset
|
33 #define IIC_NORESP -5 |
0 | 34 #define IIC_UNKNOWN -99 |
35 | |
36 #define DS1307_ADR 0xd0 // DS1307's TWI address | |
37 | |
38 typedef struct { | |
39 uint8_t year; | |
40 uint8_t month; | |
41 uint8_t day; | |
42 uint8_t hour; | |
43 uint8_t min; | |
44 uint8_t sec; | |
45 } ds1307_t; | |
46 | |
47 typedef union { | |
48 uint8_t raw[8]; | |
49 struct { | |
50 uint8_t sec : 4; | |
51 uint8_t sec10 : 3; // Seconds (0-59) | |
52 uint8_t ch : 1; // Clock enable (1 = off) | |
53 | |
54 uint8_t min : 4; | |
55 uint8_t min10 : 3; // Minutes (0-59) | |
56 uint8_t pad0 : 1; | |
57 | |
58 uint8_t hour : 4; | |
59 uint8_t hour10 : 1; // Hours | |
60 uint8_t pmam : 1; // AM/PM => 1 = PM or extra bit for hour10 | |
61 uint8_t s1224 : 1; // 1 = 12 hour mode | |
62 uint8_t pad1 : 1; | |
63 | |
64 uint8_t dow : 3; // Day of the week (1-7) | |
65 uint8_t pad2 : 5; | |
66 | |
67 uint8_t day : 4; | |
68 uint8_t day10 : 2; // Day of the month (1-31) | |
69 uint8_t pad3 : 2; | |
70 | |
71 uint8_t month : 4; | |
72 uint8_t month10 : 1; | |
73 uint8_t pad4 : 3; // Month (1-12) | |
74 | |
75 uint8_t year : 4; | |
76 uint8_t year10 : 4; // Year (0-99) | |
77 | |
78 uint8_t rs : 2; // Rate select | |
79 uint8_t pad6 : 2; | |
80 uint8_t sqwe : 1; // Square wave enable | |
81 uint8_t pad5 : 2; | |
82 uint8_t out : 1; // Output control enable | |
83 } split; | |
84 } ds1307raw_t; | |
19 | 85 |
86 typedef int32_t time_t; | |
87 | |
0 | 88 int ds1307_init(void); |
89 int8_t iic_read(uint8_t *data, uint8_t len, uint8_t adr, uint8_t sla); | |
90 int8_t iic_write(uint8_t *data, uint8_t len, uint8_t adr, uint8_t sla); | |
91 int8_t ds1307_gettod(ds1307raw_t *time); | |
92 int8_t ds1307_settod(char *date); | |
19 | 93 void ds1307_printtime(ds1307_t *time, const char *leader, const char *trailer); |
94 void ds1307_printnow(const char *leader, const char *trailer); | |
95 void ds1307_cook(ds1307raw_t *raw, ds1307_t *cooked); | |
96 time_t ds1307_totimet(ds1307_t *time); | |
97 time_t ds1307_time(void); |