3 Entendiendo Los AVR Atmel

14
Saber Electrónica 1 Qué son, para qué sirven, cómo se usan Microcontroladores AVR de Atmel Arquitectura, Programadores, Tarjetas de Desarrollo ARTÍCULO DE PORTADA 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 co- nocer a nuestros lectores las principales características de estos chips; brindando, además, algunos cir- cuitos 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 encuen- tran 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.

Transcript of 3 Entendiendo Los AVR Atmel

Page 1: 3 Entendiendo Los AVR Atmel

Saber Electrónica 11

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

Microcontroladores AVR de AtmelArquitectura, Programadores, Tarjetas de Desarrollo

ARTÍCULO DE PORTADA

Debido a la gran cantidad de consultas recibidas durante los primeros días de publicación de la ediciónanterior de Saber Electrónica, en referencia al Artículo de Portada: “Interfase Gráfica de Video”, que sirvepara la construcción de distintos tipos de instrumentos y que se basa en el uso de un microcontroladorde la empresa Atmel, programamos la edición del presente artículo. En el mismo pretendemos dar a co-nocer a nuestros lectores las principales características de estos chips; brindando, además, algunos cir-cuitos que pueden ser de interés tanto para la programación de estos dispositivos como para comenzara realizar sus primeras prácticas.

Los AVR son una familia de microcontroladores RISC (que manejan un set reducido de instrucciones) dela empresa Atmel. El diseño estructural de estos circuitos integrados fue realizado por dos estudiantesen 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 tiene32 registros de 8 bits. Los 32 registros, los registros de entrada/salida y la memoria de datos se encuen-tran en un espacio de memoria unificado, en el cual también se encuentra el stack (a diferencia de lo queocurre 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 cuyoobjeto 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.

Page 2: 3 Entendiendo Los AVR Atmel

Luego de preguntar a diferentes fuentes sobre el ori-gen del nombre AVR, propuesto por Atmel para estos mi-crocontroladores, desconozco la verdadera etimologíade estas siglas, sin embargo podrían deberse a lo si-guiente:

1) Audio, Video, Radio: Microcontroladores pensadospara 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 programasescritos en código C compilado. Por lo tanto, algunas ins-trucciones 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 comple-mento a dos puede ser usada como alternativa.

La familia de microcontroladores AVR es bastante ex-tensa y todas comparten el mismo núcleo AVR, pero tie-nen distintos periféricos y cantidades de RAM y ROM:desde el microcontrolador de la familia Tiny AVR ATtiny11con 1kB de memoria flash y sin RAM (sólo los 32 regis-tros), con un encapsulado de 8 pines, hasta el microcon-trolador de la famila Mega AVRATmega2560 con 256kBde memoria flash, 8kB de memoria RAM, 4kB de memo-ria EEPROM, conversor análogo digital de 10 bits y 16canales, temporizadores, comparador analógico, etc.

Cada componente de la familia se ha diseñado paraque guarde cierta compatibilidad con el resto. Los micro-controladores AVR permiten la ejecución de instruccionesmediante la metodología 'pipeline' con dos etapas (cargary ejecutar), que les permite ejecutar la mayoría de las ins-trucciones en un ciclo de reloj, lo que los hace relativa-mente rápidos entre los microcontroladores de 8 bits.

Como una primera síntesis, podemos decir que el setde instrucciones de los AVR es bastante “regular”, tenien-do en cuenta las siguientes consideraciones:

• Los registros punteros X, Y y Z tienen capacidadesde direccionamiento diferentes entre sí.

• Los registros 0 al 15 tienen diferentes capacidadesde direccionamiento que los registros 16 al 31.

• Las registros de I/O 0 al 31 tienen distintas caracte-rísticas que las posiciones 32 al 63.

• La instrucción CLR afecta los 'flag', mientras que lainstrucción SER no lo hace, a pesar de que parecen serinstrucciones complementarias (dejar todos los bits en 1,y dejar todos los bits en 0 respectivamente).

• Los códigos de operación 0x95C8 y 0x9004 hacenexactamente lo mismo (LPM).

Así como los PICs poseen un “entorno de desarrollo”

(MPLAB), los AVR también poseen herramientas de de-sarrollo gratuitas o de bajo costo capaces de descargar elcódigo al microcontrolador utilizando una versión de lasherramientas de licencia libre GNU.

Ahora bien, como es probable que este artículo estésiendo leído por estudiantes y/o principiantes, vamos adar una breve introducción que explique qué es un micro-controlador y para qué se lo emplea. Para este propósitoemplearemos definiciones realizadas por Emilio Tobosoen su página www.perso.wanadoo.es/emiliotoboso.Cabe aclarar que en el libro “PIC para Estudiantes”, deEditorial Quark, Ud, puede encontrar bibliografía extensasobre el tema y que en la página del Sr. Toboso tambiénpodrá encontrar abundante información orientada a losmicrocontroladores PICs,

Introducción a los Microcontroladores

Desde la invención de los semiconductores, el desarro-llo de la tecnología digital ha dado lugar a dispositivos ca-da vez más complejos y rápidos. Entre ellos los micropro-cesadores y los microcontroladores. Los microcontrolado-res se encuentran en nuestro trabajo, en nuestra casa y ennuestra vida. Controlan el funcionamiento de los tecladosde las computadoras, están en los teléfonos celulares, enlos hornos de microondas y, en general, en todo aparatoelectrónico que posea un grado de automatismo.

