3 Entendiendo Los AVR Atmel

ARTÍCULO DE PORTADA Qué son, para qué sirven, cómo se usan Microcontroladores AVR de Atmel Arquitectura, Programador

Views 284 Downloads 82 File size 5MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ARTÍCULO

DE

PORTADA

Qué son, para qué sirven, cómo se usan

Microcontroladores AVR de Atmel Arquitectura, Programadores, Tarjetas de Desarrollo

Debido a la gran cantidad de consultas recibidas durante los primeros días de publicación de la edición anterior de Saber Electrónica, en referencia al Artículo de Portada: “Interfase Gráfica de Video”, que sirve para la construcción de distintos tipos de instrumentos y que se basa en el uso de un microcontrolador de la empresa Atmel, programamos la edición del presente artículo. En el mismo pretendemos dar a conocer a nuestros lectores las principales características de estos chips; brindando, además, algunos circuitos que pueden ser de interés tanto para la programación de estos dispositivos como para comenzar a realizar sus primeras prácticas. Los AVR son una familia de microcontroladores RISC (que manejan un set reducido de instrucciones) de la empresa Atmel. El diseño estructural de estos circuitos integrados fue realizado por dos estudiantes en el Norwegian Institute of Technology, y posteriormente refinada y desarrollada en Atmel. Estos microcontroladores poseen una unidad central de proceso (CPU) con arquitectura Harvard y tiene 32 registros de 8 bits. Los 32 registros, los registros de entrada/salida y la memoria de datos se encuentran en un espacio de memoria unificado, en el cual también se encuentra el stack (a diferencia de lo que ocurre en los PICS, viejos conocidos de los lectores de Saber Electrónica). Este es el primero de una serie de artículos destinados a familiarizar a nuestros lectores con los AVR cuyo objeto es la realización de varios proyectos que serán publicados en próximas ediciones. Artículo preparado por Horacio D. Vallejo, en base a información de los Manuales de Datos de los AVR traducidos por el Ing. Mario Lisofsky y el aporte de autores varios que se mencionan en la nota. Saber Electrónica

1

Artículo de Portada Luego de preguntar a diferentes fuentes sobre el origen del nombre AVR, propuesto por Atmel para estos microcontroladores, desconozco la verdadera etimología de estas siglas, sin embargo podrían deberse a lo siguiente: 1) Audio, Video, Radio: Microcontroladores pensados para aplicaciones en audio, video y radio. 2) Advanced Virtual Risc. 3) Corresponde a las iniciales de sus inventores: Alf Egil Bogen and Vegard Wollan (AlfVegardRisc). El AVR fue diseñado para la ejecución de programas escritos en código C compilado. Por lo tanto, algunas instrucciones no están; por ejemplo, no existe la instrucción 'suma inmediata' ('add immediate'), ya que la instrucción 'resta inmediata' ('substract immediate') con el complemento a dos puede ser usada como alternativa. La familia de microcontroladores AVR es bastante extensa y todas comparten el mismo núcleo AVR, pero tienen distintos periféricos y cantidades de RAM y ROM: desde el microcontrolador de la familia Tiny AVR ATtiny11 con 1kB de memoria flash y sin RAM (sólo los 32 registros), con un encapsulado de 8 pines, hasta el microcontrolador de la famila Mega AVRATmega2560 con 256kB de memoria flash, 8kB de memoria RAM, 4kB de memoria EEPROM, conversor análogo digital de 10 bits y 16 canales, temporizadores, comparador analógico, etc. Cada componente de la familia se ha diseñado para que guarde cierta compatibilidad con el resto. Los microcontroladores AVR permiten la ejecución de instrucciones mediante la metodología 'pipeline' con dos etapas (cargar y ejecutar), que les permite ejecutar la mayoría de las instrucciones en un ciclo de reloj, lo que los hace relativamente rápidos entre los microcontroladores de 8 bits. Como una primera síntesis, podemos decir que el set de instrucciones de los AVR es bastante “regular”, teniendo en cuenta las siguientes consideraciones: • Los registros punteros X, Y y Z tienen capacidades de direccionamiento diferentes entre sí. • Los registros 0 al 15 tienen diferentes capacidades de direccionamiento que los registros 16 al 31. • Las registros de I/O 0 al 31 tienen distintas características que las posiciones 32 al 63. • La instrucción CLR afecta los 'flag', mientras que la instrucción SER no lo hace, a pesar de que parecen ser instrucciones complementarias (dejar todos los bits en 1, y dejar todos los bits en 0 respectivamente). • Los códigos de operación 0x95C8 y 0x9004 hacen exactamente lo mismo (LPM). Así como los PICs poseen un “entorno de desarrollo”

