AlanSbor 0 7 июня, 2023 Опубликовано 7 июня, 2023 · Жалоба 7 часов назад, xvr сказал: Не они сами, а то, что за ними включено - ваши LIS2MDL. Ведь TCA9548A это не мосты I2C, а просто ключи. Все каналы, что были включены, напрямую подключаются к I2C мастера, а не обрабатываются самой TCA9548A, т.е. если вы в дальнейшем не образаетесь к TCA9548A её каналы всё равно остаются подключёнными к I2C. Шина от esp к TCA подключена по даташиту с подтягивающими резисторами как и каждый датчик шиной подтянут резисторами. У меня одна шина 21-22 работает только с мультиплексорами и датчиками. Вторая занята другим датчиком. Вот во время esp32/TCA9548 в программе без freertos, опрашивается один датчик Вот 8 инстансов под freertos обмен esp32/TCA9548 чисто в loop без task Вот одна task под freertos обмен esp32/TCA9548 Тоже само только от другого датчика ответ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 7 июня, 2023 Опубликовано 7 июня, 2023 · Жалоба Судя по диаграммам из датчиков читается нечто небольшое и переменное (+/- 0). А что вы из них ожидаете? PS. В DS написано: Quote The value of the magnetic field is expressed in two’s complement. Т.е. это числа со знаком, а не unsigned, как трактуются в Adafruit классе. Похоже бага в Adafruit_LIS2MDL Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanSbor 0 8 июня, 2023 Опубликовано 8 июня, 2023 · Жалоба В 07.06.2023 в 20:15, xvr сказал: Судя по диаграммам из датчиков читается нечто небольшое и переменное (+/- 0). А что вы из них ожидаете? PS. В DS написано: Т.е. это числа со знаком, а не unsigned, как трактуются в Adafruit классе. Похоже бага в Adafruit_LIS2MDL Нашел разницу в работе с Freertos и без него. Под freertos бардак с протоколом именно в библиотеке Adafruit_LIS2MDL Записано, будем работать с 71 адресом и каналом 0x1 Дальше зачем то библиотека пытается читать 71 адрес 2 раза на что получает по шапке. Через 100мс (задана задержка мной что бы легче искать было ) получаем ответ от датчика Данные нормально идут с датчика, вплоть до 1МГц, TCA9548A нормально держит. Дальше меняется канал на следующий и все происходит по кругу. Причем смотрел на всех каналах, датчики реально данные отдают, почему библиотека не успевает их вытаскивать, для меня малопонятно. На обычной программе без FreeRTOS все работает как и положено, задали канал, обратились по адресу датчика, читаем значения с датчика. Все бы хорошо, но и тут, тоже что и под FREERTOS - датчики данные отдают, но библиотека их не читает. Проблема именно в библиотеке, она слишком медленная и тормозная для моих целей. Как проблему добью, отпишусь о результате. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanSbor 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба Проблема решилась. Библиотека Adafruit оказалась недоделанной. Она проводит инициализацию только одного датчика, остальные игнорирует. Пришлось переписать библиотеку с принудительной инициализацией всех датчиков и все завелось 🙂 Тему можно закрывать, всем спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться