Как использовать эту функцию конфинга
Для датчика тока INA3221 я нашел эту библиотеку, однако я не понимаю, как использовать функцию INA3221SetConfig ()
, определенную в ссылке на файл .cpp.
void SDL_Arduino_INA3221::INA3221SetConfig(void)
{
// Set Config register для учета приведенных выше настроек
uint16_t config =
INA3221_CONFIG_ENABLE_CHAN1 |
// INA3221_CONFIG_ENABLE_CHAN2 |
// INA3221_CONFIG_ENABLE_CHAN3 |
INA3221_CONFIG_RESET |
INA3221_CONFIG_AVG1 |
INA3221_CONFIG_VBUS_CT2 |
INA3221_CONFIG_VSH_CT2 |
INA3221_CONFIG_MODE_2 |
INA3221_CONFIG_MODE_1 |
INA3221_CONFIG_MODE_0;
wireWriteRegister(INA3221_REG_CONFIG, config);
}
Похоже, что функция вызывается автоматически при вызове функции .begin ()
, и все, что определено в функции config, записывается в регистр. Использование оператора | меня смущает. Я попытался закомментировать некоторые настройки, чтобы увидеть, работает ли это, но это не имеет никакого значения. Там нет никакой документации, так что я в затруднительном положении. Подскажите, пожалуйста, как я могу изменить настройки конфигурации, например, вместо всех трех каналов или изменить config_mode?
@Zaffresky, 👍0
Обсуждение1 ответ
Лучший ответ:
Не заглядывая в библиотеку, вы можете сами проверить, вызывается ли этот метод (INA3221SetConfig
) из метода begin
(того же класса). Просто проследите методы вручную, пока не найдете вызов этого метода.
О операторе |
or 'bit-wise-or' (см. https://en.wikipedia.org/wiki/Bitwise_operations_in_C), они используются для установки битов в байт/слово/длинный.
Большинство регистров имеют 8, 16 или 32 бита, и с помощью оператора | вы можете легко установить несколько битов одновременно. Каждое значение (например
,
INA3221_CONFIG_ENABLE_CHAN) имеет значение, равное степени 2 (в основном определяется в виде 1 << ..something..
вы можете добавить их (с +) или |
их вместе, но | более ясно, какова цель, и повторный вызов |
одного и того же бита дважды не является проблемой (он все равно дает тот же результат).
Мне пришлось узнать о битовых операциях и манипуляциях, и это становится понятным :) Спасибо, что указали мне правильное направление, @Zaffresky
Добро пожаловать, удачи вам в вашем проекте, @Michel Keijzers
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Глобальные переменные занимают много места в динамической памяти.
- Статус выхода 1 ожидаемое первичное выражение перед ']' Arduino
- Как передать несколько переменных в функцию?
- Невозможно использовать библиотеку клавиатуры с Arduino UNO даже после смены прошивки.
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
- Как вернуть значение массива символов в функции Arduino IDE?
это не вопрос, связанный с arduino ... это общий вопрос программирования, который может быть лучше подходит для https://stackoverflow.com/questions, @jsotola