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

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

Некоторые из используемых регистров включают 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