UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57...

84
UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA PROYECTO TERMINAL DE INGENIERÍA ELECTRÓNICA Evaluación de Microcontroladores Propuesta de Diseño de la tarjeta experimental UAMI-AVR ALUMNOS CHÁVEZ CALDERÓN ARMANDO PAREDES GARCÍA HORACIO LICENCIATURA EN INGENIERÍA ELECTRÓNICA ESPECIALIDAD COMUNICACIONES ASESOR DEL PROYECTO M. EN C. SUARÉZ FERNANDEZ AGUSTÍN PROFESOR INVESTIGADOR DEL ÁREA DE INGENIERÍA BIOMÉDICA MÉXICO D.F., JUNIO DE 2006.

Transcript of UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57...

Page 1: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

UNIVERSIDAD AUTÓNOMA METROPOLITANAUNIDAD IZTAPALAPA

DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA

PROYECTO TERMINAL DE INGENIERÍA ELECTRÓNICAEvaluación de Microcontroladores

Propuesta de Diseño de la tarjeta experimental UAMI-AVR

ALUMNOS

CHÁVEZ CALDERÓN ARMANDOPAREDES GARCÍA HORACIO

LICENCIATURA EN INGENIERÍA ELECTRÓNICAESPECIALIDAD COMUNICACIONES

ASESOR DEL PROYECTOM. EN C. SUARÉZ FERNANDEZ AGUSTÍN

PROFESOR INVESTIGADOR DEL ÁREA DE INGENIERÍA BIOMÉDICA

MÉXICO D.F., JUNIO DE 2006.

Page 2: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

DEDICATORIA

A DiosPor que sin Él nada sería posible.

A mis padresPor su comprensión y apoyo financiero.

A FannyPor su ejemplo y apoyo.

A mis compañeros, amigos y maestrosPor sus enseñanzas, esfuerzos y comprensión.

Ing. Armando Chávez Calderón

A mi familia Por su paciencia, cariño y consejos

A mis amigosPor las fiestas no convividas con ellos

A todos ellos gracias

Ing. Horacio Paredes García

Diseño de la tarjeta experimental UAMI-AVR

Page 3: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

TABLA DE CONTENIDO Pag.

Dedicatoria......................................................................................................................... 1

ABSTRACT......................................................................................................................... 4

Objetivo............................................................................................................................... 4

Justificación....................................................................................................................... 4

Capitulo 1

INTRODUCCIÓN A LOS MICROCONTROLADORES1.1 Introducción 51.2 Arquitectura básica 61.3 Bloques internos del microcontrolador 81.4 Recursos especiales 111.5 El mercado de los microcontroladores 121.6 Herramientas para el desarrollo de aplicaciones 131.7 Desarrollo del software 14

Capitulo 2

ELECCIÓN DEL MICROCONTROLADOR2.1 ¿Qué microcontrolador emplear? 162.2 Costos 162.3 Aplicación 16

2.3.1 Procesamiento de datos 162.3.2 Entrada / Salida 172.3.3 Consumo 172.3.4 Memoria 172.3.5 Ancho de palabra 172.3.6 Diseño 182.4 La familia de los PIC vs. La familia de los AVR cómo elección 18

Capitulo 3

COMPARATIVOS DE AMBOS MICROCONTROLADORES3.1 Comparativos (Características Relevantes) 193.2 Conclusiones de la evaluación 213.3 Comentarios finales 24

Diseño de la tarjeta experimental UAMI-AVR

Page 4: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Capitulo 4

DISEÑO DE LA TARJETA UAMI-AVR4.1 Sección Fuente de Alimentación 264.2 Sección Comunicación Serial 274.3 Sección de Control 30

4.3.1 Algoritmo de programación serial 324.3.2 Características de la programación serial 35

4.4 Sección Selección de microcontrolador A y B 354.5 Sección Programador 404.6 Sección Banco de leds 40

Capitulo 5

ENTORNO DE PROGRAMACIÓN5.1 ¿Cómo programar? 43

5.1.1 Hardware 435.1.2 Software (AVR Studio 4® y AVR Prog®) 43

Apéndice ATarjeta UAMI-AVR v1.0 57Microcontroladores soportados 57Características 57

Apéndice BGuía rápida del ensamblador AVR® 58

Apéndice CCaracterísticas eléctricas de la tarjeta UAMI-AVR 65

Apéndice DPrograma de aplicación de la tarjeta UAMI-AVR 66

Referencias 81

Diseño de la tarjeta experimental UAMI-AVR

Page 5: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Abstrac

En el contenido de este reporte damos una descripción general de lo que es un microcontrolador, su arquitectura, sus aplicaciones y la justificación de su uso actualmente en aplicaciones, que van desde académicas, así como en aplicaciones especificas y profesionales en el ámbito de los sistemas digitales.Posteriormente se evaluaron algunos microcontroladores comerciales de las marcas ATMEL® y MICROCHIP®, partiendo de su disponibilidad comercial en México, costo; y de sus recursos técnicos como lo son sus periféricos integrados: EEPROM, RAM, FLASH, su herramienta de desarrollo, conjunto de instrucciones, control de periféricos, interrupciones disponibles y modos de baja potencia.Al finalizar dicha evaluación se opto por elegir los microcontroladores AVR de la marca ATMEL®, debido a su modernidad, recursos técnicos y disponibilidad comercial. Con ello partimos con base en algunas aplicaciones típicas, al diseño de la tarjeta experimental UAMI-AVR, que en su inicio se basó en dos microcontroladores AVR®, el AT90S2313 y el ATMEGA16; ya dentro del proceso de diseño se decidió que, para que ésta tuviese mayor versatilidad soportará la grabación de cinco microcontroladores más, dando soporte así a los siguientes modelos: ATMEGA32, ATMEGA8535, AT90S1200, AT90S8535 y ATtiny2313.

ObjetivoDiseño de la tarjeta UAMI-AVR para los cursos de Sistemas Digitales de la UAM-Iztapalapa.

JustificaciónActualmente, se utilizan como base experimental de los cursos de Sistemas Digitales

diferentes microprocesadores o microcontroladores. En el caso particular, del

microprocesador 80C188EB, tarjeta UAMI-188EB, las memorias adicionales que se

requieren, debido a su baja capacidad, están al final de su ciclo comercial. Los

microcontroladores, en la gran mayoría de los casos, tienen integradas las memorias

necesarias y tienen la posibilidad de estar disponibles como muestras comerciales sin costo.

Además de tener una mayor cantidad de periféricos que permiten darle a los cursos

diferentes enfoques, ya que en estos convergen dos áreas del departamento de eléctrica que

son Ingeniería Electrónica con sus dos especialidades Comunicaciones y Computación, e

Ingeniería Biomédica con la especialidad de instrumentación.

Diseño de la tarjeta experimental UAMI-AVR

Page 6: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

1Introducción a los microcontroladores

1.1 Introducción

Primero hay que entender ciertas diferencias que existen entre un microprocesador y un

microcontrolador, básicamente la diferencia es la siguiente: un microprocesador es una CPU

(Unidad Central de Proceso) en un solo integrado, mientras que un microcontrolador es un

sistema basado en una CPU en un solo integrado orientado en general a aplicaciones de

control y adquisición de señales.

Los microcontroladores tienen su uso en sistemas de control, aplicaciones industriales,

electrodomésticos, biomédicas, comunicaciones, meteorológicas, etc.

La gran mayoría de los microcontroladores son fáciles de usar y por ello su uso a proliferado

en muchas áreas, además aportan una gran flexibilidad que conlleva a una potente gama de

posibilidades para los diseñadores. Fig. 1

Fig. 1 aplicaciones típicas de un microcontrolador

Diseño de la tarjeta experimental UAMI-AVR

Page 7: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Su gran versatilidad y flexibilidad se dejan ver en las múltiples aplicaciones que posibilitan

las potencialidades de un microcontrolador, como lo pueden ser sus interfaces con motores,

pantallas LCD, matriz, etc., comunicación con PC’s, leer y digitalizar valores de sensores

externos, conectarse en una red de microcontroladores, etc., con la ventaja de que esto

puede hacerse con muy pocos componentes externos. Por ello al usar un microcontrolador

en algún diseño, el resultado final será compacto, de costo bajo y fácil de depurar.

La estructura típica de un microcontrolador dispone de los siguientes elementos, fig. 2.

Fig. 2 arquitectura general de un microcontrolador

1.2 Arquitectura básica

Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de Von

Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de

Von Neumann 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 bus único (direcciones, datos y control).

Diseño de la tarjeta experimental UAMI-AVR

Page 8: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

La arquitectura Harvard dispone de dos memorias independientes una, que contiene sólo

instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de bus de

acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en

ambas memorias. Figura 3.

Fig. 3 La arquitectura Harvard dispone de dos memorias independientes para datos y para instrucciones, permitiendo accesos simultáneos.

RISC

La industria de los microcontroladores está decantándose hacia la filosofía RISC

(Computadoras de Juego de Instrucciones Reducido). En estos 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 (Computadoras de Juego de Instrucciones Específico).

Diseño de la tarjeta experimental UAMI-AVR

Page 9: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

1.3 Bloques internos del microcontrolador

CPU

Es la unidad de de procesamiento central. Esta toma las instrucciones almacenadas en la

memoria de programa, decodifica estas instrucciones y las ejecuta. La CPU está compuesta

por registros, la Unidad Lógico Aritmética (ALU), el decodificador de instrucciones y la

circuitería de control.

Memoria de programa

La memoria de programa almacena las instrucciones que forman el programa. La memoria

de programa en los microcontroladores es usualmente no volátil, puede ser EEPROM y/o

FLASH.

RAM

La RAM es la memoria de datos del microcontrolador. Esta es usada por el CPU para

almacenar variables así como la pila y el “heap”. La pila es un área de memoria que se

utiliza para almacenar direcciones de retorno y variables que se le pasan a las funciones del

programa, el “heap” es un área de memoria que se utiliza para asignación dinámica de

memoria.

Reloj oscilador

El microprocesador ejecuta el programa fuera de la memoria de programa a determinada

velocidad, esta velocidad es determinada por la frecuencia del reloj oscilador, este podría ser

un oscilador interno o un oscilador con un elemento de tiempo externo, como un oscilador

de cuarzo (cristal) usado comúnmente. Tan pronto como se enciende el microcontrolador la

operación del oscilador debe iniciarse.

Reset y circuito detector

El circuito de reinicio (reset) en el microcontrolador asegura que al inicio todos los

componentes y circuitos de control tengan un estado inicial predefinido y todos los registros

sean iniciados adecuadamente.

Diseño de la tarjeta experimental UAMI-AVR

Page 10: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Puertos de comunicación

Estos son componentes muy usados en los microcontroladores, pues se necesitan para

comunicarse con dispositivos externos, estos operan a diferentes velocidades (según se

requiera). Los puertos de comunicación toman bytes del microcontrolador y los envían

afuera un bit a la vez hacia uno de los pines de salida, de forma similar aceptan datos un bit

a la vez hasta formar un byte y presentárselo al CPU. Este tipo de puertos de comunicación,

los cuales reciben y transmiten datos bit por bit se le denomina puerto serie, existen puertos

síncronos y asíncronos, los primeros necesitan de una señal de reloj que acompañe a los

datos y que lleve la información sobre la temporización, mientras que en los segundos la

información de temporización es tomada de los datos. Generalmente este puerto es

integrado en un chip dentro del microcontrolador llamado UART (Recepción Transmisión

Asíncrona Universal) o USART (Recepción Transmisión Asíncrona Síncrona Universal).

Puertos de entrada / salida digitales

Estos puertos de E / S se usan para intercambiar datos digitales con el exterior. Comparados

con el puerto serial, los datos en un puerto de E / S digital se envían en bytes.

Puertos entrada / salida analógicos

Las entradas analógicas son procesadas usando un Convertidor Analógico Digital (ADC). Los

microcontroladores pueden poseer un ADC y un comparador analógico, estos, bajo la

supervisión del software, son usados para la adquisición de datos analógicos, principalmente

de sensores externos. Las salidas analógicas se logran usando un Convertidor Digital

Analógico (DAC), generalmente externo, pero la mayoría de los microcontroladores están

equipados con un modulador de ancho de pulso (PWM), que puede ser usado para obtener

salidas analógicas de voltaje con un filtro RC, estás salidas pueden usarse para controlar

motores, pantallas, generar sonido, etc.

Temporizador

Este es usado por el microcontrolador para eventos de tiempo, por ejemplo puede haber un

dato que necesite ser visualizado en una pantalla en ciertos instantes. El temporizador

también puede ser usado para contar eventos internos o externos, en este caso se le llama

contador o cronómetro.

Diseño de la tarjeta experimental UAMI-AVR

Page 11: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Temporizador “Watchdog” (WDT)

Un WDT (“perro guardián”)1 es un temporizador especial con una función específica. Este es

usualmente usado para prevenir caídas de software. Trabaja de la siguiente manera: el WDT

es básicamente un contador donde la frecuencia de su entrada de reloj se elige, de acuerdo

a ciertos puntos del programa donde el diseñador debe poner una instrucción para reponer

(resetear) este contador, así si el contador se desborda se reinicia (resetea) el

microcontrolador, i.e., un desbordamiento del WDT implica que el programa se quedo

esperando en algún punto.

Haciendo una analogía con una PC, cuando esta se bloquea por una falla en el software u

otra causa, se pulsa el botón del reset (reinicio) y se reinicializa el sistema. Pero un

microcontrolador funciona sin el control de un supervisor y de forma continua las 24 horas

del día. El WDT a grandes rasgos consiste en un temporizador que, cuando se desborda y

pasa por 0, provoca un reset (reinicio) automáticamente en el sistema.

Para esto se debe diseñar el programa de trabajo que controla la tarea de forma que

refresque o inicialice al WDT antes de que provoque el reinicio (reset). Si falla el programa o

se bloquea, no se refrescará al WDT y, al completar su temporización, se dice comúnmente

que “ladrará y ladrará” hasta provocar el reset.

RTC (Reloj de Tiempo Real)

Este es un reloj de tiempo real, es un temporizador especial con la tarea de mantener el

tiempo del día, mes, hora. Este puede ser usado como alarma para ciertos eventos.

Sistemas embebidos

El microcontrolador es en definitiva un circuito integrado que incluye componentes de un

sistema basado en una CPU. Debido a su reducido tamaño es posible montar el

microcontrolador en el propio dispositivo al que gobierna. En este caso el microcontrolador

recibe el nombre de microcontrolador empotrado (embedded controller).

La frase “divide y vencerás” se hace presente también en la arquitectura de los

microcontroladores, de forma tal que aunque los datos se procesan en el bloque de la CPU,

cada uno de los periféricos es autónomo.

1Traducción coloquial para watchdog, por separado (watch: reloj, dog: perrro)

Diseño de la tarjeta experimental UAMI-AVR

Page 12: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Así por ejemplo para transmitir un dato por el puerto serial, la CPU no tiene que estar

atendiendo la transmisión del dato en cada instante de tiempo (polling), esta simplemente le

da el byte al módulo por el que lo quiere transmitir y este modulo se encarga de transmitir y

producir la señal de reloj; de esta forma la CPU puede estar realizando otras tareas mientras

el dato se transmite.

De la misma manera cada uno de los módulos integrados requiere de un mínimo de la CPU.

Reduciendo las tareas que debe realizar la CPU, obtenemos un poderoso microcontrolador,

manejando los eventos sin la necesidad de que el tiempo de procesamiento sea gastado en

este manejo. Esto es importante principalmente por que el mayor uso de los

microcontroladores es en procesos de control automático, los cuales en su mayoría son

rápidos, de esta forma sería lamentable que la CPU estuviera gastando tiempo en transmitir

un dato a la PC, en contar tiempo o realizar una conversión analógica digital, si el dato

puede ser tratado de manera automática para cada uno de los eventos antes mencionados.

1.4 Recursos especiales

Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador.

En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en

otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del

diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su

aplicación. De esta forma, minimizará el costo, el hardware y el software.

UART

Adaptador de comunicación serie asíncrona.

USART

Adaptador de comunicación serie síncrona y asíncrona.

MUX (Multiplexor) y CAD (Convertidor Analógico Digital)

Permite la adquisición de señales externas conjuntamente con un multiplexor.

Puerto paralelo Esclavo

Para poder conectarse con los buses de otros microprocesadores.

Diseño de la tarjeta experimental UAMI-AVR

Page 13: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Bus I2C

Es una interfaz serie de dos hilos (TWI:Two Wire serial Interface) y protocolo desarrollado

por Philips. Es un bus robusto y con una comunicación muy eficiente, puede direccionar

hasta 128 dispositivos arbitrariamente en el mismo bus con la posibilidad de manejar

múltiples “masters” en el bus.

CAN (Controller Area Network)

Permite la adaptación con redes de conexionado multiplexado desarrollado conjuntamente

por Bosch e Intel para el cableado de dispositivos en automóviles.

LIN (Local Interconnect Network)

Protocolo LIN (Interconexión de Red Local) sin necesidad de componentes externos. Es un

protocolo de comunicación serial que soporta eficientemente nodos de control mecatronicos

en redes distribuidas. Es ideal en el uso de aplicaciones automotivas. Consiste en un nodo

maestro y múltiples nodos esclavo.

1.5 El mercado de los microcontroladores

Aunque en el mercado de la microelectrónica la mayor atención la acaparan los desarrollos

de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por cada

uno de los otros.

Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante sea

entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los

microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los

microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer.

La razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para

la gran mayoría de las aplicaciones, lo que hace absurdo emplear microcontroladores más

potentes y consecuentemente más caros. Uno de los sectores más extensos del mercado del

microcontrolador es el mercado automovilístico. De hecho, algunas de las familias de

microcontroladores actuales se desarrollaron pensando exclusivamente en este sector,

siendo modificadas posteriormente para adaptarse a sistemas más genéricos. El mercado del

automóvil es además uno de los más exigentes: los componentes electrónicos deben operar

Diseño de la tarjeta experimental UAMI-AVR

Page 14: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

bajo condiciones extremas de vibraciones, choques, ruido, etc. y seguir siendo fiables. El

fallo de cualquier componente en un automóvil puede ser el origen de un accidente.

En cuanto a las técnicas de fabricación, cabe decir que prácticamente la totalidad de los

microcontroladores actuales se fabrican con tecnología CMOS 4 (Semiconductor de Oxido

Metálico Complementario)2. Esta tecnología supera a las técnicas anteriores por su bajo

consumo y alta inmunidad al ruido.

La distribución de las ventas según su aplicación es la siguiente:

• Una tercera parte se absorbe en las aplicaciones relacionadas con las computadoras y

sus periféricos.

• La cuarta parte se utiliza en las aplicaciones de consumo (electrodomésticos, juegos,

TV, vídeo, etc.)

• Aproximadamente el 16% de las ventas mundiales se destinó al área de las

comunicaciones.

• Otro 16% aprox. fue empleado en aplicaciones industriales.

• El resto de los microcontroladores vendidos en el mundo, aproximadamente un 10%

fueron adquiridos por las industrias automovilísticas.

También los modernos microcontroladores de 32 bits van afianzando sus posiciones en el

mercado, siendo las áreas de más interés el procesamiento de imágenes, las

comunicaciones, las aplicaciones militares, los procesos industriales y el control de los

dispositivos de almacenamiento masivo de datos.

1.6 Herramientas para el desarrollo de aplicaciones.

Uno de los factores que más importancia tiene a la hora de seleccionar un microcontrolador

entre todos los demás es el soporte tanto de software como de hardware de que dispone. Un

buen conjunto de herramientas de desarrollo puede ser decisivo en la elección, ya que

pueden suponer una ayuda inestimable en el desarrollo del proyecto.

Las principales herramientas de ayuda al desarrollo de sistemas basados en

microcontroladores se describen a continuación.

2Complementary Metal Oxide Semiconductor

Diseño de la tarjeta experimental UAMI-AVR

Page 15: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

1.7 Desarrollo del software

Ensamblador

La programación en lenguaje ensamblador puede resultar un tanto ardua para el

principiante, pero permite desarrollar programas muy eficientes, ya que otorga al

programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el

programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar

una versión gratuita para los microcontroladores más populares.

Compilador

La programación en un lenguaje de alto nivel (como el C) permite disminuir el tiempo de

desarrollo de un producto. No obstante, si no se programa con cuidado, el código resultante

puede ser mucho más ineficiente que el programado en ensamblador. Las versiones más

potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden

encontrarse versiones demo limitadas e incluso compiladores gratuitos.

Depuración

Debido a que los microcontroladores van a controlar dispositivos físicos, los desarrolladores

necesitan herramientas que les permitan emular el comportamiento del microcontrolador,

depurar el software y así garantizar su buen funcionamiento cuando es conectado

físicamente al resto de circuitos.

Simulador

Son capaces de ejecutar en una PC programas realizados para el microcontrolador. Los

simuladores permiten tener un control absoluto sobre la ejecución de un programa, siendo

ideales para la depuración de los mismos. Su gran inconveniente es que es difícil simular la

entrada y salida de datos del microcontrolador. Tampoco cuentan con los posibles ruidos en

las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más

seguro y menos costoso.

Tarjetas de evaluación.

Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse

a una PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las

tarjetas suelen incluir visualizadores LCD, teclados, LEDs, fácil acceso a los pines de E/S,

Diseño de la tarjeta experimental UAMI-AVR

Page 16: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

etc. El sistema operativo de la tarjeta recibe el nombre de programa monitor. El programa

monitor de algunas tarjetas de evaluación, aparte de permitir cargar programas y datos en

la memoria del microcontrolador, puede permitir en cualquier momento realizar ejecución

paso a paso, monitorear el estado del microcontrolador o modificar los valores almacenados

en los registros o en la memoria.

Emuladores en circuito

Se trata de un instrumento que se coloca entre la PC anfitrión y el zócalo de la tarjeta de

circuito impreso donde se alojará el microcontrolador definitivo. El programa es ejecutado

desde la PC, pero para la tarjeta de aplicación es como si lo hiciese el mismo

microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal y

como luego sucederá cuando se coloque la cápsula.

Diseño de la tarjeta experimental UAMI-AVR

Page 17: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

2Elección del microcontrolador

2.1 ¿Qué microcontrolador emplear?

A la hora de escoger el microcontrolador a emplear en un diseño concreto hay que tener en

cuenta multitud de factores, como la documentación y herramientas de desarrollo

disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las

características del microcontrolador (tipo de memoria de programa, número de

temporizadores, cantidad de registros de propósito general, interrupciones, etc.)

2.2 Costos

Como es lógico, los fabricantes de microcontroladores compiten duramente para vender sus

productos. Es aquí donde dependiendo de la aplicación el diseñador deberá seleccionar el

demás bajo costo sin sacrificar la eficiencia de la aplicación.

Pongamos un ejemplo, para el fabricante que usa el microcontrolador en su producto una

diferencia de precio en el microcontrolador de algunos pesos es importante (el consumidor

deberá pagar además el costo del empaquetado, el de los otros componentes, el diseño del

hardware y el desarrollo del software). Si el fabricante desea reducir costos debe tener en

cuenta las herramientas de apoyo con que va a contar: emuladores, simuladores,

ensambladores, compiladores, etc. Es habitual que muchos de ellos siempre se decanten por

microcontroladores pertenecientes a una única familia.

2.3 Aplicación

Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la

aplicación, a continuación se citan algunos ejemplos.

2.3.1 Procesamiento de datos

Puede ser necesario que el microcontrolador realice cálculos críticos en un tiempo limitado.

En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rápido para

ello. Por otro lado, habrá que tener en cuenta la precisión de los datos a manejar: si no es

Diseño de la tarjeta experimental UAMI-AVR

Page 18: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a

microcontroladores de 16 ó 32 bits, o incluso a hardware de punto flotante.

2.3.2 Entrada Salida

Para determinar las necesidades de Entrada/Salida del sistema es conveniente dibujar un

diagrama de bloques del mismo, de tal forma que sea sencillo identificar la cantidad y tipo

de señales a controlar. Una vez realizado este análisis puede ser necesario añadir periféricos

(hardware externo) o cambiar a otro microcontrolador más adecuado a ese sistema.

2.3.3 ConsumoAlgunos productos que incorporan microcontroladores están alimentados con baterías y su

funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo más conveniente

en un caso como éste puede ser que el microcontrolador esté en estado de bajo consumo

(sleep) pero que despierte ante la activación de una señal (una interrupción) y ejecute el

programa adecuado para procesarla.

2.3.4 Memoria

Para detectar las necesidades de memoria de nuestra aplicación debemos separarla en

memoria volátil (SRAM), memoria no volátil (EPROM, etc.) y memoria no volátil modificable

(EEPROM y FLASH). Este último tipo de memoria puede ser útil para incluir información

específica de la aplicación como un número de serie o parámetros de calibración.

En cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar una versión

preliminar, aunque sea en pseudo-código, de la aplicación y a partir de ella hacer una

estimación de cuánta memoria volátil y no volátil es necesaria y si es conveniente disponer

de memoria no volátil modificable.

2.3.5 Ancho de palabraEl criterio de diseño debe ser seleccionar el microcontrolador de menor ancho de palabra

que satisfaga los requerimientos de la aplicación. Usar un microcontrolador de 4 bits

supondrá una reducción en los costos importante, mientras que uno de 8 bits puede ser el

más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32

Diseño de la tarjeta experimental UAMI-AVR

Page 19: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

bits, debido a su elevado costo, deben reservarse para aplicaciones que requieran sus altas

prestaciones (Entrada/Salida potente o espacio de direccionamiento muy elevado).

2.3.6 Diseño

La selección de un microcontrolador concreto condicionará el diseño. Debe tenerse en cuenta

que quizá usar un microcontrolador barato encarezca el resto de componentes del diseño.

Es preciso resaltar en este punto que existen innumerables familias de microcontroladores,

cada una de las cuales posee un gran número de variantes. Pero nuestro diseño se centrará

únicamente en la familia de microcontroladores AVR® de ATMEL®.

2.4 La familia de los PIC vs. la familia de los AVR como elección

¿Qué es lo que ocurría con los PIC hasta hace algunos años?, ¿Por qué están en boca de

todos?

Se ha buscado en multitud de bibliografía y realmente nadie da una respuesta concreta,

pero una aproximación puede ser esta:

Los PIC hasta hace unos cuantos años tenían una gran ventaja, no había prácticamente

competencia en el mercado, por lo que a vista de los diseñadores estos representaban una

solución poderosa, el precio, la facilidad de uso, la información, las herramientas de apoyo,

etc. Quizás un poco de todo eso es lo que produce esa imagen de sencillez y utilidad. Sin

embargo hoy en día existen bastantes familias de microcontroladores de distintos

fabricantes como los AVR® que por el momento representan una muy buena opción en

cuanto a flexibilidad, precio, herramientas de desarrollo, información, modernidad, etc.

Diseño de la tarjeta experimental UAMI-AVR

Page 20: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

3Comparativos de ambos microcontroladores

3.1 Comparativos

Características relevantes

PIC®

Arquitectura PIC®

La arquitectura sigue el modelo Harvard.

En esta arquitectura, la CPU se conecta de

forma independiente y con un bus distinto

entre la memoria de instrucciones y la de

datos.

Segmentación

Se aplica la técnica de segmentación

(“pipe line”) en la ejecución de las

instrucciones. La mayoría de las

instrucciones se ejecutan en un ciclo de

instrucción (un ciclo de instrucción

equivale a cuatro ciclos de reloj).

Formato de las instrucciones.

Las instrucciones de los PIC® de la gama

baja tienen una longitud de 12 bits. Las de

la gama media tienen 14 bits y las de alta

16 bits. Esta característica es ventajosa en

la optimización de la memoria de

instrucciones y facilita la construcción de

ensambladores y compiladores.

AVR®

Arquitectura AVR®

El AVR® es un microcontrolador RISC con

una arquitectura Harvard, por lo que

también tiene una memoria de programa

separada de la memoria de datos y en

general mucho mayor que su competidor.

Segmentación

Al igual que su oponente también maneja

la segmentación “pipe line” sin embargo

en el AVR® la mayoría de las instrucciones

se llevan a cabo en un único ciclo de reloj.

AVR® son entonces más veloces en la

ejecución de la gran mayoría de

instrucciones.

Formato de las instrucciones.

La mayoría de las instrucciones son de 2

bytes de longitud y ocupan una localidad

de la memoria de programa. Al igual que

su competidor esta característica ayuda en

la optimización de la memoria de

instrucciones y facilita la construcción de

ensambladores y compiladores.

Diseño de la tarjeta experimental UAMI-AVR

Page 21: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Juego de instrucciones

Procesador RISC (Juego de Instrucciones

Reducido). Los de gama baja 33

instrucciones, los de media 35 y hasta 60

los de gama alta.

Todas las instrucciones son ortogonales

Cualquier instrucción puede manejar

cualquier elemento de la arquitectura

como fuente o como destino.

Banco de registros

Los de gama baja solo poseen 8 registros

de 8 bits, los de media y alta hasta 15

registros de 8 bits.

Herramientas de desarrollo

La empresa Microchip® y otras que

utilizan los PIC® ponen a disposición de

los usuarios numerosas herramientas para

desarrollar hardware y software. Son muy

abundantes los programadores, los

simuladores software, los emuladores en

tiempo real, Ensambladores, Compiladores

C, Intérpretes y Compiladores BASIC, etc.

Juego de instrucciones

Al ser RISC también posee un Juego de

Instrucciones Reducido. Aquí la cantidad

de instrucciones para AT90S (básico) es

de 89, 118 para ATtiny (medio) y hasta

200 para ATMEGA (Alto).

Todas las instrucciones son ortogonales

Su conjunto ortogonal de instrucciones

también puede controlar cualquier modulo

de la arquitectura automatizándolo.

Banco de registros

El núcleo exhibe 32 registros iguales de 8

bits, y cualquiera de ellos puede contener

direcciones o datos.

Una ventaja más pues es bien sabido que

es más eficiente trabajar con memoria

interna dentro del núcleo, que con

externa.

Herramientas de desarrollo

Atmel® también ha puesto a disposición

notables herramientas de desarrollo,

gratuitas, modernas, la única desventaja

es el mercado para sus tarjetas

programadoras, pero para esto existe una

solución: el modo de programación SPI

(Programación Serial In Circuit), que

permite tener acceso a la EEPROM y

FLASH, mediante el puerto serial de

cualquier PC. También se puede compilar

en C, en Linux, con bascomAVR, etc.

Diseño de la tarjeta experimental UAMI-AVR

Page 22: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

3.2 Conclusiones de la evaluación

La tabla 1 y 2 nos muestran algunos comparativos en cuanto a memoria interna para PIC®

y AVR®.

PIC ARQUITECTURA TECNOLOGIA RAM FLASH EEPROM16C54 RISC CMOS 25bytes NO 512b (ROM)16C55 RISC CMOS 25bytes NO 512b (ROM)

16C56A RISC CMOS 25bytes NO 1Kb(ROM)16C76 RISC CMOS 368bytes NO 8K(ROM)16C77 RISC CMOS 368bytes NO 8K(ROM)16F83 RISC CMOS 36bytes 512 64bytes16F84 RISC CMOS 68bytes 1Kb 64bytes

16F876 RISC CMOS 368bytes 8Kb 256bytes16F877 RISC CMOS 368bytes 8Kb 256bytes

Tabla 1 algunos microcontroladores PIC® caracterizados en memoria interna.

AVR® ARQUITECTURA TECNOLOGIA SRAM FLASH EEPROMAT90S1200-12 RISC CMOS NO 1Kb 64bytesAT90S2313-10 RISC CMOS 128bytes 2Kb 128bytes

AT90S4433 RISC CMOS 128bytes 4Kb 256bytesATMEGA 48 RISC CMOS 512bytes 4Kb 256bytesATMEGA 88 RISC CMOS 1Kb 8Kb 512bytes

ATMEGA 168 RISC CMOS 1Kb 16Kb 512bytesATMEGA 8515L RISC CMOS 512bytes 8Kb 512bytes

ATMEGA 32 RISC CMOS 2Kb 32Kb 1024bytesTabla 1 algunos microcontroladores AVR® caracterizados en memoria interna.

Tomamos para hacer un comparativo con condiciones ecuánimes dos modelos de gama baja

tanto de MICROCHIP® como de ATMEL®, el primero es un PIC (16C56A) de gama baja

coloreado en amarillo vs. un AVR® (AT90S2313) de los más básicos, vemos la diferencia

notable en memoria RAM 25 bytes en el PIC© vs. 128 bytes en el AVR®, en cuanto a

FLASH ni se mencione pues el PIC© en este modelo no se incluye, mientras que en el AVR®

ya se consideraba esta con un tamaño muy pequeño pero óptimo para la época en que salió

al mercado y las aplicaciones a las que se destina, cabe resaltar que en cuanto a memoria

ROM el PIC© sobrepasa en mucho al AVR® 1kb vs. 128 bytes, sin embargo mientras en el

PIC© es una ROM en el AVR® ya se incluye una moderna EEPROM , con lo que las

diferencias quedan bastante saldadas, además la experiencia nos ha mostrado que para

aplicaciones como las que son objeto de este estudio, no es necesario una gran cantidad de

memoria no volátil.

Diseño de la tarjeta experimental UAMI-AVR

Page 23: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Después comparamos el popular PIC16F84 de gama media vs. un AVR® aun de los básicos

el AVR® AT90S4433, naturalmente como se esperaba se nota la modernidad en los AVR®,

pues el AVR® posee 128 bytes en memoria RAM vs. 68 bytes en RAM para el PIC©, en

cuanto a FLASH y EEPROM el AVR® supera al PIC© en 4 veces su tamaño. Tabla 2.

PIC ARQUITECTURA TECNOLOGIA RAM FLASH EEPROM16C56A RISC CMOS 25bytes NO 1Kb(ROM)16F84 RISC CMOS 68bytes 1Kb 64bytes

AVR ARQUITECTURA TECNOLOGIA SRAM FLASH EEPROMAT90S2313-10 RISC CMOS 128bytes 2Kb 128bytes

AT90S4433 RISC CMOS 128bytes 4Kb 256bytesTabla 2 comparaciones de memoria interna PIC® vs. AVR®

En las posteriores tablas comparamos el resto de características notables en cada familia de

microcontroladores resaltando los de gama alta para cada fabricante. Las tablas 3 y 4 nos

indican los consumos de potencia (activo / inactivo) y baja potencia. En las tablas 5 y 6

mostramos diferencias entre periféricos integrados velocidad de procesamiento (frecuencia

del oscilador) y cantidad de registros en el núcleo.

PIC I/O POT. ACTIVO POT. INACTIVO BAJA POT16C54 12 2mA 0.6microA 15microA16C55 20 2mA 0.6microA 15microA

16C56A 12 2mA 0.6microA 15microA16C76 22 2mA 1microA 15microA16C77 33 2mA 1microA 15microA16F83 13 2mA 0.6microA 15microA16F84 13 2mA 0.6microA 15microA

16F876 22 2mA 1microA 20microA16F877 26 2mA 1microA 20microA

Tabla 3 características de potencia y modo de baja potencia PIC®.

AVR I/O POT. ACTIVO POT. INACTIVO BAJA POTAT90S1200-12 15 2mA 0.4mA <1microAAT90S2313-10 15 2.8mA 0.8mA <1microA

AT90S4433 20 3.4mA 1.4mA <1microAATMEGA 48 23 240microA NO 0.1microAATMEGA 88 23 240microA ***** 0.1microAATMEGA 168 23 240microA ***** 0.1microA

ATMEGA 8515L 35 **** ***** *****ATMEGA 32 32 1.1mA 0.35mA <1microA

Tabla 4 características de potencia y modo de baja potencia AVR®.

Diseño de la tarjeta experimental UAMI-AVR

Page 24: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

PIC INT's INSTR UART CA/D PINESFREC. OSC REGISTROS

16C54 NO 33 NO NO 18 20MHz 8x8bits16C55 NO 33 NO NO 28 20MHz 8x8bits

16C56A NO 33 NO NO 18 20MHz 8x8bits16C76 11 35 SI SI 28 20MHz **16C77 12 35 SI SI 40 20MHz **16F83 4 35 NO NO 18 10MHz 15X816F84 4 35 NO NO 18 10MHz 15X8

16F876 13 35 SI SI 40 20MHz **16F877 14 35 SI SI 40 20MHz **

Tabla 5 periféricos integrados y registros del núcleo (PIC®)

** No se especifico en la hoja de datos

****** Depende de la configuración de trabajo

AVR INT's INSTR UART CA/D PINES FREC. OSC REGISTROSAT90S1200-12 4 89 NO NO 20 12MHz 32x8 BITSAT90S2313-10 10 118 SI NO 20 10MHz 32x8 BITS

AT90S4433 13 118 SI SI 28 8MHz 32x8 BITSATMEGA 48 1 131 SI SI 28 20MHz 32x8 BITSATMEGA 88 1 131 SI SI 28 20MHz 32x8 BITSATMEGA 168 2 131 SI SI 28 20MHz 32x8 BITS

ATMEGA 8515L 16 130 SI NO 40 16MHz 32x8 BITSATMEGA 32 18 131 SI SI 40 16MHz 32x8 BITS

Tabla 6 periféricos integrados y registros del núcleo (AVR®)

Como ya es de notarse se nota la superioridad en cuanto a modernidad, bajo consumo y prestaciones más altas en cuanto a periféricos.

3.3 Comentarios finales

AVR© ATMEL® EL RISC EN 8 BIT

ATMEL© ha llevado la filosofía de diseño RISC a los microprocesadores de 8 BIT.

Esta nueva arquitectura proporciona todos los beneficios habituales del RISC: tasa de Reloj

más rápida, mejor desempeño, y una optimización más eficiente en el compilador.

Diseño de la tarjeta experimental UAMI-AVR

Page 25: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

AVR® compite con varias familias de microprocesadores bien establecidas en el mercado,

tales como 8051, 6805 y 68HC11. A la competencia se suma la familia PIC de MICROCHIP©,

que con un diseño mas moderno se ha extendido rápidamente en los últimos años.

AVR® es el primer diseño de microcontrolador de ATMEL©, una compañía mas conocida por

sus productos de memoria FLASH y EEPROM. El microcontrolador AVR® se asemeja a la

mayoría de los microcontroladores RISC, pero con una cantidad mayor de registros.

El núcleo exhibe 32 registros iguales de 8 BIT, y cualquiera de ellos pueden contener

direcciones o datos. Como los punteros de dirección de 8 BIT resultan medianamente

inútiles aun para los dispositivos de 8 BIT, los últimos tres registros se pueden usar en

pares, como punteros de dirección. Apodados X, Y, y Z, estos tres meta-registros se pueden

usar para cualquier operación de carga o almacenamiento. A elección del programador, los

punteros pueden ser post o preincrementados. Además, es posible agregar un

desplazamiento de 6 bit a los contenidos del puntero, esta opción resulta útil para

direccionar los elementos de un arreglo. Este modo no es posible para el puntero X; ese

código de operación (opcode) esta reservado para la instrucción LDI (Load immediate) carga

inmediata de una constante.

A veces resulta difícil entusiasmarse acerca de los microcontroladores de 8 BIT; sin embargo

el diseño AVR de ATMEL© difiere de los demás de su clase tal como lo hizo la primera

maquina RISC comparada con los grandes sistemas, hace mas de una década. Con su

archivo de registros más grande y con su conjunto ortogonal de instrucciones, AVR® es

mucho más moderna que su competencia.

Por ejemplo, los 8051, 6805 y PIC® se las arreglan con un único acumulador; los 68HC11 y

HC12 tienen simplemente dos. Esto hace que la arquitectura AVR® sea más fácil de

programar a nivel de lenguaje ensamblador, y que sea fácil de optimizar con un compilador.

El gran conjunto de registros disminuye la dependencia respecto a la memoria, lo cual

mejora la velocidad y hace más pequeñas las necesidades de almacenamiento de datos.

El conjunto de instrucciones del AVR® que se asemeja al RISC, también contribuye a

mejorar su densidad de código respecto a otros microprocesadores/microcontroladores de 8

bit. Su instrucción CPI (compare immediate) evita la engorrosa construcción de cargar,

Diseño de la tarjeta experimental UAMI-AVR

Page 26: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

substraer y verificar las banderas (flags), que usan el 6808 y el PIC®. Usualmente, la suma

de dos números en el 8051, 6805, o el PIC® involucra alternar ambos operandos a través

del acumulador y almacenar el resultado. El AVR® simplemente suma dos registros con una

instrucción, en un ciclo de maquina.

Hablar de alto rendimiento parecería fuera de lugar, la familia AVR® debería funcionar

mejor que los otros microprocesadores/microcontroladores de 8 BIT y muchos de 16 BIT. A

20 MHz, su velocidad máxima de reloj, duplica con facilidad la de los demás chips de su

clase. Y lo que es más importante, casi todas sus instrucciones se ejecutan en 1 o 2 ciclos de

reloj, versus 4-10 ciclos para los chips 8051, 6805, 68HC11, y PIC®.

Para ser mas preciso, el HC12, 8051XA, y el 251 son diseños de 16 BIT, con trayectorias

internas de datos de 16 BIT y operaciones aritméticas de 16 BIT, pero aun requieren de tres

o mas ciclos de reloj para efectuar los cálculos mas simples y la mayoría de las operaciones

básicas con los registros. Además las velocidades de reloj de estos dispositivos no son más

rápidas que las de ATMEL®, y no pueden compensar la ejecución inherentemente ineficiente

Resumiendo, el AVR® ofrece un desempeño de 16 BIT con un precio de 8 bit. Para los

desarrolladores que deseen memoria en el chip pero que no necesiten tipos de datos de 16

bits o compatibilidad binaria con la generación anterior, ATMEL© ofrece una mejor relación

precio / desempeño a aquellos diseñadores que deseen independizarse de las familias más

antiguas.

Diseño de la tarjeta experimental UAMI-AVR

Page 27: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

4Diseño de la tarjeta UAMI-AVR

4.1 Sección Fuente de Alimentación

El diseño se decidió hacer de manera modular, en la figura 4 se muestra a detalle el diseño

de la fuente de alimentación, ya que el consumo no es mayor a 100mA el regulador

seleccionado es un L7805CV con entrada típica de 6 a 15VDC y salida de 5VDC / 1A. La

alimentación es por medio de un plug 1mm con conexión a fuente externa de 9 a 15VDC, sin

importar polaridad, ya que para evitar daño a la tarjeta se coloco un puente de diodos. El

SW1 es usado para encender o apagar la tarjeta en su totalidad. Además cuenta con un led

de color verde que indica el encendido principal y un capacitor para evitar un poco algunos

pulsos de ruido.

Nota: ES NECESARIO HACER USO DE UN DISIPADOR DE CALOR PARA EL C.I. L7805CV y un

SUPRESOR DE TRANSITIVOS colocado antes del puente de diodos para evitar el retorno de

corriente desde el puerto serial.

Diseño de la tarjeta experimental UAMI-AVR

Page 28: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 4. Fuente de alimentación para la tarjeta AVR-UAMI

El cálculo para la resistencia de led se realizó de la siguiente forma:

48615

7.19y 88615

7.115

30iA3 :es led de corriente la ; 7.1

LED

=−=Ω=−=∴

≤≤−

=

mAVVR

mAVVR

mAmi

VVR

LEDLED

LED

INLED

Se toma un valor medio de 686Ω, para un rango apropiado de corriente (

mAm 19iA10 LED ≤≤ ), el valor comercial es de Ω= 680LEDR .

4.2 Sección Comunicación Serial

Una manera de conectar dos dispositivos es mediante comunicaciones serie asíncronas.

En ellas los bits de datos se transmiten "en serie" (uno detrás de otro) y cada dispositivo

tiene su propio reloj. Previamente se ha acordado que ambos dispositivos transmitirán datos

a la misma velocidad. La velocidad de transmisión es simplemente el número de bits

transmitidos por segundo cuando se envía un flujo continuo de datos. Existen unas

velocidades estándar de transmisión que son 75, 150, 300, 600, 1200, 1800, 2400, 4800,

9600 y 19200 baudios. El baudio es la velocidad de transmisión y es equivalente a un bit por

segundo. Para producir una transmisión de datos con éxito, es esencial que los equipos

transmisores trabajen a la misma velocidad. También es necesario que los datos se

transmitan con el mismo formato, el número de bits de datos y de parada deben ser el

mismo, igual que el tipo de paridad utilizada. Esto se logró configurando en software dichos

parámetros, en la tarjeta UAMI-AVR se consiguió haciéndolo en la UART del

microcontrolador AT90S2313 que es la base de control usada en nuestra tarjeta. Para la PC

no es necesario ya que el AVR estudio 4 © se encarga de realizar esta función.

Diseño de la tarjeta experimental UAMI-AVR

Page 29: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 5. Sección Comunicación Serial.

La salida de datos de los puertos seriales es en los niveles de voltaje TTL que, por sus

niveles de voltaje, prácticamente no se pueden transmitir sin error, más allá de unos 30 Cm.

Por lo tanto, es necesaria una conversión para tener la potencia adecuada que proporcione

inmunidad al ruido. La forma más común de conversión de los datos es a la norma RS-232C

que es una convención de niveles de voltaje mayores a los de TTL. Los niveles de voltaje

para todas las señales RS-232C, son:

• Para un nivel lógico alto, o marca, entre –3 V. y –15 V., con carga, sin carga –25 V.

• Para un nivel lógico bajo, o espacio, el voltaje es entre +3V. y +15 V. con carga, sin

carga +25 V.

Por ello es necesario utilizar un CI MAX-232 driver/transceiver que conseguirá adaptar

dichos niveles. Y un conector DB9 con la siguiente configuración según la norma RS-232, ver

figura 6 y tabla 7.

Diseño de la tarjeta experimental UAMI-AVR

Page 30: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Fig. 6. Conectores DB9.

Número de pin

Señal

1 DCD (Data Carrier Detect)

2 RX Recepción de Datos

3 TX Transmisión de Datos

4 DTR (Data Terminal Ready)

5 GND Tierra

6 DSR (Data Sheet Ready)

7 RTS (Request To Send)

8 CTS (Clear To Send)

9 RI (Ring 30Indicador)

Tabla 7. Convención RS-232

Para conectar la PC a un microcontrolador por el puerto serie se utilizan las señales Tx,

Rx y GND. La PC utiliza la norma RS-232, por lo que los niveles de tensión de los pines

están comprendidos entre +15 y -15 voltios. Los microcontroladores normalmente trabajan

con niveles TTL (0-5v). Es necesario por tanto intercalar un circuito que adapte los niveles

Fig. 7.

Fig. 7. Circuitos de conversión de TTL a RS 232 y viceversa.

Diseño de la tarjeta experimental UAMI-AVR

Page 31: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Como ya se mencionó y como se observa en la figura 5 el CI MAX232 se usa para este fin.

Este chip permite adaptar los niveles RS232 y TTL, permitiendo conectar una PC con un

microcontrolador. Sólo es necesario este chip y sus capacitores electrolíticos externos como

lo marca la aplicación típica del chip.

Entonces esto implicará realizar en laboratorio un cable con conectores DB9 hembra-hembra

de no más de 1m. La figura 8 muestra la conexión que se realizara en el laboratorio, la cual

tiene la ventaja de ser simple de realizar.

Fig. 8. Conexionado del cable serial.

4.3 Sección de control

Así entonces las etiquetas TxDA y RxDA por referirse a los puertos PD del micro AT90S2313

son conectadas a los pines 2 y 3 respectivamente como es mostrado en la figura 9, sección

de control de la tarjeta UAMI-AVR. El pin PD1(TxD) es configurado en software para que

habilite la salida de datos de la UART (DDRD1) y PD0(RxD) es configurado para que reciba

datos hacia la UART (PORTD0) y forzado a “1” para que se habiliten las resistencias internas

de pull-up.

La figura 10 muestra el esquemático del puerto PD0(RxD). Mientras que en la figura 11 se

muestra el esquemático del puerto PD1(TxD).

Los cristales recomendados por la aplicación típica de ATMEL® pueden ser de 8MHz o 4MHz,

como se observa en la figura 9.

Diseño de la tarjeta experimental UAMI-AVR

Page 32: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 9. Sección Control.

El reset de este microcontrolador siempre debe estar en “1” nivel alto.

Los pines XTAL1 y XTAL2 se pueden aprovechar para ser usados en el microcontrolador a

grabar ya que el oscilador debe ser el mismo para que exista sincronía.

Mediante software se realizan las rutinas necesarias para realizar la grabación, verificación y

borrado de los “fuses” en la Flash o en la EEPROM según sea necesario.

Los arreglos en la memoria de datos o de programa son programados usando el bus serial

SPI, mientras el RESET este en nivel bajo. Esta interfase serial consta de los pines 19, 18 y

17; SCK (reloj serial) para sincronía, MISO (salida de datos serial a memoria) y MOSI

(entrada de datos serial a memoria), respectivamente. Entonces después de poner el RESET

en bajo se pueden habilitar las instrucciones necesarias para borrar o programar el

microcontrolador.

Diseño de la tarjeta experimental UAMI-AVR

Page 33: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

La figura 10 muestra el esquemático de las conexiones necesarias para el modo de

programación y verificación serial.

Figura 10. Esquemático del modo de programación / verificación serial.

Para la EEPROM, existe un ciclo de auto-borrado que se proporciona dentro de los tiempos

cronometrados para escribir la instrucción, por lo que no es necesario ejecutar primero la

instrucción “chip erase”. Al usar dicha instrucción pone todos los arreglos de memoria con

series de FF’s.

El reloj externo proporciona la sincronía para el SCK (serial clock), de la siguiente manera:

Bajo: > 2 XTAL1 ciclo de reloj

Alto: > 2 XTAL1 ciclos de reloj

4.3.1 El algoritmo de programación serial sería el siguiente:

Cuando se escriben los datos seriales en el microcontrolador, estos se sincronizan con el

flanco de subida del reloj serial SCK.

Cuando se leen datos seriales del microcontrolador, estos se sincronizan con el flanco de

bajada del reloj serial SCK.

Ver figura 11 y tabla 8 para más detalle.

Figura 11. Diagrama de tiempos de la programación serial.

Diseño de la tarjeta experimental UAMI-AVR

Page 34: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Tabla 8. Características de la programación serial, Tp = -40ºC a 85ºC Vcc = 2.7 a 6.0V

Para programar y verificar la secuencia recomendada es:

Ver Tabla 9.

1- Aplicar alimentación al microcontrolador Vcc pin 20, GND pin 10; mientras el RESET

y SCK están en “0”.

2- Esperar al menos 20ms para permitir el envío de la instrucción de habilitación del

modo de programación serial al pin 17 (MOSI) que consta de 4bytes.

3- Cuando en la sincronización llegue el segundo byte éste hará un eco ($53) de retorno

que dará la pauta para que el tercer byte se comience a enviar y así sucesivamente

hasta el cuarto byte; si el eco es correcto o no los cuatro bytes de la instrucción de

habilitación del modo serial deben transmitirse. (Es de notar que si las instrucciones

de habilitación están fuera de sincronización, estás no trabajarán).

4- Si los bytes no hicieron eco entonces le dan un pulso positivo a SCK y se reinicia el

envío para una nueva señal de habilitación. Si los ecos se repiten en 32 ocasiones

entonces se descarta y se envía mensaje de que no hay ningún dispositivo funcional

conectado.

5- Si se envía una señal de borrado “chip erase” (lo que debe hacerse para borrar la

FLASH) esperar el tWD_ERASE después de la instrucción de borrado, mientras se le

da al RESET un pulso positivo y se vulva al paso numero 2. Ver la tabla 10 para los

valores de tWD_ERASE.

6- Los arreglos de la FLASH o la EEPROM son programados byte por byte mientras se

proporciona la dirección y los datos junto con la instrucción de escritura WRITE.

Como ya se había mencionado con anterioridad las localidades de memoria de la

Diseño de la tarjeta experimental UAMI-AVR

Page 35: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

EEPROM se borran automáticamente antes de escribir nuevos datos en ellas.

Normalmente se usa la detección del nuevo byte de datos por ciclo o polling. Si el

polling no es usado se tendrá que esperar el tWD_PROG antes de enviar nuevos

datos. Ver tabla 11.

7- Cualquier localidad de memoria puede ser leída usando la instrucción de lectura

READ, que regresa el contenido de la dirección leída al pin 18 (MISO).

8- Al finalizar la sesión de programación el RESET debe ponerse en alto para iniciar con

el funcionamiento normal.

9- Secuencia de apagado (opcional): RESET a “1” y desconexión de Vcc.

Tabla 9. Características de programación y verificación.

Diseño de la tarjeta experimental UAMI-AVR

Page 36: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

4.3.2 Características de la programación serial

La figura 12 muestra el diagrama de tiempos de la programación serial.

Figura 12. Diagrama de tiempos de la programación serial.

Se observa claramente en el flanco de subida de SCK el envió y recepción de bytes MOSI y

MISO simultáneamente (FULL DUPLEX).

4.4 Sección Selección de microcontrolador A y B

Ya conformada esta sección y controlada adecuadamente por software, se procedió a

diseñar la etapa de selección de microcontroladores que para mayor detalle se muestra en

las figuras 13 y 14.

Los modelos soportados y las señales de habilitación correspondientes se muestran en la

tabla 12. En donde se observa que cuando el SW2 se encuentra con el led D3 encendido

obtenemos la señal de habilitación B1 para los buffers encapsulados en el CI DM74LS244

(U4), pines 2, 4, 6 y 8. con lo que tenemos la señal de RESET1 para los micros mostrados

en la tabla 12, mientras que la señal B2 se encuentra en alto con lo que el resto de buffers

están deshabilitados, es decir en tercer estado. Con esta señal RESET1 y la ayuda de otro CI

DM74LS244 podemos grabar los modelos para B1 mostrados en la tabla 12.

Señal de habilitación B1 (low) B2 (low)

Modelos soportadosAT90S1200AT90S2313ATtiny2313

ATMEGA16ATMEGA32

ATMEGA8535AT90S8535

SW2 pines 1 y 3 pines 4 y 6LED D3 1 0LED D4 0 1

Tabla 12. Sección selección de microcontrolador 1.

1 = ACTIVO0 = INACTIVO

Diseño de la tarjeta experimental UAMI-AVR

Page 37: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

HABILITACIÓNU4

SALIDASU4

B1 B2 RESET1 RESET21 0 E 3er EDO0 1 3er EDO E

Tabla 13. Sección selección de microcontrolador 1.

E = ENABLE (SEÑAL HABILITADA)

HABILITACIÓNU5

ENTRADAS SALIDACTRL

SALIDAS DE SELECCION

RESET1 B2 RESET2 B1 SCK MOSI MISO 1MISO 2MISO 1MOSI 2MOSI 1SCK 2SCK

E 03er EDO

1 E E E E E E3er EDO

3er EDO

3er EDO

3er EDO

1 E 0 E E E3er EDO

3er EDO

3er EDO

E E E

Tabla 14. Sección selección de microcontrolador 2.

En el otro caso sucede a la inversa como se puede observar claramente en la tabla 14,

cuando RESET1 se va al 3er EDO RESET2 se habilita junto con las señales necesarias para

poder programar o borrar según sea el caso el otro conjunto de microcontroladores.

Por ultimo se opto por colocar dos bases para los microcontroladores soportados U6 de 20

pines y U7 de 40 pines, ambas de punto torneado.

Se decidió dejar dispuestas todas las terminales en headers de 2x20 para ambos tipos de

microcontroladores, ver tabla 15, con esto después de haber programado cualquiera de los

modelos soportados no será necesario extraer el microcontrolador, que podrá ser usado

conectando un cable plano de 20 terminales para facilitar el manejo de los pines de ambos

grupos y poder realizar la circuitería externa en un protoboard. Figura 15.

PinesATMEGA16ATMEGA32

ATMEGA8535AT90S8535

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39

Pines AT90S2313AT90S1200ATtiny2313

1 3 5 7 9 11 13 15 17 19

Pines delcable plano

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 392 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Pines AT90S2313AT90S1200ATtiny2313

2 4 6 8 10 12 14 16 18 20

PinesATMEGA16ATMEGA32

ATMEGA8535AT90S8535

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

Tabla 15. Distribución selección microcontrolador 1.

Diseño de la tarjeta experimental UAMI-AVR

Page 38: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Como lo podemos observar en los diagramas correspondientes se necesita usar el mismo

cristal para poder sincronizar adecuadamente las señales que acceden a memoria, pero ya

que ha sido grabado el microcontrolador las aplicaciones podrían necesitar de un cristal de

distinta frecuencia por lo que se usaron dos headers de 2x3 para poder así (solo después de

haber programado el microcontrolador) hacer uso de un cristal externo de otro valor. Ver

tabla 16. Mientras los jumpers se encuentren en las posiciones 1 y 2 se usará el cristal de 4

u 8 MHz (programar), si se requiere usar otro cristal se deberán colocar los jumpers en las

posiciones 2 y 3 y acceder a las terminales XTAL1 y XTAL2 en los headers correspondientes

según el microcontrolador a emplear.

Figura 13. Selección de microcontrolador A.

Diseño de la tarjeta experimental UAMI-AVR

Page 39: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 14. Selección de microcontrolador B.

J6XTAL2 XTAL1

J7XTAL2 XTAL1

CRISTAL

EXTERNO

PROGRAMAR

1 1

2 2CRISTAL

EXTERNO

PROGRAMAR

1 1

2 2

3 3 3 3MICROS 1 MICROS 2Tabla 16. Cristal externo.

Diseño de la tarjeta experimental UAMI-AVR

Page 40: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 15. Sección Programador.

Diseño de la tarjeta experimental UAMI-AVR

Page 41: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

4.5 Sección Programador

En esta sección de la tarjeta solo se montaron las dos bases que soportarán a los cinco

microcontroladores en este diseño, figura 15. En la base de 20 pines se podrán programar

los modelos AT90S1200, AT90S2313 y ATtiny2313, mientras que en el socket de 40 pines

podremos programar los modelos ATMEGA16, ATMEGA32, ATMEGA8535 y AT90S8535.

Ambas bases tendrán la mayor parte de sus pines accesibles desde una tira header con lo

que se facilitará la programación y el posterior uso sin la necesidad de desmontar el

microcontrolador cada vez que se requiera realizar cambios. Adicionalmente se coloco un

puerto DB9 para hacer uso de el mediante un header de 2 terminales (Rx y Tx), con el uso

de jumpers que realicen la conexión entre este header a las correspondientes terminales de

Rx y Tx en los headers de 2x20 según se uso uno u otro microcontrolador.

4.6 Sección Banco de leds

Adicionalmente se implementó un banco de leds de 8 bits para uso general, que consiste en

8 indicadores leds de salida y 8 push button para pulsos de habilitación “0” a “1”. Es

importante recordar que aunque estos pulsos de entrada contengan en su diseño

resistencias pull-up externas es necesario habilitar por software las resistencias pull-up

internas del microcontrolador si los puertos son usados como entradas. Figura 16a.

Figura 16a. Sección banco de leds (entrada).

Diseño de la tarjeta experimental UAMI-AVR

Page 42: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

El diseño en los indicadores de salida se dicta por las siguientes ecuaciones:

• Para encontrar el valor de la resistencia de base se realizó con la malla que inicia en

el puerto del “micro”, RB, voltaje base-emisor hasta tierra:

05.3 =++− BEBBsat VRIV

Sabemos que mín

BsatBsatCsatmínBsat

IIII

ββ =→=

Y que la LEDCsat II ≅ , y una beta mínima típica es: 40≅mínβ

Además mAI LED 303 ≤≤

Realizando el cálculo numérico obtenemos el valor requerido para la

resistencia de base:

Ω==−=→==∴ 7467375.0

8.2375.0

7.05.3 375.040

15 mA

VmA

VVRmAmAI BBsat

El valor comercial más cercano es de 8K2Ω que nos arroja una corriente de base en

saturación dentro del rango, por lo que el valor elegido es:

Ω= 28KRB

• Ahora es necesario encontrar el valor de la resistencia de LED, para esto trazamos la

malla desde VCC, RLED, VLED hasta tierra:

• 05 =++− LEDLEDCsat VRIV

Entonces el cálculo numérico nos arroja el siguiente resultado:

Ω==−= 22015

3.315

7.15mAV

mAVVRLED

Diseño de la tarjeta experimental UAMI-AVR

Page 43: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Aprovechando el bajo consumo de esta etapa y el hecho de que están todas las resistencias

a un punto común, i.e., a VCC, se elige una red resistiva.

El valor comercial más cercano es de 330Ω lo cual nos deja dentro del rango aceptable para

que el LED encienda adecuadamente, entonces el valor es:

Ω= 330LEDRred

Observar la figura 16b.

Figura 16b. Sección banco de leds (salida).

Diseño de la tarjeta experimental UAMI-AVR

Page 44: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

5ENTORNO DE PROGRAMACIÓN

5.1 ¿Cómo programar?Una vez puesta en funcionamiento la tarjeta UAMI-AVR, y habiendo seleccionado alguno de

los microcontroladores, (recomendamos usar el ATMEGA16 o el AT90S2313); nuestros pasos

para comenzar a programar el microcontrolador serán los siguientes:

5.1.1 HARDWARE

1- Conectar el cable serial a la PC y a la tarjeta.

2- Encender la PC (teniendo en cuenta que ya está instalado el software AVR Studio4©)

de lo contrario instalarlo antes. Debemos tomar en cuenta que este software solo es

soportado bajo MS Windows®.

3- Colocar en la base correspondiente el microcontrolador seleccionado.

4- Encender la tarjeta UAMI-AVR v1.0, previamente consulte el manual técnico de la

tarjeta UAMI-AVR v1.0.

5.1.2 SOFTWARE

1- Abrir el software AVR studio4©. Figura 17.

Figura 17.

Diseño de la tarjeta experimental UAMI-AVR

Page 45: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

La ventana inicial del IDE AVR Studio4 © se abrirá, figura 18.

Figura 18. IDE AVR Studio4 ©.

2- Dar clic en Create New Project. Figura 18.

3- En la siguiente ventana, figura 19, es recomendable crear primero un fólder de

trabajo, para esto accedemos al subdirectorio con el botón marcado con 1 en la

figura 19, en la figura ya hemos creado el fólder y lo llamamos WORKS. Por default

se crea un fólder y un archivo inicial con el nombre que le vayamos a dar a nuestro

primer programa, ver punto 2 en la figura 19, en el punto 3 encerrado en azul

nombramos el nuevo proyecto, por default se asigna el mismo nombre al archivo

.asm, presionamos Next >> para dirigirnos a la próxima pantalla.

Diseño de la tarjeta experimental UAMI-AVR

Page 46: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 19. Crear nuevo proyecto.

4- En la siguiente ventana, figura 20, debemos seleccionar el depurador a emplear y el

microcontrolador a programar, ver figura 20 círculos rojos 1; por último dar clic en

finalizar punto 2.

5- Ahora la nueva ventana nos mostrará el editor del AVR Studio4 ©, donde

comenzaremos a escribir nuestro programa, figura 21. El editor permite pegar desde

un archivo de texto copiado previamente. El programa a editar está escrito en el

siguiente punto. Los comentarios se ponen después del punto y coma como en el

MASM.

Diseño de la tarjeta experimental UAMI-AVR

Page 47: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 20. Selección de depurador y microcontrolador.

6- El demo a editar es para el microcontrolador ATMEGA16, consiste en realizar algunas

operaciones con bits, y hacer uso de los puertos de entrada salida, la asignación es

puertos PB0-PB7 de salida y puertos PD0-PD7 de entrada.

El código a editar es el siguiente (code D1.ASM):

;************ Code D1.ASM *************;-----------------------------------------------------; UNIVERSIDAD AUTÓNOMA METROPOLITANA;-----------------------------------------------------

; **** PROYECTO TERMINAL DE INGENIERIA ELECTRÓNICA ****

; **** CHÁVEZ CALDERÓN ARMANDO ****; **** PAREDES GARCÍA HORACIO ****

;****** EJEMPLO DE APLICACIÓN ATMEL AVR © ******

; ** Se debe conectar el PORTB a LEDS y el PORTD a SWITCH **

; ** Si se presiona el SW5 se activa un contador descendente de 8 bits **

Diseño de la tarjeta experimental UAMI-AVR

Page 48: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

; ** Si se presiona el SW6 se activa un contador ascendente de 8 bits **; ** Si se presiona el SW7 se activa un desplazamiento descendente de 8 bits **; ** Si se presiona el SW8 se activa un desplazamiento ascendente de 8 bits **; ** Si se presiona el SW9 todos los leds parpadeantes (8 bits) **; ** Si se presiona el SW10 todos los bits en alto excepto el menos significativo **; ** Si se presiona el SW11 todos los bits en alto excepto el menos significativo **; ** Si se presiona el SW12 todos los bits en alto excepto el menos significativo **

.INCLUDE "M16DEF.INC" ;para que reconozca conjunto de instrucciones del ATMEGA16

.DEF TEMP = R16 ;registro temporal

.DEF DELAY = R17 ;delay variable 1

.DEF DELAY2 = R18 ;delay variable 2

; *** INICIALIZACIÓN ***

REINICIO:

SER TEMP ;pone registros a FFOUT DDRB,TEMP ;selección de puerto B para salida

; *** PRUEBA ENTRADA / SALIDA ***

LOOP:

OUT PORTB,TEMP ;salida a LEDS por el puerto C

SBIS PIND,0x00 ;si se presiona el SW5 se incrementa R1 a FF ;brinca si el bit del registro i/o esta en 1

INC TEMP ;entonces el contador disminuye en 1

SBIS PIND,0x01 ;si se presiona el SW6 se decrementa R1 a 01DEC TEMP ;entonces el contador crece en 1

SBIS PIND,0x02 ;si se presiona el SW7 se rota R1 a la derechaROR TEMP ;entonces los leds muestran 1bit con desplazamiento a la DERECHA

SBIS PIND,0x03 ;si se presiona el SW8 se rota R1 a la izquierdaROL TEMP ;entonces los leds muestran 1bit con desplazamiento a la

IZQUIERDA

SBIS PIND,0x04 ;si se presiona el SW9 se hace un NOT a R1COM TEMP ;entonces todos los leds se muestran invertidos

SBIS PIND,0x05 ;si se presiona el SW10 se hace un NOT a R1 y se suma 1 en LSBNEG TEMP ;entonces los leds se invierten y se suma 1 a LSB

SBIS PIND,0x06 ;si se presiona el SW11 se hace un swaap de nibbles en R1SWAP TEMP ;entonces los leds se alternan en nibles

RETRASO:

DEC DELAY ;retraso1BRNE RETRASO ;bifurca si R17 no es ceroDEC DELAY2 ;retraso2BRNE RETRASO ;bifurcación

RJMP LOOP ;siempre repite LOOP

Diseño de la tarjeta experimental UAMI-AVR

Page 49: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 21. Editor de archivo .asm.

7- Ya editado el archivo, ahora procedemos a construir los archivos .hex, .obj, .aps y

.txt entonces usamos la tecla F7 o el icono en la barra de herramientas mostrado en

la figura 22 encerrado en el circulo rojo o en la barra de menús Project y después

Build. Observamos en la ventana de salida en la parte inferior los mensajes después

de compilar el archivo .asm. Si no existen errores entonces el archivo .hex esta listo

para ser cargado en la memoria FLASH o EEPROM del microcontrolador. Al no haber

errores aparecerá un mensaje muy similar a este, resaltamos el resultado final de la

compilación en azul:

Diseño de la tarjeta experimental UAMI-AVR

Page 50: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Building project...AVRASM: AVR macro assembler version 1.76.4 (Aug 6 2004 07:02:13)Copyright (C) 1995-2004 ATMEL CorporationCreating 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\d1.eep'Creating 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\d1.hex'Creating 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\d1.obj'Creating 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\d1.map'Assembling 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\D1.asm'Including 'e:\Archivos de programa\Atmel\AVR Tools\AvrAssembler\Appnotes\M16DEF.INC'Program memory usage:Code : 24 wordsConstants (dw/db): 0 wordsUnused : 0 wordsTotal : 24 wordsAssembly complete with no errors.Deleting 'E:\Archivos de programa\Atmel\AVR Tools\WORKS\D1\d1.eep'

Figura 22. Compilando el archivo .asm.

Diseño de la tarjeta experimental UAMI-AVR

Page 51: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

8- Si por alguna razón el código presenta errores o después de cargarlo no hace lo que

necesitamos entonces podemos depurarlo. Para ello tenemos a la mano múltiples

herramientas que nos ofrece el AVR Studio4 ©, que mostraremos a continuación. Ver

figura 23. Como primer paso necesitamos tener a la vista el espacio de trabajo para

esto seleccionamos de la barra de menús View y damos clic a Workspace. Al hacer

esto se abre una nueva ventana Workspace que nos muestra las pestañas de

opciones que tenemos para depurar nuestra aplicación, la primera es por código en la

carpeta Assembler que se refiere a la vista que ya tenemos en el editor del archivo

.asm, o en la carpeta Output que nos muestra el mapa (archivo.map) con todos los

nmónicos usados, ver figura 24.

Figura 23. Seleccionando el espacio de trabajo.

Diseño de la tarjeta experimental UAMI-AVR

Page 52: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 24. Espacio de trabajo del depurador.

9- La siguiente pestaña del Workspace, I/O, nos permite simular todo el espacio de

entrada salida e inclusive todos los periféricos integrados. Podemos visualizar al

ejecutar el programa paso por paso todos los valores en hexadecimal que contienen

los registros de propósito general, así como también los registros del procesador,

figura 25 y 26.

Figura 25. Espacio de trabajo del depurador I/O.

Diseño de la tarjeta experimental UAMI-AVR

Page 53: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 26. Espacio de trabajo del depurador I/O.

10- Para iniciar el depurador podemos ir a la barra de menús en el menú Debug y

seleccionar Start Debugging o hacer clic en el icono encerrado en el circulo rojo,

figura 26.

11- Para iniciar el depurador podemos ir a la barra de menús en Debug y seleccionar

Start Debugging o hacer clic en el icono encerrado en el círculo rojo en la figura 27.

Figura 27. Iniciar el depurador.

Diseño de la tarjeta experimental UAMI-AVR

Page 54: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

12- Ahora solo basta con correr paso por paso el programa (F11 paso por paso, ALT+F5

automático, o el resto de las opciones disponibles en el menú Debug) e ir mirando

en el espacio de trabajo algún periférico o los puertos I/O (ver figura 30) o según se

trate de la aplicación en específico, hasta conseguir lo deseado, no sin antes conocer el

conjunto de instrucciones del propio microcontrolador y además el lenguaje

ensamblador para estos microcontroladores, podemos hacerlo en la pagina del

fabricante www.atmel.com donde adicionalmente encontraremos las hojas de

especificaciones de los dispositivos que necesitemos y notas de aplicación. Es

importante mencionar que podemos cambiar el contenido de cualquiera de los

registros en el momento que lo deseemos.

Figura 28. Puertos I/O, bit por bit.

13- Una vez teniendo el código depurado y obteniendo los resultados que deseamos

procedemos a grabar nuestro microcontrolador. Nuestra tarjeta solo soporta la

herramienta AVR Prog, así entonces es conveniente colocar un botón en la barra de

herramientas para posteriores usos, para esto nos dirigimos al menú View, Toolbars

y Customize, figura 29, una vez en la ventana Customize en la pestaña Commands

seleccionamos en Categories Tools y en la ventana contigua AVR Prog… dejamos

presionado el botón del ratón y arrastramos hasta la ubicación que deseemos en la

barra de herramientas, figura 30.

Diseño de la tarjeta experimental UAMI-AVR

Page 55: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 29. AVR Prog ©.

Diseño de la tarjeta experimental UAMI-AVR

Page 56: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 30. AVRProg © en la barra de herramientas.

14- Hacemos clic en el botón AVR Prog… e inicializamos la vista para el grabador, figura

31. (Si la tarjeta no está encendida la ventana del programador no se abrirá y lanzará

un mensaje de Tarjeta no soportada, figura 31). En este caso solo basta con cerrar la

ventana, poner en encendido la tarjeta y volver a llamar al AVR Prog… , en cuanto

esto se haga aparecerá la ventana mostrada en la figura 32.

Figura 31. AVRProg © mensaje de error.