2

Saber Electrónica

(MPLAB), los AVR también poseen herramientas de desarrollo gratuitas o de bajo costo capaces de descargar el código al microcontrolador utilizando una versión de las herramientas de licencia libre GNU. Ahora bien, como es probable que este artículo esté siendo leído por estudiantes y/o principiantes, vamos a dar una breve introducción que explique qué es un microcontrolador y para qué se lo emplea. Para este propósito emplearemos definiciones realizadas por Emilio Toboso en su página www.perso.wanadoo.es/emiliotoboso. Cabe aclarar que en el libro “PIC para Estudiantes”, de Editorial Quark, Ud, puede encontrar bibliografía extensa sobre el tema y que en la página del Sr. Toboso también podrá encontrar abundante información orientada a los microcontroladores PICs,

Introducción a los Microcontroladores Desde la invención de los semiconductores, el desarrollo de la tecnología digital ha dado lugar a dispositivos cada vez más complejos y rápidos. Entre ellos los microprocesadores y los microcontroladores. Los microcontroladores se encuentran en nuestro trabajo, en nuestra casa y en nuestra vida. Controlan el funcionamiento de los teclados de las computadoras, están en los teléfonos celulares, en los hornos de microondas y, en general, en todo aparato electrónico que posea un grado de automatismo. Se dice que un controlador es un dispositivo que se emplea para manejar uno o varios procesos. Por ejemplo, para ver televisión, un controlador evalúa la señal que ingresa por la antena y la procesa para que a la pantalla y el parlante llegue con el mismo nivel promedio, sin importar el nivel de la señal ingresante, siempre que esté dentro de determinados parámetros. Hasta hace unos 35 años, los controladores se construían con componentes electrónicos de lógica discreta; posteriormente se emplearon los microprocesadores, apoyados con chips de memoria y dispositivos de E/S sobre una tarjeta de circuito impreso. Desde comienzos de los 90 todos los elementos del controlador se han podido incluir en un solo circuito integrado, el cual recibe el nombre de microcontrolador. Es decir, un microcontrolador es un chip que posee en su interior a un microprocesador, memoria de programa, memoria de datos y puertos para comunicarse con el exterior. Un microcontrolador es un circuito integrado de alta escala de integración que incorpora la mayor parte de los elementos que configuran un controlador y que contiene todos los componentes fundamentales de un ordenador, aunque de limitadas prestaciones y que se suele destinar a gobernar una sola tarea. En la memoria de programa debe residir un conjunto

Microcontroladores AVR de Atmel de sentencias (programa) que controlan el funcionamiento de una tarea determinada, sus líneas de entrada/salida se conectan a los sensores y actuadores del dispositivo a controlar y, debido a su pequeño tamaño, suele ir integrado en el propio dispositivo al que automatiza. Según lo dicho, un microcontrolador dispone normalmente de los siguientes componentes: • Procesador o CPU (Unidad Central de Proceso). • Memoria RAM para contener los datos. • Memoria para el programa tipo ROM/EPROM/EEPROM/Flash. • Líneas de E/S para comunicarse con el exterior. También puede poseer otros bloques de apoyo que flexibilizan aún más su uso, tales como: • Módulos para el control de periféricos: temporizadores, puertos serie y paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc. • Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema. • Sistemas de protección de sobrecorriente o cortocircuito. Cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Se puede seleccionar la capacidad de las memorias, el número de líneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy importante del diseño de un sistema microcontrolado es la selección del microcontrolador a utilizar. Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones como, de hecho, ocurre ya habitualmente en cualquier PC. Algunas aplicaciones de los microcontroladores son: • En sistemas de comunicación: centrales telefónicas, transmisores, receptores, télefonos fijos, celulares, fax, etc. • En electrodomésticos: lavarropas, hornos de microondas, heladeras, lavavajillas, televisores, reproductores de DVD, minicomponentes, controles remotos, etc. • Industria informática: Se encuentran en casi todos los periféricos; ratones, teclados, impresoras, escáner, etc.

Figura 1

• Domótica: sistemas de alarma y seguridad, control de procesos hogareños a distancia, etc. • Automación: climatización, seguridad, ABS, etc. • Industria: Autómatas, control de procesos, etc. • Otros: Instrumentación, electromedicina, ascensores, calefacción, aire acondicionado, sistemas de navegación, etc. En la figura 1 se puede apreciar la distribución de los microcontroladores en las áreas de más uso.

