Comments 14
Спасибо, пригодится.
0
>> каждое устройство на линии отозвалось дважды подряд, при чем, не на свой адрес
На свой, на свой. )
Восьмой бит — бит записи. Соответственно девайс отзывается только на первые семь бит собственно адреса, не зависимо от состояния восьмого бита(игнорируя его).
Таким образом, циклом for(i = 0; i<255; i++) {...} вы опросили 127 адресов, спрашивая каждый из них дважды.
P.S. Ну а за либу спасибо. Пригодится в качестве шпаргалки как минимум )
На свой, на свой. )
Восьмой бит — бит записи. Соответственно девайс отзывается только на первые семь бит собственно адреса, не зависимо от состояния восьмого бита(игнорируя его).
Таким образом, циклом for(i = 0; i<255; i++) {...} вы опросили 127 адресов, спрашивая каждый из них дважды.
P.S. Ну а за либу спасибо. Пригодится в качестве шпаргалки как минимум )
+3
Абсолютно верно) имелось ввиду, не тот адрес, который в библиотеках указан либо в даташите. Это я больше с учебной целью описал, ведь даже на оф сайте ардуино сканируют без сдвига, просто 0-127.
0
А, ну с выводом в HEX без сдвига все понятно. Справедливости ради, в даташитах зачастую все-таки указывают адреса не в виде байта в HEX-представлении, а тупо в виде последовательности битов. Иногда и меньше, чем семь штук, с последующей простыней описания, как конфигурятся остальные биты…
>> ведь даже на оф сайте ардуино...
Ну ардуино, с их «lazy coding», это конечно показатель, ага )
>> ведь даже на оф сайте ардуино...
Ну ардуино, с их «lazy coding», это конечно показатель, ага )
0
Использование malloc — это очень не гуд, как будто бы не для микроконтроллера
+3
Понимаю, но варианты какие? Держать большой буфер локальный и копировать туда, либо вручную слать байты, как в Wire. Второй вариант слабо совместим с идеей держать либу на HAL.
0
К слову, вчера прочитал статью habrahabr.ru/post/255661 и с желанием потестить фильтр Маджвика — портировал HMC5883L. Сегодня пушну в репозиторий
0
Сказано — сделано )
github.com/anvol/i2cdevlib/tree/master/STM32/HMC5883L
github.com/anvol/i2cdevlib/tree/master/STM32/HMC5883L
+1
Попробую использовать ваш порт :) Разбираюсь в stm32, уже через UART его к компу прикрутил (stm32vldiscovery), теперь подцепил датчик (gy-88), даже кажется пообщался с ним по i2c, но на входе данных с акселерометра чтот то странное идет. Делал все на колене, а тут нашлась ваша либа. Очень удачно на HAL, старые API изучать сначала не хочется, лучше сразу современные использовать, так что попробуем. Спасибо за труд, надеюсь действительно разобраться побыстрее за счет готового инструмента.
0
Спасибо, очень приятно узнать, что труд не пропадает! Немного запоздал я с ответом..)
Мои студенты с нулю подняли гиростабилизированную двухколесную платформу используя этот порт. Удалось даже запустить DMP на чипе MPU6050, правда там нашли ряд костылей и багов мейнстрим ветки.
Мои студенты с нулю подняли гиростабилизированную двухколесную платформу используя этот порт. Удалось даже запустить DMP на чипе MPU6050, правда там нашли ряд костылей и багов мейнстрим ветки.
0
Sign up to leave a comment.
Порт i2cdevlib на STM32 HAL