--- /dev/null
+/*\r
+ Copyright (C) Dean Camera, 2010.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+#ifndef _DS1307_H_\r
+#define _DS1307_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+\r
+ #include <LUFA/Drivers/Peripheral/TWI.h>\r
+\r
+ /* Type Defines: */\r
+ typedef struct\r
+ {\r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Sec : 4;\r
+ unsigned int TenSec : 3;\r
+ unsigned int CH : 1;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte1;\r
+ \r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Min : 4;\r
+ unsigned int TenMin : 3;\r
+ unsigned int _RESERVED : 1;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte2;\r
+ \r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Hour : 4;\r
+ unsigned int TenHour : 2;\r
+ unsigned int TwelveHourMode : 1;\r
+ unsigned int _RESERVED : 1;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte3;\r
+ } DS1307_TimeRegs_t;\r
+\r
+ typedef struct\r
+ {\r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Day : 4;\r
+ unsigned int TenDay : 2;\r
+ unsigned int _RESERVED : 2;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte1;\r
+\r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Month : 4;\r
+ unsigned int TenMonth : 1;\r
+ unsigned int _RESERVED : 3;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte2;\r
+ \r
+ union\r
+ {\r
+ struct\r
+ {\r
+ unsigned int Year : 4;\r
+ unsigned int TenYear : 4;\r
+ };\r
+ \r
+ uint8_t IntVal;\r
+ } Byte3;\r
+ } DS1307_DateRegs_t;\r
+\r
+ /* Macros: */\r
+ #define DS1307_TIMEREG_START 0x00\r
+ #define DS1307_DATEREG_START 0x04\r
+ \r
+ #define DS1307_ADDRESS_READ 0b11010001\r
+ #define DS1307_ADDRESS_WRITE 0b11010000\r
+\r
+ /* Function Prototypes: */\r
+ void DS1307_Init(void);\r
+ \r
+ void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year);\r
+ void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second);\r
+ \r
+ void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year);\r
+ void DS1307_GetTime(uint8_t* Hour, uint8_t* Minute, uint8_t* Second);\r
+\r
+#endif\r