Arquitecturas de Proceso En general, los microcontroladores poseen dos formas de trabajo en cuanto a los datos y direcciones. La arquitectura de Von Neumann (figura 2) se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control) mientras que la arquitectura Harvard (figura 3) dispone de dos memorias independien-

Figura 2

Figura 3 Saber Electrónica

3

Artículo de Portada tes, una que contiene sólo instrucciones y otra sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias.

La Unidad Central de Proceso o CPU Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel de hardware como de software. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado. Existen tres tipos de CPU en cuanto a la forma de “procesar” las instrucciones: • CISC: Un gran número de procesadores usados en los microcontroladores están basados en la filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de 80 instrucciones de máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúan como macros. • RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores, están decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones de máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. • SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es "específico"; o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico).

La Memoria La memoria de programa y datos está integrada en el propio circuito integrado. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.

4

Saber Electrónica

La memoria de datos (RAM) en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la memoria de programa (ROM). El usuario de PC está habituado a manejar Megabytes de memoria, pero los diseñadores con microcontroladores trabajan con capacidades de memoria de programa de 512 bytes, 1kB, 2kB y hasta unos 128kB y de RAM de 32 bytes, 68 bytes, 512 bytes (hasta unos 4kB). Existen distintos tipos de memorias y en un microcontrolador se puede encontrar cualquiera de ellas: • ROM con máscara: Es una memoria no volátil de sólo lectura, cuyo contenido se graba durante la fabricación del chip. El término máscara viene de la forma como se fabrican los circuitos integrados. Estos se fabrican en obleas que contienen varias decenas de chips. Estas obleas se obtienen a partir de procesos fotoquímicos, donde se impregnan capas de silicio y óxido de silicio, y según convenga, se erosionan al exponerlos a la luz. Como no todos los puntos han de ser erosionados, se sitúa entre la luz y la oblea una máscara con agujeros, de manera que donde deba incidir la luz, ésta pasará. Con varios procesos similares, pero más complicados, se consigue fabricar los transistores y diodos que componen un circuito integrado. El alto precio del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores, con este tipo de memoria, cuando se precisan cantidades superiores a varios miles de unidades. • OTP: Es una memoria no volátil de sólo lectura "programable una sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde una PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. • EPROM: Erasable Programmable Read OnIy Memory, pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde una PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie, por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP, que están hechos con material plástico. Hoy día se utilizan poco, siendo sustituidas por memorias EEPROM o Flash. • EEPROM: Electrical Erasable Programmable Read OnIy Memory, son memorias de sólo lectura, programa-

Microcontroladores AVR de Atmel bles y borrables eléctricamente EEPROM a través de la aplicación de una tensión de predisposición Vpp. Tanto la programación como el borrado se realizan eléctricamente desde el propio grabador y bajo el control programado de una PC. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Hoy día están siendo sustituidas por memorias de tipo Flash. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables, para guardar y modificar cómodamente una serie de parámetros que adecúan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta. • FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Son idóneas para la enseñanza y la Ingeniería de diseño. Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc.

Puertos de Entrada y Salida La principal utilidad de las patas que posee el chip que contiene un microcontrolador es soportar las líneas

de E/S que comunican al computador interno con los periféricos exteriores y, según los controladores de periféricos que posea cada modelo de microcontrolador, se destinan a proporcionar el soporte a las señales de entrada, salida y control. Todos los microcontroladores destinan algunas de sus patillas a soportar líneas de E/S de tipo digital, esto es, todo o nada. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos. Las líneas digitales de los Puertos pueden configurarse como Entrada o como Salida, cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración.

Reloj (Clock) Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. El circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones, pero lleva aparejado un incremento del consumo de energía y de calor generado.

Recursos Especiales del Microcontrolador Cada fabricante posee numerosas versiones de una arquitectura básica de microcontrolador. En algunas familias se amplía las capacidades de las memorias, en otras se incorporan nuevos recursos, en otras se reduce las prestaciones al mínimo para aplicaciones muy simples, etc. El trabajo del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. Así, minimizará el costo, el hardware y el software. Veamos algunos recursos: Temporizadores y Contadores Los temporizadores se emplean para controlar períodos de tiempo y los contadores para llevar la cuenta de acontecimientos que suceden en el exterior. Para la meSaber Electrónica

5

