diff options
Diffstat (limited to 'Projects/TempDataLogger/Lib/RTC.h')
| -rw-r--r-- | Projects/TempDataLogger/Lib/RTC.h | 126 | 
1 files changed, 126 insertions, 0 deletions
| diff --git a/Projects/TempDataLogger/Lib/RTC.h b/Projects/TempDataLogger/Lib/RTC.h new file mode 100644 index 0000000000..f35b8ff1ec --- /dev/null +++ b/Projects/TempDataLogger/Lib/RTC.h @@ -0,0 +1,126 @@ +/* +     Copyright (C) Dean Camera, 2017. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +#ifndef _RTC_H_ +#define _RTC_H_ + +	/* Includes: */ +		#include <avr/io.h> + +		#include <LUFA/Drivers/Peripheral/TWI.h> + +		#include "Config/AppConfig.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 Sec            : 4; +					unsigned TenSec         : 3; +					unsigned CH             : 1; +				} Fields; + +				uint8_t IntVal; +			} Byte1; + +			union +			{ +				struct +				{ +					unsigned Min            : 4; +					unsigned TenMin         : 3; +					unsigned Reserved       : 1; +				} Fields; + +				uint8_t IntVal; +			} Byte2; + +			union +			{ +				struct +				{ +					unsigned Hour            : 4; +					unsigned TenHour         : 2; +					unsigned TwelveHourMode  : 1; +					unsigned Reserved        : 1; +				} Fields; + +				uint8_t IntVal; +			} Byte3; + +			union +			{ +				struct +				{ +					unsigned DayOfWeek       : 3; +					unsigned Reserved        : 5; +				} Fields; + +				uint8_t IntVal; +			} Byte4; + +			union +			{ +				struct +				{ +					unsigned Day             : 4; +					unsigned TenDay          : 2; +					unsigned Reserved        : 2; +				} Fields; + +				uint8_t IntVal; +			} Byte5; + +			union +			{ +				struct +				{ +					unsigned Month           : 4; +					unsigned TenMonth        : 1; +					unsigned Reserved        : 3; +				} Fields; + +				uint8_t IntVal; +			} Byte6; + +			union +			{ +				struct +				{ +					unsigned Year            : 4; +					unsigned TenYear         : 4; +				} Fields; + +				uint8_t IntVal; +			} Byte7; +		} DS1307_DateTimeRegs_t; + +	/* Macros: */ +		/** TWI address of the DS1307 device on the bus. */ +		#define DS1307_ADDRESS       0xD0 + +	/* Function Prototypes: */ +		void RTC_Init(void); +		void RTC_Tick500ms(void); +		bool RTC_SetTimeDate(const TimeDate_t* NewTimeDate); +		bool RTC_GetTimeDate(TimeDate_t* const TimeDate); + +#endif + | 