Diseño de la tarjeta experimental UAMI-AVR

Page 57: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

15-En la figura 32 se muestra la ventana del programador, en donde ahora

seleccionaremos nuestro microcontrolador y procederemos a grabarlo. El archivo para

grabar ya sea en la FLASH o en la EEPROM debe ser el archivo .hex generado

anteriormente.

Figura 32. Ventana del programador AVRProg © y selección del dispositivo.

16- Ahora solo nos resta presionar el botón Program y listo! Tenemos nuestro

microcontrolador programado y preparado para ser usado en la aplicación destinada,

figura 33. En nuestro caso se grabó un demo que muestra algunas operaciones con

bits, para probarlo solo basta con conectar los puertos de salida PB0-PB7 a los leds

de salida y los puertos de entrada PD0-PD7 a los push button en la sección Banco de

leds, ver figura 16.

Nota: No es necesario usar un cristal externo para programar el ATMEGA16 ya que

este posee un reloj oscilador interno con el cual se sincroniza la programación. Si

deseas usar reloj extrerno o cristal será necesario que lo ajustes en las opciones del boton

Advanced...

Diseño de la tarjeta experimental UAMI-AVR

Page 58: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Figura 33. Después de haber programado el microcontrolador.

Diseño de la tarjeta experimental UAMI-AVR

Page 59: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Apéndice A

TARJETA UAMI-AVR v1.0 PARA MICROCONTROLADORES ATMEL AVR ©Es una tarjeta de desarrollo para los microcontroladores de 8 bits de la familia AVR de ATMEL©, de arquitectura RISC y memoria FLASH reprogramable eléctricamente (In System Reprogrammable Downloadable Flash). El entorno software (AVR Studio ©) permite editar, ensamblar y simular el código fuente y el AVRProg © permite transferirlo a la memoria FLASH o EEPROM del microcontrolador. La tarjeta de programación (UAMI-AVR) permite programar por puerto serie algunos AVR ©. El AVR Studio4 ® puede bajarse libremente de la página del fabricante www.atmel.com.

MICROCONTROLADORES SOPORTADOS

AT90S1200, AT90S2313, AT90S8535, ATmega16, Atmega32, Atmega8535 y ATtiny2313.

Lo que diferencia estos elementos es el número de instrucciones en ensamblador disponibles, la cantidad de memoria de programa, la cantidad de memoria SRAM presente y el número de líneas I/O o el número de periféricos conectables, como UART, temporizadores, convertidores A/D, etc.

Pero lo que caracteriza la familia completa es la arquitectura aplicada en su diseño, el conjunto de instrucciones base y diversos métodos de direccionamiento de la memoria y los registros. La arquitectura se basa en el concepto de acceso rápido a los registros: éstas son las áreas de la memoria utilizadas para comunicar con los periféricos integrados en el propio microcontrolador, como contadores, temporizador, convertidores A/D y puertos de I/O. Algunos registros pueden utilizarse como indicadores de direccionamiento indirecto de 16 bits para comunicar con la memoria: suelen llamarse registros X, Y, Z. Otra característica común es la forma en que el micro procesa la información, que se denomina Instruction Pipeline (cadena de montaje).

CARACTERÍSTICAS:

• Compatible con AVR Studio4 ®.• Interface RS232 para PC y tarjeta UAMI-AVR.• Regulador de Poder de 10-15V DC.• Sockets de 20-pin y 40-pin para los dispositivos AVR® soportados.• Programación SPI por Puerto serial. • Banco de leds de 8 bits y 8 Push-buttons de uso general.• Todos los puertos I/O y periféricos integrados accesibles en conectores Header. • Un Puerto RS232 adicional para uso general.

Diseño de la tarjeta experimental UAMI-AVR

Page 60: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Apéndice B

Guía rápida del Ensamblador AVR®

RegistrosLos registros son posiciones especiales de almacenamiento, con 8 bits de capacidad. Unregistro tiene la siguiente apariencia:

Un registro puede almacenar valores numéricos de 0 a 255 (positivos sin signo) o entre -128 a 127 (con bit de signo en el bit 7), caracteres ASCII o simples conjuntos de bits sin relaciones entre ellos.

Existen 32 registros en los microcontroladores AVR®, etiquetados originalmente como R0, R1,..., R31, pero que pueden ser renombrados usando la directiva .def

.def registroTemporal=r16

Las directivas son útiles para el ensamblador pero en realidad no generan instrucciones ejecutables. En vez de emplear el nombre r16 se puede acceder con el nombre definido en la directiva. Así la instrucción

ldi registroTemporal, 150

carga en el r16 de manera inmediata el número 150.

Otra instrucción interesante es el de copiar datos desde un registro a otro con la instrucción mov. El siguiente código copia el contenido del r16 al registro r20.

mov r20,r16

Obsérvese que el primer registro es siempre el registro destino de la operación.Existen diferentes tipos de registros.

Así una instrucción del tipo

ldi r15, 15

no sería válida, ya que los únicos registros que permiten cargar un valor de forma inmediata son los registros del r16 al r31. Es decir, no se puede realizar este tipo de operación con los registros del r0 al r15. Existe una excepción a esta regla, el comando referido a limpiar los bits (poner todos los bits a 0)

clr r15

es válido para todos los registros.

Diseño de la tarjeta experimental UAMI-AVR

Page 61: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Aparte del comando ldi, las siguientes instrucciones no pueden emplearse con los registros r0 a r15:

andi r15,4 ;Realiza el y lógico entre el registro y un númerocbr r14,45 ;Limpia los bits en el registro determinados por una máscara de bitscpi r13,6 ;Compara el contenido del registro con una constantesbci r9,7 ;Resta al registro el valor del contenido de la constante y del resultado

;actual del bit de carrysbr r12,89 ;Coloca a '1' los bits en el registro determinados por una máscara de

;bitsser r3 ;Coloca todos los bits del registro a 1subi r15,9 ;Resta al registro el valor del contenido de la constante.

Registros punterosUn papel especial es desempeñado por las parejas de registros r16:r27, r28:r29 y r30:r31.Estas parejas de registros de 16 bits son nombrados de una forma especial, X, Y y Z.Pueden acceder a direcciones de 16 bits en la SRAM (X, Y, Z) o dentro de la memoria del programa (Z).La parte alta de la dirección se coloca en el registro de índice más alto, mientras que la parte baja de la dirección se almacena en el registro de índice más bajo. Estas partes alta y baja tienen sus propios nombres. Así la parte alta del registro Z (r31) se puede acceder como ZH mientras que la baja (r30) se puede acceder como ZL.

Ejemplo:

.EQU direccion = RAMEND ;en este comentario indicaremos que RAMEND es;la dirección más alta en la SRAM

ldi YH,high(direccion) ; carga la parte alta de la direcciónldi YL,low(direccion) ; carga la parte baja de la dirección

El acceso a direcciones a través de estos registros punteros es muy sencillo. Los siguientes ejemplos ilustran estos accesos de lectura (ld) y de escritura (st) con el puntero X

ld r1,X ; Lee de la dirección X, sin cambiar el ficherost X+,r1 ;Escribe en la dirección X, e incrementa el puntero a la siguiente direcciónld r1,-X ;Decrementa el puntero a la anterior dirección y lee de la dirección X

Para insertar los valores en la memoria de programa se emplean las directivas .DB y .DW

Por ejemplo:

.DB 123,56,34,1 ; una lista de 4 bytes

.DB “Esto es un texto” ; una lista de bytes, cadena de caracteres.

.DW 13454 ; una palabra

Diseño de la tarjeta experimental UAMI-AVR

Page 62: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

En las definiciones es recomendable usar un número par de bytes ya que el ensamblador añadirá un 0 al final, lo cual puede no ser deseado.En vez de constantes se pueden definir etiquetas (destino de saltos) del siguiente modo, siempre en la primera columna:

Etiqueta1:; aquí irían unos comandosTabla:.DW 134,12312

PuertosLos puertos son puertas entre la unidad de procesamiento central hasta hardware o software externo. La CPU se comunica con estos componentes, los lee y/o los escribe.Los puertos tienen direcciones fijas, independientemente del microcontrolador AVR®.Así, por ejemplo el puerto B se encuentra siempre en la dirección 0x18 (notación hexadecimal). Por supuesto el programador no tiene necesidad de recordar todas estas direcciones. Los nombres vienen definidos en un fichero de encabezado para los diferentes tipos de microcontrolador y que son proporcionados por el fabricante. Estos ficheros ‘include’ tienen una línea para definir la dirección del puerto B como sigue:

.EQU PORTB, 0x18

por lo que solamente se debe recordar el nombre del puerto y no su dirección. El archivo correspondiente se incluye mediante la siguiente directiva:

.include “8515def.inc”

Los puertos generalmente se organizan en conjunto de 8 bits relacionados entre sí, pero pueden estar organizados en conjuntos sin relación. En este caso es habitual que cada uno de los bits tenga su propio nombre y función determinados. Como ejemplo, el registro MCUCR consiste en un número de bits de control del integrado, cada uno de ellos con sus nombres (por ejemplo ISC00, ISC01). La forma de enviar un valor determinado a uno de estos puertos es mediante la instrucción out y mediante el empleo de un registro intermedio:

ldi r16, 0b00010000 ; ejemplo de configuración binariaout MCUCR, r16

El caso contrario, el de lectura, se realiza mediante el comando in

in r16, MCUCR

En este caso debemos aclarar que existen algunos puertos que tienen bits que no son usados o están reservados. En este caso se devuelve un bit a 0.Es frecuente que se desee poner a 0 ó 1 un bit concreto de un puerto. Una opción para ello consistiría en leer el registro correspondiente, emplear las operaciones lógicas para alterar el bit seleccionado y reenviar el byte al puerto. Sin embargo, esto se puede llevar a cabo mediante las instrucciones sbi (poner el bit a 1) y cbi (poner el bit a 0).

Diseño de la tarjeta experimental UAMI-AVR

Page 63: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Como ejemplos:

.EQU bitCambiado = 5sbi PortB, bitCambiadocbi PortB, bitCambiado

Las dos instrucciones tienen una limitación, solamente afectan a puertos con una dirección inferior a 0x20.

REGISTROS REELEVANTES DE LOS AVRComponente Nombre del puerto Registro/PuertoAcumulador SREG Registro de estado

Pila SPL/SPH Puntero de pilaSRAM externa,

interrupción externaMCUCR Registro de Control General MCU

Interrupción externaGIMSKGIFR

Registro de mascara de interrupciónRegistro de banderas de interrupción

Interrupción del TimerTIMSKTIFR

Registro de mascara de interrupción del timerRegistro de banderas de interrupción del timer

Timer0TCCR0TCNT0

Registro de controlRegistro de cuenta

Timer1

TCCR1ATCCR1BTCNT1OCR1AOCR1B

ICR1L/H

Registro A de controlRegistro B de controlRegistro de cuentaRegistro de comparación ARegistro de comparación BRegistro de captura de entrada

EEPROMEEAREEDREECR

Registro de direccionesRegistro de datosRegistro de control

UART

UDRUSRUCRUBRR

Registro de datosRegistro de estadoRegistro de controlRegistro de programación de baudios

Comparador analógico ACSR Registro de control y estado

Puertos de I/OPORTxDDRxPINx

Registro de salida del puertoRegistro de dirección del puertoRegistro de entrada del puerto

RAM estática, SRAMLa SRAM es una memoria que no es accesible directamente por la CPU (ALU) como es el caso de los registros. Para acceder a esta parte de la memoria se deben emplear los registros como paso intermedio. Por lo tanto las operaciones que involucran a la SRAM son más lentas que la de los registros. A partir del modelo AT90S8515 se permite conectar una RAM externa adicional.Uno de los casos de empleo más importante de la SRAM es como pila.El acceso a la SRAM se lleva a cabo mediante las instrucciones STS y LDS.

Diseño de la tarjeta experimental UAMI-AVR

Page 64: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Ejemplos:

STS 0x0060, R1 ; el contenido del registro R1 se copia en la dirección 0x0060

LDS R1, 0x0060 ; el contenido de la dirección 0x0060 se copia en el registro R1

Se suelen emplear nombres simbólicos para evitar emplear direcciones fijas..EQU direccionMemoria = 0x0060STS direccionMemoria, R1

SRAM como pilaEl uso más común de la SRAM es como pila. La pila es como una torre de bloques.Cada bloque que se añade se coloca en el tope de la pila, cada vez que se extrae un dato de la pila también se saca del tope de pila. Esta estructura es llamada LIFO (last in, first out, el último en entrar, el primero en salir).Para emplear la SRAM como pila se necesita definir el puntero de pila. El puntero de pila es de 16 bits, accesible como un puerto. SPH es la parte más significativa y SPL la parte menos significativa. Para construir la pila, el puntero se carga con el valor de la dirección más alta de la SRAM (la pila crece hacia las direcciones más bajas).

ldi r16, HIGH(RAMEND)out SPH, r16ldi r16, LOW(RAMEND)out SPL, r16

El empleo de la pila es sencillo. Los contenidos de los registros pueden volcarse en la pila de la siguiente forma:

push r16

De modo análogo para extraer elementos de la pila,

pop r16

Un caso especial de uso de las pilas es el de la llamada a las subrutinas. Al llamar a la subrutina el programa almacena en la pila la dirección de la próxima instrucción a ejecutar

rcall rutina ;saltar a la subrutina...rutina:; aquí las instrucciones de la subrutinaret ; instrucción de retorno de la subrutina

Directivas

.CODE Para indicar el comienzo de un código de un programa.

.DSEG

Diseño de la tarjeta experimental UAMI-AVR

Page 65: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

La sección de la SRAM en el integrado (datos)

.ESEGLa sección EEPROM

.ORGPara indicar que el segmento de código o datos comienza en una dirección distinta de la dada por defecto.

SaltosLa ejecución de un programa es lineal. Sin embargo, las instrucciones de bifurcación (branches) y los saltos incondicionales alteran esta ejecución lineal. Supóngase que se desea implementar un contador de 32 bits empleando los registros r1 a r4. El bit más significativo en r1 se incrementa en 1 (operación inc). Si el registro se desborda, el registro tendrá el valor de 0 (255+1=0), y se tendrá que sumar 1 al r2. En caso de desbordamiento de r2, se incrementa r3 y así sucesivamente. Para ello se emplea la instrucción brne.

inc r1brne sigueinc r2brne sigueinc r3brne sigueinc r1sigue:

Como ejemplo de instrucciones de salto condicional:

brge ; mayor o igual (con bit de signo)brlt ; menor que (con bit de signo)

MacrosUna macro permite la utilización repetida de secuencias de instrucciones. Por ejemplo:

