Gy9250 и программный i2c

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

Пытаюсь запустить GY9250 по програмному i2c. Доходит до mpu.setup, но условие в цикле не выполняется т.к. mpu.available() = 0. Код такой

#include <MPU9250.h>
#include <SoftWire.h>

MPU9250_<SoftWire> mpu;
SoftWire sw(A1, A2); //SDA SCL

char swTxBuffer[64];
char swRxBuffer[64];

void setup() {
  sw.setTxBuffer(swTxBuffer, sizeof(swTxBuffer));
  sw.setRxBuffer(swRxBuffer, sizeof(swRxBuffer));
  sw.setDelay_us(5);
  sw.setTimeout(1000);
  sw.begin();
  Serial.begin(115200);
  Serial.print("Init.... ");
  
  MPU9250Setting setting;
  setting.accel_fs_sel = ACCEL_FS_SEL::A16G;
  setting.gyro_fs_sel = GYRO_FS_SEL::G2000DPS;
  setting.mag_output_bits = MAG_OUTPUT_BITS::M16BITS;
  setting.fifo_sample_rate = FIFO_SAMPLE_RATE::SMPL_200HZ;
  setting.gyro_fchoice = 0x03;
  setting.gyro_dlpf_cfg = GYRO_DLPF_CFG::DLPF_41HZ;
  setting.accel_fchoice = 0x01;
  setting.accel_dlpf_cfg = ACCEL_DLPF_CFG::DLPF_45HZ;

  mpu.setup(0x68, setting, sw);
  Serial.println("done");
  Serial.println(mpu.isConnectedMPU9250());
  pinMode(13, OUTPUT);
}

void loop() {
  if (mpu.update()) {
    Serial.print(mpu.getYaw()); Serial.print(" ");
    Serial.print(mpu.getPitch()); Serial.print(" ");
    Serial.println(mpu.getRoll());
  }

  delay(20);
}

Анализатор после mpu.setup молчит. Помогите запустить :)

PS проблему также можно решить сделав ардуину ведомым устройством по программному i2c на частоте 400кгц.

b707
Offline
Зарегистрирован: 26.05.2017

А где цикл?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А по аппаратному i2c mpu запускается?

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

andriano пишет:

А по аппаратному i2c mpu запускается?

Да, без проблем

b707 пишет:
А где цикл?

loop()?

sadman41
Offline
Зарегистрирован: 19.10.2016

Была у меня давненько проблема с одним сенсором и SoftWire.
Оказалось, что в библиотеке проблема. Почитал issues на гитхабе, обновился и все поехало.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

когда смотришь как устроен девайс и какими задачами занимается внутренний микропроцессор все остальные проблемы его использования кажутся такими мелкими )))

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

sadman41 пишет:
Была у меня давненько проблема с одним сенсором и SoftWire. Оказалось, что в библиотеке проблема. Почитал issues на гитхабе, обновился и все поехало.

Библиотека самая новая. Вчера скачал

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Не, ну если аппаратный работает, то остается только два варианта:

- ошибка в библиотеке,

- ошибка в использовании библиотеки.

То, новая библиотека или старая, и когда последний раз скачана, не имеет никакой роли.

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

andriano пишет:

- ошибка в использовании библиотеки.

По примеру с гитхаба делаю. 

К счастью я уже придумал как перевести эту часть на SPI.