diff options
author | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
commit | 60b30c036397cb5627fa374bb930794b225daa29 (patch) | |
tree | e156c2d6b27f01db6985f2cc560c9c345d48fdac /Projects/TempDataLogger/Lib/RTC.h | |
download | qmk_firmware-60b30c036397cb5627fa374bb930794b225daa29.tar.gz |
Squashed 'lib/lufa/' content from commit 385d40300
git-subtree-dir: lib/lufa
git-subtree-split: 385d4030035dbaf41591309dbde47653bd03841b
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 000000000..f35b8ff1e --- /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 + |