.MACRO Delaynopnopnopnop.ENDMACRO; instruccionesDelay; más instrucciones

Una macro no ahorra espacio de memoria puesto que al compilar la etiqueta de la macro es reemplazada por el conjunto de instrucciones correspondientes. Para el caso de querer ahorrar espacio se emplean las subrutinas.

Diseño de la tarjeta experimental UAMI-AVR

Page 66: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Saltos incondicionalesAparte del rcall para llamar a las subrutinas, existe otra clase de salto incondicional, el rjmp saltar directamente a la dirección deseada. Aquí, a diferencia no va a haber un retorno (ret) a la siguiente instrucción.

Existen unas instrucciones que permiten saltarse (skip) la siguiente instrucción a ejecutar, por ejemplo:

sbrc r1,7 ;saltarse la siguiente dirección si el bit 7 del registro está a bajarcall siBitDistinto7 ;ejecutada solamente si el bit 7 está a 0rcall otro ;ejecutada de todas maneras

Análogamente se encuentra la instrucción sbic para los puertos de entrada/salida

sbic PINB,0 ; saltarse la siguiente instrucción si el bit 0 del puerto b está a baja

Otro tipo de instrucción de skip es la de comparación de registros

cpse r1,r2 ;saltarse la siguiente instrucción si los contenidos de r1 y r2 son;iguales

INTERRUPCIONESCon frecuencia se debe reaccionar ante condiciones hardware u otros eventos, por ejemplo en el cambio de valor de un pin de un puerto (por ejemplo detectar que un usuario ha pulsado una tecla). Un modo de procesarlo podría consistir en hacer un bucle que lea continuamente el valor de esa línea. Desgraciadamente, un programa debe hacer en general más cosas que estar leyendo en un bucle un puerto y no puede permitirse el lujo de ese bucle. Además en caso de detección de pulsos muy pequeños, el método del bucle es inútil. Es más adecuado emplear interrupciones.

Las interrupciones se disparan por alguna condición, que debe ser habilitada primero, ya que todas las interrupciones de hardware se encuentran deshabilitadas por defecto. El microprocesador posee un bit en su registro de estado para permitir que se procesen las interrupciones. Para activar / desactivar este bit se emplean las instrucciones sei y cli.

Si la condición de la interrupción se produce, el procesador coloca en la pila, la dirección de la siguiente instrucción a ejecutar. De este modo, la ejecución del programa puede continuar después de procesar la interrupción. Después procesa la instrucción correspondiente en su vector de interrupción, que generalmente es un salto incondicional a la subrutina de procesamiento de interrupción. El vector de interrupción es una posición dependiente del procesador.

Existe un orden de prioridad en las interrupciones, de modo que si dos o más interrupciones habilitadas se producen simultáneamente solamente será procesada la de mayor prioridad. Las demás simplemente esperarán a que se haya procesado la de prioridad más alta. La rutina de procesamiento puede terminar con la instrucción RETI.

Diseño de la tarjeta experimental UAMI-AVR

Page 67: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Apéndice C

Características eléctricas de la tarjeta UAMI-AVR v1.0

La tarjeta AVR-UAMI incluye 8 leds y 8 push botton, los leds y los switchs son

conectados por medio de headers que están separados del resto de la tarjeta.

Voltaje de alimentación: 9-15Vdc

Incluye un puente de diodos para evitar daños a la tarjeta al invertir la polaridad

de la fuente.

Interfase vía serial con la computadora personal.

Consumo de corriente 115-120mA.

Compatible con ©AVR Studio4.

Diseño de la tarjeta experimental UAMI-AVR

Page 68: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Apéndice D

Programa de aplicación de la tarjeta UAMI-AVR v1.0

El programa de aplicación (código fuente) que se muestra abajo pertenece al archivo a

cargar en el microcontrolador (AT90S2313) de la tarjeta: avr910_2313_v1_0.hex que se

anexa en el documento electrónico.