Se dice que un controlador es un dispositivo que seemplea para manejar uno o varios procesos. Por ejemplo,para ver televisión, un controlador evalúa la señal que in-gresa por la antena y la procesa para que a la pantalla yel parlante llegue con el mismo nivel promedio, sin impor-tar el nivel de la señal ingresante, siempre que esté den-tro de determinados parámetros. Hasta hace unos 35años, los controladores se construían con componenteselectrónicos de lógica discreta; posteriormente se em-plearon los microprocesadores, apoyados con chips dememoria y dispositivos de E/S sobre una tarjeta de circui-to impreso. Desde comienzos de los 90 todos los elemen-tos del controlador se han podido incluir en un solo circui-to integrado, el cual recibe el nombre de microcontrola-dor. Es decir, un microcontrolador es un chip que poseeen su interior a un microprocesador, memoria de progra-ma, memoria de datos y puertos para comunicarse con elexterior.

Un microcontrolador es un circuito integrado de altaescala de integración que incorpora la mayor parte de loselementos que configuran un controlador y que contienetodos los componentes fundamentales de un ordenador,aunque de limitadas prestaciones y que se suele destinara gobernar una sola tarea.

En la memoria de programa debe residir un conjunto

Artículo de Portada

22 Saber Electrónica

Page 3: 3 Entendiendo Los AVR Atmel

de sentencias (programa) que controlan el funcionamien-to de una tarea determinada, sus líneas de entrada/salidase conectan a los sensores y actuadores del dispositivo acontrolar y, debido a su pequeño tamaño, suele ir integra-do en el propio dispositivo al que automatiza.

Según lo dicho, un microcontrolador dispone normal-mente de los siguientes componentes:

• Procesador o CPU (Unidad Central de Proceso). • Memoria RAM para contener los datos. • Memoria para el programa tipo ROM/EPROM/EE-

PROM/Flash. • Líneas de E/S para comunicarse con el exterior.

También puede poseer otros bloques de apoyo queflexibilizan aún más su uso, tales como:

• Módulos para el control de periféricos: temporizado-res, puertos serie y paralelo, CAD: Conversores Analógi-co/Digital, CDA: Conversores Digital/Analógico, etc.

• Generador de impulsos de reloj que sincronizan elfuncionamiento de todo el sistema.

• Sistemas de protección de sobrecorriente o cortocir-cuito.

Cada fabricante de microcontroladores oferta un ele-vado número de modelos diferentes, desde los más sen-cillos hasta los más poderosos. Se puede seleccionar lacapacidad de las memorias, el número de líneas de E/S,la cantidad y potencia de los elementos auxiliares, la ve-locidad de funcionamiento, etc. Por todo ello, un aspectomuy importante del diseño de un sistema microcontrola-do es la selección del microcontrolador a utilizar. Unaaplicación típica podría emplear varios microcontrolado-res para controlar pequeñas partes del sistema. Estos pe-queños controladores podrían comunicarse entre ellos ycon un procesador central, probablemente más potente,para compartir la información y coordinar sus accionescomo, de hecho, ocurre ya habitualmente en cualquierPC. 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: lavarro-pas, hornos de microondas, helade-ras, lavavajillas, televisores, repro-ductores de DVD, minicomponentes,controles remotos, etc.

• Industria informática: Se en-cuentran en casi todos los periféri-cos; ratones, teclados, impresoras,escáner, etc.

• Domótica: sistemas de alarma y seguridad, controlde procesos hogareños a distancia, etc.

• Automación: climatización, seguridad, ABS, etc. • Industria: Autómatas, control de procesos, etc. • Otros: Instrumentación, electromedicina, ascenso-

res, calefacción, aire acondicionado, sistemas de nave-gación, etc.

En la figura 1 se puede apreciar la distribución de losmicrocontroladores en las áreas de más uso.

Arquitecturas de Proceso

En general, los microcontroladores poseen dos for-mas de trabajo en cuanto a los datos y direcciones. La ar-quitectura de Von Neumann (figura 2) se caracteriza pordisponer de una sola memoria principal donde se almace-nan datos e instrucciones de forma indistinta. A dicha me-moria se accede a través de un sistema de buses único(direcciones, datos y control) mientras que la arquitecturaHarvard (figura 3) dispone de dos memorias independien-

Microcontroladores AVR de Atmel

Saber Electrónica 33

Figura 1

Figura 2

Figura 3

Page 4: 3 Entendiendo Los AVR Atmel

tes, una que contiene sólo instrucciones y otra sólo datos.Ambas disponen de sus respectivos sistemas de busesde acceso y es posible realizar operaciones de acceso(lectura o escritura) simultáneamente en ambas memo-rias.

La Unidad Central de Proceso o CPU

Es el elemento más importante del microcontrolador ydetermina sus principales características, tanto a nivel dehardware como de software. Se encarga de direccionar lamemoria de instrucciones, recibir el código OP de la ins-trucción en curso, su decodificación y la ejecución de laoperación que implica la instrucción, así como la búsque-da 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 enlos 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 surepertorio, algunas de las cuales son muy sofisticadas ypotentes, requiriendo muchos ciclos para su ejecución.Una ventaja de los procesadores CISC es que ofrecen alprogramador instrucciones complejas que actúan comomacros.

