Saltar al contenido principal
LibreTexts Español

17.1: AVR ATMega 328P Descripción general

  • Page ID
    82408
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    O “Controlablanca: un microcontrolador Film Noir” 1

    “Necesito algo de ayuda”. Rick miró por encima de su banco de trabajo. No era frecuente que una dama entrara al laboratorio, y una verdadera miradora de eso. Las mujeres hermosas e inteligentes tenían una forma de convertir su vida en un infierno ardiente y esta era un posible incendio forestal en tacones. “¡Maldita sea!” maldijo mientras sacudía el dedo, ahora abrasado por su desafortunada colisión con el soldador caliente. Rick se acercó a ella, algo cauteloso. Ella era una knock-out, eso es seguro; el tipo de mujer que podría hacer quedar mal a Ingrid Bergman en su mejor día y de su comportamiento Rick asumió un egresado del MIT, tal vez Stanford. Confiada, alta y esbelta, tenía las piernas más largas que Rick había visto jamás. “Desde sus caderas hasta el suelo”, como diría su compañero, Frankie la rata de laboratorio. ¿Qué podría querer ella de su pequeño laboratorio? “¿Por qué te puedo hacer, er, quiero decir, qué puedo hacer por ti?” taramudeó. “Tengo un problema”, dijo con voz tan ronca que podría tirar de un trineo de perros. “Tengo problemas de control y necesito un experto”. “Experto, ¿eh? Creo que conozco a alguien, Señorita... Señorita... ¿Cómo dijo que se llamaba?” “Yo no”, respondió ella. “Es la señorita C.” Rick surcó el ceño. “¿Missy? ¿Missy quién?” “Sólo señorita C”, llegó su respuesta curta.

    Rick miró por encima del hombro a su compañero de laboratorio. “Frankie, vamos por el pasillo a visitar El italiano. Termina el prototipo pero no Bogart ese 'alcance porque Louie lo necesita”. Se volvió hacia la señora, “Sígueme”, dijo. Caminaron por el pasillo en silencio hasta llegar a una puerta con una pequeña pegatina de bandera roja, blanca y verde en ella. Rick llamó. La puerta se abrió revelando a un joven de cabello oscuro y una barba de cinco días que estaba perfectamente recortada alrededor de los bordes. Dentro de la oficina se encontraba una gran foto enmarcada de un Ferrari, algunas postales de San Marino y lo que parecían ser piezas de repuesto para alguna forma de máquina de café medieval. “¿Si?” dijo el joven, una ceja levantada, luciendo como un cruce entre una modelo GQ y el señor Spock.

    “Arduino, esta es Missy”, dijo Rick. “¿Che?” llegó la respuesta del joven. “No Kay, C”, dijo la señora. Arduino la miró y le preguntó: “No Casey, pero ¿quién?” Ella percibió una posible barrera del idioma y trató de encontrarse con él a mitad de camino. “Señorita C, ¿si?” ella dijo. “Missy C”, asintió Arduino. “No”, contestó, su exasperación cada vez mayor, “No CC, ¿qué soy yo, un compilador?” Arduino se estaba confundiendo ahora. “Nazi ¿ves qué??” preguntó, sus ojos escaneaban arriba y abajo por el pasillo. La señora intentó un enfoque diferente. “Bien, suponga que yo era la hermana de tu madre. Yo sería la tía C”, contestó. “Sí, bueno si fueras la hermana de mi madre yo también estaría ansiosa”, agregó Rick. La dama se mudó cerca de Arduino y casi susurró a través de los dientes apretados: “Mira, solo llámame señorita C, ¿ves?” “¡Lo tengo!” dijo Arduino. “Por favor, entra. ¿En qué puedo ayudarle Señorita Seesi?” Rick negó con la cabeza mientras bajaba la mirada al suelo. ¿Cómo se había convertido el guión en una mala parodia de una rutina de Abbott y Costello? Los juegos de palabras fueron más de su agrado. Seguramente tendría que advertir a sus hermanos sobre esto. De todos los laboratorios en todos los colegios y universidades del mundo, ¿por qué tuvo que entrar en el suyo?

    “¿Cuál parece ser el problema, señorita Seesi?” preguntó Arduino. La dama comenzaba a tener dolor de cabeza, del tipo que construye desde detrás de los ojos hasta que siente que tu cráneo está lleno de monos jugando dodge ball. Respiró hondo y exhaló lentamente. “Tengo una aplicación que está en problemas”, dijo. “Problemas”, pensó Rick, “sí, apuesto a que esta dama sabe todo sobre problemas. Es parte del paquete con estos, deben estar en su ADN. Por qué, si yo fuera un insecto, ella sería una Venus De atrapamoscas normal, hermosa y mortal”. Arduino juntó las manos y sonrió. “¿Problemas? ¡No hay problema! Has venido al lugar correcto. Cuéntame más sobre este problema”. “Bueno, tengo que controlar un montón de dispositivos; LEDs, motores, actuadores, la tripulación habitual”, empezó ella, “y tengo que obtener alguna información de la persona que maneja el sistema, ya sabes del tipo, un operador real. Muchos ajustes; pulsadores, interruptores, potenciómetros, todo el megillah. Te digo, estoy en mi cabeza”.

    Arduino cruzó la oficina y mordisqueó algunos biscotti. Se volvió hacia ella, la galleta horneada dos veces aún al alcance de su mano, sostuvo suavemente la forma en que un director de orquesta podría equilibrar un bastón. “Esta aplicación...” dijo, su cabeza ligeramente levantada y amarrada a un lado revelando el comienzo de una sonrisa de conocimiento, “... necesita ser flexible, expandible y económica, ¿también?” Él había despertado el interés de la dama pero ella no podía dejar que se mostrara. “Sí. Sí lo hace”, respondió fríamente. “En ese caso”, dijo Arduino, “permítame presentarle Uno, el Uno”. Lanzó los restos del biscotti a Rick y recogió una pequeña placa de circuito impreso azul que contenía algunos CI, un montón de cabeceras con pines numerados y lo que parecían USB y conectores de alimentación.

    Placa Arduino Uno.
    Figura\(\PageIndex{1}\): Placa Arduino Uno.

    “Bastante spiffy”, dijo. “¿Qué es?” Los ojos de Arduino se iluminaron. “Es una placa de desarrollo de microcontroladores de código abierto, y cuando digo 'código abierto' me refiero tanto a software como a hardware. La distribución de software incluye extensos ejemplos, código fuente completo de la biblioteca y todos los datos que pueda desear en el AVR”. “¿Qué es un AVR?” llegó la respuesta de la señora. “AVR es una línea de microcontroladores de Atmel. El Uno utiliza un ATMega 328P con 32k de memoria flash programable en chip, 2k de memoria de datos SRAM y 1k de EEPROM. 32 registros de propósito general. Computadora de conjunto de instrucciones reducidas canalizadas con arquitectura Harvard. La mayoría de las instrucciones requieren solo una garrapata del reloj de 16 MHz”. La concentración de Arduino se rompió por un silbido proveniente de detrás de una gran pila de libros. “¡Ahhh! ¿Puedo interesarle a alguno de ustedes una taza de espresso?” preguntó. “Nunca después del almuerzo”, dijo Rick. Sabía que el brebaje hipercafeinado de Arduino lo haría rebotar en las paredes toda la tarde. “¿Y usted, señorita Seesi?” Arduino consultó. “Tal vez solo esta vez”, confió, “con leche”. Arduino sonrió. “¡Cappuccino es!”

    Bebiendo la bebida humeante, miró el tablero con atención. “Los pines de puerto etiquetados en los encabezados son convenientes, aunque parece bastante pequeño. ¿Estás seguro de que puede manejar el trabajo?” ella preguntó. “¡No hay problema!” dijo Arduino. Sacó un par de trozos de papel ligeramente arrugada y orejas de perro de debajo de una pila de CD-ROM y los colocó en el escritorio. Primero fue un diagrama de bloques del 328P como se usa en el Uno, el segundo un esquema más detallado de la placa:

    Diagrama de bloques 328P.
    Figura\(\PageIndex{2}\): Diagrama de bloques 328P.
    Esquema de placa Arduino Uno.
    Figura\(\PageIndex{3}\): Esquema de placa Arduino Uno.

    “Tienes acceso a tres puertos IO”, comenzó, “B, C y D. IO digital con resistencia desplegable programable. Todo IO está mapeado en memoria para que pueda leer y escribir en dispositivos externos como si fueran solo variables ordinarias usando el lenguaje de programación C. Un receptor-transmisor sincrónico-asíncrono universal, o USART, ya programado para comunicarse con una computadora host a través de USB”. Ella lo interrumpió. “¿Entonces puedo enviar texto de ida y vuelta entre los dos? Eso haría que la depuración fuera bastante fácil”. “¡Apuesta!” dijo Arduino, obviamente emocionándose. “No sólo eso, sino que tienes seis canales conversores analógicos a digitales de 10 bits y tres contadores temporizadores; dos de ocho bits y uno de 16 bits. Además, seis salidas pueden generar señales de modulación de ancho de pulso”. “¿Qué pasa con las interrupciones?” ella preguntó. “Voy a necesitar interrupciones”. “Múltiples niveles”, dijo Arduino, “internos y externos. Ya hay un botón de reinicio en el tablero”.

    “¿Qué pasa con el poder?” ella preguntó. “Múltiples opciones”, dijo Arduino. “Se puede alimentar desde el cable USB. Ya sabes, USB suministrará hasta 100 mA a un dispositivo no enumerado y hasta 500 mA a un dispositivo enumerado. Si eso no es suficiente, también puede enchufar una fuente externa, del tipo de pared verruga, o incluso enganchar una fuente regulada de cinco voltios para que pueda suministrar energía a relés, motores, lo que sea. Usted alimentaría los grandes artículos de alambre fuera de placa, por supuesto. No es necesario pasar esas corrientes a través de las huellas de la placa. Sin embargo, lo que sea que elijas, el Uno descubrirá inteligentemente de dónde sacar su poder”.

    La dama se estaba interesando más y necesitaba más detalles. “Genial, pero qué entregará el chip, ya sabes, se desahogará o conducirá”. “En términos generales”, comenzó Arduino, “los pines IO pueden hundirse o obtener hasta 40 mA cada uno. Todo el microcontrolador debe limitarse a un consumo total de 200 mA para mantenerse dentro de los límites térmicos, por lo que obviamente no puede conducir un montón de pines a la capacidad de corriente máxima al mismo tiempo. No es gran cosa, por eso hacen circuitos de accionamiento, ¿verdad?” Rick y la señora asintieron a sabiendas.

    El despacho quedó en silencio mientras los tres miraban a la pequeña pizarra. La señora levantó la vista. “¿Qué pasa con la interfaz de programación? ¿Línea de comandos o IDE?” Arduino agitó la mano y respondió: “El IDE se ejecuta bajo Windows, Mac OS y Linux. Puedes pasar por alto eso si quieres e ir a la línea de comandos, pero...” “Bien, bien”, interrumpió, “y esta biblioteca, es una chaqueta recta, ¿verdad?” “¡No, no!” insistió Arduino. “Es una bonita biblioteca y puedes usar tanto o tan poco como quieras. Incluso inserte códigos de operaciones de ensamblaje”. Ensamblar códigos op. El pensamiento envió un escalofrío por la columna de Rick. Había pasado un mes un día tratando de depurar un controlador de dispositivo escrito en el ensamblaje 8086. Nunca más.

    Parecía que Arduino estaba reteniendo algo. “Suena bien pero no me estás dando toda la historia, ¿verdad?” ella le preguntó. “¿Cuál es el problema?” —No hay atrapamiento —contestó Arduino—, pero hay una cosa. Una pequeña cosa que a veces muerde a los principiantes”. La señora levantó las cejas y exigió: “¿Y?”

    “Como la mayoría de los controladores”, comenzó Arduino, “el AVR utiliza una dirección IO mapeada en memoria para escribir en un puerto. Por ejemplo, podrías escribir en PORTB para encender un LED”. “¿Entonces?” la señora respondió: “Eso no es extraño”. “Muy cierto”, dijo Arduino, “pero a la hora de leer desde esos mismos pines físicos, usan una dirección diferente, en este caso PINB, en lugar de reutilizar PORTB”.

    “Espera”, tartamudeó la dama, “es el mismo pin físico y si le escribo, uso PORTB pero si leo de él ¿uso PINB?”

    “No confundas pines y puertos”, dijo Arduino mientras una mirada de melancolía se deslizaba por su rostro. “Debes recordar esto, un puerto es solo un puerto, un pin es solo un alfiler. Se aplican las cosas fundamentales, a medida que pasa el reloj”. La señora se sacudió. “Pero yo...” empezó ella. “Mira, tienes que arreglar el IO, ¿entiendes?” dijo Arduino. Su expresión se volvió seria y él la miró de lleno. “Tienes que sacarlo claro o te arrepentirás. ¡Quizás no hoy, tal vez no mañana, pero pronto y por el resto de tu vida!” Su mano rozó ligeramente al Uno mientras giraba, y limpiándose una lágrima del ojo, salió por la puerta de la oficina. Rick observó mientras caminaba rápidamente por el pasillo. A cierta distancia más allá del laboratorio su silueta desapareció en una niebla que misteriosamente se había formado de la nada acompañada por el sordo rugido de los motores al ralentí de un DC3.

    “Ella tiene el Uno”, dijo Rick. Arduino asintió, —Sí, lo sé. Tengo mucho más de donde vino esa. Todo lo que necesito es una buena tecnología de laboratorio que me ayude a construir más prototipos para Project Falcon usándolos. ¿Te interesa?” Una sonrisa irónica creció en el rostro de Rick. “Este Halcón, ¿es maltés?” “Por qué sí, sí lo es” llegó la respuesta. “Arduino”, dijo Rick, “creo que este es el comienzo de una hermosa amistad”. 2


    1. Si no estás familiarizado con el clásico cinematográfico de 1942 Casablanca protagonizado por Humphrey Bogart e Ingrid Bergman, así como el género del cine negro, se sugiere fuertemente que veas la película y un título de cine negro antes de continuar. Las actitudes aquí expresadas no son necesariamente las del autor.
    2. La información completa sobre la placa de desarrollo Arduino Uno se puede encontrar en http://arduino.cc/en/Main/ArduinoBoardUno.

      La referencia del lenguaje del sistema Arduino se puede encontrar en http://arduino.cc/en/Reference/HomePage.

      La información del tutorial de Arduino se puede encontrar en http://arduino.cc/en/Tutorial/HomePage.

      Las descargas de software Arduino se encuentran aquí: http://arduino.cc/en/Main/Software.

      En caso de duda, solo ve aquí: http://www.arduino.cc y empieza a buscar.


    This page titled 17.1: AVR ATMega 328P Descripción general is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.