Разные адреса I2C на Arduino?

Я написал класс для Arduino, который читает данные компаса HiTechnic LEGO Mindstorms компас датчик.

Используя Wire-библиотеку, я очень хорошо могу получить данные из соответствующих регистров. В моей библиотеке для Arduino я адресую датчик по 0x01 который кто-то уже сделал на форумах Arduino. Но везде в сети (RobotC-форумы для LEGO Mindstorms или же в примере кода в самом низу этого документа) он говорит, что адрес I2C этого датчика был 0x02,

Так почему я должен использовать адрес 0x01 для того, чтобы общаться с моим датчиком, пока он, кажется, 0x02 для других языков программирования?

2

Решение

Существуют разные форматы адресов I2C — 7 или 8 бит. Arduino использует 7-битный формат, поэтому для преобразования 8-битного адреса в 7-битный просто сдвиньте его на единицу. Вот так 8x-битный адрес 0x02 преобразуется в 7-битный адрес 0x01.

Источник: http://arduino.cc/en/reference/wire

«Заметка:
Существуют как 7-, так и 8-битные версии адресов I2C. 7 бит идентифицируют устройство, а восьмой бит определяет, записывается оно или читается с него. Библиотека Wire использует 7-битные адреса. Если у вас есть таблица данных или пример кода, который использует 8-битный адрес, вам нужно отбросить младший бит (то есть сдвинуть значение на один бит вправо), получив адрес от 0 до 127. «

3

Другие решения

Других решений пока нет …