• RISC: Tanto la industria de los computadores comer-ciales como la de los microcontroladores, están decan-tándose hacia la filosofía RISC (Computadores de Juegode Instrucciones Reducido). En estos procesadores el re-pertorio de instrucciones de máquina es muy reducido ylas instrucciones son simples y, generalmente, se ejecu-tan en un ciclo. La sencillez y rapidez de las instruccionespermiten optimizar el hardware y el software del procesa-dor.

• SISC: En los microcontroladores destinados a aplica-ciones muy concretas, el juego de instrucciones, ademásde ser reducido, es "específico"; o sea, las instrucciones seadaptan a las necesidades de la aplicación prevista. Estafilosofía se ha bautizado con el nombre de SISC (Compu-tadores de Juego de Instrucciones Específico).

La Memoria

La memoria de programa y datos está integrada en elpropio circuito integrado. Una parte debe ser no volátil, ti-po ROM, y se destina a contener el programa de instruc-ciones que gobierna la aplicación. Otra parte de memoriaserá tipo RAM, volátil, y se destina a guardar las variablesy los datos.

La memoria de datos (RAM) en estos dispositivos esde poca capacidad pues sólo debe contener las variablesy los cambios de información que se produzcan en eltranscurso del programa. Por otra parte, como sólo exis-te un programa activo, no se requiere guardar una copiadel mismo en la RAM pues se ejecuta directamente des-de la memoria de programa (ROM).

El usuario de PC está habituado a manejar Megaby-tes de memoria, pero los diseñadores con microcontrola-dores trabajan con capacidades de memoria de programade 512 bytes, 1kB, 2kB y hasta unos 128kB y de RAM de32 bytes, 68 bytes, 512 bytes (hasta unos 4kB).

Existen distintos tipos de memorias y en un microcon-trolador se puede encontrar cualquiera de ellas:

• ROM con máscara: Es una memoria no volátil desólo lectura, cuyo contenido se graba durante la fabrica-ción del chip. El término máscara viene de la forma comose fabrican los circuitos integrados. Estos se fabrican enobleas que contienen varias decenas de chips. Estasobleas se obtienen a partir de procesos fotoquímicos,donde se impregnan capas de silicio y óxido de silicio, ysegún convenga, se erosionan al exponerlos a la luz. Co-mo no todos los puntos han de ser erosionados, se sitúaentre la luz y la oblea una máscara con agujeros, de ma-nera que donde deba incidir la luz, ésta pasará. Con va-rios procesos similares, pero más complicados, se consi-gue fabricar los transistores y diodos que componen uncircuito integrado. El alto precio del diseño de la máscarasólo hace aconsejable el empleo de los microcontrolado-res, con este tipo de memoria, cuando se precisan canti-dades superiores a varios miles de unidades.

• OTP: Es una memoria no volátil de sólo lectura "pro-gramable una sola vez" por el usuario. OTP (One TimeProgrammable). Es el usuario quien puede escribir el pro-grama en el chip mediante un sencillo grabador controla-do por un programa desde una PC. La versión OTP es re-comendable cuando es muy corto el ciclo de diseño delproducto, o bien, en la construcción de prototipos y seriesmuy pequeñas.

• EPROM: Erasable Programmable Read OnIy Me-mory, pueden borrarse y grabarse muchas veces. La gra-bación se realiza, como en el caso de los OTP, con ungrabador gobernado desde una PC. Si, posteriormente,se desea borrar el contenido, disponen de una ventanade cristal en su superficie, por la que se somete a laEPROM a rayos ultravioleta durante varios minutos. Lascápsulas son de material cerámico y son más caros quelos microcontroladores con memoria OTP, que están he-chos con material plástico. Hoy día se utilizan poco, sien-do sustituidas por memorias EEPROM o Flash.

• EEPROM: Electrical Erasable Programmable ReadOnIy Memory, son memorias de sólo lectura, programa-

Artículo de Portada

44 Saber Electrónica

Page 5: 3 Entendiendo Los AVR Atmel

bles y borrables eléctricamente EEPROM a través de laaplicación de una tensión de predisposición Vpp. Tanto laprogramación como el borrado se realizan eléctricamen-te desde el propio grabador y bajo el control programadode una PC. Es muy cómoda y rápida la operación de gra-bado y la de borrado. No disponen de ventana de cristalen la superficie. Los microcontroladores dotados de me-moria EEPROM una vez instalados en el circuito, puedengrabarse y borrarse cuantas veces se quiera sin ser reti-rados de dicho circuito. Para ello se usan "grabadores encircuito" que confieren una gran flexibilidad y rapidez a lahora de realizar modificaciones en el programa de traba-jo. El número de veces que puede grabarse y borrarseuna memoria EEPROM es finito, por lo que no es reco-mendable una reprogramación continua. Hoy día estánsiendo sustituidas por memorias de tipo Flash. Se va ex-tendiendo en los fabricantes la tendencia de incluir unapequeña zona de memoria EEPROM en los circuitos pro-gramables, para guardar y modificar cómodamente unaserie de parámetros que adecúan el dispositivo a las con-diciones del entorno. Este ti-po de memoria es relativa-mente lenta.

