Асамблея на Arduino: регістри IO


13

Запитання: Які регістри я використовую для доступу до IO на Arduino Uno, коли я використовую збірку для програмування?

Передумови: Мені було цікаво практикувати мої навички мовної збірки на Arduino (я думав, що легше буде вмикати / вимикати світлодіоди, ніж турбуватися про IO консолі). З попереднього пошуку я виявив, що ланцюжок інструментів AVR можна використовувати для програмування Arduino. Тим не менш, я не зовсім знаю, як знайти відповідні регістри для штифтів IO.

Відповіді:


8

Таблиці даних для мікроконтролерів AVR досить добре читати. Просто Google знайде точний контролер на вашому Arduino (наприклад, ATmege328) і знайдіть таблицю "Повне" на веб-сайті atmel.com . Не завантажуйте "Підсумок", він не містить великої кількості інформації. Завантажте таблицю даних з atmel.com, це єдине місце з найновішою документацією.

У базовому вводі IO є три регістри (перевірте розділ під назвою "Порти вводу / виводу"):

Якщо n - ідентифікатор порту, літера починається від A, B, C, ... залежно від кількості штифтів IO, які має ваш контролер. Кожен біт у кожному реєстрі являє собою один штифт GPIO (так, для розуміння цього вам потрібні деякі базові знання з бінарних даних).

  • DDR n , Реєстр напрямків даних: Це в основному налаштовує штифт або для вводу (0), або для виходу (1).
  • PORT n , Порт n Реєстр даних: Коли штифт встановлений як вихід, відповідний біт перемикає вихідний контакт високим (1) або низьким (0). Якщо налаштовано як вхід, це дозволяє слабкий підтягуючий резистор на вихідному штирі.
  • PIN n , Порт n Реєстр вводу: Використовуйте цей регістр, щоб прочитати поточний рівень на штифті, який налаштовано як вхід.

3
Це. Крок 1: Перестаньте думати про це як про ардуїно. Це не. Це ATmega MCU на друкованій платі. 2. Прочитайте таблицю даних. 3. Ні, насправді, читайте аркуш .
Вонор Коннор

А ... це саме те, що мені було потрібно. Я думаю, що я витратив стільки часу на пошук орієнтованих на Arduino навчальних посібників, що забув, що просто програмував AVR-контролер і міг використовувати його аркуш.
apnorton

1

Перевірте це: http://arduino.cc/en/Reference/PortManipulation

Також: http://arduino.cc/en/Hacking/PinMapping168

Що стосується інших портів та штифтів, перевірте, покладіть аркуш на свій контролер, вони дійсно корисні людям, які можуть їх зрозуміти! :)


3
Відповіді лише на посилання не корисні для сайту, оскільки ми не намагаємося створити сховище посилань. Більше того, відповідь лише на посилання є марною, якщо посилання колись знизиться. Краще було б узагальнити або перефразовувати вміст у самій відповіді, щоб користувачі могли самі знайти те, що їм потрібно, або, принаймні, отримати достатній контекст, щоб мати можливість самі знайти рішення.
asheeshr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.