/*
|
|
|
|
I2C MODULE
|
|
|
|
Copyright (C) 2017 by Xose Pérez <xose dot perez at gmail dot com>
|
|
|
|
*/
|
|
|
|
#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
|