• FLASH: Se trata de unamemoria no volátil, de bajoconsumo, que se puede es-cribir y borrar. Funciona comouna ROM y una RAM peroconsume menos y es más pe-queña. A diferencia de laROM, la memoria FLASH esprogramable en el circuito. Esmás rápida y de mayor densi-dad que la EEPROM. La alternativa FLASH está reco-mendada frente a la EEPROM cuando se precisa grancantidad de memoria de programa no volátil. Es más ve-loz y tolera más ciclos de escritura/borrado. Son idóneaspara la enseñanza y la Ingeniería de diseño. Las memo-rias EEPROM y FLASH son muy útiles al permitir que losmicrocontroladores que las incorporan puedan ser repro-gramados "en circuito", es decir, sin tener que sacar el cir-cuito integrado de la tarjeta. Así, un dispositivo con estetipo de memoria incorporado al control del motor de unautomóvil permite que pueda modificarse el programa du-rante la rutina de mantenimiento periódico, compensandolos 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 chipque contiene un microcontrolador es soportar las líneas

de E/S que comunican al computador interno con los pe-riféricos exteriores y, según los controladores de periféri-cos que posea cada modelo de microcontrolador, se des-tinan a proporcionar el soporte a las señales de entrada,salida y control. Todos los microcontroladores destinan al-gunas de sus patillas a soportar líneas de E/S de tipo di-gital, esto es, todo o nada. Por lo general, estas líneas seagrupan de ocho en ocho formando Puertos. Las líneasdigitales de los Puertos pueden configurarse como Entra-da o como Salida, cargando un 1 ó un 0 en el bit corres-pondiente de un registro destinado a su configuración.

Reloj (Clock)

Todos los microcontroladores disponen de un circuitooscilador que genera una onda cuadrada de alta frecuen-cia, que configura los impulsos de reloj usados en la sin-cronización de todas las operaciones del sistema. El cir-cuito de reloj está incorporado en el microcontrolador y

sólo se necesitan unos po-cos componentes exteriorespara seleccionar y estabili-zar la frecuencia de trabajo.Dichos componentes suelenconsistir en un cristal decuarzo junto a elementospasivos o bien un resonadorcerámico o una red R-C. Au-mentar la frecuencia de relojsupone disminuir el tiempoen que se ejecutan las ins-trucciones, pero lleva apare-

jado un incremento del consumo de energía y de calorgenerado.

Recursos Especiales del Microcontrolador

Cada fabricante posee numerosas versiones de unaarquitectura básica de microcontrolador. En algunas fami-lias se amplía las capacidades de las memorias, en otrasse incorporan nuevos recursos, en otras se reduce lasprestaciones al mínimo para aplicaciones muy simples,etc. El trabajo del diseñador es encontrar el modelo míni-mo que satisfaga todos los requerimientos de su aplica-ción. Así, minimizará el costo, el hardware y el software.Veamos algunos recursos:

Temporizadores y ContadoresLos temporizadores se emplean para controlar perío-

dos de tiempo y los contadores para llevar la cuenta deacontecimientos que suceden en el exterior. Para la me-

Microcontroladores AVR de Atmel

Saber Electrónica 55

Page 6: 3 Entendiendo Los AVR Atmel

dida de tiempos se carga un registro con el valor adecua-do y a continuación dicho valor se va incrementando odecrementando al ritmo de los impulsos de reloj o algúnmúltiplo hasta que se desborde y llegue a 0, momento enel que se produce un aviso a través del cambio de infor-mación en una variable o registro (registro de código decondiciones, por ejemplo).

Cuando se desean contar acontecimientos que sematerializan por cambios de nivel o flancos en alguna delas patillas del microcontrolador, el mencionado registrose va incrementando o decrementando al ritmo de dichosimpulsos.

Perro Guardián o "Watchdog"Normalmente, cuando un ordenador personal se blo-

quea por un fallo del software u otra causa, se pulsa elbotón del reset y se reinicia el sistema. Un microcontrola-dor suele funcionar sin el control de un supervisor y deforma continuada las 24 ho-ras del día. El Perro Guar-dián consiste en un tempori-zador que, cuando se des-borda y pasa por 0, provocaun reset automáticamenteen el sistema y generalmen-te se usa para “detectar” fa-llas de programas que oca-sionarían que el micro sequede trabajando dentro deun loop indefinidamente. Sedebe diseñar el programa detrabajo que controla la tareade forma que refresque o ini-cialice al Perro Guardián an-tes de que provoque el re-set. Si falla el programa o se bloquea, el programa no re-frescará al Perro Guardián y, al completar su temporiza-ción, provocará el reset del sistema.

Sleep, Estado de Reposo ó de Bajo ConsumoEn muchas situaciones de trabajo en que el microcon-

trolador debe esperar, sin hacer nada, a que se produzcaalgún acontecimiento externo que le ponga de nuevo enfuncionamiento, es preciso ahorrar pilas; como en el ca-so de los controles remotos, donde el sistema está a laespera de que el usuario oprima una tecla. Para ahorrarenergía, los microcontroladores disponen de una instruc-ción especial (SLEEP en algunos micros), que les pasa alestado de reposo o de bajo consumo, en el cual los re-querimientos de potencia son mínimos. En dicho estadose detiene el reloj principal y se "congelan" sus circuitosasociados, quedando el microcontrolador sumido en unprofundo "sueño". Al activarse una interrupción ocasiona-

da por el acontecimiento esperado, el microcontroladorse despierta y reanuda su trabajo. Para hacernos unaidea, esta función es parecida a la opción de Suspenderen el menú para apagar el equipo (en aquellas PCs conadministración avanzada de energía).

