Привет!
Судя по документации, датчик BNO055 для каждой оси выдает 16-разрядные данные (16 разрядов - это два байта - двухбайтовое машинное слово данных) через два 8-разрядных регистра. Регистр, в названии которого есть аббревиатура LSB (Least Significant Byte) - это регистр с младшим байтом двухбайтового слова данных. Соответственно в регистре с аббревиатурой MSB (Most Significant Byte) хранится старший байт слова данных.
Данные по шине I2C передаются порциями по 1 байт (8 бит). Чтобы собрать двухбайтовое слово данных из однобайтовых порций, получаемых через I2C, надо байт с MSB умножить на 256 и затем прибавить к результату байт LSB. В итоге у нас получится двухбайтовое машинное слово с исходными данными. Блок-схема алгоритма на картинке ниже:
Умножение на 256 можно заменить операцией байтового сдвига влево на 8 бит. Обычно процессор выполняет сдвиг быстрее умножения.
Гироскоп для TX/TXT
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Гироскоп для TX/TXT
Большое спасибо!
Еще уточнить можно, в блоке чтения размер данных должен быть 8 бит?
Еще уточнить можно, в блоке чтения размер данных должен быть 8 бит?
- Вложения
-
- 3.PNG (10.39 КБ) 13111 просмотров
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Гироскоп для TX/TXT
Кстати, да. В этом блоке можно указать размер слова данных, которое собирается из полученных через I2C байтов - 1 или 2 байта. Таким образом отпадает необходимость выполнять преобразование, которое мы обсуждали выше. К сожалению, сейчас нет под рукой TX чтобы проверить.
Re: Гироскоп для TX/TXT
Спасибо!
Получилось считать Heading обоими способами, только в случае без преобразования надо читать сначала 0x1a и выбрать "Сначала младший". Отличный чип, очень точно работает.
А вот другие углы пока что-то странное показывают, чаще знаки вопросов...
Получилось считать Heading обоими способами, только в случае без преобразования надо читать сначала 0x1a и выбрать "Сначала младший". Отличный чип, очень точно работает.
А вот другие углы пока что-то странное показывают, чаще знаки вопросов...
Re: Гироскоп для TX/TXT
Все заработало. получаем все углы как надо, спасибо за вашу помощь!
Последний вопрос, если из регистра 0x35 надо считать только два старших бита (7 и 6), такое выражение правильно?
Последний вопрос, если из регистра 0x35 надо считать только два старших бита (7 и 6), такое выражение правильно?
- Вложения
-
- 5.PNG (4.71 КБ) 13111 просмотров
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Гироскоп для TX/TXT
Такой подход использовать можно. Деление на 2**N - это сдвиг вправо на N разрядов.