0 голосов

Здравствуйте!

Можно ли увеличить скорость работы Расширителя портов I²C (Troyka-модуль). У меня к нему подключено 6 одинаковых модулей, даже при отмене всех delay, скорость срабатывания для каждого датчика отдельно примерно секунда. Нужно значительно быстрей.

Спасибо!

Используемый код:

#include <TroykaI2CHub.h>
#include <Wire.h>
#include <Adafruit_TCS34725.h>

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

TroykaI2CHub splitter;

void setup() {
  Serial.begin(9600);
  Wire.begin();
}
void loop() {
  for (int i = 1; i < 7; i++) {
    splitter.setBusChannel(i);
    uint16_t r, g, b, c, colorTemp, lux;
    tcs.getRawData(&r, &g, &b, &c);
    lux = tcs.calculateLux(r, g, b);
    Serial.print(i);
    Serial.print(" :");
    Serial.println(lux, DEC);
    startScanerI2C();
    tcs.begin();
  }
}

void startScanerI2C() {
  byte state;
  byte address;
  int countDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    state = Wire.endTransmission();
    if (state == 0) {
      if (address < 16) {
        Serial.print("0");
      }
      countDevices++;
    }
  }
  if (countDevices == 0) {
    Serial.println("No I²C devices found");
  }
}

(5 баллов) 4
исправил

1 Ответ

0 голосов
 
Лучший ответ

Можно ли увеличить скорость работы Расширителя портов I²C

Можно. Но придётся изучить регистры блока I2C и отказаться от линейного подхода к программированию. Также не забывать, что I2C, скорее всего, работает на 100 кГц. А это очень медленно. В единицу времени можно работать только с одним датчиком. Пока не получен от него ответ (или не получен) и мастером не выставлен на шине NOACK, переходить на общение с другими датчиками нельзя.

(2.4 тыс. баллов) 5 21 55
выбран
Спасибо!!  Буду думать.
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. Un_ka

    54 балл(ов)

  2. parovoZZ

    40 балл(ов)

  3. Act_Shi

    10 балл(ов)

  4. adel

    6 балл(ов)

  5. Павел Бао

    2 балл(ов)

  6. ivanlukomskiy

    1 балл(ов)

Награды месяца
1-е место: Дальномер Benewake TFmini Plus LIDAR
2-е место: Дальномер Benewake TFmini LIDAR
3-е место: Инфракрасный дальномер Sharp (4-30 см)

...