Procesamiento de Señales AnalógicasLos microcontroladores que incorporan un Conversor

A/D (Analógico/Digital) pueden procesar señales analógi-cas, tan abundantes en las aplicaciones. Suelen disponerde un multiplexor que permite aplicar a la entrada delCAD diversas señales analógicas desde las patillas delcircuito integrado.

Por otra parte un CDA o conversor D/A transforma losdatos digitales obtenidos del procesamiento de la compu-tador en su correspondiente señal analógica que saca alexterior por una de las patillas de la cápsula. Existen mu-chos dispositivos de salida que trabajan con señales ana-

lógicas.Algunos modelos de micro-controladores disponen inter-namente de un AmplificadorOperacional, que actúa comocomparador entre una señalfija de referencia y otra varia-ble que se aplica por una delas patillas de la cápsula. Lasalida del comparador pro-porciona un nivel lógico 1 ó 0según una señal sea mayor omenor que la otra.También hay modelos de mi-crocontroladores con un mó-dulo de tensión de referenciaque proporciona diversas

tensiones de referencia que se pueden aplicar en loscomparadores.

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 latensión de alimentación sea inferior al de brownout, eldispositivo se mantiene reseteado, comenzando a funcio-nar normalmente cuando sobrepasa dicho valor. Esto esmuy útil para evitar datos erróneos por transiciones y rui-dos en la línea de alimentación.

Modulador de Ancho de Pulsos o PWMSon circuitos que proporcionan en su salida impulsos

de anchura variable, que se ofrecen al exterior a travésde las patillas del encapsulado. Es útil para sistemas decontrol de potencia, como por ejemplo motores.

Artículo de Portada

66 Saber Electrónica

Page 7: 3 Entendiendo Los AVR Atmel

Puertos de ComunicaciónPara que el micro se pueda comunicar con otros dis-

positivos, otros buses de microprocesadores, buses desistemas, buses de redes y poder adaptarlos con otroselementos bajo otras normas y protocolos es precisoagregarle unidades o puertos de comunicación. Algunosmodelos disponen de recursos que permiten directamen-te esta tarea, entre los que destacan:

• UART, adaptador de comunicación serie asincróni-ca.

• USART, adaptador de comunicación serie sincróni-ca y asincrónica.

• Puerto paralelo esclavo para poder conectarse conlos buses de otros microprocesadores.

• USB (Universal Serial Bus). • Bus I2C, que es una interfaz serie de dos hilos de-

sarrollado por Philips. • Interface SPI, un puerto serie sincrónico. • CAN (Controller Area Network), para permitir la

adaptación con redes de conexionado multiplexado desa-rrollado conjuntamente por Bosch e Intel para el cablea-do de dispositivos en automóviles. En EE.UU. se usa elJ185O.

• TCP/IP, ya existen microcontroladores con un adap-tador de comunicación para este protocolo.

Tanto el I2C en televisores, como el Bus CAN en au-

tomóviles, fueron diseñados para simplificar el circuitoque supone un bus paralelo de 8 líneas dentro de un te-levisor, así como para librar de la carga que supone unacantidad ingente de cables en un vehículo.

**********************************************************

LOS MICROCONTROLADORES AVR

La empresa Atmel ha desarrollado una gran cantidadde microcontroladores en diferentes gamas, de forma si-milar a lo que ha hecho la empresa Microchip con nues-tros viejos amigos: “los PICs”.

Quizá, el más popular es el ATMEL AT90S1200, quees algo así como el 16F84 de Microchip (en cuanto a po-pularidad se refiere). A continuación se realiza algunosdatos comparativos entre el AT90S1200 y el PIC16F84:

Nº de instrucciones: AVR - 89, PIC - 35Registros RAM: AVR - 32, PIC - 68Velocidad: AVR - 12MHz, PIC: 20MHz Memoria de Programa: AVR - 1kByte FLASH (512 lí-

neas de programa, 16bits por inst.), PIC:1kx14 (1024 lí-neas de programa de 14 bit cada una).

Memoria EEPROM libre: AVR - 64Bytes, PIC - 64By-tes

Salidas: AVR - 15, PIC - 13TIMER: AVR - 1 de 8bit (con prescaler desde CK has-

ta CK/1024), PIC - 1 de 8 bit (con prescaler desde 1:2hasta 1:256)

Comparador Analógico (NO ADC): AVR - 1 PIC - NOPOSEE

Watchdog: Ambos poseenOscilador interno: Ambos poseen, en el AVR sólo ha-

bilitable con programación paralelaNiveles de pila (STACK): AVR - 3, PIC - 8Interrupciones: AVR - reset, interna, externa, timer y

por comparador analógico, PIC - 5 interrupcionesBásicamente, los AVR tienen 3 registros para cada

puerto de salida a saber:

• DDRB - Sirve para decir qué patas son de entradao salida, “0” es entrada, “1” es salida (es inverso a losPIC).

• PINB - Registro que sirve para entradas solamente.• PORTB - Registro que sirve para salidas solamen-

te.

Esto significa que para leer una entrada se debe usarel registro PINB mientras que para escribir datos en unasalida se debe emplear el registro PORTB (obviamente sihacemos referencia a las patas del puerto B).