Artículo de Portada dida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso a través del cambio de información en una variable o registro (registro de código de condiciones, por ejemplo). Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patillas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. Perro Guardián o "Watchdog" Normalmente, cuando un ordenador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicia el sistema. Un microcontrolador suele funcionar sin el control de un supervisor y de forma continuada las 24 horas del día. El Perro Guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema y generalmente se usa para “detectar” fallas de programas que ocasionarían que el micro se quede trabajando dentro de un loop indefinidamente. Se debe diseñar el programa de trabajo que controla la tarea de forma que refresque o inicialice al Perro Guardián antes de que provoque el reset. Si falla el programa o se bloquea, el programa no refrescará al Perro Guardián y, al completar su temporización, provocará el reset del sistema. Sleep, Estado de Reposo ó de Bajo Consumo En muchas situaciones de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de nuevo en funcionamiento, es preciso ahorrar pilas; como en el caso de los controles remotos, donde el sistema está a la espera de que el usuario oprima una tecla. Para ahorrar energía, los microcontroladores disponen de una instrucción especial (SLEEP en algunos micros), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se "congelan" sus circuitos asociados, quedando el microcontrolador sumido en un profundo "sueño". Al activarse una interrupción ocasiona-

6

Saber Electrónica

da por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Para hacernos una idea, esta función es parecida a la opción de Suspender en el menú para apagar el equipo (en aquellas PCs con administración avanzada de energía). Procesamiento de Señales Analógicas Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde las patillas del circuito integrado. Por otra parte un CDA o conversor D/A transforma los datos digitales obtenidos del procesamiento de la computador en su correspondiente señal analógica que saca al exterior por una de las patillas de la cápsula. Existen muchos dispositivos de salida que trabajan con señales analógicas. Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional, que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patillas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores. Protección "Brownout" Esta protección la realiza un circuito que resetea al microcontrolador cuando la tensión de alimentación (VDD) es inferior a un mínimo ("brownout"). Mientras la tensión de alimentación sea inferior al de brownout, el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Esto es muy útil para evitar datos erróneos por transiciones y ruidos en la línea de alimentación. Modulador de Ancho de Pulsos o PWM Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patillas del encapsulado. Es útil para sistemas de control de potencia, como por ejemplo motores.

Microcontroladores AVR de Atmel Puertos de Comunicación Para que el micro se pueda comunicar con otros dispositivos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos es preciso agregarle unidades o puertos de comunicación. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: • UART, adaptador de comunicación serie asincrónica. • USART, adaptador de comunicación serie sincrónica y asincrónica. • Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores. • USB (Universal Serial Bus). • Bus I2C, que es una interfaz serie de dos hilos desarrollado por Philips. • Interface SPI, un puerto serie sincrónico. • CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O. • TCP/IP, ya existen microcontroladores con un adaptador de comunicación para este protocolo. Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para simplificar el circuito que supone un bus paralelo de 8 líneas dentro de un televisor, así como para librar de la carga que supone una cantidad ingente de cables en un vehículo.

neas de programa, 16bits por inst.), PIC:1kx14 (1024 líneas de programa de 14 bit cada una). Memoria EEPROM libre: AVR - 64Bytes, PIC - 64Bytes Salidas: AVR - 15, PIC - 13 TIMER: AVR - 1 de 8bit (con prescaler desde CK hasta CK/1024), PIC - 1 de 8 bit (con prescaler desde 1:2 hasta 1:256) Comparador Analógico (NO ADC): AVR - 1 PIC - NO POSEE Watchdog: Ambos poseen Oscilador interno: Ambos poseen, en el AVR sólo habilitable con programación paralela Niveles de pila (STACK): AVR - 3, PIC - 8 Interrupciones: AVR - reset, interna, externa, timer y por comparador analógico, PIC - 5 interrupciones Básicamente, los AVR tienen 3 registros para cada puerto de salida a saber: • DDRB - Sirve para decir qué patas son de entrada o salida, “0” es entrada, “1” es salida (es inverso a los PIC). • PINB - Registro que sirve para entradas solamente. • PORTB - Registro que sirve para salidas solamente. Esto significa que para leer una entrada se debe usar el registro PINB mientras que para escribir datos en una salida se debe emplear el registro PORTB (obviamente si hacemos referencia a las patas del puerto B). En el ATMEL AT90S1200 el PortB tiene 8 bits de datos, a diferencia del PORTD que tiene sólo 7. El bit 7 del PORTD no se emplea; PORTD también consta de 3 registros: DDRD, PORTD y PIND.

********************************************************** Los Atmel de Uso Automotriz

