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
@Matthew, 👍2
Обсуждение1 ответ
Лучший ответ:
Могут ли порты 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
- Использование аналогового входа для чтения кнопки
- Как инициализировать цифровой выходной контакт как LOW
- Высокоскоростной внешний АЦП
- Шумный analogRead
- Сбой Arduino во время последовательной печати без очевидной причины
- Будет ли адаптер питания 12В постоянного тока, 1А подавать слишком большую мощность и повредит Arduino Mega 2560?
- Расширенная настройка АЦП на Due (SAM3X8E) для повышения точности
- Как запрограммировать Robotdyn Mega 2560 PRO MINI?
пожалуйста, предоставьте ссылку на таблицу данных, которую вы читаете ..... также, какой раздел таблицы данных вы имеете в виду относительно порта 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