Asamblea sobre el Arduino: registros IO


13

Pregunta: ¿Qué registros utilizo para acceder al IO en el Arduino Uno cuando uso el ensamblaje para programar?

Antecedentes: estaba interesado en practicar mis habilidades de lenguaje ensamblador en el Arduino (pensé que sería más fácil encender / apagar los LED que preocuparme por la consola IO). Al hacer una búsqueda preliminar , descubrí que la cadena de herramientas AVR se puede utilizar para programar el Arduino. Sin embargo, no sé cómo encontrar los registros correspondientes para los pines IO.

Respuestas:


8

Las hojas de datos para los microcontroladores AVR son razonablemente buenas para leer. Simplemente busque el controlador exacto en su Arduino (por ejemplo, ATmege328) y busque la hoja de datos "Completa" en el sitio web atmel.com . No descargue el "Resumen", no incluye mucha información. Descargue la hoja de datos de atmel.com, que es la única ubicación con la documentación más reciente.

Hay tres registros utilizados en IO básico (consulte el capítulo llamado "Puertos de E / S"):

Donde n es un identificador de puerto, una letra que va desde A, B, C, ... dependiendo del número de pines IO que tenga su controlador. Cada bit en cada registro representa un solo pin GPIO (sí, necesita algunos conocimientos básicos sobre binario para comprender esto completamente).

  • DDR n , Registro de dirección de datos: básicamente configura un pin para entrada (0) o salida (1).
  • PORT n , Port n Data Register: cuando un pin se configura como salida, el bit relacionado alterna el pin de salida alto (1) o bajo (0). Cuando se configura como entrada, esto habilita una resistencia pull up débil en el pin de salida.
  • PIN n , puerto n Registro de entrada: use este registro para leer el nivel actual en un pin que está configurado como entrada.

3
Esta. Paso 1: deja de pensar en ello como un arduino. No es. Es un MCU ATmega en una PCB. 2. Lea la hoja de datos. 3. No realmente, lea la hoja de datos .
Connor Wolf

Ah ... eso es exactamente lo que necesitaba. Creo que pasé tanto tiempo buscando tutoriales dirigidos a Arduino, que olvidé que simplemente estaba programando un controlador AVR y podía usar su hoja de datos.
apnorton

1

Mira esto: http://arduino.cc/en/Reference/PortManipulation

También: http://arduino.cc/en/Hacking/PinMapping168

En cuanto a otros puertos y pines, verifique la hoja de datos de su controlador, ¡son realmente útiles para las personas que pueden entenderlos! :)


3
Las respuestas de solo enlace no son útiles para el sitio, ya que no estamos tratando de establecer un repositorio de enlaces. Además, la respuesta de solo enlace es inútil si el enlace alguna vez se cae en el futuro. Sería mejor resumir o parafrasear el contenido dentro de la respuesta para que los usuarios puedan encontrar lo que necesitan aquí o, como mínimo, obtener un contexto suficiente para poder encontrar soluciones por sí mismos.
asheeshr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.