2016-01-18 10 views
-1

Я использую малину pi для чтения гироскопических данных. Я новичок в этом, но до сих пор я понимаю все, что я основываю на своем коде, помимо использования «|» в этом. При поиске это говорит его оператор «побитового OR», но в моей ситуации это не имеет смысла, чем снова я не понимаю объяснения в Википедии.Оператор "|" использование c малины pi

Линия, которая использует это выглядит следующим образом

readBlock(0x80 | OUT_X_L_G, sizeof(block), block); 

ReadBlock определяется пользователем функции следующим образом.

readBlock(uint8_t command, uint8_t size, uint8_t *data) { 
int result = i2c_smbus_read_i2c_block_data(file, command, size, data); 
} 

ответ

1

Выражение 0x80 | OUT_X_L_G возвращает значение OUT_X_L_G с немного число 7 набора:

OUT_X_L_G = xxxx xxxx 
    bitwise or 
0x80  = 1000 0000 
--------------------- 
result = 1xxx xxxx 

Логика вызова всей функции должна определяться контекстом вы не предоставляете.

+0

Итак, что он делает, это установить биты 1xxxxxxx, а затем, читая его, он позволяет заполнять x тем, что он читает из этих бит? Я не думал, что остальное будет необходимо, но я обновлю эту функцию. –

+0

'x's - это исходные биты, взятые из' OUT_X_L_G'. Он изменяет только 7-й бит, если он был '0' или оставил его' 1', как если бы оно было '1'. –

+0

Об обновлении: Работает ли он? Это не выглядит правильным, если вы спросите меня (ну, у меня все еще нет целой картинки). –

Смежные вопросы