En el ATMEL AT90S1200 el PortB tiene 8 bits de da-tos, a diferencia del PORTD que tiene sólo 7. El bit 7 delPORTD no se emplea; PORTD también consta de 3 re-gistros: DDRD, PORTD y PIND.

Los Atmel de Uso Automotriz

Por algún micro debemos empezar…Cuando comenzamos a realizar artículos con micro-

controladores PIC en Saber Electrónica, allá por 1998,elegimos el 16F84 y nuestro “modelo o mentor” era el vie-jo y conocido David Tate. Conversando con el Ing. IsmaelCervantes y en base al trabajo que está realizando el Ing.Luís Roberto Rodríguez, llegué a la conclusión que debíarecurrir a la fuente y así determiné que lo mejor es reali-zar la descripción de varios modelos, tarea que iremosdesarrollando en diferentes ediciones de nuestra queridarevista. En esta oportunidad especificaremos algunas ca-racterísticas y describiremos el funcionamiento de la se-rie de uso automotor ATtiny 25/45/85. A su vez, para con-cluir, daremos los circuitos de programadores de algunosmodelos con licencia libre GNU.

Microcontroladores AVR de Atmel

Saber Electrónica 77

Page 8: 3 Entendiendo Los AVR Atmel

La Serie ATtiny 25/45/85

El ATtiny 25/45/85 es un microcontrolador CMOS de 8bits de baja potencia basado en la arquitectura RISC me-jorada del AVR. Mediante la ejecución de poderosas ins-trucciones en un solo ciclo de reloj, el ATtiny 225/45/85 lo-gra una producción que alcanza 1MIPS por MHz, permi-tiéndole al diseñador de sistemas optimizar la relaciónconsumo de potencia-velocidad de procesamiento.

Las principales características del dispositivo son lassiguientes:

* 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 Condi-

ción de Comienzo.-ADC de 10 bits:

·Cuatro Canales de Una Sola Salida.·Dos Pares de Canales ADC Diferen-

ciales 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.

-Fuentes de Interrupción Externas e Internas.-Modos de Descanso en Baja Potencia, de Re-

ducción de Ruido de ADC, y de Reducción de Potencia.-Circuito Mejorado de Reinicialización de Encen-

dido.-Circuito Programable de Detección de Brown-

