Ardunio Mega/ATmega2560: использование порта F или K как для аналоговых входов, так и для цифровых выходов.

Могут ли порты ATmega2560 иметь некоторые контакты, используемые для аналоговых входов, а другие — для цифрового ввода-вывода? В частности, мне нужно использовать всего 3-5 аналоговых входов, но у меня много цифровых входов. Я хотел бы использовать оставшиеся 3-5 контактов в качестве цифровых выходов, если это возможно.

Кроме того, имеет ли значение, является ли рассматриваемый порт портом F или портом K? Для порта F таблица данных, похоже, подразумевает, что все 8 контактов являются аналоговыми, только если АЦП включен:

Порт F служит аналоговыми входами аналого-цифрового преобразователя.

Порт F также служит 8-битным двунаправленным портом ввода-вывода, если аналого-цифровой преобразователь не используется.

Однако для порта K описание порта в таблице данных не имеет различия:

Порт K служит аналоговыми входами аналого-цифрового преобразователя.

Порт K — это 8-битный двунаправленный порт ввода-вывода с внутренними подтягивающими резисторами (выбираемыми для каждого бита).

Кажется, что это определенно возможно для порта АЦП Arduino Uno/ATmega328P (за исключением контактов ADC6/7 для 32-контактного форм-фактора), но я не могу найти ничего подтверждающего для Arduino Mega/ATmega2560. или различать, делается ли это на порте F или порте K

, 👍2

Обсуждение

пожалуйста, предоставьте ссылку на таблицу данных, которую вы читаете ..... также, какой раздел таблицы данных вы имеете в виду относительно порта F?, @jsotola

Техническое описание: https://ww1.microchip.com/downloads/en/devicedoc/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf Я смотрел раздел 2.3.8, @Matthew


1 ответ


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

3

Могут ли порты ATmega2560 иметь некоторые контакты, используемые для аналоговых входов, а другие — для цифрового ввода-вывода?

Да, мультиплексор АЦП управляет выбором контакта, подключенного к преобразователю. Это не зависит от управления цифровыми выводами.

Удачи!

PS: Дополнительную информацию о регистрах управления ADC MUX см. в исходном коде ядра Arduino.

,

Боитесь сказать, что даташит неправильный? Часть «если аналого-цифровой преобразователь не используется» для порта F там не должна быть., @Jot

@Jot Порты (F и K) являются цифровыми, но их также можно выбрать для АЦП через мультиплексор и функцию выборки и хранения. Я предполагаю, что вы интерпретируете таблицу данных как «чтобы использовать порт F для цифрового ввода-вывода, модуль АЦП должен быть отключен»? ИМХО, к сожалению, неверно., @Mikael Patel

Буфер цифрового ввода (на каждый вывод) можно отключить, если он используется для аналогового входного сигнала. Регистр управления DIDRx управляет этой функцией. Он используется для «снижения энергопотребления в буфере цифрового входа»., @Mikael Patel

Я действительно так это прочитал. Их можно использовать одновременно, но в таблице указано иное. У Мэтью была веская причина задать этот вопрос. Тем более, что иногда цифровые контакты отключаются. Например, для atmega328p, когда выбран x-tal, цифровые контакты этих контактов x-tal отключаются. Я думаю, что помимо jtag, описание портов F и K должно быть одинаковым. @Мэтью, пожалуйста, отметьте ответ как хороший., @Jot