LOS MICROCONTROLADORES AVR La empresa Atmel ha desarrollado una gran cantidad de microcontroladores en diferentes gamas, de forma similar a lo que ha hecho la empresa Microchip con nuestros viejos amigos: “los PICs”. Quizá, el más popular es el ATMEL AT90S1200, que es algo así como el 16F84 de Microchip (en cuanto a popularidad se refiere). A continuación se realiza algunos datos comparativos entre el AT90S1200 y el PIC16F84: Nº de instrucciones: AVR - 89, PIC - 35 Registros RAM: AVR - 32, PIC - 68 Velocidad: AVR - 12MHz, PIC: 20MHz Memoria de Programa: AVR - 1kByte FLASH (512 lí-

Por algún micro debemos empezar… Cuando comenzamos a realizar artículos con microcontroladores PIC en Saber Electrónica, allá por 1998, elegimos el 16F84 y nuestro “modelo o mentor” era el viejo y conocido David Tate. Conversando con el Ing. Ismael Cervantes y en base al trabajo que está realizando el Ing. Luís Roberto Rodríguez, llegué a la conclusión que debía recurrir a la fuente y así determiné que lo mejor es realizar la descripción de varios modelos, tarea que iremos desarrollando en diferentes ediciones de nuestra querida revista. En esta oportunidad especificaremos algunas características y describiremos el funcionamiento de la serie de uso automotor ATtiny 25/45/85. A su vez, para concluir, daremos los circuitos de programadores de algunos modelos con licencia libre GNU. Saber Electrónica

7

Artículo de Portada La Serie ATtiny 25/45/85 El ATtiny 25/45/85 es un microcontrolador CMOS de 8 bits de baja potencia basado en la arquitectura RISC mejorada del AVR. Mediante la ejecución de poderosas instrucciones en un solo ciclo de reloj, el ATtiny 225/45/85 logra una producción que alcanza 1MIPS por MHz, permitiéndole al diseñador de sistemas optimizar la relación consumo de potencia-velocidad de procesamiento. Las principales características del dispositivo son las siguientes: * Alto desempeño, baja potencia. * Arquitectura RISC avanzada: -120 instrucciones poderosas, la mayoría con ejecución de un solo ciclo de reloj. -32x8 registros de trabajo de propósito general. -operación totalmente estática. * Programa y Memoria de Datos no volátiles: -2/4/8 kbytes de Memoria Flash Programable en el sistema, con duración: 10000 ciclos de escritura/borrado. -128/256/512 bytes de EEPROM programable en el sistema, con duración: 100000 ciclos de escritura/borrado. -128/256/512 bytes de SRAM interna. -Cerrojo de programación para autoprogramar la Memoria Flash y Seguridad de Datos de EEPROM. * Características Periféricas: -Contador/Temporizador de 8 bits con Prescaler y dos canales PWM. -Contador/Temporizador de Alta Velocidad de 8 bits con Prescaler separado: ·Dos Salidas PWM de Alta Frecuencia con Registros de Comparación de Salida separados. ·Generador Programable de Tiempo Muerto. -Interfaz Serie Universal con Detector de Condición de Comienzo. -ADC de 10 bits: ·Cuatro Canales de Una Sola Salida. ·Dos Pares de Canales ADC Diferenciales con Ganancia Programable (1x, 20x). -Temporizador Programable de Vigilancia con Oscilador separado dentro del integrado. -Comparador Analógico dentro del integrado. * Características Especiales del Microcontrolador: -Sistema de Depuración debugWIRE dentro del integrado. -Programable dentro del Sistema a través del Puerto SPI.

8

Saber Electrónica

-Fuentes de Interrupción Externas e Internas. -Modos de Descanso en Baja Potencia, de Reducción de Ruido de ADC, y de Reducción de Potencia. -Circuito Mejorado de Reinicialización de Encendido. -Circuito Programable de Detección de Brownout (estado en que la tensión es entre un 8 y un 12% inferior al valor típico) . -Oscilador Calibrado interno. * Entradas/Salidas y Encapsulados: -Seis Líneas Programables de Entrada/Salida. -SOIC de 8 patas. * Tensión de Funcionamiento: -2,7 a 5,5V * Rango de Velocidades: -ATtiny25/45/85: 0-8 MHz@2,7-5,5V, 0-16MHz @4,5-5,5V. * Rango de Temperaturas del Automóvil: -de -40ºC a +125ºC * Bajo Consumo de Potencia: -Modo Activo: 1MHz, 2,7V : 500µA -Modo de Potencia Reducida: 2µA con 2,7V. La figura 4 muestra la disposición de terminales de este microcontrolador.

Diagrama en Bloques En la figura 4 se puede observar el diagrama en bloques de la serie ATtiny 25/45/85 de ATmel. El núcleo del AVR combina un conjunto rico de instrucciones con 32 registros de trabajo de propósito general. Los 32 registros están directamente conectados a la Unidad Aritmético-Lógica (ALU), permitiendo que 2 registros independientes se accedan en una sola instrucción ejecutada en un ciclo de reloj. La arquitectura resultante es más eficiente en lo que respecta a código, en tanto que logra un rendimiento hasta 10 veces superior que los microcontroladores convencionales CISC. De las características enunciadas anteriormente, sobre el ATtiny 25/45/85 podemos destacar las siguientes: 2/4/8kB de Memoria Flash Programable en el Sistema, 128/256/512 bytes de EEPROM, 128/256/256 bytes de SRAM, 6 líneas de entrada/salida de propósito general, 32 registros de trabajo de propósito general, un Temporizador/Contador de 8 bits con modos de comparación, un Temporizador/Contador de alta velocidad de 8 bits, una

Microcontroladores AVR de Atmel

Figura 4 Interfaz Serie Universal, Interrupciones Internas y Externas, un ADC de 4 canales de 10 bits, un Temporizador Programable de Vigilancia con Oscilador Interno y 3 modos de ahorro de potencia seleccionables por software.

El modo de Descanso detiene la CPU en tanto que permite que la SRAM, el Temporizador/Contador, el ADC, el Comparador Analógico, y el sistema de Interrupción sigan trabajando. El modo de Reducción de Potencia guarSaber Electrónica

9

Artículo de Portada da el contenido de los registros, inhabilitando todas las funciones del integrado hasta la siguiente Interrupción o Reinicialización. El modo de Reducción de Ruido del ADC detiene la CPU y todos los módulos de E/S excepto el ADC, a fin de minimizar el ruido de conmutación durante las conversiones del ADC. El dispositivo se fabrica usando la tecnología de memoria no-volátil y alta densidad de ATMEL. El sistema de interfaz serial que maneja el integrado permite que la Memoria de Programa se reprograme en el sistema a través de una interfaz serie (SPI) mediante un programador convencional de memorias novolátiles o mediante un código de carga incorporado en el integrado que se ejecuta en el núcleo del AVR. El AVR tiene un soporte basado en herramientas de desarrollo del sistema y de programación que incluyen: Compiladores C, Macroensambladores, Depurador/Simuladores de Programa, Emuladores en el Circuito y Conjuntos de Componentes de Evaluación. Este microcontrolador ha sido desarrollado y fabricado de acuerdo con los requerimientos más exigentes de la norma internacional ISO-TS-16949 que define los grados de calidad para uso automotriz.

Figura 5

te se ponen en 0 entregarán corriente si se activan los resistores pull-up.Las patas del Puerto B son del tipo tri-state cuando se activa una condición de reinicialización, aunque el reloj no esté funcionando. RESET: Entrada de Reinicialización. Un 0 en esta pata, durante más de un pulso mínimo, generará una reinicialización aunque el reloj no esté funcionando.

La CPU del AVR Descripción de los Pines: Vcc: Tensión de alimentación. GND: Masa, tierra. Puerto B (PB5… PB0): El Puerto B es un puerto de E/S bidireccional de 6 bits con resistores pull-up internos (seleccionables para cada bit). Los buffers de salida del puerto B tienen características simétricas de excitación con alta capacidad, tanto de fuente como de sumidero. Como entradas, las patas del Puerto B que externamen-

10

Saber Electrónica

Trataremos la arquitectura del núcleo del AVR en general. La función principal del núcleo de la CPU es asegurar una correcta ejecución del programa. La CPU, por lo tanto, debe acceder a memorias, realizar cálculos, controlar periféricos, y manejar interrupciones. En la figura 5 se puede observar la arquitectura de la CPU. A fin de maximizar el desempeño y el paralelismo, el AVR usa una arquitectura Harvard, con memorias y buses separados para el programa y los datos. Las instrucciones que están en la memoria de Programa se ejecutan con un solo nivel de transmisión por conductos. Mientras que se ejecuta una instrucción, se extrae la siguien-

Microcontroladores AVR de Atmel te instrucción de la memoria de Programa. Este concepto permite que las instrucciones se ejecuten en cada ciclo de reloj. La memoria de programa es la memoria flash reprogramable en el Sistema. El Archivo de Registros de acceso rápido contiene 32 registros de trabajo de propósito general de 8 bits con un tiempo de acceso de un solo ciclo de reloj. Esto permite la operación de la Unidad Aritmético Lógica (ALU) en un sólo ciclo. En una típica operación de la ALU, se toman 2 operandos del Archivo de Registros, se ejecuta la operación, y el resultado se almacena nuevamente en el Archivo de Registros en un ciclo de reloj. Seis de los 32 registros se pueden usar como 3 registros apuntadores de direccionamiento indirecto de 16 bits para el direccionamiento en el Espacio de Datos, permitiendo eficientes cálculos de direcciones. Uno de estos apuntadores de direcciones también se puede usar como apuntador de direcciones para tablas de consulta en la memoria Flash de Programa. Estos registros funcionales agregados son los registros X, Y y Z de 16 bits. La ALU soporta operaciones aritméticas y lógicas entre registros o entre una constante y un registro. Las operaciones de un solo registro también se pueden ejecutar en la ALU. Luego de una operación aritmética, el Registro de Estado se actualiza para reflejar la información sobre el resultado de la operación. El Programa tiene instrucciones de salto condicional e incondicional e instrucciones de llamada, capaces de direccionar en forma directa todo el espacio de direcciones. La mayoría de las instrucciones del AVR tienen un solo formato de palabra de 16 bits. Cada dirección de memoria de Programa contiene una instrucción de 16 o de 32 bits. Durante las interrupciones y las llamadas a subrutina, el Contador de Programa de dirección de retorno (PC) se almacena en la Pila. La Pila se ubica en la SRAM de datos generales, y en consecuencia el tamaño de la Pila sólo está limitado por el tamaño total de la SRAM y su uso. Todos los programas del usuario deben inicializar el SP en la rutina de reinicialización (antes que se ejecuten las subrutinas o las interrupciones). El Puntero de Pila (SP) se puede leer /escribir en el espacio de E/S. La SRAM de datos se puede acceder fácilmente mediante 5 modos diferentes de direccionamiento soportados en la arquitectura del AVR. Los espacios de memoria en la arquitectura del AVR son todos lineales y regulares.

Un módulo de interrupción flexible tiene sus registros de control en el espacio de E/S con un bit adicional de Habilitación de Interrupción Global en el Registro de Estado. Todas las interrupciones tienen un Vector de Interrupción separado en la tabla de Vectores de Interrupción. Las interrupciones tienen una prioridad de acuerdo con su posición en la tabla. Cuanto más baja es la dirección del Vector de Interrupciones, más alta es la prioridad. El espacio de memoria de E/S contiene 64 direcciones para funciones periféricas de la CPU como Registros de Control, SPI, y otras funciones de E/S. La memoria de E/S se puede acceder directamente, o como las posiciones del Espacio de Datos que están a continuación de las del Archivo de Registros, 0x20-0x5F.

La Unidad Aritmético-Lógica (ALU) La ALU del AVR de alto desempeño trabaja en conexión directa con todos los 32 registros de trabajo de propósito general. Dentro de un solo ciclo de reloj se ejecutan las operaciones aritméticas entre registros de propósito general o entre un registro y uno inmediato. Las operaciones de la ALU se dividen en 3 categorías principales: aritméticas, lógicas, y funciones con bits. Algunas implementaciones de la arquitectura también proveen un poderoso multiplicador que soporta la multiplicación con signo, sin signo y el formato fraccional.

El Registro de Estado El Registro de Estado contiene información sobre el resultado de la instrucción más recientemente ejecutada. Esta información se puede usar para alterar el flujo del programa a fin de ejecutar operaciones condicionales. Notemos que el Registro de Estado se actualiza después de todas las operaciones de la ALU. Esto, en muchos casos, evita la necesidad de usar instrucciones de comparación especiales, resultando un código más compacto y más rápido. El Registro de Estado no se almacena automáticamente cuando se ingresa a una rutina de interrupción y se vuelve a almacenar cuando se regresa de una interrupción. Esto se maneja mediante el software. El Registro de Estado del AVR (SREG) posee una estructura como la mostrada en la figura 6. Figura 6

Saber Electrónica

11

Artículo de Portada Bit 7-I: Habilitación Global de Interrupción. Este bit debe ponerse en 1 para que se habiliten las interrupciones. El control individual de habilitación de interrupción se ejecuta luego en registros de control separados. Si se pone en 0, no se habilita ninguna interrupción, independientemente de cómo estén las posiciones individuales de habilitación de interrupción. El bit I se pone en 0 mediante hardware después que haya ocurrido una interrupción, y se pone en 1 mediante la instrucción RETI para permitir interrupciones subsiguientes. El bit I también se puede poner en 1 y en 0 mediante las instrucciones SEI y CLI. Bit 6 -T: Almacenamiento de Copia de Bit. Las instrucciones de copia de bit BLD (Bit LoaD) y BST (Bit Store) usan el bit T como fuente o destino del bit operado. Un bit de un registro del Archivo de Registros se puede copiar en T mediante la instrucción BST, y un bit en T se puede copiar en un bit de un registro del Archivo de Registros mediante la instrucción BLD. Bit 5 - H: Bandera de Semi-acarreo. Este bit H indica un semi-acarreo en algunas operaciones aritméticas. El semi-acarreo es útil en la aritmética BCD. Bit 4 - S: Bit de Signo. El bit S siempre es una O exclusiva entre la Bandera Negativa N y la Bandera de Rebalse V con complemento a 2 .

12

Saber Electrónica

Bit 3 - V: Bandera de Rebalse con complemento a 2. Este bit soporta una aritmética de complemento a 2. Bit 2 - N: Bandera Negativa. Este bit indica un resultado negativo en una operación aritmética o lógica. Bit 1 - Z: Bandera Nula. Este bit indica un resultado nulo en una operación aritmética o lógica. Bit 0 - C: Bandera de Acarreo. Este bit indica un acarreo en una operación aritmética o lógica.

Registros de Propósito General El Archivo de Registros se optimiza para el conjunto de instrucciones RISC mejorado del AVR. A fin de lograr el desempeño y la flexibilidad requeridas, el Archivo de Registros soporta los siguientes esquemas de E/S: • Un operando de salida de 8 bits y una entrada de resultados de 8 bits. • Dos operandos de salida de 8 bits y una entrada de resultados de 8 bits. • Dos operandos de salida de 8 bits y una entrada de resultados de 16 bits. • Un operando de salida de 16 bits y una entrada de resultados de 16 bits. Figura 7 La figura 7 muestra la estructura de los 32 registros de trabajo de propósito general de la CPU. La mayoría de las instrucciones que operan en el Archivo de Registros tienen acceso directo a todos los registros, y la mayoría de ellas son instrucciones de un solo ciclo. Como se ve en la figura 7, a cada registro se le asigna una dirección de memoria de Datos, las cuales se mapean directamente en las primeras 32 posiciones del Espacio de Datos del usuario. Aunque no se implementan físicamente como posiciones de memoria de SRAM, esta organización de memoria proporciona una gran flexibilidad en el acceso de los registros, ya que los registros apuntadores X, Y y Z pueden apuntar a cualquier registro del archivo.

Microcontroladores AVR de Atmel Figura 8

Los Registros X, Y y Z Los registros R26..R31 tienen algunas funciones adicionales a su uso de propósito general. Estos son punteros de direcciones de 16 bits para el direccionamiento indirecto del espacio de datos. Los 3 registros X, Y y Z de direccionamiento indirecto se definen como se describe en la figura 8. En los distintos modos de direccionamiento estos registros de direcciones tienen funciones tales como desplazamiento fijo, incremento automático y decremento automático.

Primeras Conclusiones En esta nota hemos dado una introducción sobre los microcontroladores Atmel. En sucesivas ediciones continuaremos explicando el funcionamiento de los diferentes bloques componentes del micro, describiendo también algunos proyectos de mucha utilidad, tal como lo es la Interfase Gráfica de Video publicada en la edición anterior.

pueden ser de utilidad. Si bien se propone el cargador para el Atmel AT90S2313, descargando la aplicación “IgorPlugUSBprogrammer” es posible programar otros micros de 20 patas. Para bajar la aplicación que permite realizar la carga del programa, el lector debe registrarse en la página del autor. En la figura 9 se puede apreciar el circuito eléctrico de este programador y en la figura 10 una imagen de la pantalla que muestra la carga del programa. Les recomiendo configurar en la Bios de su ordenador que el puerto paralelo esté en modo Figura 10

Un Sencillo Programador por Puerto Paralelo Navegando por Internet, en busca de información que me permita “tomar experiencia” sobre estos temas con el objeto de compartirla con Uds, encontré un sencillo programador por puerto paralelo en la página: www.cesko.host.sk. Dicha página (que está en inglés), posee muy buena información y varios circuitos que le

Figura 9 Saber Electrónica

13

Artículo de Portada ECP para que no haya ningún inconveniente al programar. Por último, en la figura 11 se puede observar el entorno de desarrollo de microcontroladores Atmel de 40 terminales que estamos empleando para el armado de nuestras prácticas y que emplearemos también para el di-

Figura 11

14

Saber Electrónica

seño y construcción de prototipos. Esta placa entrenadora es la que usamos para “programar” el Atmel Mega 8515 que sirvió de prototipo para el armado de la Interfase Gráfica de Video de la edición anterior de Saber Electrónica. ✪