/*
- Copyright (C) Dean Camera, 2010.
-
+ Copyright (C) Dean Camera, 2012.
+
dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
+ www.lufa-lib.org
*/
#ifndef _DS1307_H_
/* Type Defines: */
typedef struct
{
+ uint8_t Hour;
+ uint8_t Minute;
+ uint8_t Second;
+ uint8_t Day;
+ uint8_t Month;
+ uint8_t Year;
+ } TimeDate_t;
+
+ typedef struct
+ {
union
{
struct
{
- unsigned int Sec : 4;
- unsigned int TenSec : 3;
- unsigned int CH : 1;
+ unsigned Sec : 4;
+ unsigned TenSec : 3;
+ unsigned CH : 1;
} Fields;
-
+
uint8_t IntVal;
} Byte1;
-
+
union
{
struct
{
- unsigned int Min : 4;
- unsigned int TenMin : 3;
- unsigned int _RESERVED : 1;
+ unsigned Min : 4;
+ unsigned TenMin : 3;
+ unsigned 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;
+ unsigned Hour : 4;
+ unsigned TenHour : 2;
+ unsigned TwelveHourMode : 1;
+ unsigned 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;
+ unsigned DayOfWeek : 3;
+ unsigned Reserved : 5;
} Fields;
-
+
uint8_t IntVal;
- } Byte1;
+ } Byte4;
union
{
struct
{
- unsigned int Month : 4;
- unsigned int TenMonth : 1;
- unsigned int _RESERVED : 3;
+ unsigned Day : 4;
+ unsigned TenDay : 2;
+ unsigned Reserved : 2;
} Fields;
-
+
uint8_t IntVal;
- } Byte2;
-
+ } Byte5;
+
union
{
struct
{
- unsigned int Year : 4;
- unsigned int TenYear : 4;
+ unsigned Month : 4;
+ unsigned TenMonth : 1;
+ unsigned Reserved : 3;
} Fields;
-
+
uint8_t IntVal;
- } Byte3;
- } DS1307_DateRegs_t;
+ } Byte6;
+
+ union
+ {
+ struct
+ {
+ unsigned Year : 4;
+ unsigned TenYear : 4;
+ } Fields;
+
+ uint8_t IntVal;
+ } Byte7;
+ } DS1307_DateTimeRegs_t;
/* Macros: */
- #define DS1307_TIMEREG_START 0x00
- #define DS1307_DATEREG_START 0x04
-
- #define DS1307_ADDRESS_READ 0b11010001
- #define DS1307_ADDRESS_WRITE 0b11010000
+ #define DS1307_ADDRESS 0xD0
/* 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);
+ bool DS1307_SetTimeDate(const TimeDate_t* NewTimeDate);
+ bool DS1307_GetTimeDate(TimeDate_t* const TimeDate);
#endif
+