Регистр 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, с которой я сейчас работаю?< /п>
@Naftuli Kay, 👍0
Обсуждение2 ответа
Что такое 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
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
- Использование RFID-RC522 с другими контактами
- Сбой Arduino во время последовательной печати без очевидной причины
- Будет ли адаптер питания 12В постоянного тока, 1А подавать слишком большую мощность и повредит Arduino Mega 2560?
- Как запрограммировать Robotdyn Mega 2560 PRO MINI?
- Отключите автоматический сброс Mega 2560 на последовательном мониторе, открытом с помощью резистора 60 Ом.
- Программирование пользовательских Arduino Mega с Arduino Uno
- Выход 3,3 В при установке вывода на высокий уровень
- Использование модуля JYETech 2.4 Inch LCD Display Screen Module с Arduino?
Вот альтернативное сопоставление GPIO: https://github.com/mikaelpatel/Arduino-GPIO/blob/master/src/Hardware/AVR/Board.h#L225. Обратите внимание на сопоставление битов регистров и выводов, имена и т. д., @Mikael Patel