/* ========================================================================== */ /* I2C.h */ /* ========================================================================== */ /** * @file I2C.h * @author wehrberger * @date 31.05.2025 * * @brief Schnittstelle für einen minimalen blockierenden I²C-Master-Treiber. */ #ifndef I2C_H #define I2C_H #include #include /** * @brief Initialisiert das I²C-Modul als Master (SMCLK/20 → 50 kHz). */ void I2C_init(void); /** * @brief Sendet ein Datenpacket an einen I²C-Slave. * * @param slaveAddress 7-Bit I²C-Adresse des Zielgeräts. * @param data Zeiger auf zu sendende Bytes. * @param length Anzahl der zu sendenden Bytes. */ void I2C_write(uint8_t slaveAddress, char data[], uint8_t length); /** * @brief Liest ein einzelnes Byte aus einem Register eines I²C-Slaves. * * Führt zunächst einen Schreibvorgang durch, um die Registeradresse zu senden, * und liest dann per Repeated START ein Byte zurück. * * @param slaveAddress 7-Bit I²C-Adresse des Zielgeräts. * @param registerAddress Adresse des auszulesenden Registers. * @return Das gelesene Byte. */ char I2C_read_reg(uint8_t slaveAddress, uint8_t registerAddress); #endif /* I2C_H */