Разрабатываю проект с использованием https://amperka.ru/product/troyka-imu-10-dof и https://amperka.ru/product/troyka-rtc (I2C). Использую библиотеки TroykaRTC и TroykaIMU. Не могу организовать одновременную работу устройств. По отдельности они работают, а вместе не хотят (IMU работает, а RTC нет). Как правильно выделить устройства? Пробовал указывать адрес при создании IMU — не помогло. Для RTC такого функционала не нашел. I2C device found at address: 0x18, 0x1C, 0x50, 0x5C, 0x68. UPD: Важная деталь. На модуле TroykaIMU нет перемычек для смены адреса. Код (C++): #include <Wire.h> #include <TroykaRTC.h> #include <TroykaIMU.h> RTC clock; Accelerometer accelerometer; // (0x18); void setup() { clock.begin(); accelerometer.begin(); } void loop() { clock.read(); Serial.print(clock.getSecond()); Serial.print(" "); Serial.println(accelerometer.readAccelerationAX()); }
Да блин... Все оказалось еще хуже... Адреса точно пересекаются. Для RTC — 0x50, 0x68, для IMU — 0x18, 0x1C, 0x5C, 0x68. Собсно часы на 0x68 и все. Поменять адрес на часах нельзя, а TroykaIMU у меня первой версии, без перемычек. Есть два варианта решения, как я понял: TCA9548A или программный I2C. TCA9548A, что поделаешь, уже заказал. Soft I2C — пока работающего решения для RTC не нашел.
И третий вариант -- припаять проводок для смены адреса гироскопа. Но нужно точно понимать, куда паять концы проводка, чтобы не сжечь гироскоп и всю плату. Резистор R7 и конденсатор C3 на плате присутствуют? Судя по схеме (правда на новый модуль с перемычками) R7 -- это подтяжка выбора адреса, который как раз и задаёт адрес 0х68 (4-ый вывод гироскопа), а С3 -- это выход стабилизатора 3.3V. Перемычка на новых платах как раз и соединяет 3.3V с 4-ым выводом гироскопа и резистором R7. UPD: вместо конденсатора C3 можно подпаять к блокирующему конденсатору, он скорее всего стоит рядом с первым выводом гироскопа.
К сожалению, вариант «скорее всего» мне не подходит. Я лучше куплю мультиплексор за 250 руб, чем потом новый сенсор за 2 тыс. Без точного даташита я туда не сунусь, а на старый IMU его, как я понимаю, уже не найти...