ADC

Смещение SAH_TIME

Описание

В регистре ADC_CONFIG поле SAH_TIME имеет разные разряды для записи и для чтения. Для записи разряды [13:8], для чтения [14:9].

Обход

Используйте для чтения и записи поля SAH_TIME разные разряды. Используйте библиотечные макросы смещения ADC_CONFIG_SAH_TIME_WRITE_S для записи и ADC_CONFIG_SAH_TIME_READ_S для чтения.

При записи других полей регистра ADC_CONFIG следует учитывать смещение значения SAH_TIME. Например, для записи номера канала в поле:

uint32_t channel_selection = 1; // Номер канала.
ANALOG_REG->ADC_CONFIG =
    ((ANALOG_REG->ADC_CONFIG & (~ADC_CONFIG_SAH_TIME_READ_M)) & (~ADC_CONFIG_SEL_M)) |
    ((ANALOG_REG->ADC_CONFIG >> 1) & ADC_CONFIG_SAH_TIME_WRITE_M) |
    ((channel_selection) << ADC_CONFIG_SEL_S);