From 7a586e86433e84fde77c58c884eb2c3897951d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sun, 8 Nov 2020 10:41:00 +0100 Subject: [PATCH] Create library for PCF8583 (RTC) and enable it --- main.c | 13 +++++++++++++ rtc.c | 37 +++++++++++++++++++++++++++++++++++++ rtc.h | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 rtc.c create mode 100644 rtc.h diff --git a/main.c b/main.c index 42bb0cc..0c1242a 100644 --- a/main.c +++ b/main.c @@ -1,13 +1,18 @@ #include #include +#include #include "i2c.h" +#include "rtc.h" #include "led.h" #define I2C_BITRATE 100000UL // 100kHz +#define RTC_I2C_ADDR 0xA2 + int main() { i2c_init(I2C_BITRATE); + rtc_int0_init(); led_init(); sei(); @@ -20,4 +25,12 @@ int main() { } +} + +ISR(INT0_vect) +{ + struct time curr_time = rtc_read_time(RTC_I2C_ADDR); + led_hour = curr_time.hour; + led_minute = curr_time.minute; + led_second = curr_time.second; } \ No newline at end of file diff --git a/rtc.c b/rtc.c new file mode 100644 index 0000000..77ff5ae --- /dev/null +++ b/rtc.c @@ -0,0 +1,37 @@ +#include +#include "rtc.h" +#include "i2c.h" + +void rtc_int0_init(void) +{ + INT0_DIR &= ~(1<> 4) & 0x0F) * 10) + ((bcd) & 0x0F)) + +struct time +{ + uint8_t hour; + uint8_t minute; + uint8_t second; +}; + +void rtc_int0_init(void); +void rtc_int1_init(void); +void rtc_set_time(uint8_t part, uint8_t value); +struct time rtc_read_time(void); + +#endif \ No newline at end of file