Как использовать эту функцию конфинга

Для датчика тока 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?

, 👍0

Обсуждение

это не вопрос, связанный с arduino ... это общий вопрос программирования, который может быть лучше подходит для https://stackoverflow.com/questions, @jsotola


1 ответ


Лучший ответ:

3

Не заглядывая в библиотеку, вы можете сами проверить, вызывается ли этот метод (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