Запись в частично зарезервированные регистры датчиков
Я пытаюсь изменить диапазон гироскопа, который я использую, и есть следующее руководство:
рекомендуется маскировать (логические и с нулем) зарезервированные биты регистров, которые частично помечены как зарезервированные.
Я пробовал читать о битовой маскировке с помощью побитовых операторов и чувствую, что понимаю ее, пытаясь читать только определенные биты, но не для записи.
Например, как бы я записал в следующий регистр, маскируя 2 бита, которые зарезервированы?
1 ответ
Лучший ответ:
Вы всегда пишете целый байт, когда устанавливаете регистр. Вам нужно только "замаскировать" эти биты, если есть опасность, что вы можете непреднамеренно установить их в 1, например, через некоторое значение над потоком из других битов при объединении значений вместе, чтобы сформировать этот байт.
Если вы этого не делаете, то вам нечего скрывать. Например, если вы просто хотите установить определенный набор битов, то просто установите это значение - 0b00101001
будет 0b00101001
независимо от того, маскируете вы его или нет.
Если вы решите, что действительно хотите замаскировать значение, например, если вы пишете библиотеку и у вас нет контроля над тем, что конечный пользователь может решить передать функции, то &
(или&=
) - ваш друг:
uint8_t val = 0x55; // 0b01010101 in binary
val &= 0b00111111; // or 0x3F if you want to use HEX
// val is now 0x15 since bit 6 has been "masked" to 0.
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как получить данные о весе с датчиков стеклянных электронных весов для ванной?
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Какой тип разъема использует система GROVE?
- Улавливают ли ультразвуковые датчики прозрачные материалы?
- Как подключить более 10 датчиков к Arduino uno r3
Спасибо вам за подробный и информативный ответ. В вашем примере вы имеете в виду, что бит 7 и бит 8 замаскированы?, @Zhelyazko Grudov
6 и 7. Вы начинаете считать биты с 0., @Majenko
Еще раз спасибо :), @Zhelyazko Grudov