From ae15c16b3485cdb600eca573c17e0a46b2f361b8 Mon Sep 17 00:00:00 2001 From: andre Ebersold Date: Mon, 23 Oct 2023 22:46:56 +0200 Subject: [PATCH] Started Devs for I2C support on AVR --- HAL/AVR/AvrI2C.cpp | 36 ++++++++++++++++++++++++++++++++++++ HAL/AVR/AvrI2C.h | 15 +++++++++++++++ HAL/Abstract/II2C.h | 12 ++++++++++++ HAL/Drivers/DS3231.cpp | 9 +++++++++ HAL/Drivers/DS3231.h | 16 ++++++++++++++++ README | 6 ++++++ setupenv.bat | 6 ++++++ 7 files changed, 100 insertions(+) create mode 100644 HAL/AVR/AvrI2C.cpp create mode 100644 HAL/AVR/AvrI2C.h create mode 100644 HAL/Abstract/II2C.h create mode 100644 HAL/Drivers/DS3231.cpp create mode 100644 HAL/Drivers/DS3231.h create mode 100644 setupenv.bat diff --git a/HAL/AVR/AvrI2C.cpp b/HAL/AVR/AvrI2C.cpp new file mode 100644 index 0000000..042213f --- /dev/null +++ b/HAL/AVR/AvrI2C.cpp @@ -0,0 +1,36 @@ +#include +#include + +#include "Utils/StdTypes.h" +#include "HAL/Abstract/II2C.h" +#include "AVR/AvrI2C.h" + +#ifndef F_CPU +#define F_CPU 16000000 +#endif +#define SCL_CLOCK 50000 + +void AvrI2C::init() +{ + uint8_t twst; + TWSR = 0; // no prescaler + TWBR = ((F_CPU/SCL_CLOCK)-16)/2; + TWCR = (1<<(TWINT))|(1<