blob: 87c6229f662401146f1e8a202a50a9b31ee2afb6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
/*
Copyright (C) Dean Camera, 2010.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
#ifndef _DS1307_H_
#define _DS1307_H_
/* Includes: */
#include <avr/io.h>
#include <LUFA/Drivers/Peripheral/TWI.h>
/* Type Defines: */
typedef struct
{
union
{
struct
{
unsigned int Sec : 4;
unsigned int TenSec : 3;
unsigned int CH : 1;
} Fields;
uint8_t IntVal;
} Byte1;
union
{
struct
{
unsigned int Min : 4;
unsigned int TenMin : 3;
unsigned int Reserved : 1;
} Fields;
uint8_t IntVal;
} Byte2;
union
{
struct
{
unsigned int Hour : 4;
unsigned int TenHour : 2;
unsigned int TwelveHourMode : 1;
unsigned int Reserved : 1;
} Fields;
uint8_t IntVal;
} Byte3;
} DS1307_TimeRegs_t;
typedef struct
{
union
{
struct
{
unsigned int Day : 4;
unsigned int TenDay : 2;
unsigned int Reserved : 2;
} Fields;
uint8_t IntVal;
} Byte1;
union
{
struct
{
unsigned int Month : 4;
unsigned int TenMonth : 1;
unsigned int Reserved : 3;
} Fields;
uint8_t IntVal;
} Byte2;
union
{
struct
{
unsigned int Year : 4;
unsigned int TenYear : 4;
} Fields;
uint8_t IntVal;
} Byte3;
} DS1307_DateRegs_t;
/* Macros: */
#define DS1307_TIMEREG_START 0x00
#define DS1307_DATEREG_START 0x04
#define DS1307_ADDRESS_READ 0b11010001
#define DS1307_ADDRESS_WRITE 0b11010000
/* Function Prototypes: */
void DS1307_SetDate(const uint8_t Day,
const uint8_t Month,
const uint8_t Year);
void DS1307_SetTime(const uint8_t Hour,
const uint8_t Minute,
const uint8_t Second);
void DS1307_GetDate(uint8_t* const Day,
uint8_t* const Month,
uint8_t* const Year);
void DS1307_GetTime(uint8_t* const Hour,
uint8_t* const Minute,
uint8_t* const Second);
#endif
|