out (estado en que la tensión es entre un 8 y un 12% in-ferior 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 deeste microcontrolador.

Diagrama en Bloques

En la figura 4 se puede observar el diagrama en blo-ques de la serie ATtiny 25/45/85 de ATmel.

El núcleo del AVR combina un conjunto rico de ins-trucciones con 32 registros de trabajo de propósito gene-ral. Los 32 registros están directamente conectados a laUnidad Aritmético-Lógica (ALU), permitiendo que 2 regis-tros independientes se accedan en una sola instrucciónejecutada en un ciclo de reloj. La arquitectura resultantees más eficiente en lo que respecta a código, en tantoque logra un rendimiento hasta 10 veces superior que losmicrocontroladores convencionales CISC.

De las características enunciadas anteriormente, so-bre 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 deSRAM, 6 líneas de entrada/salida de propósito general,32 registros de trabajo de propósito general, un Tempori-zador/Contador de 8 bits con modos de comparación, unTemporizador/Contador de alta velocidad de 8 bits, una

Artículo de Portada

88 Saber Electrónica

Page 9: 3 Entendiendo Los AVR Atmel

Interfaz Serie Universal, Interrupciones Internas y Exter-nas, un ADC de 4 canales de 10 bits, un TemporizadorProgramable de Vigilancia con Oscilador Interno y 3 mo-dos de ahorro de potencia seleccionables por software.

El modo de Descanso detiene la CPU en tanto quepermite que la SRAM, el Temporizador/Contador, el ADC,el Comparador Analógico, y el sistema de Interrupción si-gan trabajando. El modo de Reducción de Potencia guar-

Microcontroladores AVR de Atmel

Saber Electrónica 99

Figura 4

Page 10: 3 Entendiendo Los AVR Atmel

da el contenido de los regis-tros, inhabilitando todas lasfunciones del integrado has-ta la siguiente Interrupción oReinicialización. El modo deReducción de Ruido delADC detiene la CPU y todoslos módulos de E/S exceptoel ADC, a fin de minimizar elruido de conmutación du-rante las conversiones delADC.

El dispositivo se fabricausando la tecnología de me-moria no-volátil y alta densi-dad de ATMEL.

El sistema de interfazserial que maneja el integra-do permite que la Memoriade Programa se reprogrameen el sistema a través deuna interfaz serie (SPI) me-diante un programador con-vencional de memorias no-volátiles o mediante un códi-go de carga incorporado enel integrado que se ejecutaen el núcleo del AVR.

El AVR tiene un soportebasado en herramientas de desarrollo del sistema y deprogramación que incluyen: Compiladores C, Macroen-sambladores, Depurador/Simuladores de Programa,Emuladores en el Circuito y Conjuntos de Componentesde Evaluación.

Este microcontrolador ha sido desarrollado y fabrica-do de acuerdo con los requerimientos más exigentes dela norma internacional ISO-TS-16949 que define los gra-dos de calidad para uso automotriz.

Descripción de los Pines:

Vcc: Tensión de alimentación.

GND: Masa, tierra.

Puerto B (PB5… PB0): El Puerto B es un puerto deE/S bidireccional de 6 bits con resistores pull-up internos(seleccionables para cada bit). Los buffers de salida delpuerto B tienen características simétricas de excitacióncon alta capacidad, tanto de fuente como de sumidero.Como entradas, las patas del Puerto B que externamen-

te se ponen en 0 entregarán corriente si se activan los re-sistores pull-up.Las patas del Puerto B son del tipo tri-sta-te cuando se activa una condición de reinicialización,aunque el reloj no esté funcionando.

RESET: Entrada de Reinicialización. Un 0 en esta pa-ta, durante más de un pulso mínimo, generará una reini-cialización aunque el reloj no esté funcionando.

La CPU del AVR

Trataremos la arquitectura del núcleo del AVR en ge-neral. La función principal del núcleo de la CPU es ase-gurar una correcta ejecución del programa. La CPU, porlo tanto, debe acceder a memorias, realizar cálculos, con-trolar periféricos, y manejar interrupciones.

En la figura 5 se puede observar la arquitectura de laCPU. A fin de maximizar el desempeño y el paralelismo,el AVR usa una arquitectura Harvard, con memorias y bu-ses separados para el programa y los datos. Las instruc-ciones que están en la memoria de Programa se ejecu-tan con un solo nivel de transmisión por conductos. Mien-tras que se ejecuta una instrucción, se extrae la siguien-

Artículo de Portada

1100 Saber Electrónica

Figura 5

Page 11: 3 Entendiendo Los AVR Atmel

te instrucción de la memoria de Programa. Este concep-to permite que las instrucciones se ejecuten en cada ciclode reloj. La memoria de programa es la memoria flash re-programable en el Sistema.

El Archivo de Registros de acceso rápido contiene 32registros de trabajo de propósito general de 8 bits con untiempo de acceso de un solo ciclo de reloj. Esto permitela operación de la Unidad Aritmético Lógica (ALU) en unsólo ciclo. En una típica operación de la ALU, se toman 2operandos del Archivo de Registros, se ejecuta la opera-ción, y el resultado se almacena nuevamente en el Archi-vo de Registros en un ciclo de reloj.

Seis de los 32 registros se pueden usar como 3 regis-tros apuntadores de direccionamiento indirecto de 16 bitspara el direccionamiento en el Espacio de Datos, permi-tiendo eficientes cálculos de direcciones. Uno de estosapuntadores de direcciones también se puede usar comoapuntador de direcciones para tablas de consulta en lamemoria Flash de Programa. Estos registros funcionalesagregados son los registros X, Y y Z de 16 bits.

La ALU soporta operaciones aritméticas y lógicas en-tre registros o entre una constante y un registro. Las ope-raciones de un solo registro también se pueden ejecutaren la ALU. Luego de una operación aritmética, el Regis-tro de Estado se actualiza para reflejar la información so-bre el resultado de la operación.

El Programa tiene instrucciones de salto condicional eincondicional e instrucciones de llamada, capaces de di-reccionar en forma directa todo el espacio de direcciones.La mayoría de las instrucciones del AVR tienen un soloformato de palabra de 16 bits. Cada dirección de memo-ria de Programa contiene una instrucción de 16 o de 32bits.

Durante las interrupciones y las llamadas a subrutina,el Contador de Programa de dirección de retorno (PC) sealmacena en la Pila. La Pila se ubica en la SRAM de da-tos 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 SPen la rutina de reinicialización (antes que se ejecuten lassubrutinas o las interrupciones). El Puntero de Pila (SP)se puede leer /escribir en el espacio de E/S. La SRAM dedatos se puede acceder fácilmente mediante 5 modos di-ferentes de direccionamiento soportados en la arquitectu-ra del AVR.

Los espacios de memoria en la arquitectura del AVRson todos lineales y regulares.

Un módulo de interrupción flexible tiene sus registrosde control en el espacio de E/S con un bit adicional deHabilitación de Interrupción Global en el Registro de Es-tado. Todas las interrupciones tienen un Vector de Inte-rrupción separado en la tabla de Vectores de Interrupción.Las interrupciones tienen una prioridad de acuerdo consu posición en la tabla. Cuanto más baja es la direccióndel Vector de Interrupciones, más alta es la prioridad.

El espacio de memoria de E/S contiene 64 direccio-nes para funciones periféricas de la CPU como Registrosde Control, SPI, y otras funciones de E/S. La memoria deE/S se puede acceder directamente, o como las posicio-nes del Espacio de Datos que están a continuación de lasdel Archivo de Registros, 0x20-0x5F.

La Unidad Aritmético-Lógica (ALU)

La ALU del AVR de alto desempeño trabaja en cone-xión directa con todos los 32 registros de trabajo de pro-pósito general. Dentro de un solo ciclo de reloj se ejecu-tan las operaciones aritméticas entre registros de propó-sito general o entre un registro y uno inmediato. Las ope-raciones de la ALU se dividen en 3 categorías principales:aritméticas, lógicas, y funciones con bits. Algunas imple-mentaciones de la arquitectura también proveen un pode-roso 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 elresultado de la instrucción más recientemente ejecutada.Esta información se puede usar para alterar el flujo delprograma a fin de ejecutar operaciones condicionales.Notemos que el Registro de Estado se actualiza despuésde todas las operaciones de la ALU. Esto, en muchos ca-sos, evita la necesidad de usar instrucciones de compa-ración especiales, resultando un código más compacto ymás rápido.

El Registro de Estado no se almacena automática-mente cuando se ingresa a una rutina de interrupción y sevuelve a almacenar cuando se regresa de una interrup-ción. Esto se maneja mediante el software.

El Registro de Estado del AVR (SREG) posee una es-tructura como la mostrada en la figura 6.

Microcontroladores AVR de Atmel

Saber Electrónica 1111

Figura 6

Page 12: 3 Entendiendo Los AVR Atmel

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 in-terrupción se ejecuta luego en registros de control sepa-rados. Si se pone en 0, no se habilita ninguna interrup-ción, independientemente de cómo estén las posicionesindividuales de habilitación de interrupción. El bit I se po-ne en 0 mediante hardware después que haya ocurridouna interrupción, y se pone en 1 mediante la instrucciónRETI para permitir interrupciones subsiguientes. El bit Itambién se puede poner en 1 y en 0 mediante las instruc-ciones 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 bitoperado. Un bit de un registro del Archivo de Registros sepuede copiar en T mediante la instrucción BST, y un bit enT se puede copiar en un bit de un registro del Archivo deRegistros mediante la instrucción BLD.

Bit 5 - H: Bandera de Semi-acarreo.Este bit H indica un semi-acarreo en algunas opera-

ciones aritméticas. El semi-acarreo es útil en la aritméticaBCD.

Bit 4 - S: Bit de Signo.El bit S siempre es una O exclusiva entre la Bandera Ne-

gativa N y la Bandera de Rebalse V con complemento a 2 .

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 arit-

mé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 conjuntode instrucciones RISC mejorado del AVR. A fin de lograrel desempeño y la flexibilidad requeridas, el Archivo deRegistros soporta los siguientes esquemas de E/S:

• Un operando de salida de 8 bits y una entrada de re-sultados de 8 bits.

• Dos operandos de salida de 8 bits y una entrada deresultados de 8 bits.

• Dos operandos de salida de 8 bits y una entrada deresultados de 16 bits.

• Un operando de salida de 16 bits yuna entrada de resultados de 16 bits.

La figura 7 muestra la estructura de los32 registros de trabajo de propósitogeneral de la CPU.La mayoría de las instrucciones queoperan en el Archivo de Registros tie-nen acceso directo a todos los regis-tros, y la mayoría de ellas son instruc-ciones de un solo ciclo.Como se ve en la figura 7, a cada re-gistro se le asigna una dirección dememoria de Datos, las cuales se ma-pean directamente en las primeras 32posiciones del Espacio de Datos delusuario. Aunque no se implementan fí-sicamente como posiciones de memo-ria de SRAM, esta organización dememoria proporciona una gran flexibi-lidad en el acceso de los registros, yaque los registros apuntadores X, Y y Zpueden apuntar a cualquier registrodel archivo.

Artículo de Portada

1122 Saber Electrónica

Figura 7

Page 13: 3 Entendiendo Los AVR Atmel

Los Registros X, Y y Z

Los registros R26..R31 tienen algunas funciones adi-cionales a su uso de propósito general. Estos son punte-ros de direcciones de 16 bits para el direccionamiento in-directo del espacio de datos. Los 3 registros X, Y y Z dedireccionamiento indirecto se definen como se describeen la figura 8. En los distintos modos de direccionamien-to estos registros de direcciones tienen funciones talescomo desplazamiento fijo, incremento automático y de-cremento automático.

Primeras Conclusiones

En esta nota hemos dado una introducción sobre losmicrocontroladores Atmel.

En sucesivas ediciones continuaremos explicando elfuncionamiento de los diferentesbloques componentes del micro,describiendo también algunos pro-yectos de mucha utilidad, tal comolo es la Interfase Gráfica de Videopublicada en la edición anterior.

Un Sencillo Programador por Puerto Paralelo

Navegando por Internet, enbusca de información que me per-mita “tomar experiencia” sobre es-tos temas con el objeto de com-partirla con Uds, encontré un sen-cillo programador por puerto para-lelo en la página: www.cesko-.host.sk. Dicha página (que estáen inglés), posee muy buena infor-mación y varios circuitos que le

pueden ser de utilidad. Si bien se propone el cargador pa-ra el Atmel AT90S2313, descargando la aplicación “Igor-PlugUSBprogrammer” es posible programar otros microsde 20 patas. Para bajar la aplicación que permite realizarla carga del programa, el lector debe registrarse en la pá-gina del autor. En la figura 9 se puede apreciar el circuitoeléctrico de esteprogramador y enla figura 10 unaimagen de la pan-talla que muestrala carga del pro-grama. Les reco-miendo configuraren la Bios de suordenador que elpuerto paraleloesté en modo

Microcontroladores AVR de Atmel

Saber Electrónica 1133

Figura 8

Figura 10

Figura 9

Page 14: 3 Entendiendo Los AVR Atmel

ECP para que no haya ningún inconveniente al progra-mar. Por último, en la figura 11 se puede observar el en-torno de desarrollo de microcontroladores Atmel de 40terminales que estamos empleando para el armado denuestras prácticas y que emplearemos también para el di-

seño y construcción de prototipos. Esta placa entrenado-ra es la que usamos para “programar” el Atmel Mega8515 que sirvió de prototipo para el armado de la Interfa-se Gráfica de Video de la edición anterior de Saber Elec-trónica. ✪

Artículo de Portada

1144 Saber Electrónica

Figura 11