;*********************************************************************************;*;* ;* ;* Tarjeta : programador experimental UAMI_AVR v1.0;*;*;* Leyendas:;* ---------;* Signature - es un numero identificador(en bytes) para el chip, el software;* verificará si es la firma correcta según el dispositivo escogido;* Code - Código unico del dispositivo usado por AVRProg para identificar avr;* Flash - Número en bytes en memoria Flash;* EEProm - Número en bytes en memoria EEProm;* Lock - Lockbits (modo seguro que es aplicable al dispositivo seleccionado;* cuando se selecciona la opcion fuse.;* Fuse - Fusebits (muestra la configuracion de los fusibles, estos no son;* afectados borrando el dispositivo);* PMode - Indica modo de programacion;*;* R/W - Acceso de lectura/escritura;* R - Acceso a lectura solamente;* W - Acceso a escritura solamente;* NA - No Accesible;*;***************************************************************************.nolist

.include "2313def.inc" ; Microcontrolador a utilizar

.list

.equ silicon_chip=1 ;Si es 1 Mosi y Miso son cambiadas de in / out

.equ xtal_8MHz=0 ;Si es 0 entonces Xtal = 4MHz

;***************************************************************************;* CONSTANTES;* Codigos para identificar los dispositivos;*;* DESCRIPCION;* Los siguientes codigos deben ser usados por la PC. Note que los;* codigos de los dispositivos son arbitrariamente seleccionados,;* y nada tienen que ver con el "signature bytes" almacenados en el avr;***************************************************************************

;Para mayor informacion consulta la nota de aplicacion original AVR910 en www.atmel.com

Diseño de la tarjeta experimental UAMI-AVR

Page 69: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

;los autores: Ole Saether, Terje Frostad, Ingar Fredriksen, Morten W. Lund, Haakon Skar, Paal Kastnes y las correcciones realizadas por: J. Samperi, sjdavies, sc y Horacio Paredes. Traducción al español por: Horacio Paredes

;**** Revision de codigos ****

.equ SW_MAJOR = '3' ; Revision del numero mayor

.equ SW_MINOR = '3' ; Revision del numero menor

.equ HW_MAJOR = '1' ; Revision numero Mayor HW

.equ HW_MINOR = '0' ; Revision numero Menor HW

;***************************************************************************;* MACROS;* Programacion de Macros;*;* DESCRIPCION;* Cambia los siguientes 4 macros si el RESET cambia de estado en la;* tarjeta y/o si las señales SCK/MISO/MOSI cambian;***************************************************************************

.equ resetpin = 4

.macro set_resetsbi portb,resetpin

.endm

.macro clr_resetcbi portb,resetpin

.endm

.macro ddrd_initnop

.endm

.macro ddrb_initldi temp1,(0xFF ^ (1<<MISO))out ddrb,temp1 ; PB5 es entrada, el resto es salida

.endm

.macro ddrb_releaseldi temp1,(1<<resetpin)out ddrb,temp1 ; PB4 (RESET) es salida, el resto es entrada

.endm

.macro pulse_scksbi portb,SCKldi temp2,6 ;valor para un cristal de 4MHz

m0:dec temp2brne m0cbi portb,SCKldi temp2,3 ;valor para cristal= 4MHz

m1:dec temp2brne m1

.endm ;fin de macros

;******************;* Constantes SPI *

Diseño de la tarjeta experimental UAMI-AVR

Page 70: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

;******************.if silicon_chip

.equ MOSI = 5 ; numero de bit en PORTB

.equ MISO = 6 ; numero de bit en PORTB

.else

.equ MOSI = 6 ; numero de bit en PORTB

.equ MISO = 5 ; numero de bit en PORTB

.endif

.equ SCK = 7 ; numero de bit en PORTB

;**************************;* Constantes en la UART *;**************************

.if xtal_8mhz

.equ N = 25 ; 19.2k valor de la velocidad de datos UBRR (cristal de 8MHz)

.else

.equ N = 12 ; 19.2k vel. de Tx UBRR (cristal 4MHz)

.endif

;**********************************;* Registro de Variables Globales *;**********************************.def dev_code = r1 ;Codigo de dispositivo regresado por get_codes.def pgm_mode = r2 ;modo de programacion para el avr 0 = byte mode

;<> 0 =page mode.def device = r16 ; Codigo del dispositivo.def temp1 = r17.def temp2 = r18.def s_data = r19 ;datos SPI (programacion en el sistema).def u_data = r20 ;datos de la UART.def addrl = r21 ;orden de la direccion en el byte bajo.def addrh = r22 ;orden de la direccion en el byte alto.def cmd3 = r23 ;empleado para registro r30.def rd_s_data = r24 ;utilizado para registro r31.def cmd = r25 ;Comando de programacion serial.def count = r26 ;Variable de tiempo para "entrar al modo de programacion".def param1 = r27.def cmd1 = r28.def cmd2 = r29

;****************************;* Vectores de interrupcion *;****************************

.CSEGrjmp RESET ; Usamos RESET

;Inicializa la UARTu_init:

ldi temp1,N ; establecer la velocidad en baudiosout UBRR,temp1ldi temp1,1<<TXEN|1<<RXEN ; inicializa UART para TX y RXout UCR,temp1

Diseño de la tarjeta experimental UAMI-AVR

Page 71: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

retputc:

sbis USR,UDRE ; prueba(test) para registro de Tx vaciorjmp putc ; Loop hasta que Tx sea vacioout UDR,u_data ; se envia el byteret

getc:sbis USR,RXC ; Espera hasta que el caracter ha sido recibidorjmp getcin u_data,UDR ; Se lee el byte de la UARTret

delay:ldi temp2,0xff

dl: dec temp2brne dldec temp1brne delayret

;***************************************************************************;* FUNCION;* wrser;*;* DESCRIPCION;*;* Escribe y lee los datos a/o desde la tarjeta SPI;***************************************************************************

rdser:clr s_data

wrser:ldi temp1,8ldi rd_s_data,0

wrs0:rol s_databrcc wrs1sbi portb,MOSIrjmp wrs2

wrs1:cbi portb,MOSI

wrs2:lsl rd_s_datasbic pinb,MISOori rd_s_data,1pulse_sckdec temp1brne wrs0mov s_data,rd_s_dataret

;***************************************************************************;* FUNCION;* spiinit (Entra en el modo de programacion);*;* DESCRIPCION;* Inicializa la interface SPI en el AVR;***************************************************************************

spiinit:

Diseño de la tarjeta experimental UAMI-AVR

Page 72: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

ddrd_init ; inicializa port Dddrb_init ; inicializa port Bcbi portb,SCK ; limpiamos SCKset_reset ; ponemos RESET = 1ldi temp1,0xff ; retardo (0xff);rcall delayclr_reset ; ponemos RESET = 0ldi temp1,0xff ; retardo(0xff);rcall delayldi s_data,0xac ; wrser(0xac)

;// SPI escribe (byte 1)rcall wrserldi s_data,0x53 ; wrser(0x53)

;// SPI escribe (byte 2)rcall wrser

; // SPI establece Sincronizacioncpi device,0x20 ; if ( (device >= 0x20) && (device <= 0x7F) )brlo s2tst devicebrmi s2

s0b:ldi count,32 ; count = 32; cuenta igual a 32?

s1:rcall rdser ; if (rdser == 0x53) // SPI lectura (byte 3)cpi s_data,0x53breq s3 ; break;ldi s_data,0x00 ; wrser(0x00); // SPI escribe (byte 4)rcall wrserpulse_sck ; pulse SCKldi s_data,0xac ;wrser(0xac)

;// SPI escribe (byte 1)rcall wrserldi s_data,0x53 ;wrser(0x53)

;// SPI escribe (byte 2)rcall wrserdec count ; while(--count); decrementamos la cuentabrne s1rjmp s3 ;

; elses2: ;

ldi s_data,0x00 ;wrser(0x00);// SPI escribe (byte 3)rcall wrser

s3: ; ldi s_data,0x00 ;wrser(0x00);// SPI escribe (byte 4)rcall wrserldi temp1,0x10 ; pausa(0x10);rcall delayret

;Muestra el ID ("AVR ISP") en la linea serial.

show_id:ldi zl,low(ID*2) ;Z apunta a la cadena de identificacion IDldi zh,high(ID*2)rcall msg_outret

RESET:ldi temp1,low(RAMEND)

Diseño de la tarjeta experimental UAMI-AVR

Page 73: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

out SPL,temp1 ; inicializamos pilaclr temp1out GIMSK,temp1 ; deshabilitamos interrupciones externasser temp1 ; Inicializaout PORTD,temp1set_reset ; ponemos RESET=1out PORTB,temp1ddrb_releasercall u_init ; Inicializa UART

;***************************************************************************;* PROGRAMACION;* waitcmd -> principal;*;* DESCRIPCION;* Espera y ejecuta los comandos;**********************************************************************************

waitcmd:rcall getc ; Mientras (getc() == ESC) ;cpi u_data,0x1bbreq waitcmd

;******************* Tipo de dispositivo *****************************************

cpi u_data,0x54 ; 'T' tipo de dispositivobrne w0rcall getc ; getc();mov device,u_data ; putc(device);rjmp put_ret

;****************** Regresa Identificador de Software ***************************

w0:cpi u_data,0x53 ; 'S' devuelde el identificador de softwarebrne w1rcall show_id ; se llama a la rutina show_id();rjmp waitcmd

;****************** Regresa la version del Software ******************************

w1:cpi u_data,0x56 ;'V' devuelve la version del softwarebrne w2ldi u_data,SW_MAJORrcall putcldi u_data,SW_MINORrcall putcrjmp waitcmd

;**************** Regresa la version de Hardware *********************************

w2:cpi u_data,0x76 ;'v' devuelve la version del hardwarebrne w3ldi u_data,HW_MAJOR ; putc(HW_MAJOR);

Diseño de la tarjeta experimental UAMI-AVR

Page 74: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

rcall putcldi u_data,HW_MINOR ; putc(HW_MINOR);rcall putcrjmp waitcmd

;****************** Muestra los dispositivos soportados **************************

w3:cpi u_data,0x74 ; 't' muestra los dispositivos que soportabrne w4ldi zl,low(device_codes*2) ;Z apunta a la tabla de codigos

;para los dispositivosldi zh,high(device_codes*2)

show_devices:rcall get_codes ;Regresa codigo en dev_codemov u_data,dev_codecpi u_data,0xff ;Verifica el fin de la tablabreq end_of_devices ;Terminarcall putc ;No finalizado, send outrjmp show_devices

end_of_devices:clr u_datarcall putc ;Fin de la lista de dispositivosrjmp waitcmd

;***************** Regresa el tipo de programacion *********************************

w4:cpi u_data,0x70 ; 'p' devuelve el tipo de programacionbrne w51ldi u_data,0x53 ; putc('S'); //programacion serialrcall putcrjmp waitcmd

;***************** Regresa autoincremento de direcciones **************************

w51:cpi u_data,'a' ; 'a' devuelve la direccion de

autoincrementobrne w5ldi u_data,'Y' ; putc('Y'); // soporta autoincrementorcall putcrjmp waitcmd

w5:cpi u_data,0x78 ; 'x' Encendemos LED (set led ignorado)brne w6rcall getc ; ignora el byte de datosrjmp put_ret

;****************** Limpia LED ******************************************************

w6:cpi u_data,0x79 ; 'y' Limpiamos LED (ignorado)

Diseño de la tarjeta experimental UAMI-AVR

Page 75: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

brne w7rcall getc ; ignora el byterjmp put_ret

;******************** Entra al modo de programacion *********************************

w7:

push temp2 ;Savalmos temp2ldi zl,low(device_codes*2) ;Z apunta a la tabla de codigos de

dispositivosldi zh,high(device_codes*2)

w7_lp:rcall get_codes ;Regresa codigo en dev_codemov temp2,dev_codecpi temp2,0xff ;Checamos fin de la tablabreq device_err ;codigo de dispositivo no encontradocp temp2,device ;Se encontro el codigo de avr?breq x_w7_lp ;sirjmp w7_lp ;siguiente codigo

x_w7_lp:pop temp2 ;Restauramos temp2rjmp w72

device_err:pop temp2 ;Restauramos temp2rjmp put_err ;brincamos a put_err();

w72:cpi u_data,0x50 ; 'P' Entramos al modo de programacionbrne w8rcall spiinit ; spiinit();rjmp put_ret

;***************** Escribe el Programa en Memoria, Byte Alto***********************

w8:cpi u_data,0x43 ; 'C' Escribe el programa en memoria, byte

altobrne w9rcall getc

w81:ldi s_data,0x48 ; wrser(0x48); // SPI Escribe

(byte 1)rcall wrsermov s_data,addrh ; wrser(addrh); // SPI Escritura

(byte 2)rcall wrsermov s_data,addrl ; wrser(addrl); // SPI escribe

(byte 3)rcall wrser

mov s_data,u_data ; wrser(u_data); // SPI Escribe (byte 4)rcall wrser

ldi temp1,0x01 ; Autoincremento de direccionesclr temp2

Diseño de la tarjeta experimental UAMI-AVR

Page 76: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

add addrl,temp1adc addrh,temp2rjmp writeFLASHdelay

;**************** Escribe el programa en memoria, Byte bajo ********************************

w9:cpi u_data,0x63 ; 'c' escribe programa en memoria, byte

bajobrne w12rcall getcldi s_data,0x40 ; wrser(0x40); // SPI Escritura

(byte 1)rcall wrsermov s_data,addrh ; s_data = addrh;

w91: ; rcall wrser ; wrser(s_data); // SPI Escribe (byte 2)mov s_data,addrl ; wrser(addrl); // SPI Escribe

(byte 3)rcall wrsermov s_data,u_data ; wrser(u_data); // SPI Escribe (byte 4)rcall wrser

writeFLASHdelay:

tst pgm_modebrne w92 ;No hay espera el valor no es cero

ldi temp1,0x20 ; retardo(0x20); // 24585 ciclos de espera

rcall delay ; // en modo Pagina no requiere de pausas!w92:

rjmp put_ret ; vamos a reply();

;******************** Lectura de programa en memoria ***********************************

w12:cpi u_data,0x52 ; 'R' Lee el programa en memoriabrne w10 ;ldi s_data,0x28 ; wrser(0x28); // SPI Escribe (byte 1)rcall wrsermov s_data,addrh ; s_data = addrh;rcall wrser ; wrser(s_data); // SPI Escribe (byte 2)mov s_data,addrl ; wrser(addrl); // SPI escribe

(byte 3)rcall wrserrcall rdser ; putc(rdser()); // envia datos (byte 4)mov u_data,s_datarcall putcldi s_data,0x20 ; wrser(0x20); // SPI Escribe

(byte 1)rcall wrsermov s_data,addrh ; wrser(addrh); // SPI Escribe

(byte 2)rcall wrsermov s_data,addrl ; wrser(addrl); // SPI escribe

(byte 3)rcall wrser

Diseño de la tarjeta experimental UAMI-AVR

Page 77: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

rcall rdser ; putc(rdser()); // Send data (byte 4)

mov u_data,s_datarcall putcrjmp readaddrinc

;********************** Carga las direcciones ******************************************

w10:cpi u_data,0x41 ; 'A' Cargamos direccionesbrne w11rcall getc ; addrh = getc();mov addrh,u_datarcall getc ; addrl = getc();mov addrl,u_datarjmp put_ret ; goto reply();

;********************** Escribe los datos en memoria ************************************

w11:cpi u_data,0x44 ; 'D' Escribe datos en memoriabrne w13rcall getcldi s_data,0xc0rcall wrsermov s_data,addrhrcall wrsermov s_data,addrlrcall wrsermov s_data,u_datarcall wrserldi temp1,0x20rcall delayldi temp1,0x01 ; incremento de direccionesclr temp2add addrl,temp1adc addrh,temp2rjmp put_ret

;************************ Lectura de los datos en memoria **********************************

w13:cpi u_data,0x64 ; 'd' leemos datos en memoriabrne w14ldi s_data,0xa0 ;wrser(0xA0)

;// SPI Escribe (byte 1)rcall wrsermov s_data,addrh ;s_data = addrh;rcall wrser ; wrser(s_data)

;// SPI Escribe (byte 2)mov s_data,addrl ; wrser(addrl)

;// SPI Escribe (byte 3)rcall wrserrcall rdser ; putc(rdser())

;// envia dato (byte 4)mov u_data,s_datarcall putc

Diseño de la tarjeta experimental UAMI-AVR

Page 78: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

readaddrinc:ldi temp1,0x01 ; Auto incremento de direccionesclr temp2add addrl,temp1adc addrh,temp2rjmp waitcmd ; goto waitcmd();

;********************** Abandonamos el modo de programacion *******************************

w14:cpi u_data,0x4c ; 'L' permite modo de programacionbrne w15ddrb_releaseset_reset ; ponemos RESET = 1rjmp put_ret

;*********************** Borrado del Chip **************************************************

w15:cpi u_data,0x65 ; 'e' borrar Chipbrne w16ldi s_data,0xacrcall wrserldi s_data,0x80rcall wrserldi s_data,0x04rcall wrserldi s_data,0x00rcall wrserldi temp1,0x30rcall delayrjmp put_ret

;************************ Escritura de Lock Bits ******************************************

w16:cpi u_data,0x6c ; 'l' Escribe lock bitsbrne w17rcall getcldi s_data,0xacrcall wrsermov s_data,u_dataandi s_data,0x06ori s_data,0xe0rcall wrserldi s_data,0x00rcall wrser

w162:ldi s_data,0x00rcall wrserldi temp1,0x30rcall delayrjmp put_ret

;*************************** Lectura Signature Bytes **************************************

Diseño de la tarjeta experimental UAMI-AVR

Page 79: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

w17:cpi u_data,0x73 ; 's' Lectura de signature bytesbrne w18ldi param1,0x02rcall w17callldi param1,0x01rcall w17callldi param1,0x00rcall w17callrjmp waitcmd

w17call:ldi s_data,0x30rcall wrserldi s_data,0x00rcall wrsermov s_data,param1rcall wrserrcall rdsermov u_data,s_datarcall putcret

;************************* Escribe Programa en Pagina de Memoria *************************************

w18:cpi u_data,0x6D ; 'm' Escribe Programa en pagina de Memoriabrne w19ldi s_data,0x4c ;wrser(0x4c); // SPI Escribe (byte 1)rcall wrsermov s_data,addrh ;wrser(addrh); // SPI Escribe (byte 2)rcall wrsermov s_data,addrl ;wrser(addrl); // SPI Escribe (byte 3)rcall wrserldi s_data,0x00 ;wrser(0x00); // SPI Escribe (byte 4)rcall wrserldi temp1,0xff ; delay(0xFF); // 0x20 = 24585 ciclos de

esperarcall delayrjmp put_ret

;**************************** Comandos universales ***************************************

w19:cpi u_data,0x3A ; ':' comando Universalbrne w191rcall getcmov cmd1,u_datarcall getcmov cmd2,u_datarcall getcmov cmd3,u_dataclr u_datarcall NewUniversalldi temp1,0xff ;Espera(0xFF); // 0x20 = 24585 ciclos de

esperarcall delayrjmp put_ret

Diseño de la tarjeta experimental UAMI-AVR

Page 80: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

;*************************** Nuevos comandos universales w191:

cpi u_data,'.' ; '.' Nuevo comando Universalbrne w99rcall getcmov cmd1,u_datarcall getcmov cmd2,u_datarcall getcmov cmd3,u_datarcall getcrcall NewUniversalldi temp1,0xff ;delay(0xFF); // 0x20 = 24585 ciclos de retrasorcall delayrjmp put_ret

NewUniversal:mov s_data,cmd1rcall wrsermov s_data,cmd2rcall wrsermov s_data,cmd3rcall wrsermov s_data,u_datarcall wrsermov u_data,rd_s_datarcall putcret

w99:

;*************************** Error en comandos put_err:

ldi u_data,0x3f ; putc('?'); \\ envia '?'rcall putcrjmp waitcmd

;**** Reply Command ****put_ret:

ldi u_data,0x0d ; putc(0x0D); \\ envia CRrcall putcrjmp waitcmd

delay1us: ; cuenta en R16nopcpi temp1,0x03breq finishednopnop

loop:dec temp1cpi temp1,0x03brne loop

finished:ret

;MSG_OUT Comienza la salida de bytes en Z hasta fin de mensaje ($00)MSG_OUT: lpm ;read char into r0 mov u_data,r0 ;Copiamos a r20 cpi u_data,0x00 ;Fin del mensaje? breq END_MSG ;Si

rcall PUTC ;salida de caracter

Diseño de la tarjeta experimental UAMI-AVR

Page 81: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

adiw ZL,1rjmp MSG_OUT

END_MSG:ret

;get_codes regresa codigo de avr en dev_code y el modo programacion en pgm_mode

get_codes:lpm ;Read device code from tablemov dev_code,r0 ;Copiar a dev_codeadiw ZL,1 ;Incrementamos apuntadorlpm ;leemos el modo de programacion en la tablamov pgm_mode,r0 ;Copiar a pgm_modeadiw ZL,1 ;Incrementamos apuntadorret

;identificador del programador (ID)ID:.db "AVR ISP",0

;Tabla de codigos y modos de programacion (0(zero)=byte mode, <>0=page mode)

device_codes:

;AT90S1200 rev. A ;De 0x00-0x0f no usado todavia.db 0x10,0

;AT90S1200 rev. B.db 0x11,0

;AT90S1200 rev. C.db 0x12,0

;AT90S1200.db 0x13,0 ;De 0x14-0x1f no usado todavia

;AT90S2313.db 0x20,0 ;De 0x21-0x27 no utilizado todavia

;AT90S4414.db 0x28,0 ;De 0x29-0x2f no usado todavía

;AT90S4433.db 0x30,0 ;De 0x31-0x33 no usado todavia

;AT90S2333.db 0x34,0 ;De 0x35-0x37 no usado todavia

;AT90S8515.db 0x38,0 ;0x39 no usado todavia

;ATmega8515.db 0x3A,'P'

;ATmega8515 BOOT.db 0x3B,'P' ;De 0x3c-0x40 no usado todavia

;ATmega103.db 0x41,'P'

;ATmega603.db 0x42,'P'

;ATmega128.db 0x43,'P'

;ATmega128 BOOT.db 0x44,'P'

;ATmega64.db 0x45,'P'

;ATmega64 BOOT.db 0x46,'P' ; 0x47 no usado

;AT90S2323

Diseño de la tarjeta experimental UAMI-AVR

Page 82: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

.db 0x48,0 ;De 0x49-0x4b no usado;AT90S2343

.db 0x4C,0 ;From 0x4d-0x4f no usado;0x50,0x51 usados. De 0x52-0x54 no usados

;;ATtiny12

.db 0x55,0;ATtiny15

.db 0x56,0 ;0x57 no usado;ATtiny19

.db 0x58,0 ; 0x59-0x5b no utilizado;ATtiny28

.db 0x5C,0 ;0x5d no empleado;ATtiny26

.db 0x5E,'P' ;0x5f no utilizado;;ATmega161

.db 0x60,'P';ATmega161 BOOT

.db 0x61,'P' ;0x62-0x63 no empleado todavia;ATmega163

.db 0x64,'P';ATmega83

.db 0x65,'P';ATmega163 BOOT

.db 0x66,'P';ATmega83 BOOT

.db 0x67,'P';AT90S8535

.db 0x68,0;ATmega8535

.db 0x69,'P' ; 0x6a-0x6b no usado;;AT90S4434

.db 0x6C,0 ; 0x6d-0x6f no usado;AT90C8534

.db 0x70,0;AT90C8544

.db 0x71,0;ATmega32

.db 0x72,'P';ATmega32 BOOT

.db 0x73,'P';ATmega16

.db 0x74,'P';ATmega16 BOOT

.db 0x75,'P';ATmega8

.db 0x76,'P';ATmega8 BOOT

.db 0x77,'P';ATmega169

.db 0x78,'P';ATmega169 BOOT

.db 0x79,'P' ; 0x7a-0x7f no usado

end_of_device_codes:.dw 0xffff

Diseño de la tarjeta experimental UAMI-AVR

Page 83: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida

Proyecto terminal de ingeniería electrónica

Referencias

Fuentes Electrónicas

Internet:

Ole Saether, Terje Frostad, Ingar Fredriksen, Morten W. Lund, Haakon Skar, Paal Kastnes, John Samperi.http://www.serasidis.gr/circuits/avr_isp/avr_isp.htm

Schmidt GerhardBeginners Introduction to the Assembly Language of ATMEL-AVRMicrocontrolers®Diciembre de 2003.http://www.avr-asm-tutorial.net

http://www.avrfreaks.net

http://www.atmel.com

Guido SocherProgramando el microcontrolador AVR con GCC usando libc 1.0.4Traducido al español por:Alberto Pardo<[email protected]>2005-01-09, generated by lfparser version 2.51http://www.linuxfocus.org

CDROM:

© Atmel Corporation 2005Software and Technical LibraryEnero 2005

Diseño de la tarjeta experimental UAMI-AVR

Page 84: UNIVERSIDAD AUTÓNOMA METROPOLITANA148.206.53.84/tesiuami/UAMI13575.pdf · Tarjeta UAMI-AVR v1.0 57 Microcontroladores soportados 57 Características 57 Apéndice B Guía rápida