/* I2C MODULE Copyright (C) 2017 by Xose PĂ©rez */ #if I2C_SUPPORT #include "brzo_i2c.h" bool i2cCheck(unsigned char address) { brzo_i2c_start_transaction(address, I2C_SCL_FREQUENCY); brzo_i2c_ACK_polling(1000); return brzo_i2c_end_transaction(); } void i2cScan() { unsigned char nDevices = 0; for (unsigned char address = 1; address < 128; address++) { unsigned char response = i2cCheck(address); if (response == 0) { DEBUG_MSG_P(PSTR("[I2C] Device found at address 0x%02X\n"), address); nDevices++; } else if (response != 32) { //DEBUG_MSG_P(PSTR("[I2C] Unknown error at address 0x%02X\n"), address); } } if (nDevices == 0) DEBUG_MSG_P(PSTR("[I2C] No devices found\n")); } void i2cSetup() { brzo_i2c_setup(I2C_SDA_PIN, I2C_SCL_PIN, I2C_CLOCK_STRETCH_TIME); i2cScan(); } #endif