Скорость обновления данных MPU6050 GY-521

Тема в разделе "Arduino & Shields", создана пользователем Garik_can, 17 сен 2018.

  1. Garik_can

    Garik_can Нуб

    Как быстро MPU6050 может отправлять данные через i2c? Попробовал узнать опытным путём, но мне кажется что библиотека Wire сильно тормозит(слышал что библиотеки бывают плохо оптимизированы). В скетче просто опрашиваются сырые данные с оси Х и выводиться прошедшее время в порт в микросекундах. В идеале надо уложиться в интервал между измерениями в 100-200 микросекунд. Реально ли это или я как всегда прошу невозможного? Сейчас интервал между измерениями 1700 микросекунд, но это очень много для моих целей.
    Код (C++):
    #include<Wire.h>
    const int MPU_addr = 0x68; // I2C address of the MPU-6050
    int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
    unsigned long tume;
    int tyme;

    void setup() {
      Wire.begin();
      Wire.beginTransmission(MPU_addr);
      Wire.write(0x6B);  // PWR_MGMT_1 register
      Wire.write(0);     // set to zero (wakes up the MPU-6050)
      Wire.endTransmission(true);
      Serial.begin(2000000);
    }

    void loop() {
      Wire.beginTransmission(MPU_addr);
      Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
      Wire.endTransmission(false);
      Wire.requestFrom(MPU_addr, 14, true); // request a total of 14 registers
      AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
    GyX = Wire.read() << 8 | Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
    tyme = micros() - tume;
      Serial.println(tyme);
      tume = micros();
    }
     
  2. DetSimen

    DetSimen Guest

    попробуй после begin втавить
    Wire.setClock(400000);
    и снова померий
     
  3. Garik_can

    Garik_can Нуб

    Что это за магия? Теперь промежуток в 300 микросекунд. Спасибо
     
  4. DetSimen

    DetSimen Guest

    это скорость I2C шины. может быть либо 100 кГц (по умолчанию), либо 400 кГц.
     
  5. parovoZZ

    parovoZZ Гуру

    MPU 6000 по SPI на мегагерце работает.