From 32f34d75d8080cb6d0eb5c9b713f52529a9eca62 Mon Sep 17 00:00:00 2001 From: FearlessSpiff Date: Mon, 6 Nov 2023 17:23:21 +0100 Subject: [PATCH] making a test by scanning i2c addresses --- app/module/drivers/sensor/pinnacle/pinnacle.c | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/module/drivers/sensor/pinnacle/pinnacle.c b/app/module/drivers/sensor/pinnacle/pinnacle.c index 921021c0d55..8635787c5ec 100644 --- a/app/module/drivers/sensor/pinnacle/pinnacle.c +++ b/app/module/drivers/sensor/pinnacle/pinnacle.c @@ -79,10 +79,26 @@ static int pinnacle_write(const struct device *dev, const uint8_t addr, const ui return ret; #elif DT_INST_ON_BUS(0, i2c) const struct i2c_dt_spec *spec = &config->bus; - LOG_WRN("i2c addr: %02x", spec->addr); - LOG_WRN("reg addr: %02x", PINNACLE_WRITE | addr); - LOG_WRN("device addr: %02x", spec->addr << 1); + uint8_t nDevices = 0; + LOG_WRN("Scanning..."); + + for (uint8_t address = 1; address < 127; address++) { + int ret; + ret = i2c_reg_write_byte(spec->bus, address << 1, PINNACLE_WRITE | addr, val); + if (ret < 0) { + // LOG_WRN("Nothing found at 0x%02X\n", address); + } else { + LOG_WRN("I2C device found at address 0x%02X\n", address); + nDevices++; + } + k_msleep(2); + } + + if (nDevices == 0) + LOG_WRN("No I2C devices found\n"); + else + LOG_WRN("done\n"); return i2c_reg_write_byte(spec->bus, spec->addr << 1, PINNACLE_WRITE | addr, val); // return i2c_reg_write_byte_dt(&config->bus, PINNACLE_WRITE | addr, val);