Hardware Reference
In-Depth Information
23 /
∗
24
Read : [ S ] 0xB1 <regaddr> <rtcbuf[0]> . . . <rtcbuf[n−1]> [P]
∗
25
/
26 static int
27 i2c_rd_rtc(ds1307_rtc_regs
∗
rtc) {
28 struct i2c_rdwr_ioctl_data msgset;
29 struct i2c_msg iomsgs[2];
30 char zero = 0x00; /
∗
Register 0x00
/
∗
∗
31
32 iomsgs[0].addr = 0x68; /
DS1307
/
∗
∗
33 iomsgs[0].flags = 0; /
Write
/
∗
∗
34 iomsgs[0].buf = &zero; /
Register 0x00
/
∗
∗
35 iomsgs[0].len = 1;
36
37 iomsgs[1].addr = 0x68; /
DS1307
/
∗
∗
38 iomsgs[1].flags = I2C_M_RD; /
Read
/
∗
∗
39 iomsgs[1].buf = (char
)rtc;
40 iomsgs[1].len = size of
∗
rtc;
∗
41
42 msgset.msgs=iomsgs;
43 msgset.nmsgs=2;
44
45 return ioctl(i2c_fd,I2C_RDWR,&msgset);
46 }
47
48 /
∗
49
Main program :
∗
50
/
51 int
52 main(int argc,char
∗
argv) {
53 ds1307_rtc_regs rtc; /
∗∗
8 DS1307 Register Values
/
∗
∗
54 struct tm t0, t1; /
Unix date / time values
/
∗
∗
55 char
date_format = getenv("DS1307_FORMAT");
56 char dtbuf[256]; /
∗
Formatted date/time
/
∗
∗
57 int rc; /
Return code
/
∗
∗
58
59 /
∗
60
If no environment variable named DS1307_FORMAT, then
∗
61
set a default date/time format.
∗
62
/
63 if ( !date_format )
64 date_format = "%Y−%m−%d%H:%M:%S(%A)";
65
66 /
∗
∗
67
Initialize I2C and clear rtc and t1 structures:
∗
68
/
69 i2c_init(node); /
∗
Initialize for I2C
/
∗
∗