Регистр ATmega 32A и 2560 R3 для сопоставления контактов

Последние несколько часов я проводил исследования, пытаясь определить соответствие физических контактов регистрам ввода-вывода, отображаемым в памяти, для платы Arduino Mega (это ATmega 2560 R3).

  • Мой код находится на GitHub в запросе на включение, но еще не объединен потому что я еще не закончил.
  • Это пример верхнего уровня Я работаю с, который был написан для ATmega 32A.
  • Вот сопоставление контактов Arduino 2560, в котором не указано, какие регистры каким контактам сопоставлены. ли>
  • Вот avr/iomxx0_1.h, который определяет порты с простыми числами, которые я ничего не могу понять.
  • Вот коллекция ссылок, относящихся к моему исследование.
  • Я разобрал и сделал перекрестные ссылки на все способы использования отображения памяти Регистры ввода-вывода в восходящем примере.

Некоторые из используемых регистров включают CS11, DDB4, DDRA, DDRB, GICR, INT0, INT1, ISC00, ISC10, MCUCR, PA0, PB5, PB7, PD2, PD3, PIND, PORTA, PORTD, SPCR, SPDR, SPIF, SPSR, TCCR1B и TCNT1. Я не могу понять, что это за контакты и/или что они делают.

Вот диаграмма, предоставленная примером восходящего потока:

К сожалению, я не очень хорошо разбираюсь в этих диаграммах, поэтому стараюсь изо всех сил.

Как я могу определить сопоставление этих регистров с физическими портами как на ATmega 32A, для которой изначально был написан пример, так и на ATmega 2560 R3, с которой я сейчас работаю?< /п>

, 👍0

Обсуждение

Вот альтернативное сопоставление GPIO: https://github.com/mikaelpatel/Arduino-GPIO/blob/master/src/Hardware/AVR/Board.h#L225. Обратите внимание на сопоставление битов регистров и выводов, имена и т. д., @Mikael Patel


2 ответа


1

Что такое ATmega2560 R3? Есть микроконтроллер ATmega2560 или Arduino Mega R3. вам нужно сопоставление контактов Arduino Mega или контактов микроконтроллера ATmega2560?

Расположение контактов чипа ATmega 2560 приведено в файле техническое описание.

Сопоставление контактов Arduino Mega с контактами и регистрами ATmega2560 находится в схеме платы или в варианты пакетов плат Arduino AVR мегапапка.

Ссылка «Сопоставление контактов Arduino 2560» в вашем вопросе также показывает сопоставление. Регистры: PA, PB,... и каждый регистр охватывает до 8 контактов с 8 битами регистра. Например, PB3 — это контакт 50 платы.

,

[Это](https://www.elegoo.com/product/elegoo-mega-2560-r3-board-atmega2560-atmega16u2-usb-cable/) — именно та плата, которую я купил, и я ищу ссылка на то, какие контакты на плате соответствуют каким регистрам, представленным в библиотеке C avr. Похоже, что в схеме не перечислены такие вещи, как PORTA и т. д., на которые есть ссылки в коде, над которым я работаю., @Naftuli Kay

это клон Arduino Mega. ссылка на схему в ответе., @Juraj

Потому что я портирую код, который не писал. Мне нужно понять, что на самом деле делает код, прежде чем я смогу начать портировать его на свою плату., @Naftuli Kay

но схема ясно показывает сопоставление контактов между регистром и платой. и это то, что вы спросили. и ссылка «Сопоставление контактов Arduino 2560» в вашем вопросе тоже показывает это, @Juraj

Я добавил кое-что в ответ, @Juraj

@NaftuliKay, помогло?, @Juraj


0

Atmega32A — это 44-контактный компонент TQFP с 4 8-битными портами ввода-вывода. Это что-то вроде урезанной Atmega1284P. Возможно, вам будет проще просто переключиться на чип 1284P (также 44-контактный TQFP), чтобы воспользоваться преимуществами его SRAM объемом 16 КБ и флэш-памяти 128 КБ. Для его использования есть простая в использовании надстройка к Arduino IDE. https://github.com/MCUdude/MightyCore Я делаю много дизайнов в формате 1284P и использую его постоянно.

Atmega2560 — это 100-контактный компонент TQFP с 10 8-битными и одним 6-битными портами ввода-вывода.

Поскольку в вашей схеме используется всего несколько контактов ввода-вывода, электрические соединения будут простыми — SPI для загрузки или скачивания кода. - 2 контакта для последовательного порта - 2 контакта для других входов/выходов

Если вы посмотрите на схему Arduino Mega2560, вы легко сможете их отличить. Остальное вам придется доработать в своем коде.

,

у него Мега. ничего особенного, @Juraj

Я надеюсь начать с имеющейся у меня платы (mega 2550), а затем использовать условную компиляцию для поддержки других плат. У меня трудности со схемой, так как на ней, кажется, не указано, какие регистры соответствуют каким контактам, например, что такое PORTA, и что это сопоставлено в библиотеке C avr, и что это делает. делать? Есть ли ссылка, на которую я могу посмотреть, чтобы определить это?, @Naftuli Kay

IDE уже выполняет это сопоставление. Например, на плате '328P порт D — это D7–D0, порт B — это D13–D8 (два старших бита не используются в качестве ввода-вывода), порт C 9 — это D19–D14. (два старших бита не используются как ввод-вывод). Раньше вы могли посмотреть pins_arduino.h (думаю, это имя) в папках IDE для конкретной платы и прочитать сопоставление PINx/PORTx с контактами ввода-вывода. Отсюда я не могу получить доступ к arduino.cc, чтобы предоставить ссылки на конкретные платы, и у меня их нет на этом компьютере., @CrossRoads