Vous êtes sur la page 1sur 84

UNIVERSIDAD AUTNOMA METROPOLITANA

UNIDAD IZTAPALAPA
DIVISIN DE CIENCIAS BSICAS E INGENIERA
PROYECTO TERMINAL DE INGENIERA ELECTRNICA
Evaluacin de Microcontroladores
Propuesta de Diseo de la tar!eta e"peri#ental UAMI$AVR
ALUMNOS
CHVEZ CALDERN ARMANDO
PAREDES GARCA HORACIO
LICENCIATURA EN INGENIERA ELECTRNICA
ESPECIALIDAD COMUNICACIONES
ASESOR DEL PROYECTO
M. EN C. SUARZ FERNANDEZ AGUSTN
PROFESOR INVESTIGADOR DEL REA DE INGENIERA BIOMDICA
MXICO D.F., JUNIO DE 2!.
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
DEDI%ATORIA
A Dios
P#" 12% 3)* , *+-+ 3%"/+ 4#3)5,%.
A #is padres
P#" 32 &#(4"%*3)0* $ +4#$# 6)*+*&)%"#.
A &ann'
P#" 32 %7%(4,# $ +4#$#.
A #is co#paeros( a#i)os ' #aestros
P#" 323 %*3%8+*9+3, %362%"9#3 $ &#(4"%*3)0*.
I*.. A"(+*-# C:;<%9 C+,-%"0*
A #i *a#ilia
P#" 32 4+&)%*&)+, &+")8# $ &#*3%7#3
A #is a#i)os
P#" ,+3 6)%3'+3 *# &#*<)<)-+3 &#* %,,#3
A todos ellos )racias
I*.. H#"+&)# P+"%-%3 G+"&/+
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
TABLA DE CONTENIDO
Pag.
Dedicatoria......................................................................................................................... 1
ABSTRACT......................................................................................................................... 4
Objetivo............................................................................................................................... 4
Juti!icaci"#....................................................................................................................... 4
Ca$itu%o 1
INTROD&CCI'N A LOS (ICROCONTROLADORES
1.1 I#troducci"# )
1.2 Ar*uitectura b+ica ,
1.3 B%o*ue i#ter#o de% -icroco#tro%ador .
1.4 Recuro e$ecia%e 11
1.5 E% -ercado de %o -icroco#tro%adore 1/
1.6 0erra-ie#ta $ara e% dearro%%o de a$%icacio#e 11
1.7 Dearro%%o de% o!t2are 14
Ca$itu%o /
ELECCI'N DEL (ICROCONTROLADOR
/.1 34u5 -icroco#tro%ador e-$%ear6 1,
/./ Coto 1,
/.1 A$%icaci"# 1,
/.1.1 Procea-ie#to de dato 1,
/.1./ E#trada 7 Sa%ida 18
/.1.1 Co#u-o 18
/.1.4 (e-oria 18
/.1.) A#c9o de $a%abra 18
/.1., Die:o 1.
/.4 La !a-i%ia de %o PIC v. La !a-i%ia de %o A;R c"-o e%ecci"# 1.
Ca$itu%o 1
CO(PARATI;OS DE A(BOS (ICROCONTROLADORES
3.1 Co-$arativo <Caracter=tica Re%eva#te> 1?
3.2 Co#c%uio#e de %a eva%uaci"# /1
3.3 Co-e#tario !i#a%e /4
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Ca$itu%o 4
DISE@O DE LA TARJETA &A(IAA;R
4.1 Secci"# Bue#te de A%i-e#taci"# /,
4.2 Secci"# Co-u#icaci"# Seria% /8
4.3 Secci"# de Co#tro% 1C
4.3.1 A%gorit-o de $rogra-aci"# eria% 1/
4.3.2 Caracter=tica de %a $rogra-aci"# eria% 1)
4.4 Secci"# Se%ecci"# de -icroco#tro%ador A D B 1)
4.5 Secci"# Progra-ador 4C
4.6 Secci"# Ba#co de %ed 4C
Ca$itu%o )
ENTORNO DE PROERA(ACI'N
5.1 3C"-o $rogra-ar6 41
5.1.1 0ard2are 41
5.1.2 So!t2are <A;R Studio 4F D A;R ProgF> 41
A$5#dice A
Tarjeta &A(IAA;R v1.C )8
(icroco#tro%adore o$ortado )8
Caracter=tica )8
A$5#dice B
Eu=a r+$ida de% e#a-b%ador A;RF ).
A$5#dice C
Caracter=tica e%5ctrica de %a tarjeta &A(IAA;R ,)
A$5#dice D
Progra-a de a$%icaci"# de %a tarjeta &A(IAA;R ,,
Re!ere#cia .1
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
A+strac
E* %, &#*'%*)-# -% %3'% "%4#"'% -+(#3 2*+ -%3&")4&)0* .%*%"+, -% ,# 12% %3 2*
()&"#&#*'"#,+-#", 32 +"12)'%&'2"+, 323 +4,)&+&)#*%3 $ ,+ 723')6)&+&)0* -% 32 23# +&'2+,(%*'%
%* +4,)&+&)#*%3, 12% <+* -%3-% +&+-?()&+3, +3/ &#(# %* +4,)&+&)#*%3 %34%&)6)&+3 $
4"#6%3)#*+,%3 %* %, ;(5)'# -% ,#3 3)3'%(+3 -).)'+,%3.
P#3'%")#"(%*'% 3% %<+,2+"#* +,.2*#3 ()&"#&#*'"#,+-#"%3 &#(%"&)+,%3 -% ,+3 (+"&+3 ATMEL@
$ MICROCHIP@, 4+"')%*-# -% 32 -)34#*)5),)-+- &#(%"&)+, %* M?=)&#, &#3'#A $ -% 323
"%&2"3#3 '?&*)&#3 &#(# ,# 3#* 323 4%")6?")&#3 )*'%."+-#3B EEPROM, RAM, FLASH, 32
:%""+()%*'+ -% -%3+""#,,#, &#*72*'# -% )*3'"2&&)#*%3, &#*'"#, -% 4%")6?")&#3, )*'%""24&)#*%3
-)34#*)5,%3 $ (#-#3 -% 5+7+ 4#'%*&)+.
A, 6)*+,)9+" -)&:+ %<+,2+&)0* 3% #4'# 4#" %,%.)" ,#3 ()&"#&#*'"#,+-#"%3 AVR -% ,+ (+"&+
ATMEL@, -%5)-# + 32 (#-%"*)-+-, "%&2"3#3 '?&*)&#3 $ -)34#*)5),)-+- &#(%"&)+,.
C#* %,,# 4+"')(#3 &#* 5+3% %* +,.2*+3 +4,)&+&)#*%3 '/4)&+3, +, -)3%8# -% ,+ '+"7%'+
%=4%")(%*'+, UAMI>AVR, 12% %* 32 )*)&)# 3% 5+30 %* -#3 ()&"#&#*'"#,+-#"%3 AVR@, %,
ATCS2DED $ %, ATMEGAE!A $+ -%*'"# -%, 4"#&%3# -% -)3%8# 3% -%&)-)0 12%, 4+"+ 12% ?3'+
'2<)%3% (+$#" <%"3+'),)-+- 3#4#"'+"; ,+ ."+5+&)0* -% &)*&# ()&"#&#*'"#,+-#"%3 (;3, -+*-#
3#4#"'% +3/ + ,#3 3).2)%*'%3 (#-%,#3B ATMEGAD2, ATMEGAFGDG, ATCSE2, ATCSFGDG $
AT')*$2DED.
Objetivo
Diseo de la tarjeta UAMI-AVR para los cursos de Sistemas Digitales de la UAM-Iztapalapa.
Juti!icaci"#
Actualmente, se utilizan como base eperimental de los cursos de Sistemas Digitales
di!erentes microprocesadores o microcontroladores. "n el caso particular, del
microprocesador #$%&##"', tarjeta UAMI-&##"', las memorias adicionales (ue se
re(uieren, debido a su baja capacidad, est)n al !inal de su ciclo comercial. *os
microcontroladores, en la gran ma+or,a de los casos, tienen integradas las memorias
necesarias + tienen la posibilidad de estar disponibles como muestras comerciales sin costo.
Adem)s de tener una ma+or cantidad de peri!-ricos (ue permiten darle a los cursos
di!erentes en!o(ues, +a (ue en estos con.ergen dos )reas del departamento de el-ctrica (ue
son Ingenier,a "lectr/nica con sus dos especialidades %omunicaciones + %omputaci/n, e
Ingenier,a 'iom-dica con la especialidad de instrumentaci/n.

D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
&
Introduccin a los microcontroladores
1.1 Introduccin
0rimero 1a+ (ue entender ciertas di!erencias (ue eisten entre un ()&"#4"#&%3+-#" + un
()&"#&#*'"#,+-#", b)sicamente la di!erencia es la siguiente2 un microprocesador es una %0U
3Unidad %entral de 0roceso4 en un solo integrado, mientras (ue un microcontrolador es un
sistema basado en una %0U en un solo integrado orientado en general a aplicaciones de
control + ad(uisici/n de seales.
*os microcontroladores tienen su uso en sistemas de control, aplicaciones industriales,
electrodom-sticos, biom-dicas, comunicaciones, meteorol/gicas, etc.
*a gran ma+or,a de los microcontroladores son !)ciles de usar + por ello su uso a proli!erado
en muc1as )reas, adem)s aportan una gran !leibilidad (ue conlle.a a una potente gama de
posibilidades para los diseadores. 5ig. &
5ig. & aplicaciones t,picas de un microcontrolador
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Su gran .ersatilidad + !leibilidad se dejan .er en las m6ltiples aplicaciones (ue posibilitan
las potencialidades de un microcontrolador, como lo pueden ser sus inter!aces con motores,
pantallas *%D, matriz, etc., comunicaci/n con 0%7s, leer + digitalizar .alores de sensores
eternos, conectarse en una red de microcontroladores, etc., con la .entaja de (ue esto
puede 1acerse con mu+ pocos componentes eternos. 0or ello al usar un microcontrolador
en alg6n diseo, el resultado !inal ser) compacto, de costo bajo + !)cil de depurar.
*a estructura t,pica de un microcontrolador dispone de los siguientes elementos, !ig. 8.
5ig. 8 ar(uitectura general de un microcontrolador
1.2 Arquitectura bsica
Aun(ue inicialmente todos los microcontroladores adoptaron la ar(uitectura cl)sica de Von
9eumann, en el momento presente se impone la ar(uitectura :ar.ard. *a ar(uitectura de
Von 9eumann se caracteriza por disponer de una sola memoria principal donde se
almacenan datos e instrucciones de !orma indistinta. A dic1a memoria se accede a tra.-s de
un sistema de bus 6nico 3direcciones, datos + control4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
*a ar(uitectura :ar.ard dispone de dos memorias independientes una, (ue contiene s/lo
instrucciones + otra, s/lo datos. Ambas disponen de sus respecti.os sistemas de bus de
acceso + es posible realizar operaciones de acceso 3lectura o escritura4 simult)neamente en
ambas memorias. 5igura ;.
5ig. ; *a ar(uitectura :ar.ard dispone de dos memorias independientes para datos + para
instrucciones, permitiendo accesos simult)neos.
RISC
*a industria de los microcontroladores est) decant)ndose 1acia la !iloso!,a RIS%
3%omputadoras de <uego de Instrucciones Reducido4. "n estos el repertorio de instrucciones
de m)(uina es mu+ reducido + las instrucciones son simples +, generalmente, se ejecutan
en un ciclo. *a sencillez + rapidez de las instrucciones permiten optimizar el 1ard=are + el
so!t=are del procesador.
SISC
"n los microcontroladores destinados a aplicaciones mu+ concretas, el juego de
instrucciones, adem)s de ser reducido, es >espec,!ico?, o sea, las instrucciones se adaptan a
las necesidades de la aplicaci/n pre.ista. "sta !iloso!,a se 1a bautizado con el nombre de
SIS% 3%omputadoras de <uego de Instrucciones "spec,!ico4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
1.3 Bloques internos del microcontrolador
%0U
"s la unidad de de procesamiento central. "sta toma las instrucciones almacenadas en la
memoria de programa, decodi!ica estas instrucciones + las ejecuta. *a %0U est) compuesta
por registros, la Unidad */gico Aritm-tica 3A*U4, el decodi!icador de instrucciones + la
circuiter,a de control.
Memoria de programa
*a memoria de programa almacena las instrucciones (ue !orman el programa. *a memoria
de programa en los microcontroladores es usualmente no .ol)til, puede ser ""0R@M +Ao
5*AS:.
RAM
*a RAM es la memoria de datos del microcontrolador. "sta es usada por el %0U para
almacenar .ariables as, como la pila + el >1eap?. *a pila es un )rea de memoria (ue se
utiliza para almacenar direcciones de retorno + .ariables (ue se le pasan a las !unciones del
programa, el >1eap? es un )rea de memoria (ue se utiliza para asignaci/n din)mica de
memoria.
Reloj oscilador
"l microprocesador ejecuta el programa !uera de la memoria de programa a determinada
.elocidad, esta .elocidad es determinada por la !recuencia del reloj oscilador, este podr,a ser
un oscilador interno o un oscilador con un elemento de tiempo eterno, como un oscilador
de cuarzo 3cristal4 usado com6nmente. Ban pronto como se enciende el microcontrolador la
operaci/n del oscilador debe iniciarse.
Reset + circuito detector
"l circuito de reinicio 3reset4 en el microcontrolador asegura (ue al inicio todos los
componentes + circuitos de control tengan un estado inicial prede!inido + todos los registros
sean iniciados adecuadamente.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
0uertos de comunicaci/n
"stos son componentes mu+ usados en los microcontroladores, pues se necesitan para
comunicarse con dispositi.os eternos, estos operan a di!erentes .elocidades 3seg6n se
re(uiera4. *os puertos de comunicaci/n toman b+tes del microcontrolador + los en.,an
a!uera un bit a la .ez 1acia uno de los pines de salida, de !orma similar aceptan datos un bit
a la .ez 1asta !ormar un b+te + present)rselo al %0U. "ste tipo de puertos de comunicaci/n,
los cuales reciben + transmiten datos bit por bit se le denomina 42%"'# 3%")%, eisten puertos
s,ncronos + as,ncronos, los primeros necesitan de una seal de reloj (ue acompae a los
datos + (ue lle.e la in!ormaci/n sobre la temporizaci/n, mientras (ue en los segundos la
in!ormaci/n de temporizaci/n es tomada de los datos. Ceneralmente este puerto es
integrado en un c1ip dentro del microcontrolador llamado UARB 3Recepci/n Bransmisi/n
As,ncrona Uni.ersal4 o USARB 3Recepci/n Bransmisi/n As,ncrona S,ncrona Uni.ersal4.
0uertos de entrada A salida digitales
"stos puertos de " A S se usan para intercambiar datos digitales con el eterior. %omparados
con el puerto serial, los datos en un puerto de " A S digital se en.,an en b+tes.
0uertos entrada A salida anal/gicos
*as entradas anal/gicas son procesadas usando un %on.ertidor Anal/gico Digital 3AD%4. *os
microcontroladores pueden poseer un AD% + un comparador anal/gico, estos, bajo la
super.isi/n del so!t=are, son usados para la ad(uisici/n de datos anal/gicos, principalmente
de sensores eternos. *as salidas anal/gicas se logran usando un %on.ertidor Digital
Anal/gico 3DA%4, generalmente eterno, pero la ma+or,a de los microcontroladores est)n
e(uipados con un modulador de anc1o de pulso 30DM4, (ue puede ser usado para obtener
salidas anal/gicas de .oltaje con un !iltro R%, est)s salidas pueden usarse para controlar
motores, pantallas, generar sonido, etc.
Bemporizador
"ste es usado por el microcontrolador para e.entos de tiempo, por ejemplo puede 1aber un
dato (ue necesite ser .isualizado en una pantalla en ciertos instantes. "l temporizador
tambi-n puede ser usado para contar e.entos internos o eternos, en este caso se le llama
contador o cron/metro.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Bemporizador >Datc1dog? 3DDB4
Un DDB 3>perro guardi)n?4
&
es un temporizador especial con una !unci/n espec,!ica. "ste es
usualmente usado para pre.enir ca,das de so!t=are. Brabaja de la siguiente manera2 el DDB
es b)sicamente un contador donde la !recuencia de su entrada de reloj se elige, de acuerdo
a ciertos puntos del programa donde el diseador debe poner una instrucci/n para reponer
3resetear4 este contador, as, si el contador se desborda se reinicia 3resetea4 el
microcontrolador, i.e., un desbordamiento del DDB implica (ue el programa se (uedo
esperando en alg6n punto.
:aciendo una analog,a con una 0%, cuando esta se blo(uea por una !alla en el so!t=are u
otra causa, se pulsa el bot/n del reset 3reinicio4 + se reinicializa el sistema. 0ero un
microcontrolador !unciona sin el control de un super.isor + de !orma continua las 8E 1oras
del d,a. "l DDB a grandes rasgos consiste en un temporizador (ue, cuando se desborda +
pasa por $, pro.oca un reset 3reinicio4 autom)ticamente en el sistema.
0ara esto se debe disear el programa de trabajo (ue controla la tarea de !orma (ue
re!res(ue o inicialice al DDB antes de (ue pro.o(ue el reinicio 3reset4. Si !alla el programa o
se blo(uea, no se re!rescar) al DDB +, al completar su temporizaci/n, se dice com6nmente
(ue >ladrar) + ladrar)? 1asta pro.ocar el reset.
RB% 3Reloj de Biempo Real4
"ste es un reloj de tiempo real, es un temporizador especial con la tarea de mantener el
tiempo del d,a, mes, 1ora. "ste puede ser usado como alarma para ciertos e.entos.
Sistemas embebidos
"l microcontrolador es en de!initi.a un circuito integrado (ue inclu+e componentes de un
sistema basado en una %0U. Debido a su reducido tamao es posible montar el
microcontrolador en el propio dispositi.o al (ue gobierna. "n este caso el microcontrolador
recibe el nombre de ()&"#&#*'"#,+-#" %(4#'"+-# 3embedded controller4.
*a !rase >di.ide + .encer)s? se 1ace presente tambi-n en la ar(uitectura de los
microcontroladores, de !orma tal (ue aun(ue los datos se procesan en el blo(ue de la %0U,
cada uno de los peri!-ricos es aut/nomo.

&
Braducci/n colo(uial para =atc1dog, por separado 3=atc12 reloj, dog2 perrro4
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
As, por ejemplo para transmitir un dato por el puerto serial, la %0U no tiene (ue estar
atendiendo la transmisi/n del dato en cada instante de tiempo 3polling4, esta simplemente le
da el b+te al m/dulo por el (ue lo (uiere transmitir + este modulo se encarga de transmitir +
producir la seal de relojF de esta !orma la %0U puede estar realizando otras tareas mientras
el dato se transmite.
De la misma manera cada uno de los m/dulos integrados re(uiere de un m,nimo de la %0U.
Reduciendo las tareas (ue debe realizar la %0U, obtenemos un poderoso microcontrolador,
manejando los e.entos sin la necesidad de (ue el tiempo de procesamiento sea gastado en
este manejo. "sto es importante principalmente por (ue el ma+or uso de los
microcontroladores es en procesos de control autom)tico, los cuales en su ma+or,a son
r)pidos, de esta !orma ser,a lamentable (ue la %0U estu.iera gastando tiempo en transmitir
un dato a la 0%, en contar tiempo o realizar una con.ersi/n anal/gica digital, si el dato
puede ser tratado de manera autom)tica para cada uno de los e.entos antes mencionados.
1.4 Recursos especiales
%ada !abricante o!erta numerosas .ersiones de una ar(uitectura b)sica de microcontrolador.
"n algunas ampl,a las capacidades de las memorias, en otras incorpora nue.os recursos, en
otras reduce las prestaciones al m,nimo para aplicaciones mu+ simples, etc. *a labor del
diseador es encontrar el modelo m,nimo (ue satis!aga todos los re(uerimientos de su
aplicaci/n. De esta !orma, minimizar) el costo, el 1ard=are + el so!t=are.
UARB
Adaptador de comunicaci/n serie as,ncrona.
USARB
Adaptador de comunicaci/n serie s,ncrona + as,ncrona.
MUG 3Multipleor4 + %AD 3%on.ertidor Anal/gico Digital4
0ermite la ad(uisici/n de seales eternas conjuntamente con un multipleor.
0uerto paralelo "scla.o
0ara poder conectarse con los buses de otros microprocesadores.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
'us I
8
%
"s una inter!az serie de dos 1ilos 3BDI2B=o Dire serial Inter!ace4 + protocolo desarrollado
por 01ilips. "s un bus robusto + con una comunicaci/n mu+ e!iciente, puede direccionar
1asta &8# dispositi.os arbitrariamente en el mismo bus con la posibilidad de manejar
m6ltiples >masters? en el bus.
%A9 3%ontroller Area 9et=orH4
0ermite la adaptaci/n con redes de coneionado multipleado desarrollado conjuntamente
por 'osc1 e Intel para el cableado de dispositi.os en autom/.iles.
*I9 3*ocal Interconnect 9et=orH4
0rotocolo *I9 3Interconei/n de Red *ocal4 sin necesidad de componentes eternos. "s un
protocolo de comunicaci/n serial (ue soporta e!icientemente nodos de control mecatronicos
en redes distribuidas. "s ideal en el uso de aplicaciones automoti.as. %onsiste en un nodo
maestro + m6ltiples nodos escla.o.
1.5 l mercado de los microcontroladores
Aun(ue en el mercado de la microelectr/nica la ma+or atenci/n la acaparan los desarrollos
de los microprocesadores, lo cierto es (ue se .enden cientos de microcontroladores por cada
uno de los otros.
"iste una gran di.ersidad de microcontroladores. Iuiz) la clasi!icaci/n m)s importante sea
entre microcontroladores de E, #, &J / ;8 bits. Aun(ue las prestaciones de los
microcontroladores de &J + ;8 bits son superiores a los de E + # bits, la realidad es (ue los
microcontroladores de # bits dominan el mercado + los de E bits se resisten a desaparecer.
*a raz/n de esta tendencia es (ue los microcontroladores de E + # bits son apropiados para
la gran ma+or,a de las aplicaciones, lo (ue 1ace absurdo emplear microcontroladores m)s
potentes + consecuentemente m)s caros. Uno de los sectores m)s etensos del mercado del
microcontrolador es el mercado automo.il,stico. De 1ec1o, algunas de las !amilias de
microcontroladores actuales se desarrollaron pensando eclusi.amente en este sector,
siendo modi!icadas posteriormente para adaptarse a sistemas m)s gen-ricos. "l mercado del
autom/.il es adem)s uno de los m)s eigentes2 los componentes electr/nicos deben operar
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
bajo condiciones etremas de .ibraciones, c1o(ues, ruido, etc. + seguir siendo !iables. "l
!allo de cual(uier componente en un autom/.il puede ser el origen de un accidente.
"n cuanto a las t-cnicas de !abricaci/n, cabe decir (ue pr)cticamente la totalidad de los
microcontroladores actuales se !abrican con tecnolog,a %M@S E 3Semiconductor de @ido
Met)lico %omplementario4
8
. "sta tecnolog,a supera a las t-cnicas anteriores por su bajo
consumo + alta inmunidad al ruido.
*a distribuci/n de las .entas seg6n su aplicaci/n es la siguiente2
Una tercera parte se absorbe en las aplicaciones relacionadas con las computadoras +
sus peri!-ricos.
*a cuarta parte se utiliza en las aplicaciones de consumo 3electrodom-sticos, juegos,
BV, .,deo, etc.4
Aproimadamente el &JK de las .entas mundiales se destin/ al )rea de las
comunicaciones.
@tro &JK apro. !ue empleado en aplicaciones industriales.
"l resto de los microcontroladores .endidos en el mundo, aproimadamente un &$K
!ueron ad(uiridos por las industrias automo.il,sticas.
Bambi-n los modernos microcontroladores de ;8 bits .an a!ianzando 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 + el control de los
dispositi.os de almacenamiento masi.o de datos.
1.! "erramientas para el desarrollo de aplicaciones.
Uno de los !actores (ue m)s importancia tiene a la 1ora de seleccionar un microcontrolador
entre todos los dem)s es el soporte tanto de so!t=are como de 1ard=are de (ue dispone. Un
buen conjunto de 1erramientas de desarrollo puede ser decisi.o en la elecci/n, +a (ue
pueden suponer una a+uda inestimable en el desarrollo del pro+ecto.
*as principales 1erramientas de a+uda al desarrollo de sistemas basados en
microcontroladores se describen a continuaci/n.
8
%omplementar+ Metal @ide Semiconductor
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
1.# $esarrollo del so%t&are
"nsamblador
*a programaci/n en lenguaje ensamblador puede resultar un tanto ardua para el
principiante, pero permite desarrollar programas mu+ e!icientes, +a (ue otorga al
programador el dominio absoluto del sistema. *os !abricantes suelen proporcionar el
programa ensamblador de !orma gratuita + en cual(uier caso siempre se puede encontrar
una .ersi/n gratuita para los microcontroladores m)s populares.
%ompilador
*a programaci/n en un lenguaje de alto ni.el 3como el %4 permite disminuir el tiempo de
desarrollo de un producto. 9o obstante, si no se programa con cuidado, el c/digo resultante
puede ser muc1o m)s ine!iciente (ue el programado en ensamblador. *as .ersiones m)s
potentes suelen ser mu+ caras, aun(ue para los microcontroladores m)s populares pueden
encontrarse .ersiones demo limitadas e incluso compiladores gratuitos.
Depuraci/n
Debido a (ue los microcontroladores .an a controlar dispositi.os !,sicos, los desarrolladores
necesitan 1erramientas (ue les permitan emular el comportamiento del microcontrolador,
depurar el so!t=are + as, garantizar su buen !uncionamiento cuando es conectado
!,sicamente al resto de circuitos.
Simulador
Son capaces de ejecutar en una 0% programas realizados para el microcontrolador. *os
simuladores permiten tener un control absoluto sobre la ejecuci/n de un programa, siendo
ideales para la depuraci/n de los mismos. Su gran incon.eniente es (ue es di!,cil simular la
entrada + salida de datos del microcontrolador. Bampoco cuentan con los posibles ruidos en
las entradas, pero, al menos, permiten el paso !,sico de la implementaci/n de un modo m)s
seguro + menos costoso.
Barjetas de e.aluaci/n.
Se trata de pe(ueos sistemas con un microcontrolador +a montado + (ue suelen conectarse
a una 0% desde el (ue se cargan los programas (ue se ejecutan en el microcontrolador. *as
tarjetas suelen incluir .isualizadores *%D, teclados, *"Ds, !)cil acceso a los pines de "AS,
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
etc. "l sistema operati.o de la tarjeta recibe el nombre de programa monitor. "l programa
monitor de algunas tarjetas de e.aluaci/n, aparte de permitir cargar programas + datos en
la memoria del microcontrolador, puede permitir en cual(uier momento realizar ejecuci/n
paso a paso, monitorear el estado del microcontrolador o modi!icar los .alores almacenados
en los registros o en la memoria.
"muladores en circuito
Se trata de un instrumento (ue se coloca entre la 0% an!itri/n + el z/calo de la tarjeta de
circuito impreso donde se alojar) el microcontrolador de!initi.o. "l programa es ejecutado
desde la 0%, pero para la tarjeta de aplicaci/n es como si lo 1iciese el mismo
microcontrolador (ue luego ir) en el z/calo. 0resenta en pantalla toda la in!ormaci/n tal +
como luego suceder) cuando se colo(ue la c)psula.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
8
leccin del microcontrolador
,-. /0u1 #icrocontrolador e#plear2
A la 1ora de escoger el microcontrolador a emplear en un diseo concreto 1a+ (ue tener en
cuenta multitud de !actores, como la documentaci/n + 1erramientas de desarrollo
disponibles + su precio, la cantidad de !abricantes (ue lo producen + por supuesto las
caracter,sticas del microcontrolador 3tipo de memoria de programa, n6mero de
temporizadores, cantidad de registros de prop/sito general, interrupciones, etc.4
2.2 Costos
%omo es l/gico, los !abricantes de microcontroladores compiten duramente para .ender sus
productos. "s a(u, donde dependiendo de la aplicaci/n el diseador deber) seleccionar el
dem)s bajo costo sin sacri!icar la e!iciencia de la aplicaci/n.
0ongamos un ejemplo, para el !abricante (ue usa el microcontrolador en su producto una
di!erencia de precio en el microcontrolador de algunos pesos es importante 3el consumidor
deber) pagar adem)s el costo del empa(uetado, el de los otros componentes, el diseo del
1ard=are + el desarrollo del so!t=are4. Si el !abricante desea reducir costos debe tener en
cuenta las 1erramientas de apo+o con (ue .a a contar2 emuladores, simuladores,
ensambladores, compiladores, etc. "s 1abitual (ue muc1os de ellos siempre se decanten por
microcontroladores pertenecientes a una 6nica !amilia.
2.3 Aplicacin
Antes de seleccionar un microcontrolador es imprescindible analizar los re(uisitos de la
aplicaci/n, a continuaci/n se citan algunos ejemplos.
2.3.1 'rocesamiento de datos
0uede ser necesario (ue el microcontrolador realice c)lculos cr,ticos en un tiempo limitado.
"n ese caso debemos asegurarnos de seleccionar un dispositi.o su!icientemente r)pido para
ello. 0or otro lado, 1abr) (ue tener en cuenta la precisi/n de los datos a manejar2 si no es
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
su!iciente con un microcontrolador de # bits, puede ser necesario acudir a
microcontroladores de &J / ;8 bits, o incluso a 1ard=are de punto !lotante.
2.3.2 ntrada Salida
0ara determinar las necesidades de "ntradaASalida del sistema es con.eniente dibujar un
diagrama de blo(ues del mismo, de tal !orma (ue sea sencillo identi!icar la cantidad + tipo
de seales a controlar. Una .ez realizado este an)lisis puede ser necesario aadir peri!-ricos
31ard=are eterno4 o cambiar a otro microcontrolador m)s adecuado a ese sistema.
2.3.3 Consumo
Algunos productos (ue incorporan microcontroladores est)n alimentados con bater,as + su
!uncionamiento puede ser tan .ital como acti.ar una alarma antirrobo. *o m)s con.eniente
en un caso como -ste puede ser (ue el microcontrolador est- en estado de bajo consumo
3sleep4 pero (ue despierte ante la acti.aci/n de una seal 3una interrupci/n4 + ejecute el
programa adecuado para procesarla.
2.3.4 (emoria
0ara detectar las necesidades de memoria de nuestra aplicaci/n debemos separarla en
memoria .ol)til 3SRAM4, memoria no .ol)til 3"0R@M, etc.4 + memoria no .ol)til modi!icable
3""0R@M + 5*AS:4. "ste 6ltimo tipo de memoria puede ser 6til para incluir in!ormaci/n
espec,!ica de la aplicaci/n como un n6mero de serie o par)metros de calibraci/n.
"n cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar una .ersi/n
preliminar, aun(ue sea en pseudo-c/digo, de la aplicaci/n + a partir de ella 1acer una
estimaci/n de cu)nta memoria .ol)til + no .ol)til es necesaria + si es con.eniente disponer
de memoria no .ol)til modi!icable.
2.3.5 Anc)o de palabra
"l criterio de diseo debe ser seleccionar el microcontrolador de menor anc1o de palabra
(ue satis!aga los re(uerimientos de la aplicaci/n. Usar un microcontrolador de E bits
supondr) una reducci/n en los costos importante, mientras (ue uno de # bits puede ser el
m)s adecuado si el anc1o de los datos es de un b+te. *os microcontroladores de &J + ;8
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
bits, debido a su ele.ado costo, deben reser.arse para aplicaciones (ue re(uieran sus altas
prestaciones 3"ntradaASalida potente o espacio de direccionamiento mu+ ele.ado4.
2.3.! $ise*o
*a selecci/n de un microcontrolador concreto condicionar) el diseo. Debe tenerse en cuenta
(ue (uiz) usar un microcontrolador barato encarezca el resto de componentes del diseo.
"s preciso resaltar en este punto (ue eisten innumerables !amilias de microcontroladores,
cada una de las cuales posee un gran n6mero de .ariantes. 0ero nuestro diseo se centrar)
6nicamente en la !amilia de microcontroladores AVRL de ABM"*L.
2.4 +a %amilia de los 'IC ,s. la %amilia de los A-R como eleccin
MIu- es lo (ue ocurr,a con los 0I% 1asta 1ace algunos aosN, M0or (u- est)n en boca de
todosN
Se 1a buscado en multitud de bibliogra!,a + realmente nadie da una respuesta concreta,
pero una aproimaci/n puede ser esta2
*os 0I% 1asta 1ace unos cuantos aos ten,an una gran .entaja, no 1ab,a pr)cticamente
competencia en el mercado, por lo (ue a .ista de los diseadores estos representaban una
soluci/n poderosa, el precio, la !acilidad de uso, la in!ormaci/n, las 1erramientas de apo+o,
etc. Iuiz)s un poco de todo eso es lo (ue produce esa imagen de sencillez + utilidad. Sin
embargo 1o+ en d,a eisten bastantes !amilias de microcontroladores de distintos
!abricantes como los AVRL (ue por el momento representan una mu+ buena opci/n en
cuanto a !leibilidad, precio, 1erramientas de desarrollo, in!ormaci/n, modernidad, etc.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
;
Comparati,os de ambos microcontroladores
3.1 Comparati,os
Caracter.sticas rele,antes
'IC/
Ar(uitectura 0I%L
*a ar(uitectura sigue el modelo :ar.ard.
"n esta ar(uitectura, la %0U se conecta de
!orma independiente + con un bus distinto
entre la memoria de instrucciones + la de
datos.
Segmentaci/n
Se aplica la t-cnica de segmentaci/n
3>pipe line?4 en la ejecuci/n de las
instrucciones. *a ma+or,a de las
instrucciones se ejecutan en un ciclo de
instrucci/n 3un ciclo de instrucci/n
e(ui.ale a cuatro ciclos de reloj4.
5ormato de las instrucciones.
*as instrucciones de los 0I%L de la gama
baja tienen una longitud de &8 bits. *as de
la gama media tienen &E bits + las de alta
&J bits. "sta caracter,stica es .entajosa en
la optimizaci/n de la memoria de
instrucciones + !acilita la construcci/n de
ensambladores + compiladores.
A-R/
Ar(uitectura AVRL
"l AVRL es un microcontrolador RIS% con
una ar(uitectura :ar.ard, por lo (ue
tambi-n tiene una memoria de programa
separada de la memoria de datos + en
general muc1o ma+or (ue su competidor.
Segmentaci/n
Al igual (ue su oponente tambi-n maneja
la segmentaci/n >pipe line? sin embargo
en el AVRL la ma+or,a de las instrucciones
se lle.an a cabo en un 6nico ciclo de reloj.
AVRL son entonces m)s .eloces en la
ejecuci/n de la gran ma+or,a de
instrucciones.
5ormato de las instrucciones.
*a ma+or,a de las instrucciones son de 8
b+tes de longitud + ocupan una localidad
de la memoria de programa. Al igual (ue
su competidor esta caracter,stica a+uda en
la optimizaci/n de la memoria de
instrucciones + !acilita la construcci/n de
ensambladores + compiladores.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
<uego de instrucciones
0rocesador RIS% 3<uego de Instrucciones
Reducido4. *os de gama baja ;;
instrucciones, los de media ;O + 1asta J$
los de gama alta.
Bodas las instrucciones son ortogonales
%ual(uier instrucci/n puede manejar
cual(uier elemento de la ar(uitectura
como !uente o como destino.
'anco de registros
*os de gama baja solo poseen # registros
de # bits, los de media + alta 1asta &O
registros de # bits.
:erramientas de desarrollo
*a empresa Microc1ipL + otras (ue
utilizan los 0I%L ponen a disposici/n de
los usuarios numerosas 1erramientas para
desarrollar 1ard=are + so!t=are. Son mu+
abundantes los programadores, los
simuladores so!t=are, los emuladores en
tiempo real, "nsambladores, %ompiladores
%, Int-rpretes + %ompiladores 'ASI%, etc.
<uego de instrucciones
Al ser RIS% tambi-n posee un <uego de
Instrucciones Reducido. A(u, la cantidad
de instrucciones para ABP$S 3b)sico4 es
de #P, &&# para ABtin+ 3medio4 + 1asta
8$$ para ABM"CA 3Alto4.
Bodas las instrucciones son ortogonales
Su conjunto ortogonal de instrucciones
tambi-n puede controlar cual(uier modulo
de la ar(uitectura automatiz)ndolo.
'anco de registros
"l n6cleo e1ibe ;8 registros iguales de #
bits, + cual(uiera de ellos puede contener
direcciones o datos.
Una .entaja m)s pues es bien sabido (ue
es m)s e!iciente trabajar con memoria
interna dentro del n6cleo, (ue con
eterna.
:erramientas de desarrollo
AtmelL tambi-n 1a puesto a disposici/n
notables 1erramientas de desarrollo,
gratuitas, modernas, la 6nica des.entaja
es el mercado para sus tarjetas
programadoras, pero para esto eiste una
soluci/n2 el modo de programaci/n S0I
30rogramaci/n Serial In %ircuit4, (ue
permite tener acceso a la ""0R@M +
5*AS:, mediante el puerto serial de
cual(uier 0%. Bambi-n se puede compilar
en %, en *inu, con bascomAVR, etc.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
3.2 Conclusiones de la e,aluacin
*a tabla & + 8 nos muestran algunos comparati.os en cuanto a memoria interna para 0I%L
+ AVRL.
PIC AR4&ITECT&RA TECNOLOEIA RA( BLAS0 EEPRO(
16C54 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 64bytes
16F84 RISC CMOS 68bytes 1Kb 64bytes
16F876 RISC CMOS 368bytes 8Kb 256bytes
16F877 RISC CMOS 368bytes 8Kb 256bytes
Babla & algunos microcontroladores 0I%L caracterizados en memoria interna.
A;RF AR4&ITECT&RA TECNOLOEIA SRA( BLAS0 EEPRO(
AT90S1200-12 RISC CMOS NO 1Kb 64bytes
AT90S2313-10 RISC CMOS 128bytes 2Kb 128bytes
AT90S4433 RISC CMOS 128bytes 4Kb 256bytes
ATMEA 48 RISC CMOS 512bytes 4Kb 256bytes
ATMEA 88 RISC CMOS 1Kb 8Kb 512bytes
ATMEA 168 RISC CMOS 1Kb 16Kb 512bytes
ATMEA 8515! RISC CMOS 512bytes 8Kb 512bytes
ATMEA 32 RISC CMOS 2Kb 32Kb 1024bytes
Babla & algunos microcontroladores AVRL caracterizados en memoria interna.
Bomamos para 1acer un comparati.o con condiciones ecu)nimes dos modelos de gama baja
tanto de MI%R@%:I0L como de ABM"*L, el primero es un 'IC 01!C5!A1 de gama baja
coloreado en amarillo .s. un A-R/ 0A234S23131 de los m)s b)sicos, .emos la di!erencia
notable en memoria RA( 25 b5tes en el 'IC6 .s. 127 b5tes en el A-R/, en cuanto a
5*AS: ni se mencione pues el 0I%Q en este modelo no se inclu+e, mientras (ue en el AVRL
+a se consideraba esta con un tamao mu+ pe(ueo pero /ptimo para la -poca en (ue sali/
al mercado + las aplicaciones a las (ue se destina, cabe resaltar (ue en cuanto a memoria
R@M el 0I%Q sobrepasa en muc1o al AVRL &Hb .s. &8# b+tes, sin embargo mientras en el
'IC6 es una R8( en el A-R/ +a se inclu+e una moderna 'R8( , con lo (ue las
di!erencias (uedan bastante saldadas, adem)s la eperiencia nos 1a mostrado (ue para
aplicaciones como las (ue son objeto de este estudio, no es necesario una gran cantidad de
memoria no .ol)til.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Despu-s comparamos el popular 'IC1!974 de gama media .s. un AVRL aun de los b)sicos
el A-R/ A234S4433, naturalmente como se esperaba se nota la modernidad en los AVRL,
pues el AVRL posee &8# b+tes en memoria RAM .s. J# b+tes en RAM para el 0I%Q, en
cuanto a 5*AS: + ""0R@M el AVRL supera al 0I%Q en E .eces su tamao. Babla 8.
PIC AR4&ITECT&RA TECNOLOEIA RA( BLAS0 EEPRO(
16C56A RISC CMOS 25bytes NO 1Kb(ROM)
16F84 RISC CMOS 68bytes 1Kb 64bytes
A;R AR4&ITECT&RA TECNOLOEIA SRA( BLAS0 EEPRO(
AT90S2313-10 RISC CMOS 128bytes 2Kb 128bytes
AT90S4433 RISC CMOS 128bytes 4Kb 256bytes
Babla 8 comparaciones de memoria interna 0I%L .s. AVRL
"n las posteriores tablas comparamos el resto de caracter,sticas notables en cada !amilia de
microcontroladores resaltando los de gama alta para cada !abricante. *as tablas ; + E nos
indican los consumos de potencia 3acti.o A inacti.o4 + baja potencia. "n las tablas O + J
mostramos di!erencias entre peri!-ricos integrados .elocidad de procesamiento 3!recuencia
del oscilador4 + cantidad de registros en el n6cleo.
PIC I7O POT. ACTI;O POT. INACTI;O BAJA POT
16C54 12 2"A 0#6"$%&'A 15"$%&'A
16C55 20 2"A 0#6"$%&'A 15"$%&'A
16C56A 12 2"A 0#6"$%&'A 15"$%&'A
16C76 22 2"A 1"$%&'A 15"$%&'A
16C77 33 2"A 1"$%&'A 15"$%&'A
16F83 13 2"A 0#6"$%&'A 15"$%&'A
16F84 13 2"A 0#6"$%&'A 15"$%&'A
16F876 22 2"A 1"$%&'A 20"$%&'A
16F877 26 2"A 1"$%&'A 20"$%&'A
Babla ; caracter,sticas de potencia + modo de baja potencia 0I%L.
A;R I7O POT. ACTI;O POT. INACTI;O BAJA POT
AT90S1200-12 15 2"A 0#4"A (1"$%&'A
AT90S2313-10 15 2#8"A 0#8"A (1"$%&'A
AT90S4433 20 3#4"A 1#4"A (1"$%&'A
ATMEA 48 23 240"$%&'A NO 0#1"$%&'A
ATMEA 88 23 240"$%&'A ))))) 0#1"$%&'A
ATMEA 168 23 240"$%&'A ))))) 0#1"$%&'A
ATMEA 8515! 35 )))) ))))) )))))
ATMEA 32 32 1#1"A 0#35"A (1"$%&'A
Babla E caracter,sticas de potencia + modo de baja potencia AVRL.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
PIC INTG INSTR &ART CA7D PINES
BREC.
OSC REEISTROS
16C54 NO 33 NO NO 18 20M*+ 8,8b$ts
16C55 NO 33 NO NO 28 20M*+ 8,8b$ts
16C56A NO 33 NO NO 18 20M*+ 8,8b$ts
16C76 11 35 SI SI 28 20M*+ ))
16C77 12 35 SI SI 40 20M*+ ))
16F83 4 35 NO NO 18 10M*+ 15-8
16F84 4 35 NO NO 18 10M*+ 15-8
16F876 13 35 SI SI 40 20M*+ ))
16F877 14 35 SI SI 40 20M*+ ))
Babla O peri!-ricos integrados + registros del n6cleo 30I%L4
))
9o se especi!ico en la 1oja de datos
))))))
Depende de la con!iguraci/n de trabajo
A;R INTG INSTR &ART CA7D PINES BREC. OSC REEISTROS
AT90S1200-12 4 89 NO NO 20 12M*+ 32,8 .ITS
AT90S2313-10 10 118 SI NO 20 10M*+ 32,8 .ITS
AT90S4433 13 118 SI SI 28 8M*+ 32,8 .ITS
ATMEA 48 1 131 SI SI 28 20M*+ 32,8 .ITS
ATMEA 88 1 131 SI SI 28 20M*+ 32,8 .ITS
ATMEA 168 2 131 SI SI 28 20M*+ 32,8 .ITS
ATMEA 8515! 16 130 SI NO 40 16M*+ 32,8 .ITS
ATMEA 32 18 131 SI SI 40 16M*+ 32,8 .ITS
Babla J peri!-ricos integrados + registros del n6cleo 3AVRL4
%omo +a es de notarse se nota la superioridad en cuanto a modernidad, bajo consumo +
prestaciones m)s altas en cuanto a peri!-ricos.
3.3 Comentarios %inales
A-R6 A2(+/ + RISC : 7 BI2
ABM"*Q 1a lle.ado la !iloso!,a de diseo RIS% a los microprocesadores de # 'IB.
"sta nue.a ar(uitectura proporciona todos los bene!icios 1abituales del RIS%2 tasa de Reloj
m)s r)pida, mejor desempeo, + una optimizaci/n m)s e!iciente en el compilador.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
AVRL compite con .arias !amilias de microprocesadores bien establecidas en el mercado,
tales como #$O&, J#$O + J#:%&&. A la competencia se suma la !amilia 0I% de MI%R@%:I0Q,
(ue con un diseo mas moderno se 1a etendido r)pidamente en los 6ltimos aos.
AVRL es el primer diseo de microcontrolador de ABM"*Q, una compa,a mas conocida por
sus productos de memoria 5*AS: + ""0R@M. "l microcontrolador AVRL se asemeja a la
ma+or,a de los microcontroladores RIS%, pero con una cantidad ma+or de registros.
"l n6cleo e1ibe ;8 registros iguales de # 'IB, + cual(uiera de ellos pueden contener
direcciones o datos. %omo los punteros de direcci/n de # 'IB resultan medianamente
in6tiles aun para los dispositi.os de # 'IB, los 6ltimos tres registros se pueden usar en
pares, como punteros de direcci/n. Apodados G, R, + S, estos tres meta-registros se pueden
usar para cual(uier 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 J bit a los contenidos del puntero, esta opci/n resulta 6til para
direccionar los elementos de un arreglo. "ste modo no es posible para el puntero GF ese
c/digo de operaci/n 3opcode4 esta reser.ado para la instrucci/n *DI 3*oad immediate4 carga
inmediata de una constante.
A .eces resulta di!,cil entusiasmarse acerca de los microcontroladores de # 'IBF sin embargo
el diseo AVR de ABM"*Q di!iere de los dem)s de su clase tal como lo 1izo la primera
ma(uina RIS% comparada con los grandes sistemas, 1ace mas de una d-cada. %on su
arc1i.o de registros m)s grande + con su conjunto ortogonal de instrucciones, AVRL es
muc1o m)s moderna (ue su competencia.
0or ejemplo, los #$O&, J#$O + 0I%L se las arreglan con un 6nico acumuladorF los J#:%&& +
:%&8 tienen simplemente dos. "sto 1ace (ue la ar(uitectura AVRL sea m)s !)cil de
programar a ni.el de lenguaje ensamblador, + (ue sea !)cil de optimizar con un compilador.
"l gran conjunto de registros disminu+e la dependencia respecto a la memoria, lo cual
mejora la .elocidad + 1ace m)s pe(ueas las necesidades de almacenamiento de datos.
"l conjunto de instrucciones del AVRL (ue se asemeja al RIS%, tambi-n contribu+e a
mejorar su densidad de c/digo respecto a otros microprocesadoresAmicrocontroladores de #
bit. Su instrucci/n %0I 3compare immediate4 e.ita la engorrosa construcci/n de cargar,
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
substraer + .eri!icar las banderas 3!lags4, (ue usan el J#$# + el 0I%L. Usualmente, la suma
de dos n6meros en el #$O&, J#$O, o el 0I%L in.olucra alternar ambos operandos a tra.-s
del acumulador + almacenar el resultado. "l AVRL simplemente suma dos registros con una
instrucci/n, en un ciclo de ma(uina.
:ablar de alto rendimiento parecer,a !uera de lugar, la !amilia AVRL deber,a !uncionar
mejor (ue los otros microprocesadoresAmicrocontroladores de # 'IB + muc1os de &J 'IB. A
8$ M:z, su .elocidad m)ima de reloj, duplica con !acilidad la de los dem)s c1ips de su
clase. R lo (ue es m)s importante, casi todas sus instrucciones se ejecutan en & o 8 ciclos de
reloj, .ersus E-&$ ciclos para los c1ips #$O&, J#$O, J#:%&&, + 0I%L.
0ara ser mas preciso, el :%&8, #$O&GA, + el 8O& son diseos de &J 'IB, con tra+ectorias
internas de datos de &J 'IB + operaciones aritm-ticas de &J 'IB, pero aun re(uieren de tres
o mas ciclos de reloj para e!ectuar los c)lculos mas simples + la ma+or,a de las operaciones
b)sicas con los registros. Adem)s las .elocidades de reloj de estos dispositi.os no son m)s
r)pidas (ue las de ABM"*L, + no pueden compensar la ejecuci/n in1erentemente ine!iciente
Resumiendo, el AVRL o!rece un desempeo de &J 'IB con un precio de # bit. 0ara los
desarrolladores (ue deseen memoria en el c1ip pero (ue no necesiten tipos de datos de &J
bits o compatibilidad binaria con la generaci/n anterior, ABM"*Q o!rece una mejor relaci/n
precio A desempeo a a(uellos diseadores (ue deseen independizarse de las !amilias m)s
antiguas.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
E
$ise*o de la tar;eta <A(I=A-R
4.1 Seccin 9uente de Alimentacin
"l diseo se decidi/ 1acer de manera modular, en la !igura E se muestra a detalle el diseo
de la !uente de alimentaci/n, +a (ue el consumo no es ma+or a &$$mA el regulador
seleccionado es un *T#$O%V con entrada t,pica de J a &OVD% + salida de OVD% A &A. *a
alimentaci/n es por medio de un plug &mm con conei/n a !uente eterna de P a &OVD%, sin
importar polaridad, +a (ue para e.itar dao a la tarjeta se coloco un puente de diodos. "l
SD& es usado para encender o apagar la tarjeta en su totalidad. Adem)s cuenta con un led
de color .erde (ue indica el encendido principal + un capacitor para e.itar un poco algunos
pulsos de ruido.
9ota2 "S 9"%"SARI@ :A%"R US@ D" U9 DISI0AD@R D" %A*@R 0ARA "* %.I. *T#$O%V + un
SU0R"S@R D" BRA9SIBIV@S colocado antes del puente de diodos para e.itar el retorno de
corriente desde el puerto serial.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura E. 5uente de alimentaci/n para la tarjeta AVR-UAMI
"l c)lculo para la resistencia de led se realiz/ de la siguiente !orma2
486
15
7 . 1 9
y 886
15
7 . 1 15

30 i A 3 : es led de corriente la ;
7 . 1
LED
=

= =

=
mA
V V
R
mA
V V
R
mA m
i
V V
R
LED LED
LED
IN
LED
Se toma un .alor medio de J#JU, para un rango apropiado de corriente 3
mA m 19 i A 10
LED
) el .alor comercial es de
= 680
LED
R
.
4.2 Seccin Comunicacin Serial
Una manera de conectar dos dispositi.os es mediante comunicaciones serie as.ncronas.
"n ellas los bits de datos se transmiten Ven serieV 3uno detr)s de otro4 + cada dispositi.o
tiene su propio reloj. 0re.iamente se 1a acordado (ue ambos dispositi.os transmitir)n datos
a la misma .elocidad. *a .elocidad de transmisi/n es simplemente el n6mero de bits
transmitidos por segundo cuando se en.,a un !lujo continuo de datos. "isten unas
.elocidades est)ndar de transmisi/n (ue son TO, &O$, ;$$, J$$, &8$$, &#$$, 8E$$, E#$$,
PJ$$ + &P8$$ baudios. "l baudio es la .elocidad de transmisi/n + es e(ui.alente a un bit por
segundo. 0ara producir una transmisi/n de datos con -ito, es esencial (ue los e(uipos
transmisores trabajen a la misma .elocidad. Bambi-n es necesario (ue los datos se
transmitan con el mismo !ormato, el n6mero de bits de datos + de parada deben ser el
mismo, igual (ue el tipo de paridad utilizada. "sto se logr/ con!igurando en so!t=are dic1os
par)metros, en la tarjeta UAMI-AVR se consigui/ 1aci-ndolo en la UARB del
microcontrolador ABP$S8;&; (ue es la base de control usada en nuestra tarjeta. 0ara la 0%
no es necesario +a (ue el AVR %3'2-)# H I se encarga de realizar esta !unci/n.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura O. Secci/n %omunicaci/n Serial.
*a salida de datos de los puertos seriales es en los ni.eles de .oltaje BB* (ue, por sus
ni.eles de .oltaje, pr)cticamente no se pueden transmitir sin error, m)s all) de unos ;$ %m.
0or lo tanto, es necesaria una con.ersi/n para tener la potencia adecuada (ue proporcione
inmunidad al ruido. *a !orma m)s com6n de con.ersi/n de los datos es a la norma RS-8;8%
(ue es una con.enci/n de ni.eles de .oltaje ma+ores a los de BB*. *os ni.eles de .oltaje
para todas las seales RS-8;8%, son2
0ara un ni.el l/gico alto, o marca, entre W; V. + W&O V., con carga, sin carga W8O V.
0ara un ni.el l/gico bajo, o espacio, el .oltaje es entre X;V. + X&O V. con carga, sin
carga X8O V.
0or ello es necesario utilizar un %I MAG-8;8 dri.erAtranscei.er (ue conseguir) adaptar
dic1os ni.eles. R un conector D'P con la siguiente con!iguraci/n seg6n la norma RS-8;8, .er
!igura J + tabla T.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5ig. J. %onectores D'P.
:>mero de
pin
Se*al
& $C$ 3Data %arrier Detect4
8 R? Recepci/n de Datos
; 2? Bransmisi/n de Datos
E $2R 3Data Berminal Read+4
O @:$ Bierra
J $SR 3Data S1eet Read+4
T R2S 3Re(uest Bo Send4
# C2S 3%lear Bo Send4
P RI 3Ring ;$Indicador4
Babla T. %on.enci/n RS-8;8
0ara conectar la 'C a un microcontrolador por el puerto serie se utilizan las seales 2A,
RA + @:$. *a 0% utiliza la norma RS-8;8, por lo (ue los ni.eles de tensi/n de los pines
est)n comprendidos entre X&O + -&O .oltios. *os microcontroladores normalmente trabajan
con ni.eles BB* 3$-O.4. "s necesario por tanto intercalar un circuito (ue adapte los ni,eles
5ig. T.
5ig. T. %ircuitos de con.ersi/n de BB* a RS 8;8 + .ice.ersa.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
%omo +a se mencion/ + como se obser.a en la !igura O el %I (A?232 se usa para este !in.
"ste c1ip permite adaptar los ni.eles RS8;8 + BB*, permitiendo conectar una 0% con un
microcontrolador. S/lo es necesario este c1ip + sus capacitores electrol,ticos eternos como
lo marca la aplicaci/n t,pica del c1ip.
"ntonces esto implicar) realizar en laboratorio un cable con conectores D'P 1embra-1embra
de no m)s de &m. *a !igura # muestra la conei/n (ue se realizara en el laboratorio, la cual
tiene la .entaja de ser simple de realizar.
5ig. #. %oneionado del cable serial.
4.3 Seccin de control
As, entonces las eti(uetas BDA + RDA por re!erirse a los puertos 0D del micro ABP$S8;&;
son conectadas a los pines 8 + ; respecti.amente como es mostrado en la !igura P, secci/n
de control de la tarjeta UAMI-AVR. "l pin 0D&3BD4 es con!igurado en so!t=are para (ue
1abilite la salida de datos de la UARB 3DDRD&4 + 0D$3RD4 es con!igurado para (ue reciba
datos 1acia la UARB 30@RBD$4 + !orzado a >&? para (ue se 1abiliten las resistencias internas
de pull-up.
*a !igura &$ muestra el es(uem)tico del puerto 0D$3RD4. Mientras (ue en la !igura && se
muestra el es(uem)tico del puerto 0D&3BD4.
*os cristales recomendados por la aplicaci/n t,pica de ABM"*L pueden ser de #M:z o EM:z,
como se obser.a en la !igura P.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura P. Secci/n %ontrol.
"l reset de este microcontrolador siempre debe estar en >&? ni.el alto.
*os pines GBA*& + GBA*8 se pueden apro.ec1ar para ser usados en el microcontrolador a
grabar +a (ue el oscilador debe ser el mismo para (ue eista sincron,a.
Mediante so!t=are se realizan las rutinas necesarias para realizar la grabaci/n, .eri!icaci/n +
borrado de los >!uses? en la 5las1 o en la ""0R@M seg6n sea necesario.
*os arreglos en la memoria de datos o de programa son programados usando el bus serial
S0I, mientras el R"S"B este en ni.el bajo. "sta inter!ase serial consta de los pines &P, &# +
&TF S%Y 3reloj serial4 para sincron,a, MIS@ 3salida de datos serial a memoria4 + M@SI
3entrada de datos serial a memoria4, respecti.amente. "ntonces despu-s de poner el R"S"B
en bajo se pueden 1abilitar las instrucciones necesarias para borrar o programar el
microcontrolador.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
*a !igura &$ muestra el es(uem)tico de las coneiones necesarias para el modo de
programaci/n + .eri!icaci/n serial.
5igura &$. "s(uem)tico del modo de programaci/n A .eri!icaci/n serial.
0ara la ""0R@M, eiste un ciclo de auto-borrado (ue se proporciona dentro de los tiempos
cronometrados para escribir la instrucci/n, por lo (ue no es necesario ejecutar primero la
instrucci/n >c1ip erase?. Al usar dic1a instrucci/n pone todos los arreglos de memoria con
series de 557s.
"l reloj eterno proporciona la sincron,a para el S%Y 3serial clocH4, de la siguiente manera2
'ajo2 Z 8 GBA*& ciclo de reloj
Alto2 Z 8 GBA*& ciclos de reloj
4.3.1 l alBoritmo de proBramacin serial ser.a el siBuienteC
%uando se escriben los datos seriales en el microcontrolador, estos se sincronizan con el
!lanco de subida del reloj serial S%Y.
%uando se leen datos seriales del microcontrolador, estos se sincronizan con el !lanco de
bajada del reloj serial S%Y.
Ver !igura && + tabla # para m)s detalle.
5igura &&. Diagrama de tiempos de la programaci/n serial.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Babla #. %aracter,sticas de la programaci/n serial, Bp [ -E$\% a #O\% Vcc [ 8.T a J.$V
0ara programar + .eri!icar la secuencia recomendada es2
Ver Babla P.
E> A4,)&+" +,)(%*'+&)0* +, ()&"#&#*'"#,+-#" V&& 4)* 2, GND 4)* EA ()%*'"+3 %, RESET
$ SCJ %3';* %* KL.
2> E34%"+" +, (%*#3 2(3 4+"+ 4%"()')" %, %*</# -% ,+ )*3'"2&&)0* -% :+5),)'+&)0* -%,
(#-# -% 4"#."+(+&)0* 3%")+, +, 4)* EM NMOSIO 12% &#*3'+ -% H5$'%3.
D> C2+*-# %* ,+ 3)*&"#*)9+&)0* ,,%.2% %, 3%.2*-# 5$'% ?3'% :+"; 2* %&# NPGDO -% "%'#"*#
12% -+"; ,+ 4+2'+ 4+"+ 12% %, '%"&%" 5$'% 3% &#()%*&% + %*<)+" $ +3/ 32&%3)<+(%*'%
:+3'+ %, &2+"'# 5$'%A 3) %, %&# %3 &#""%&'# # *# ,#3 &2+'"# 5$'%3 -% ,+ )*3'"2&&)0* -%
:+5),)'+&)0* -%, (#-# 3%")+, -%5%* '"+*3()')"3%. NE3 -% *#'+" 12% 3) ,+3 )*3'"2&&)#*%3
-% :+5),)'+&)0* %3';* 62%"+ -% 3)*&"#*)9+&)0*, %3';3 *# '"+5+7+";*O.
H> S) ,#3 5$'%3 *# :)&)%"#* %&# %*'#*&%3 ,% -+* 2* 42,3# 4#3)')<# + SCJ $ 3% "%)*)&)+ %,
%*</# 4+"+ 2*+ *2%<+ 3%8+, -% :+5),)'+&)0*. S) ,#3 %&#3 3% "%4)'%* %* D2 #&+3)#*%3
%*'#*&%3 3% -%3&+"'+ $ 3% %*</+ (%*3+7% -% 12% *# :+$ *)*.Q* -)34#3)')<# 62*&)#*+,
&#*%&'+-#.
G> S) 3% %*</+ 2*+ 3%8+, -% 5#""+-# K&:)4 %"+3%L N,# 12% -%5% :+&%"3% 4+"+ 5#""+" ,+
FLASHO %34%"+" %, 'RDSERASE -%342?3 -% ,+ )*3'"2&&)0* -% 5#""+-#, ()%*'"+3 3% ,%
-+ +, RESET 2* 42,3# 4#3)')<# $ 3% <2,<+ +, 4+3# *2(%"# 2. V%" ,+ '+5,+ E 4+"+ ,#3
<+,#"%3 -% 'RDSERASE.
!> L#3 +""%.,#3 -% ,+ FLASH # ,+ EEPROM 3#* 4"#."+(+-#3 5$'% 4#" 5$'% ()%*'"+3 3%
4"#4#"&)#*+ ,+ -)"%&&)0* $ ,#3 -+'#3 72*'# &#* ,+ )*3'"2&&)0* -% %3&")'2"+ RRITE.
C#(# $+ 3% :+5/+ (%*&)#*+-# &#* +*'%")#")-+- ,+3 ,#&+,)-+-%3 -% (%(#")+ -% ,+
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
EEPROM 3% 5#""+* +2'#(;')&+(%*'% +*'%3 -% %3&")5)" *2%<#3 -+'#3 %* %,,+3.
N#"(+,(%*'% 3% 23+ ,+ -%'%&&)0* -%, *2%<# 5$'% -% -+'#3 4#" &)&,# # 4#,,)*.. S) %,
4#,,)*. *# %3 23+-# 3% '%*-"; 12% %34%"+" %, 'RDSPROG +*'%3 -% %*<)+" *2%<#3
-+'#3. V%" '+5,+ EE.
M> C2+,12)%" ,#&+,)-+- -% (%(#")+ 42%-% 3%" ,%/-+ 23+*-# ,+ )*3'"2&&)0* -% ,%&'2"+
READ, 12% "%."%3+ %, &#*'%*)-# -% ,+ -)"%&&)0* ,%/-+ +, 4)* EF NMISOO.
F> A, 6)*+,)9+" ,+ 3%3)0* -% 4"#."+(+&)0* %, RESET -%5% 4#*%"3% %* +,'# 4+"+ )*)&)+" &#*
%, 62*&)#*+()%*'# *#"(+,.
C> S%&2%*&)+ -% +4+.+-# N#4&)#*+,OB RESET + KEL $ -%3&#*%=)0* -% V&&.
Babla P. %aracter,sticas de programaci/n + .eri!icaci/n.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
4.3.2 Caracter.sticas de la proBramacin serial
*a !igura &8 muestra el diagrama de tiempos de la programaci/n serial.
5igura &8. Diagrama de tiempos de la programaci/n serial.
Se obser.a claramente en el !lanco de subida de S%Y el en.i/ + recepci/n de b+tes M@SI +
MIS@ simult)neamente 35U** DU0*"G4.
4.4 Seccin Seleccin de microcontrolador A 5 B
Ra con!ormada esta secci/n + controlada adecuadamente por so!t=are, se procedi/ a
disear la etapa de selecci/n de microcontroladores (ue para ma+or detalle se muestra en
las !iguras &; + &E.
*os modelos soportados + las seales de 1abilitaci/n correspondientes se muestran en la
tabla &8. "n donde se obser.a (ue cuando el SD8 se encuentra con el led D; encendido
obtenemos la seal de 1abilitaci/n '& para los bu!!ers encapsulados en el %I DMTE*S8EE
3UE4, pines 8, E, J + #. con lo (ue tenemos la seal de R"S"B& para los micros mostrados
en la tabla &8, mientras (ue la seal '8 se encuentra en alto con lo (ue el resto de bu!!ers
est)n des1abilitados, es decir en tercer estado. %on esta seal R"S"B& + la a+uda de otro %I
DMTE*S8EE podemos grabar los modelos para '& mostrados en la tabla &8.
Seal de 1abilitaci/n '& 3lo=4 '8 3lo=4
Modelos soportados
ABP$S&8$$
ABP$S8;&;
ABtin+8;&;
ABM"CA&J
ABM"CA;8
ABM"CA#O;O
ABP$S#O;O
SD8 pines & + ; pines E + J
*"D D; & $
*"D DE $ &
Babla &8. Secci/n selecci/n de microcontrolador &.
& [ A%BIV@
$ [ I9A%BIV@
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
:A'I*IBA%I]9
UE
SA*IDAS
UE
'& '8 R"S"B& R"S"B8
& $ " ;er "D@
$ & ;er "D@ "
Babla &;. Secci/n selecci/n de microcontrolador &.
" [ "9A'*" 3S"^A* :A'I*IBADA4
:A'I*IBA%I]9
UO
"9BRADAS
SA*IDA
%BR*
SA*IDAS D" S"*"%%I@9
R"S"B& '8 R"S"B8 '& S%Y M@SI MIS@ &MIS@ 8MIS@ &M@SI 8M@SI &S%Y 8S%Y
" $
;er
"D@
& " " " " " "
;er
"D@
;er
"D@
;er
"D@
;er
"D@
& " $ " " "
;er
"D@
;er
"D@
;er
"D@
" " "
Babla &E. Secci/n selecci/n de microcontrolador 8.
"n el otro caso sucede a la in.ersa como se puede obser.ar claramente en la tabla &E,
cuando R"S"B& se .a al ;er "D@ R"S"B8 se 1abilita junto con las seales necesarias para
poder programar o borrar seg6n sea el caso el otro conjunto de microcontroladores.
0or ultimo se opto por colocar dos bases para los microcontroladores soportados UJ de 8$
pines + UT de E$ pines, ambas de punto torneado.
Se decidi/ dejar dispuestas todas las terminales en 1eaders de 88$ para ambos tipos de
microcontroladores, .er tabla &O, con esto despu-s de 1aber programado cual(uiera de los
modelos soportados no ser) necesario etraer el microcontrolador, (ue podr) ser usado
conectando un cable plano de 8$ terminales para !acilitar el manejo de los pines de ambos
grupos + poder realizar la circuiter,a eterna en un protoboard. 5igura &O.
0ines
ABM"CA&J
ABM"CA;8
ABM"CA#O;O
ABP$S#O;O
1 3 5 # 3 11 13 15 1# 13 21 23 25 2# 23 31 33 35 3# 33
0ines
ABP$S8;&;
ABP$S&8$$
ABtin+8;&;
1 3 5 # 3 11 13 15 1# 13
0ines del
cable plano
1 3 5 # 3 11 13 15 1# 13 21 23 25 2# 23 31 33 35 3# 33
2 4 ! 7 14 12 14 1! 17 24 22 24 2! 27 34 32 34 3! 37 44
0ines
ABP$S8;&;
ABP$S&8$$
ABtin+8;&;
2 4 ! 7 14 12 14 1! 17 24
0ines
ABM"CA&J
ABM"CA;8
ABM"CA#O;O
ABP$S#O;O
2 4 ! 7 14 12 14 1! 17 24 22 24 2! 27 34 32 34 3! 37 44
Babla &O. Distribuci/n selecci/n microcontrolador &.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
%omo lo podemos obser.ar en los diagramas correspondientes se necesita usar el mismo
cristal para poder sincronizar adecuadamente las seales (ue acceden a memoria, pero +a
(ue 1a sido grabado el microcontrolador las aplicaciones podr,an necesitar de un cristal de
distinta !recuencia por lo (ue se usaron dos 1eaders de 8; para poder as, 3solo despu-s de
1aber programado el microcontrolador4 1acer uso de un cristal eterno de otro .alor. Ver
tabla &J. Mientras los jumpers se encuentren en las posiciones & + 8 se usar) el cristal de E
u # M:z 3programar4, si se re(uiere usar otro cristal se deber)n colocar los jumpers en las
posiciones 8 + ; + acceder a las terminales GBA*& + GBA*8 en los 1eaders correspondientes
seg6n el microcontrolador a emplear.
5igura &;. Selecci/n de microcontrolador A.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura &E. Selecci/n de microcontrolador '.
<J
GBA*8 GBA*&
<T
GBA*8 GBA*&
%RISBA*
"GB"R9@
0R@CRAMAR
& &
8 8
%RISBA*
"GB"R9@
0R@CRAMAR
& &
8 8
; ; ; ;
MI%R@S & MI%R@S 8
Babla &J. %ristal eterno.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura &O. Secci/n 0rogramador.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
4.5 Seccin 'roBramador
"n esta secci/n de la tarjeta solo se montaron las dos bases (ue soportar)n a los cinco
microcontroladores en este diseo, !igura &O. "n la base de 8$ pines se podr)n programar
los modelos ABP$S&8$$, ABP$S8;&; + ABtin+8;&;, mientras (ue en el socHet de E$ pines
podremos programar los modelos ABM"CA&J, ABM"CA;8, ABM"CA#O;O + ABP$S#O;O.
Ambas bases tendr)n la ma+or parte de sus pines accesibles desde una tira 1eader con lo
(ue se !acilitar) la programaci/n + el posterior uso sin la necesidad de desmontar el
microcontrolador cada .ez (ue se re(uiera realizar cambios. Adicionalmente se coloco un
puerto D'P para 1acer uso de el mediante un 1eader de 8 terminales 3R + B4, con el uso
de jumpers (ue realicen la conei/n entre este 1eader a las correspondientes terminales de
R + B en los 1eaders de 88$ seg6n se uso uno u otro microcontrolador.
4.! Seccin Banco de leds
Adicionalmente se implement/ un banco de leds de # bits para uso general, (ue consiste en
# indicadores leds de salida + # pus1 button para pulsos de 1abilitaci/n >$? a >&?. "s
importante recordar (ue aun(ue estos pulsos de entrada contengan en su diseo
resistencias pull-up eternas es necesario 1abilitar por so!t=are las resistencias pull-up
internas del microcontrolador si los puertos son usados como entradas. 5igura &Ja.
5igura &Ja. Secci/n banco de leds 3entrada4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
"l diseo en los indicadores de salida se dicta por las siguientes ecuaciones2
0ara encontrar el .alor de la resistencia de base se realiz/ con la malla (ue inicia en
el puerto del >micro?, R', .oltaje base-emisor 1asta tierra2
0 5 . 3 = + +
BE B Bsat
V R I V
Sabemos (ue
mn
Bsat
Bsat Csat mn Bsat
I
I I I

= =
R (ue la
LED Csat
I I , + una beta m,nima t,pica es2 40
mn

Adem)s mA I
LED
30 3
Realizando el c)lculo num-rico obtenemos el .alor re(uerido para la
resistencia de base2
= =

= = = 7467
375 . 0
8 . 2
375 . 0
7 . 0 5 . 3
375 . 0
40
15

mA
V
mA
V V
R mA
mA
I
B Bsat
"l .alor comercial m)s cercano es de #Y8_ (ue nos arroja una corriente de base en
saturaci/n dentro del rango, por lo (ue el .alor elegido es2
= 2 8K R
B
A1ora es necesario encontrar el .alor de la resistencia de *"D, para esto trazamos la
malla desde V%%, R*"D, V*"D 1asta tierra2
0 5 = + +
LED LED Csat
V R I V
"ntonces el c)lculo num-rico nos arroja el siguiente resultado2
= =

= 220
15
3 . 3
15
7 . 1 5
mA
V
mA
V V
R
LED
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Apro.ec1ando el bajo consumo de esta etapa + el 1ec1o de (ue est)n todas las resistencias
a un punto com6n, i.e., a V%%, se elige una red resisti.a.
"l .alor comercial m)s cercano es de ;;$_ lo cual nos deja dentro del rango aceptable para
(ue el *"D encienda adecuadamente, entonces el .alor es2
= 330
LED
Rred
@bser.ar la !igura &Jb.
5igura &Jb. Secci/n banco de leds 3salida4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
O
ENTORNO DE PROERA(ACI'N
5.1 DCmo proBramarE
Una .ez puesta en !uncionamiento la tarjeta UAMI-AVR, + 1abiendo seleccionado alguno de
los microcontroladores, 3recomendamos usar el ABM"CA&J o el ABP$S8;&;4F nuestros pasos
para comenzar a programar el microcontrolador ser)n los siguientes2
5.1.1 "AR$FAR
&- %onectar el cable serial a la 0% + a la tarjeta.
8- "ncender la 0% 3teniendo en cuenta (ue +a est) instalado el so!t=are AVR StudioEQ4
de lo contrario instalarlo antes. Debemos tomar en cuenta (ue este so!t=are solo es
soportado bajo MS Dindo=sL.
;- %olocar en la base correspondiente el microcontrolador seleccionado.
E- "ncender la tarjeta UAMI-AVR .&.$, pre.iamente consulte el manual t-cnico de la
tarjeta UAMI-AVR .&.$.
5.1.2 S892FAR
&- Abrir el so!t=are AVR studioEQ. 5igura &T.
5igura &T.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
*a .entana inicial del ID" AVR StudioE Q se abrir), !igura &#.
5igura &#. ID" AVR StudioE Q.
2! Dar clic en Create :e& 'ro;ect. 5igura &#.
3! "n la siguiente .entana, !igura &P, es recomendable crear primero un !/lder de
trabajo, para esto accedemos al subdirectorio con el bot/n marcado con & en la
!igura &P, en la !igura +a 1emos creado el !/lder + lo llamamos D@RYS. 0or de!ault
se crea un !/lder + un arc1i.o inicial con el nombre (ue le .a+amos a dar a nuestro
primer programa, .er punto 8 en la !igura &P, en el punto ; encerrado en azul
nombramos el nue.o pro+ecto, por de!ault se asigna el mismo nombre al arc1i.o
.asm, presionamos :eAt GG para dirigirnos a la pr/ima pantalla.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura &P. %rear nue.o pro+ecto.
E- "n la siguiente .entana, !igura 8$, debemos seleccionar el depurador a emplear + el
microcontrolador a programar, .er !igura 8$ c,rculos rojos &F por 6ltimo dar clic en
!inalizar punto 8.
O- A1ora la nue.a .entana nos mostrar) el editor del AVR StudioE Q, donde
comenzaremos a escribir nuestro programa, !igura 8&. "l editor permite pegar desde
un arc1i.o de teto copiado pre.iamente. "l programa a editar est) escrito en el
siguiente punto. *os comentarios se ponen despu-s del punto + coma como en el
MASM.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura 8$. Selecci/n de depurador + microcontrolador.
J- "l demo a editar es para el microcontrolador ABM"CA&J, consiste en realizar algunas
operaciones con bits, + 1acer uso de los puertos de entrada salida, la asignaci/n es
puertos 0'$-0'T de salida + puertos 0D$-0DT de entrada.
E, &0-).# + %-)'+" %3 %, 3).2)%*'% N&#-% DE.ASMOB
ATTTTTTTTTTTT C#-% DE.ASM TTTTTTTTTTTTT
A>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
A UNIVERSIDAD AUTNOMA METROPOLITANA
A>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
A TTTT PROYECTO TERMINAL DE INGENIERIA ELECTRNICA TTTT
A TTTT CHVEZ CALDERN ARMANDO TTTT
A TTTT PAREDES GARCA HORACIO TTTT
ATTTTTT EJEMPLO DE APLICACIN ATMEL AVR I TTTTTT
A TT S% -%5% &#*%&'+" %, PORTB + LEDS $ %, PORTD + SRITCH TT
A TT S) 3% 4"%3)#*+ %, SRG 3% +&')<+ 2* &#*'+-#" -%3&%*-%*'% -% F 5)'3 TT
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
A TT S) 3% 4"%3)#*+ %, SR! 3% +&')<+ 2* &#*'+-#" +3&%*-%*'% -% F 5)'3 TT
A TT S) 3% 4"%3)#*+ %, SRM 3% +&')<+ 2* -%34,+9+()%*'# -%3&%*-%*'% -% F 5)'3 TT
A TT S) 3% 4"%3)#*+ %, SRF 3% +&')<+ 2* -%34,+9+()%*'# +3&%*-%*'% -% F 5)'3 TT
A TT S) 3% 4"%3)#*+ %, SRC '#-#3 ,#3 ,%-3 4+"4+-%+*'%3 NF 5)'3O TT
A TT S) 3% 4"%3)#*+ %, SRE '#-#3 ,#3 5)'3 %* +,'# %=&%4'# %, (%*#3 3).*)6)&+')<# TT
A TT S) 3% 4"%3)#*+ %, SREE '#-#3 ,#3 5)'3 %* +,'# %=&%4'# %, (%*#3 3).*)6)&+')<# TT
A TT S) 3% 4"%3)#*+ %, SRE2 '#-#3 ,#3 5)'3 %* +,'# %=&%4'# %, (%*#3 3).*)6)&+')<# TT
.INCLUDE UME!DEF.INCU A4+"+ 12% "%&#*#9&+ &#*72*'# -% )*3'"2&&)#*%3 -%, ATMEGAE!
.DEF TEMP V RE! A"%.)3'"# '%(4#"+,
.DEF DELAY V REM A-%,+$ <+")+5,% E
.DEF DELAY2 V REF A-%,+$ <+")+5,% 2
A TTT INICIALIZACIN TTT
REINICIOB
SER TEMP A4#*% "%.)3'"#3 + FF
OUT DDRB,TEMP A3%,%&&)0* -% 42%"'# B 4+"+ 3+,)-+
A TTT PRUEBA ENTRADA W SALIDA TTT
LOOPB
OUT PORTB,TEMP A3+,)-+ + LEDS 4#" %, 42%"'# C
SBIS PIND,= A3) 3% 4"%3)#*+ %, SRG 3% )*&"%(%*'+ RE + FF
A5")*&+ 3) %, 5)' -%, "%.)3'"# )W# %3'+ %* E
INC TEMP A%*'#*&%3 %, &#*'+-#" -)3()*2$% %* E
SBIS PIND,=E A3) 3% 4"%3)#*+ %, SR! 3% -%&"%(%*'+ RE + E
DEC TEMP A%*'#*&%3 %, &#*'+-#" &"%&% %* E
SBIS PIND,=2 A3) 3% 4"%3)#*+ %, SRM 3% "#'+ RE + ,+ -%"%&:+
ROR TEMP A%*'#*&%3 ,#3 ,%-3 (2%3'"+* E5)' &#* -%34,+9+()%*'# + ,+ DERECHA
SBIS PIND,=D A3) 3% 4"%3)#*+ %, SRF 3% "#'+ RE + ,+ )912)%"-+
ROL TEMP A%*'#*&%3 ,#3 ,%-3 (2%3'"+* E5)' &#* -%34,+9+()%*'# + ,+
IZXUIERDA
SBIS PIND,=H A3) 3% 4"%3)#*+ %, SRC 3% :+&% 2* NOT + RE
COM TEMP A%*'#*&%3 '#-#3 ,#3 ,%-3 3% (2%3'"+* )*<%"')-#3
SBIS PIND,=G A3) 3% 4"%3)#*+ %, SRE 3% :+&% 2* NOT + RE $ 3% 32(+ E %* LSB
NEG TEMP A%*'#*&%3 ,#3 ,%-3 3% )*<)%"'%* $ 3% 32(+ E + LSB
SBIS PIND,=! A3) 3% 4"%3)#*+ %, SREE 3% :+&% 2* 3Y++4 -% *)55,%3 %* RE
SRAP TEMP A%*'#*&%3 ,#3 ,%-3 3% +,'%"*+* %* *)5,%3
RETRASOB
DEC DELAY A"%'"+3#E
BRNE RETRASO A5)62"&+ 3) REM *# %3 &%"#
DEC DELAY2 A"%'"+3#2
BRNE RETRASO A5)62"&+&)0*
RJMP LOOP A3)%(4"% "%4)'% LOOP
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura 8&. "ditor de arc1i.o .asm.
7! Ra editado el arc1i.o, a1ora procedemos a construir los arc1i.os .1e, .obj, .aps +
.tt entonces usamos la tecla 5T o el icono en la barra de 1erramientas mostrado en
la !igura 88 encerrado en el circulo rojo o en la barra de men6s 'ro;ect + despu-s
Build. @bser.amos en la .entana de salida en la parte in!erior los mensajes despu-s
de compilar el arc1i.o .asm. Si no eisten errores entonces el arc1i.o .1e esta listo
para ser cargado en la memoria 5*AS: o ""0R@M del microcontrolador. Al no 1aber
errores aparecer) un mensaje mu+ similar a este, resaltamos el resultado !inal de la
compilaci/n en azul2
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
B2),-)*. 4"#7%&'...
AVRASMB AVR (+&"# +33%(5,%" <%"3)#* E.M!.H NA2. ! 2H MB2BEDO
C#4$").:' NCO ECCG>2H ATMEL C#"4#"+')#*
C"%+')*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[-E.%%4Z
C"%+')*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[-E.:%=Z
C"%+')*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[-E.#57Z
C"%+')*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[-E.(+4Z
A33%(5,)*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[DE.+3(Z
I*&,2-)*. Z%B[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[A<"A33%(5,%"[A44*#'%3[ME!DEF.INCZ
P"#."+( (%(#"$ 23+.%B
C#-% B 2H Y#"-3
C#*3'+*'3 N-YW-5OB Y#"-3
U*23%- B Y#"-3
T#'+, B 2H Y#"-3
Asse#+l' co#plete 3it4 no errors-
D%,%')*. ZEB[A"&:)<#3 -% 4"#."+(+[A'(%,[AVR T##,3[RORJS[DE[-E.%%4Z
5igura 88. %ompilando el arc1i.o .asm.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
8! Si por alguna raz/n el c/digo presenta errores o despu-s de cargarlo no 1ace lo (ue
necesitamos entonces podemos depurarlo. 0ara ello tenemos a la mano m6ltiples
1erramientas (ue nos o!rece el AVR StudioE Q, (ue mostraremos a continuaci/n. Ver
!igura 8;. %omo primer paso necesitamos tener a la .ista el espacio de trabajo para
esto seleccionamos de la barra de men6s -ie& + damos clic a ForHspace. Al 1acer
esto se abre una nue.a .entana ForHspace (ue nos muestra las pestaas de
opciones (ue tenemos para depurar nuestra aplicaci/n, la primera es por c/digo en la
carpeta Assembler (ue se re!iere a la .ista (ue +a tenemos en el editor del arc1i.o
.asm, o en la carpeta 8utput (ue nos muestra el mapa 3arc1i.o.map4 con todos los
nm/nicos usados, .er !igura 8E.

5igura 8;. Seleccionando el espacio de trabajo.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura 8E. "spacio de trabajo del depurador.
9! *a siguiente pestaa del ForHspace, II8, nos permite simular todo el espacio de
entrada salida e inclusi.e todos los peri!-ricos integrados. 0odemos .isualizar al
ejecutar el programa paso por paso todos los .alores en 1eadecimal (ue contienen
los registros de prop/sito general, as, como tambi-n los registros del procesador,
!igura 8O + 8J.
5igura 8O. "spacio de trabajo del depurador IA@.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura 8J. "spacio de trabajo del depurador IA@.
10! 0ara iniciar el depurador podemos ir a la barra de men6s en el men6 $ebuB +
seleccionar Start $ebuBBinB o 1acer clic en el icono encerrado en el circulo rojo,
!igura 8J.
11! 0ara iniciar el depurador podemos ir a la barra de men6s en $ebuB + seleccionar
Start $ebuBBinB o 1acer clic en el icono encerrado en el c,rculo rojo en la !igura 8T.
5igura 8T. Iniciar el depurador.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
12! A1ora solo basta con correr paso por paso el programa 3911 paso por paso, A+2J95
automticoK o el resto de las opciones disponibles en el men6 $ebuB4 e ir mirando
en el espacio de trabajo alg6n peri!-rico o los puertos IA@ 3.er !igura ;$4 o seg6n se
trate de la aplicaci/n en espec,!ico, 1asta conseguir lo deseado, no sin antes conocer el
conjunto de instrucciones del propio microcontrolador + adem)s el lenguaje
ensamblador para estos microcontroladores, podemos 1acerlo en la pagina del
!abricante ===.atmel.com donde adicionalmente encontraremos las 1ojas de
especi!icaciones de los dispositi.os (ue necesitemos + notas de aplicaci/n. "s
importante mencionar (ue podemos cambiar el contenido de cual(uiera de los
registros en el momento (ue lo deseemos.
5igura 8#. 0uertos IA@, bit por bit.
13! Una .ez teniendo el c/digo depurado + obteniendo los resultados (ue deseamos
procedemos a grabar nuestro microcontrolador. 9uestra tarjeta solo soporta la
1erramienta A-R 'roB, as, entonces es con.eniente colocar un bot/n en la barra de
1erramientas para posteriores usos, para esto nos dirigimos al men6 -ie&K 2oolbars
+ CustomiLe, !igura 8P, una .ez en la .entana CustomiLe en la pestaa Commands
seleccionamos en %ategories 2ools + en la .entana contigua A-R 'roBM dejamos
presionado el bot/n del rat/n + arrastramos 1asta la ubicaci/n (ue deseemos en la
barra de 1erramientas, !igura ;$.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura 8P. AVR 0rog Q.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura ;$. AVR0rog Q en la barra de 1erramientas.
14! :acemos clic en el bot/n A-R 'roBM e inicializamos la .ista para el grabador, !igura
;&. 3Si la tarjeta no est) encendida la .entana del programador no se abrir) + lanzar)
un mensaje de Barjeta no soportada, !igura ;&4. "n este caso solo basta con cerrar la
.entana, poner en encendido la tarjeta + .ol.er a llamar al A-R 'roBM , en cuanto
esto se 1aga aparecer) la .entana mostrada en la !igura ;8.
5igura ;&. AVR0rog Q mensaje de error.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
&O-"n la !igura ;8 se muestra la .entana del programador, en donde a1ora
seleccionaremos nuestro microcontrolador + procederemos a grabarlo. "l arc1i.o para
grabar +a sea en la 5*AS: o en la ""0R@M debe ser el arc1i.o .1e generado
anteriormente.
5igura ;8. Ventana del programador AVR0rog Q + selecci/n del dispositi.o.
16! A1ora solo nos resta presionar el bot/n 'roBram + listo` Benemos nuestro
microcontrolador programado + preparado para ser usado en la aplicaci/n destinada,
!igura ;;. "n nuestro caso se grab/ un demo (ue muestra algunas operaciones con
bits, para probarlo solo basta con conectar los puertos de salida 0'$-0'T a los leds
de salida + los puertos de entrada 0D$-0DT a los pus1 button en la secci/n 'anco de
leds, .er !igura &J.
:otaC :o es necesario usar un cristal eAterno para proBramar el A2(@A1! 5a que
este posee un relo; oscilador interno con el cual se sincroniLa la proBramacin. Si
deseas usar reloj etrerno o cristal ser) necesario (ue lo ajustes en las opciones del boton
Ad.anced...
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
5igura ;;. Despu-s de 1aber programado el microcontrolador.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ApNndice A
2ARO2A <A(I=A-R ,1.4 'ARA (ICR8C8:2R8+A$8RS A2(+ A-R 6
"s una tarjeta de desarrollo para los microcontroladores de # bits de la !amilia AVR de
ABM"*Q, de ar(uitectura RIS% + memoria 5*AS: reprogramable el-ctricamente 3In S+stem
Reprogrammable Do=nloadable 5las14. "l entorno so!t=are 3AVR Studio Q4 permite editar,
ensamblar + simular el c/digo !uente + el AVR0rog Q permite trans!erirlo a la memoria
5*AS: o ""0R@M del microcontrolador. *a tarjeta de programaci/n 3UAMI-AVR4 permite
programar por puerto serie algunos AVR Q. "l AVR StudioE L puede bajarse libremente de
la p)gina del !abricante ===.atmel.com.
(ICR8C8:2R8+A$8RS S8'8R2A$8S
A234S1244K A234S2313K A234S7535K A2meBa1!K AtmeBa32K AtmeBa7535 5
A2tin52313.
*o (ue di!erencia estos elementos es el *Q(%"# -% )*3'"2&&)#*%3 %* %*3+(5,+-#"
-)34#*)5,%3, ,+ &+*')-+- -% (%(#")+ -% 4"#."+(+, ,+ &+*')-+- -% (%(#")+ SRAM 4"%3%*'% $
%, *Q(%"# -% ,/*%+3 IWO # %, *Q(%"# -% 4%")6?")&#3 &#*%&'+5,%3, como UART,
'%(4#")9+-#"%3, &#*<%"')-#"%3 AWD, %'&.
0ero lo (ue caracteriza la !amilia completa es la ar(uitectura aplicada en su diseo, el
conjunto de instrucciones base + di.ersos m-todos de direccionamiento de la memoria + los
registros. L+ +"12)'%&'2"+ 3% 5+3+ %* %, &#*&%4'# -% +&&%3# ";4)-# + ,#3 "%.)3'"#32 ?3'+3 3#*
,+3 ;"%+3 -% ,+ (%(#")+ 2'),)9+-+3 4+"+ &#(2*)&+" &#* ,#3 4%")6?")&#3 )*'%."+-#3 %* %, 4"#4)#
()&"#&#*'"#,+-#", &#(# &#*'+-#"%3, '%(4#")9+-#", &#*<%"')-#"%3 AWD $ 42%"'#3 -% IWO.
A,.2*#3 "%.)3'"#3 42%-%* 2'),)9+"3% &#(# )*-)&+-#"%3 -% -)"%&&)#*+()%*'# )*-)"%&'# -% E!
5)'3 4+"+ &#(2*)&+" &#* ,+ (%(#")+B 32%,%* ,,+(+"3% "%.)3'"#3 X, Y, Z. @tra caracter,stica
com6n es ,+ 6#"(+ %* 12% %, ()&"# 4"#&%3+ ,+ )*6#"(+&)0*, (ue se denomina I*3'"2&')#*
P)4%,)*% N&+-%*+ -% (#*'+7%O.
CARAC2RPS2ICASC
%ompatible con AVR StudioE L.
Inter!ace RS8;8 para 0% + tarjeta UAMI-AVR.
Regulador de 0oder de &$-&OV D%.
SocHets de 8$-pin + E$-pin para los dispositi.os AVRL soportados.
0rogramaci/n S0I por 0uerto serial.
'anco de leds de # bits + # 0us1-buttons de uso general.
Bodos los puertos IA@ + peri!-ricos integrados accesibles en conectores :eader.
Un 0uerto RS8;8 adicional para uso general.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ApNndice B
@u.a rpida del nsamblador A-R/
Registros
*os registros son posiciones especiales de almacenamiento, con # bits de capacidad. Un
registro tiene la siguiente apariencia2
Un registro puede almacenar .alores num-ricos de $ a 8OO 3positi.os sin signo4 o entre -&8#
a &8T 3con bit de signo en el bit T4, caracteres AS%II o simples conjuntos de bits sin
relaciones entre ellos.
"isten ;8 registros en los microcontroladores AVRL, eti(uetados originalmente como R$,
R&,..., R;&, pero (ue pueden ser renombrados usando la directi.a .de!
.-%6 "%.)3'"#T%(4#"+,V"E!
*as directi.as son 6tiles para el ensamblador pero en realidad no generan instrucciones
ejecutables. "n .ez de emplear el nombre r&J se puede acceder con el nombre de!inido en
la directi.a. As, la instrucci/n
,-) "%.)3'"#T%(4#"+,, EG
carga en el r&J de manera inmediata el n6mero &O$.
@tra instrucci/n interesante es el de copiar datos desde un registro a otro con la instrucci/n
mo.. "l siguiente c/digo copia el contenido del r&J al registro r8$.
(#< "2,"E!
@bs-r.ese (ue el primer registro es siempre el registro destino de la operaci/n.
"isten di!erentes tipos de registros.
As, una instrucci/n del tipo
,-) "EG, EG
no ser,a .)lida, +a (ue los 6nicos registros (ue permiten cargar un .alor de !orma inmediata
son los registros del r&J al r;&. "s decir, no se puede realizar este tipo de operaci/n con los
registros del r$ al r&O. "iste una ecepci/n a esta regla, el comando re!erido a limpiar los
bits 3poner todos los bits a $4
&," "EG
es .)lido para todos los registros.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Aparte del comando ldi, las siguientes instrucciones no pueden emplearse con los registros
r$ a r&O2
+*-) "EG,H AR%+,)9+ %, $ ,0.)&# %*'"% %, "%.)3'"# $ 2* *Q(%"#
&5" "EH,HG AL)(4)+ ,#3 5)'3 %* %, "%.)3'"# -%'%"()*+-#3 4#" 2*+ (;3&+"+ -% 5)'3
&4) "ED,! AC#(4+"+ %, &#*'%*)-# -%, "%.)3'"# &#* 2*+ &#*3'+*'%
35&) "C,M AR%3'+ +, "%.)3'"# %, <+,#" -%, &#*'%*)-# -% ,+ &#*3'+*'% $ -%, "%32,'+-#
A+&'2+, -%, 5)' -% &+""$
35" "E2,FC AC#,#&+ + ZEZ ,#3 5)'3 %* %, "%.)3'"# -%'%"()*+-#3 4#" 2*+ (;3&+"+ -%
A5)'3
3%" "D AC#,#&+ '#-#3 ,#3 5)'3 -%, "%.)3'"# + E
325) "EG,C AR%3'+ +, "%.)3'"# %, <+,#" -%, &#*'%*)-# -% ,+ &#*3'+*'%.
Registros punteros
Un papel especial es desempeado por las parejas de registros r&J2r8T, r8#2r8P + r;$2r;&.
"stas parejas de registros de &J bits son nombrados de una !orma especial, G, R + S.
0ueden acceder a direcciones de &J bits en la SRAM 3G, R, S4 o dentro de la memoria del
programa 3S4.
*a parte alta de la direcci/n se coloca en el registro de ,ndice m)s alto, mientras (ue la
parte baja de la direcci/n se almacena en el registro de ,ndice m)s bajo. "stas partes alta +
baja tienen sus propios nombres. As, la parte alta del registro S 3r;&4 se puede acceder
como S: mientras (ue la baja 3r;$4 se puede acceder como S*.
E7%(4,#B
.EXU -)"%&&)#* V RAMEND A%* %3'% &#(%*'+")# )*-)&+"%(#3 12% RAMEND %3
A,+ -)"%&&)0* (;3 +,'+ %* ,+ SRAM
,-) YH,:).:N-)"%&&)#*O A &+".+ ,+ 4+"'% +,'+ -% ,+ -)"%&&)0*
,-) YL,,#YN-)"%&&)#*O A &+".+ ,+ 4+"'% 5+7+ -% ,+ -)"%&&)0*
"l acceso a direcciones a tra.-s de estos registros punteros es mu+ sencillo. *os siguientes
ejemplos ilustran estos accesos de lectura 3ld4 + de escritura 3st4 con el puntero G
,- "E,X A L%% -% ,+ -)"%&&)0* X, 3)* &+(5)+" %, 6)&:%"#
3' X\,"E AE3&")5% %* ,+ -)"%&&)0* X, % )*&"%(%*'+ %, 42*'%"# + ,+ 3).2)%*'% -)"%&&)0*
,- "E,>X AD%&"%(%*'+ %, 42*'%"# + ,+ +*'%")#" -)"%&&)0* $ ,%% -% ,+ -)"%&&)0* X
0ara insertar los .alores en la memoria de programa se emplean las directi.as .D' + .DR
0or ejemplo2
.DB E2D,G!,DH,E A 2*+ ,)3'+ -% H 5$'%3
.DB KE3'# %3 2* '%='#L A 2*+ ,)3'+ -% 5$'%3, &+-%*+ -% &+"+&'%"%3.
.DR EDHGH A 2*+ 4+,+5"+
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
"n las de!iniciones es recomendable usar un n6mero par de b+tes +a (ue el ensamblador
aadir) un $ al !inal, lo cual puede no ser deseado.
"n .ez de constantes se pueden de!inir eti(uetas 3destino de saltos4 del siguiente modo,
siempre en la primera columna2
E')12%'+EB
A +12/ )"/+* 2*#3 &#(+*-#3
T+5,+B
.DR EDH,E2DE2
0uertos
*os puertos son puertas entre la unidad de procesamiento central 1asta 1ard=are o so!t=are
eterno. *a %0U se comunica con estos componentes, los lee +Ao los escribe.
*os puertos tienen direcciones !ijas, independientemente del microcontrolador AVRL.
As,, por ejemplo el puerto ' se encuentra siempre en la direcci/n $&# 3notaci/n
1eadecimal4. 0or supuesto el programador no tiene necesidad de recordar todas estas
direcciones. *os nombres .ienen de!inidos en un !ic1ero de encabezado para los di!erentes
tipos de microcontrolador + (ue son proporcionados por el !abricante. "stos !ic1eros ainclude7
tienen una l,nea para de!inir la direcci/n del puerto ' como sigue2
.EXU PORTB, =EF
por lo (ue solamente se debe recordar el nombre del puerto + no su direcci/n. "l arc1i.o
correspondiente se inclu+e mediante la siguiente directi.a2
.)*&,2-% KFGEG-%6.)*&L
*os puertos generalmente se organizan en conjunto de # bits relacionados entre s,, pero
pueden estar organizados en conjuntos sin relaci/n. "n este caso es 1abitual (ue cada uno
de los bits tenga su propio nombre + !unci/n determinados. %omo ejemplo, el registro
M%U%R consiste en un n6mero de bits de control del integrado, cada uno de ellos con sus
nombres 3por ejemplo IS%$$, IS%$&4. *a !orma de en.iar un .alor determinado a uno de
estos puertos es mediante la instrucci/n out + mediante el empleo de un registro
intermedio2
,-) "E!, 5E A %7%(4,# -% &#*6).2"+&)0* 5)*+")+
#2' MCUCR, "E!
"l caso contrario, el de lectura, se realiza mediante el comando in
)* "E!, MCUCR
"n este caso debemos aclarar (ue eisten algunos puertos (ue tienen bits (ue no son
usados o est)n reser.ados. "n este caso se de.uel.e un bit a $.
"s !recuente (ue se desee poner a $ / & 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 + reen.iar el b+te al puerto. Sin embargo, esto se puede lle.ar a cabo
mediante las instrucciones sbi 3poner el bit a &4 + cbi 3poner el bit a $4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
%omo ejemplos2
."IU bit%ambiado [ O
sbi 0ort', bit%ambiado
cbi 0ort', bit%ambiado
*as dos instrucciones tienen una limitaci/n, solamente a!ectan a puertos con una direcci/n
in!erior a $8$.
R@IS2R8S R+-A:2S $ +8S A-R
Componente :ombre del puerto ReBistroI'uerto
Acumulador SR"C Registro de estado
0ila S0*AS0: 0untero de pila
SRAM eterna,
interrupci/n eterna
M%U%R Registro de %ontrol Ceneral M%U
Interrupci/n eterna
CIMSY
CI5R
Registro de mascara de interrupci/n
Registro de banderas de interrupci/n
Interrupci/n del Bimer
BIMSY
BI5R
Registro de mascara de interrupci/n del timer
Registro de banderas de interrupci/n del timer
Bimer$
B%%R$
B%9B$
Registro de control
Registro de cuenta
Bimer&
B%%R&A
B%%R&'
B%9B&
@%R&A
@%R&'
I%R&*A:
Registro A de control
Registro ' de control
Registro de cuenta
Registro de comparaci/n A
Registro de comparaci/n '
Registro de captura de entrada
""0R@M
""AR
""DR
""%R
Registro de direcciones
Registro de datos
Registro de control
UARB
UDR
USR
U%R
U'RR
Registro de datos
Registro de estado
Registro de control
Registro de programaci/n de baudios
%omparador anal/gico A%SR Registro de control + estado
0uertos de IA@
0@RB
DDR
0I9
Registro de salida del puerto
Registro de direcci/n del puerto
Registro de entrada del puerto
RAM est)tica, SRAM
*a SRAM es una memoria (ue no es accesible directamente por la %0U 3A*U4 como es el
caso de los registros. 0ara acceder a esta parte de la memoria se deben emplear los
registros como paso intermedio. 0or lo tanto las operaciones (ue in.olucran a la SRAM son
m)s lentas (ue la de los registros. A partir del modelo ABP$S#O&O se permite conectar una
RAM eterna adicional.
Uno de los casos de empleo m)s importante de la SRAM es como pila.
"l acceso a la SRAM se lle.a a cabo mediante las instrucciones SBS + *DS.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
"jemplos2
STS =!, RE A %, &#*'%*)-# -%, "%.)3'"# RE 3% &#4)+ %* ,+ -)"%&&)0* =!
LDS RE, =! A %, &#*'%*)-# -% ,+ -)"%&&)0* =! 3% &#4)+ %* %, "%.)3'"# RE
S% 32%,%* %(4,%+" *#(5"%3 3)(50,)&#3 4+"+ %<)'+" %(4,%+" -)"%&&)#*%3 6)7+3.
.EXU -)"%&&)#*M%(#")+ V =!
STS -)"%&&)#*M%(#")+, RE
SRAM como pila
"l uso m)s com6n de la SRAM es como pila. *a pila es como una torre de blo(ues.
%ada blo(ue (ue se aade se coloca en el tope de la pila, cada .ez (ue se etrae un dato de
la pila tambi-n se saca del tope de pila. "sta estructura es llamada *I5@ 3last in, !irst out, el
6ltimo en entrar, el primero en salir4.
0ara emplear la SRAM como pila se necesita de!inir el puntero de pila. "l puntero de pila es
de &J bits, accesible como un puerto. S0: es la parte m)s signi!icati.a + S0* la parte menos
signi!icati.a. 0ara construir la pila, el puntero se carga con el .alor de la direcci/n m)s alta
de la SRAM 3la pila crece 1acia las direcciones m)s bajas4.
,-) "E!, HIGHNRAMENDO
#2' SPH, "E!
,-) "E!, LORNRAMENDO
#2' SPL, "E!
"l empleo de la pila es sencillo. *os contenidos de los registros pueden .olcarse en la pila de
la siguiente !orma2
423: "E!
De modo an)logo para etraer elementos de la pila,
4#4 "E!
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/ima instrucci/n a ejecutar
"&+,, "2')*+ A3+,'+" + ,+ 325"2')*+
...
"2')*+B
A +12/ ,+3 )*3'"2&&)#*%3 -% ,+ 325"2')*+
"%' A )*3'"2&&)0* -% "%'#"*# -% ,+ 325"2')*+
Directi.as
.CODE
0ara indicar el comienzo de un c/digo de un programa.
.DSEG
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
*a secci/n de la SRAM en el integrado 3datos4
.ESEG
*a secci/n ""0R@M
.ORG
0ara indicar (ue el segmento de c/digo o datos comienza en una direcci/n distinta de la
dada por de!ecto.
Saltos
*a ejecuci/n de un programa es lineal. Sin embargo, las instrucciones de bi!urcaci/n
3branc1es4 + los saltos incondicionales alteran esta ejecuci/n lineal. Sup/ngase (ue se desea
implementar un contador de ;8 bits empleando los registros r& a rE. "l bit m)s signi!icati.o
en r& se incrementa en & 3operaci/n inc4. Si el registro se desborda, el registro tendr) el
.alor de $ 38OOX&[$4, + se tendr) (ue sumar & al r8. "n caso de desbordamiento de r8, se
incrementa r; + as, sucesi.amente. 0ara ello se emplea la instrucci/n brne.
)*& "E
5"*% 3).2%
)*& "2
5"*% 3).2%
)*& "D
5"*% 3).2%
)*& "E
3).2%B
%omo ejemplo de instrucciones de salto condicional2
5".% A (+$#" # ).2+, N&#* 5)' -% 3).*#O
5",' A (%*#" 12% N&#* 5)' -% 3).*#O
Macros
Una macro permite la utilizaci/n repetida de secuencias de instrucciones.
0or ejemplo2
.MACRO D%,+$
*#4
*#4
*#4
*#4
.ENDMACRO
A )*3'"2&&)#*%3
D%,+$
A (;3 )*3'"2&&)#*%3
Una macro no a1orra espacio de memoria puesto (ue al compilar la eti(ueta de la macro es
reemplazada por el conjunto de instrucciones correspondientes. 0ara el caso de (uerer
a1orrar espacio se emplean las subrutinas.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Saltos incondicionales
Aparte del "&+,, para llamar a las subrutinas, eiste otra clase de salto incondicional, el "7(4
saltar directamente a la direcci/n deseada. A(u,, a di!erencia no .a a 1aber un retorno 3ret4
a la siguiente instrucci/n.
"isten unas instrucciones (ue permiten saltarse 3sHip4 la siguiente instrucci/n a ejecutar,
por ejemplo2
35"& "E,M A3+,'+"3% ,+ 3).2)%*'% -)"%&&)0* 3) %, 5)' M -%, "%.)3'"# %3'; + 5+7+
"&+,, 3)B)'D)3')*'#M A%7%&2'+-+ 3#,+(%*'% 3) %, 5)' M %3'; +
"&+,, #'"# A%7%&2'+-+ -% '#-+3 (+*%"+3
An)logamente se encuentra la instrucci/n sbic para los puertos de entradaAsalida
35)& PINB, A 3+,'+"3% ,+ 3).2)%*'% )*3'"2&&)0* 3) %, 5)' -%, 42%"'# 5 %3'; + 5+7+
@tro tipo de instrucci/n de sHip es la de comparaci/n de registros
&43% "E,"2 A3+,'+"3% ,+ 3).2)%*'% )*3'"2&&)0* 3) ,#3 &#*'%*)-#3 -% "E $ "2 3#*
A).2+,%3
I:2RR<'CI8:S
%on !recuencia se debe reaccionar ante condiciones 1ard=are u otros e.entos, por ejemplo
en el cambio de .alor de un pin de un puerto 3por ejemplo detectar (ue un usuario 1a
pulsado una tecla4. Un modo de procesarlo podr,a consistir en 1acer un bucle (ue lea
continuamente el .alor de esa l,nea. Desgraciadamente, un programa debe 1acer en general
m)s cosas (ue estar le+endo en un bucle un puerto + no puede permitirse el lujo de ese
bucle. Adem)s en caso de detecci/n de pulsos mu+ pe(ueos, el m-todo del bucle es in6til.
"s m)s adecuado emplear interrupciones.
*as interrupciones se disparan por alguna condici/n, (ue debe ser 1abilitada primero, +a (ue
todas las interrupciones de 1ard=are se encuentran des1abilitadas por de!ecto. "l
microprocesador posee un bit en su registro de estado para permitir (ue se procesen las
interrupciones. 0ara acti.ar A desacti.ar este bit se emplean las instrucciones 3%) + &,).
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
.ector de interrupci/n, (ue generalmente es un salto incondicional a la subrutina de
procesamiento de interrupci/n. "l .ector de interrupci/n es una posici/n dependiente del
procesador.
"iste un orden de prioridad en las interrupciones, de modo (ue si dos o m)s interrupciones
1abilitadas se producen simult)neamente solamente ser) procesada la de ma+or prioridad.
*as dem)s simplemente esperar)n a (ue se 1a+a procesado la de prioridad m)s alta. *a
rutina de procesamiento puede terminar con la instrucci/n RETI.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ApNndice C
Caracter.sticas elNctricas de la tar;eta <A(I=A-R ,1.4
+a tar;eta A-R=<A(I inclu5e 7 leds 5 7 pus) bottonK los leds 5 los s&itc)s son
conectados por medio de )eaders que estn separados del resto de la tar;eta.
-olta;e de alimentacinC 3=15-dc
Inclu5e un puente de diodos para e,itar da*os a la tar;eta al in,ertir la polaridad
de la %uente.
Inter%ase ,.a serial con la computadora personal.
Consumo de corriente 115=124mA.
Compatible con 6A-R Studio4.
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ApNndice $
'roBrama de aplicacin de la tar;eta <A(I=A-R ,1.4
"l programa de aplicaci/n 3c/digo !uente4 (ue se muestra abajo pertenece al arc1i.o a
cargar en el microcontrolador 3ABP$S8;&;4 de la tarjeta2 avr5.67,8.87v.76-4e" (ue se
anea en el documento electr/nico.
;*********************************************************************************
;*
;*
;*
;* Tarjeta : programador experimental UAMI_AVR v1.0
;*
;*
;* Leenda!:
;* """""""""
;* #ignat$re " e! $n n$mero identi%i&ador'en (te!) para el &*ip+ el !o%t,are
;* veri%i&ar- !i e! la %irma &orre&ta !eg.n el di!po!itivo e!&ogido
;* /ode " /0digo $ni&o del di!po!itivo $!ado por AVR1rog para identi%i&ar avr
;* 2la!* " 3.mero en (te! en memoria 2la!*
;* 441rom " 3.mero en (te! en memoria 441rom
;* Lo&5 " Lo&5(it! 'modo !eg$ro 6$e e! apli&a(le al di!po!itivo !ele&&ionado
;* &$ando !e !ele&&iona la op&ion %$!e.
;* 2$!e " 2$!e(it! 'm$e!tra la &on%ig$ra&ion de lo! %$!i(le!+ e!to! no !on
;* a%e&tado! (orrando el di!po!itivo)
;* 1Mode " Indi&a modo de programa&ion
;*
;* R78 " A&&e!o de le&t$ra7e!&rit$ra
;* R " A&&e!o a le&t$ra !olamente
;* 8 " A&&e!o a e!&rit$ra !olamente
;* 3A " 3o A&&e!i(le
;*
;***************************************************************************
.noli!t
.in&l$de 9:;1;de%.in&9 ; Mi&ro&ontrolador a $tili<ar
.li!t
.e6$ !ili&on_&*ip=1 ;#i e! 1 Mo!i Mi!o !on &am(iada! de in 7 o$t
.e6$ xtal_>M?<=0 ;#i e! 0 enton&e! @tal = AM?<
;***************************************************************************
;* /B3#TA3T4#
;* /odigo! para identi%i&ar lo! di!po!itivo!
;*
;* C4#/RI1/IB3
;* Lo! !ig$iente! &odigo! de(en !er $!ado! por la 1/. 3ote 6$e lo!
;* &odigo! de lo! di!po!itivo! !on ar(itrariamente !ele&&ionado!+
;* nada tienen 6$e ver &on el 9!ignat$re (te!9 alma&enado! en el avr
;***************************************************************************
;1ara maor in%orma&ion &on!$lta la nota de apli&a&ion original AVRD10 en
,,,.atmel.&om
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
;lo! a$tore!: Ble #aet*er+ Terje 2ro!tad+ Ingar 2redri5!en+ Morten 8. L$nd+ ?aa5on
#5ar+ 1aal Ea!tne! la! &orre&&ione! reali<ada! por: F. #amperi+ !jdavie!+ !&
?ora&io 1arede!. Trad$&&i0n al e!paGol por: ?ora&io 1arede!
;**** Revi!ion de &odigo! ****
.e6$ #8_MAFBR = H;H ; Revi!ion del n$mero maor
.e6$ #8_MI3BR = H;H ; Revi!ion del n$mero menor
.e6$ ?8_MAFBR = H1H ; Revi!ion n$mero Maor ?8
.e6$ ?8_MI3BR = H0H ; Revi!ion n$mero Menor ?8
;***************************************************************************
;* MA/RB#
;* 1rograma&ion de Ma&ro!
;*
;* C4#/RI1/IB3
;* /am(ia lo! !ig$iente! A ma&ro! !i el R4#4T &am(ia de e!tado en la
;* tarjeta 7o !i la! !eGale! #/E7MI#B7MB#I &am(ian
;***************************************************************************
.e6$ re!etpin = A
.ma&ro !et_re!et
!(i port(+re!etpin
.endm
.ma&ro &lr_re!et
&(i port(+re!etpin
.endm
.ma&ro ddrd_init
nop
.endm
.ma&ro ddr(_init
ldi temp1+'0x22 I '1JJMI#B))
o$t ddr(+temp1 ; 1KL e! entrada+ el re!to e! !alida
.endm
.ma&ro ddr(_relea!e
ldi temp1+'1JJre!etpin)
o$t ddr(+temp1 ; 1KA 'R4#4T) e! !alida+ el re!to e! entrada
.endm
.ma&ro p$l!e_!&5
!(i port(+#/E
ldi temp:+M ;valor para $n &ri!tal de AM?<
m0:
de& temp:
(rne m0
&(i port(+#/E
ldi temp:+; ;valor para &ri!tal= AM?<
m1:
de& temp:
(rne m1
.endm ;%in de ma&ro!
;******************
;* /on!tante! #1I *
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
;******************
.i% !ili&on_&*ip
.e6$ MB#I = L ; n$mero de (it en 1BRTK
.e6$ MI#B = M ; n$mero de (it en 1BRTK
.el!e
.e6$ MB#I = M ; n$mero de (it en 1BRTK
.e6$ MI#B = L ; n$mero de (it en 1BRTK
.endi%
.e6$ #/E = N ; n$mero de (it en 1BRTK
;**************************
;* /on!tante! en la UART *
;**************************
.i% xtal_>m*<
.e6$ 3 = :L ; 1D.:5 valor de la velo&idad de dato! UKRR '&ri!tal de >M?<)
.el!e
.e6$ 3 = 1: ; 1D.:5 vel. de Tx UKRR '&ri!tal AM?<)
.endi%
;**********************************
;* Regi!tro de Varia(le! Olo(ale! *
;**********************************
.de% dev_&ode = r1 ;/odigo de di!po!itivo regre!ado por get_&ode!
.de% pgm_mode = r: ;modo de programa&ion para el avr 0 = (te mode
;JP 0 =page mode
.de% devi&e = r1M ; /odigo del di!po!itivo
.de% temp1 = r1N
.de% temp: = r1>
.de% !_data = r1D ;dato! #1I 'programa&ion en el !i!tema)
.de% $_data = r:0 ;dato! de la UART
.de% addrl = r:1 ;orden de la dire&&ion en el (te (ajo
.de% addr* = r:: ;orden de la dire&&ion en el (te alto
.de% &md; = r:; ;empleado para regi!tro r;0
.de% rd_!_data = r:A ;$tili<ado para regi!tro r;1
.de% &md = r:L ;/omando de programa&ion !erial
.de% &o$nt = r:M ;Varia(le de tiempo para 9entrar al modo de programa&ion9
.de% param1 = r:N
.de% &md1 = r:>
.de% &md: = r:D
;****************************
;* Ve&tore! de interr$p&ion *
;****************************
./#4O
rjmp R4#4T ; U!amo! R4#4T
;Ini&iali<a la UART
$_init:
ldi temp1+3 ; e!ta(le&er la velo&idad en (a$dio!
o$t UKRR+temp1
ldi temp1+1JJT@43Q1JJR@43 ; ini&iali<a UART para T@ R@
o$t U/R+temp1
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ret
p$t&:
!(i! U#R+UCR4 ; pr$e(a'te!t) para regi!tro de Tx va&io
rjmp p$t& ; Loop *a!ta 6$e Tx !ea va&io
o$t UCR+$_data ; !e envia el (te
ret
get&:
!(i! U#R+R@/ ; 4!pera *a!ta 6$e el &ara&ter *a !ido re&i(ido
rjmp get&
in $_data+UCR ; #e lee el (te de la UART
ret
dela:
ldi temp:+0x%%
dl: de& temp:
(rne dl
de& temp1
(rne dela
ret
;***************************************************************************
;* 2U3/IB3
;* ,r!er
;*
;* C4#/RI1/IB3
;*
;* 4!&ri(e lee lo! dato! a7o de!de la tarjeta #1I
;***************************************************************************
rd!er:
&lr !_data
,r!er:
ldi temp1+>
ldi rd_!_data+0
,r!0:
rol !_data
(r&& ,r!1
!(i port(+MB#I
rjmp ,r!:
,r!1:
&(i port(+MB#I
,r!::
l!l rd_!_data
!(i& pin(+MI#B
ori rd_!_data+1
p$l!e_!&5
de& temp1
(rne ,r!0
mov !_data+rd_!_data
ret
;***************************************************************************
;* 2U3/IB3
;* !piinit '4ntra en el modo de programa&ion)
;*
;* C4#/RI1/IB3
;* Ini&iali<a la inter%a&e #1I en el AVR
;***************************************************************************
!piinit:
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
ddrd_init ; ini&iali<a port C
ddr(_init ; ini&iali<a port K
&(i port(+#/E ; limpiamo! #/E
!et_re!et ; ponemo! R4#4T = 1
ldi temp1+0x%% ; retardo '0x%%);
r&all dela
&lr_re!et ; ponemo! R4#4T = 0
ldi temp1+0x%% ; retardo'0x%%);
r&all dela
ldi !_data+0xa& ; ,r!er'0xa&)
;77 #1I e!&ri(e '(te 1)
r&all ,r!er
ldi !_data+0xL; ; ,r!er'0xL;)
;77 #1I e!&ri(e '(te :)
r&all ,r!er
; 77 #1I e!ta(le&e #in&roni<a&ion
&pi devi&e+0x:0 ; i% ' 'devi&e P= 0x:0) RR 'devi&e J= 0xN2) )
(rlo !:
t!t devi&e
(rmi !:
!0(:
ldi &o$nt+;: ; &o$nt = ;:; &$enta ig$al a ;:S
!1:
r&all rd!er ; i% 'rd!er == 0xL;) 77 #1I le&t$ra '(te ;)
&pi !_data+0xL;
(re6 !; ; (rea5;
ldi !_data+0x00 ; ,r!er'0x00); 77 #1I e!&ri(e '(te A)
r&all ,r!er
p$l!e_!&5 ; p$l!e #/E
ldi !_data+0xa& ;,r!er'0xa&)
;77 #1I e!&ri(e '(te 1)
r&all ,r!er
ldi !_data+0xL; ;,r!er'0xL;)
;77 #1I e!&ri(e '(te :)
r&all ,r!er
de& &o$nt ;T ,*ile'""&o$nt); de&rementamo! la &$enta
(rne !1
rjmp !; ; T
; el!e
!:: ; U
ldi !_data+0x00 ;,r!er'0x00);77 #1I e!&ri(e '(te ;)
r&all ,r!er
!;: ; T
ldi !_data+0x00 ;,r!er'0x00);77 #1I e!&ri(e '(te A)
r&all ,r!er
ldi temp1+0x10 ; pa$!a'0x10);
r&all dela
ret
;M$e!tra el IC '9AVR I#19) en la linea !erial.
!*o,_id:
ldi <l+lo,'IC*:) ;V ap$nta a la &adena de identi%i&a&ion IC
ldi <*+*ig*'IC*:)
r&all m!g_o$t
ret
R4#4T:
ldi temp1+lo,'RAM43C)
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
o$t #1L+temp1 ; ini&iali<amo! pila
&lr temp1
o$t OIM#E+temp1 ; de!*a(ilitamo! interr$p&ione! externa!
!er temp1 ; Ini&iali<a
o$t 1BRTC+temp1
!et_re!et ; ponemo! R4#4T=1
o$t 1BRTK+temp1
ddr(_relea!e
r&all $_init ; Ini&iali<a UART
;***************************************************************************
;* 1RBORAMA/IB3
;* ,ait&md "P prin&ipal
;*
;* C4#/RI1/IB3
;* 4!pera eje&$ta lo! &omando!
;**********************************************************************************
,ait&md:
r&all get& ; Mientra! 'get&') == 4#/) UT;
&pi $_data+0x1(
(re6 ,ait&md
;******************* Tipo de di!po!itivo
*****************************************
&pi $_data+0xLA ; HTH tipo de di!po!itivo
(rne ,0
r&all get& ; get&');
mov devi&e+$_data ; p$t&'devi&e);
rjmp p$t_ret
;****************** Regre!a Identi%i&ador de #o%t,are
***************************
,0:
&pi $_data+0xL; ; H#H dev$elde el identi%i&ador de !o%t,are
(rne ,1
r&all !*o,_id ; !e llama a la r$tina !*o,_id');
rjmp ,ait&md
;****************** Regre!a la ver!ion del #o%t,are
******************************
,1:
&pi $_data+0xLM ;HVH dev$elve la ver!ion del !o%t,are
(rne ,:
ldi $_data+#8_MAFBR
r&all p$t&
ldi $_data+#8_MI3BR
r&all p$t&
rjmp ,ait&md
;**************** Regre!a la ver!ion de ?ard,are
*********************************
,::
&pi $_data+0xNM ;HvH dev$elve la ver!ion del *ard,are
(rne ,;
ldi $_data+?8_MAFBR ; p$t&'?8_MAFBR);
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
r&all p$t&
ldi $_data+?8_MI3BR ; p$t&'?8_MI3BR);
r&all p$t&
rjmp ,ait&md
;****************** M$e!tra lo! di!po!itivo! !oportado!
**************************
,;:
&pi $_data+0xNA ; HtH m$e!tra lo! di!po!itivo! 6$e !oporta
(rne ,A
ldi <l+lo,'devi&e_&ode!*:) ;V ap$nta a la ta(la de &odigo!
;para lo! di!po!itivo!
ldi <*+*ig*'devi&e_&ode!*:)
!*o,_devi&e!:
r&all get_&ode! ;Regre!a &odigo en dev_&ode
mov $_data+dev_&ode
&pi $_data+0x%% ;Veri%i&a el %in de la ta(la
(re6 end_o%_devi&e! ;Termina
r&all p$t& ;3o %inali<ado+ !end o$t
rjmp !*o,_devi&e!
end_o%_devi&e!:
&lr $_data
r&all p$t& ;2in de la li!ta de di!po!itivo!
rjmp ,ait&md
;***************** Regre!a el tipo de programa&ion
*********************************
,A:
&pi $_data+0xN0 ; HpH dev$elve el tipo de programa&ion
(rne ,L1
ldi $_data+0xL; ; p$t&'H#H); 77programa&ion !erial
r&all p$t&
rjmp ,ait&md
;***************** Regre!a a$toin&remento de dire&&ione!
**************************
,L1:
&pi $_data+HaH ; HaH dev$elve la dire&&ion de
a$toin&remento
(rne ,L
ldi $_data+HWH ; p$t&'HWH); 77 !oporta a$toin&remento
r&all p$t&
rjmp ,ait&md
,L:
&pi $_data+0xN> ; HxH 4n&endemo! L4C '!et led ignorado)
(rne ,M
r&all get& ; ignora el (te de dato!
rjmp p$t_ret
;****************** Limpia L4C
******************************************************
,M:
&pi $_data+0xND ; HH Limpiamo! L4C 'ignorado)
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
(rne ,N
r&all get& ; ignora el (te
rjmp p$t_ret
;******************** 4ntra al modo de programa&ion
*********************************
,N:
p$!* temp: ;#avalmo! temp:
ldi <l+lo,'devi&e_&ode!*:) ;V ap$nta a la ta(la de &odigo! de
di!po!itivo!
ldi <*+*ig*'devi&e_&ode!*:)
,N_lp:
r&all get_&ode! ;Regre!a &odigo en dev_&ode
mov temp:+dev_&ode
&pi temp:+0x%% ;/*e&amo! %in de la ta(la
(re6 devi&e_err ;&odigo de di!po!itivo no en&ontrado
&p temp:+devi&e ;#e en&ontro el &odigo de avrS
(re6 x_,N_lp ;!i
rjmp ,N_lp ;!ig$iente &odigo
x_,N_lp:
pop temp: ;Re!ta$ramo! temp:
rjmp ,N:
devi&e_err:
pop temp: ;Re!ta$ramo! temp:
rjmp p$t_err ;(rin&amo! a p$t_err');
,N::
&pi $_data+0xL0 ; H1H 4ntramo! al modo de programa&ion
(rne ,>
r&all !piinit ; !piinit');
rjmp p$t_ret
;***************** 4!&ri(e el 1rograma en Memoria+ Kte
Alto***********************
,>:
&pi $_data+0xA; ; H/H 4!&ri(e el programa en memoria+ (te
alto
(rne ,D
r&all get&
,>1:
ldi !_data+0xA> ; ,r!er'0xA>); 77 #1I 4!&ri(e
'(te 1)
r&all ,r!er
mov !_data+addr* ; ,r!er'addr*); 77 #1I 4!&rit$ra
'(te :)
r&all ,r!er
mov !_data+addrl ; ,r!er'addrl); 77 #1I e!&ri(e
'(te ;)
r&all ,r!er
mov !_data+$_data ; ,r!er'$_data); 77 #1I 4!&ri(e '(te A)
r&all ,r!er
ldi temp1+0x01 ; A$toin&remento de dire&&ione!
&lr temp:
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
add addrl+temp1
ad& addr*+temp:
rjmp ,rite2LA#?dela
;**************** 4!&ri(e el programa en memoria+ Kte (ajo
********************************
,D:
&pi $_data+0xM; ; H&H e!&ri(e programa en memoria+ (te
(ajo
(rne ,1:
r&all get&
ldi !_data+0xA0 ; ,r!er'0xA0); 77 #1I 4!&rit$ra
'(te 1)
r&all ,r!er
mov !_data+addr* ; !_data = addr*;
,D1: ; T
r&all ,r!er ; ,r!er'!_data); 77 #1I 4!&ri(e '(te :)
mov !_data+addrl ; ,r!er'addrl); 77 #1I 4!&ri(e
'(te ;)
r&all ,r!er
mov !_data+$_data ; ,r!er'$_data); 77 #1I 4!&ri(e '(te A)
r&all ,r!er
,rite2LA#?dela:
t!t pgm_mode
(rne ,D: ;3o *a e!pera el valor no e! &ero
ldi temp1+0x:0 ; retardo'0x:0); 77 :AL>L &i&lo! de
e!pera
r&all dela ; 77 en modo 1agina
no re6$iere de pa$!a!X
,D::
rjmp p$t_ret ; vamo! a repl');
;******************** Le&t$ra de programa en memoria
***********************************
,1::
&pi $_data+0xL: ; HRH Lee el programa en memoria
(rne ,10 ;
ldi !_data+0x:> ; ,r!er'0x:>); 77 #1I 4!&ri(e '(te 1)
r&all ,r!er
mov !_data+addr* ; !_data = addr*;
r&all ,r!er ; ,r!er'!_data); 77 #1I 4!&ri(e '(te :)
mov !_data+addrl ; ,r!er'addrl); 77 #1I e!&ri(e
'(te ;)
r&all ,r!er
r&all rd!er ; p$t&'rd!er')); 77 envia dato! '(te A)
mov $_data+!_data
r&all p$t&
ldi !_data+0x:0 ; ,r!er'0x:0); 77 #1I 4!&ri(e
'(te 1)
r&all ,r!er
mov !_data+addr* ; ,r!er'addr*); 77 #1I 4!&ri(e
'(te :)
r&all ,r!er
mov !_data+addrl ; ,r!er'addrl); 77 #1I e!&ri(e
'(te ;)
r&all ,r!er
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
r&all rd!er ; p$t&'rd!er')); 77 #end data '(te
A)
mov $_data+!_data
r&all p$t&
rjmp readaddrin&
;********************** /arga la! dire&&ione!
******************************************
,10:
&pi $_data+0xA1 ; HAH /argamo! dire&&ione!
(rne ,11
r&all get& ; addr* = get&');
mov addr*+$_data
r&all get& ; addrl = get&');
mov addrl+$_data
rjmp p$t_ret ; goto repl');
;********************** 4!&ri(e lo! dato! en memoria
************************************
,11:
&pi $_data+0xAA ; HCH 4!&ri(e dato! en memoria
(rne ,1;
r&all get&
ldi !_data+0x&0
r&all ,r!er
mov !_data+addr*
r&all ,r!er
mov !_data+addrl
r&all ,r!er
mov !_data+$_data
r&all ,r!er
ldi temp1+0x:0
r&all dela
ldi temp1+0x01 ; in&remento de dire&&ione!
&lr temp:
add addrl+temp1
ad& addr*+temp:
rjmp p$t_ret
;************************ Le&t$ra de lo! dato! en memoria
**********************************
,1;:
&pi $_data+0xMA ; HdH leemo! dato! en memoria
(rne ,1A
ldi !_data+0xa0 ;,r!er'0xA0)
;77 #1I 4!&ri(e '(te 1)
r&all ,r!er
mov !_data+addr* ;!_data = addr*;
r&all ,r!er ; ,r!er'!_data)
;77 #1I 4!&ri(e '(te :)
mov !_data+addrl ; ,r!er'addrl)
;77 #1I 4!&ri(e '(te ;)
r&all ,r!er
r&all rd!er ; p$t&'rd!er'))
;77 envia dato '(te A)
mov $_data+!_data
r&all p$t&
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
readaddrin&:
ldi temp1+0x01 ; A$to in&remento de dire&&ione!
&lr temp:
add addrl+temp1
ad& addr*+temp:
rjmp ,ait&md ; goto ,ait&md');
;********************** A(andonamo! el modo de programa&ion
*******************************
,1A:
&pi $_data+0xA& ; HLH permite modo de programa&ion
(rne ,1L
ddr(_relea!e
!et_re!et ; ponemo! R4#4T = 1
rjmp p$t_ret
;*********************** Korrado del /*ip
**************************************************
,1L:
&pi $_data+0xML ; HeH (orrar /*ip
(rne ,1M
ldi !_data+0xa&
r&all ,r!er
ldi !_data+0x>0
r&all ,r!er
ldi !_data+0x0A
r&all ,r!er
ldi !_data+0x00
r&all ,r!er
ldi temp1+0x;0
r&all dela
rjmp p$t_ret
;************************ 4!&rit$ra de Lo&5 Kit!
******************************************
,1M:
&pi $_data+0xM& ; HlH 4!&ri(e lo&5 (it!
(rne ,1N
r&all get&
ldi !_data+0xa&
r&all ,r!er
mov !_data+$_data
andi !_data+0x0M
ori !_data+0xe0
r&all ,r!er
ldi !_data+0x00
r&all ,r!er
,1M::
ldi !_data+0x00
r&all ,r!er
ldi temp1+0x;0
r&all dela
rjmp p$t_ret
;*************************** Le&t$ra #ignat$re Kte!
**************************************
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
,1N:
&pi $_data+0xN; ; H!H Le&t$ra de !ignat$re (te!
(rne ,1>
ldi param1+0x0:
r&all ,1N&all
ldi param1+0x01
r&all ,1N&all
ldi param1+0x00
r&all ,1N&all
rjmp ,ait&md
,1N&all:
ldi !_data+0x;0
r&all ,r!er
ldi !_data+0x00
r&all ,r!er
mov !_data+param1
r&all ,r!er
r&all rd!er
mov $_data+!_data
r&all p$t&
ret
;************************* 4!&ri(e 1rograma en 1agina de Memoria
*************************************
,1>:
&pi $_data+0xMC ; HmH 4!&ri(e 1rograma en pagina de Memoria
(rne ,1D
ldi !_data+0xA& ;,r!er'0xA&); 77 #1I 4!&ri(e '(te 1)
r&all ,r!er
mov !_data+addr* ;,r!er'addr*); 77 #1I 4!&ri(e '(te :)
r&all ,r!er
mov !_data+addrl ;,r!er'addrl); 77 #1I 4!&ri(e '(te ;)
r&all ,r!er
ldi !_data+0x00 ;,r!er'0x00); 77 #1I 4!&ri(e '(te A)
r&all ,r!er
ldi temp1+0x%% ; dela'0x22); 77 0x:0 = :AL>L &i&lo! de
e!pera
r&all dela
rjmp p$t_ret
;**************************** /omando! $niver!ale!
***************************************
,1D:
&pi $_data+0x;A ; H:H &omando Univer!al
(rne ,1D1
r&all get&
mov &md1+$_data
r&all get&
mov &md:+$_data
r&all get&
mov &md;+$_data
&lr $_data
r&all 3e,Univer!al
ldi temp1+0x%% ;4!pera'0x22); 77 0x:0 = :AL>L &i&lo! de
e!pera
r&all dela
rjmp p$t_ret
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
;*************************** 3$evo! &omando! $niver!ale!
,1D1:
&pi $_data+H.H ; H.H 3$evo &omando Univer!al
(rne ,DD
r&all get&
mov &md1+$_data
r&all get&
mov &md:+$_data
r&all get&
mov &md;+$_data
r&all get&
r&all 3e,Univer!al
ldi temp1+0x%% ;dela'0x22); 77 0x:0 = :AL>L &i&lo! de retra!o
r&all dela
rjmp p$t_ret
3e,Univer!al:
mov !_data+&md1
r&all ,r!er
mov !_data+&md:
r&all ,r!er
mov !_data+&md;
r&all ,r!er
mov !_data+$_data
r&all ,r!er
mov $_data+rd_!_data
r&all p$t&
ret
,DD:
;*************************** 4rror en &omando!
p$t_err:
ldi $_data+0x;% ; p$t&'HSH); YY envia HSH
r&all p$t&
rjmp ,ait&md
;**** Repl /ommand ****
p$t_ret:
ldi $_data+0x0d ; p$t&'0x0C); YY envia /R
r&all p$t&
rjmp ,ait&md
dela1$!: ; &$enta en R1M
nop
&pi temp1+0x0;
(re6 %ini!*ed
nop
nop
loop:
de& temp1
&pi temp1+0x0;
(rne loop
%ini!*ed:
ret
;M#O_BUT /omien<a la !alida de (te! en V *a!ta %in de men!aje 'Z00)
M#O_BUT:
lpm ;read &*ar into r0
mov $_data+r0 ;/opiamo! a r:0
&pi $_data+0x00 ;2in del men!ajeS
(re6 43C_M#O ;#i
r&all 1UT/ ;!alida de &ara&ter
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
adi, VL+1
rjmp M#O_BUT
43C_M#O:
ret
;get_&ode! regre!a &odigo de avr en dev_&ode el modo programa&ion en pgm_mode
get_&ode!:
lpm ;Read devi&e &ode %rom ta(le
mov dev_&ode+r0 ;/opiar a dev_&ode
adi, VL+1 ;In&rementamo! ap$ntador
lpm ;leemo! el modo de programa&ion en la ta(la
mov pgm_mode+r0 ;/opiar a pgm_mode
adi, VL+1 ;In&rementamo! ap$ntador
ret
;identi%i&ador del programador 'IC)
IC:
.d( 9AVR I#19+0
;Ta(la de &odigo! modo! de programa&ion '0'<ero)=(te mode+ JP0=page mode)
devi&e_&ode!:
;ATD0#1:00 rev. A ;Ce 0x00"0x0% no $!ado todavia
.d( 0x10+0
;ATD0#1:00 rev. K
.d( 0x11+0
;ATD0#1:00 rev. /
.d( 0x1:+0
;ATD0#1:00
.d( 0x1;+0 ;Ce 0x1A"0x1% no $!ado todavia
;ATD0#:;1;
.d( 0x:0+0 ;Ce 0x:1"0x:N no $tili<ado todavia
;ATD0#AA1A
.d( 0x:>+0 ;Ce 0x:D"0x:% no $!ado todav[a
;ATD0#AA;;
.d( 0x;0+0 ;Ce 0x;1"0x;; no $!ado todavia
;ATD0#:;;;
.d( 0x;A+0 ;Ce 0x;L"0x;N no $!ado todavia
;ATD0#>L1L
.d( 0x;>+0 ;0x;D no $!ado todavia
;ATmega>L1L
.d( 0x;A+H1H
;ATmega>L1L KBBT
.d( 0x;K+H1H ;Ce 0x;&"0xA0 no $!ado todavia
;ATmega10;
.d( 0xA1+H1H
;ATmegaM0;
.d( 0xA:+H1H
;ATmega1:>
.d( 0xA;+H1H
;ATmega1:> KBBT
.d( 0xAA+H1H
;ATmegaMA
.d( 0xAL+H1H
;ATmegaMA KBBT
.d( 0xAM+H1H ; 0xAN no $!ado
;ATD0#:;:;
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
.d( 0xA>+0 ;Ce 0xAD"0xA( no $!ado
;ATD0#:;A;
.d( 0xA/+0 ;2rom 0xAd"0xA% no $!ado
;0xL0+0xL1 $!ado!. Ce 0xL:"0xLA no $!ado!
;
;ATtin1:
.d( 0xLL+0
;ATtin1L
.d( 0xLM+0 ;0xLN no $!ado
;ATtin1D
.d( 0xL>+0 ; 0xLD"0xL( no $tili<ado
;ATtin:>
.d( 0xL/+0 ;0xLd no empleado
;ATtin:M
.d( 0xL4+H1H ;0xL% no $tili<ado
;
;ATmega1M1
.d( 0xM0+H1H
;ATmega1M1 KBBT
.d( 0xM1+H1H ;0xM:"0xM; no empleado todavia
;ATmega1M;
.d( 0xMA+H1H
;ATmega>;
.d( 0xML+H1H
;ATmega1M; KBBT
.d( 0xMM+H1H
;ATmega>; KBBT
.d( 0xMN+H1H
;ATD0#>L;L
.d( 0xM>+0
;ATmega>L;L
.d( 0xMD+H1H ; 0xMa"0xM( no $!ado
;
;ATD0#AA;A
.d( 0xM/+0 ; 0xMd"0xM% no $!ado
;ATD0/>L;A
.d( 0xN0+0
;ATD0/>LAA
.d( 0xN1+0
;ATmega;:
.d( 0xN:+H1H
;ATmega;: KBBT
.d( 0xN;+H1H
;ATmega1M
.d( 0xNA+H1H
;ATmega1M KBBT
.d( 0xNL+H1H
;ATmega>
.d( 0xNM+H1H
;ATmega> KBBT
.d( 0xNN+H1H
;ATmega1MD
.d( 0xN>+H1H
;ATmega1MD KBBT
.d( 0xND+H1H ; 0xNa"0xN% no $!ado
end_o%_devi&e_&ode!:
.d, 0x%%%%
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR
P"#$%&'# '%"()*+, -% )*.%*)%"/+ %,%&'"0*)&+
Re%erencias
&uentes Electrnicas
I*'%"*%'B
8le Saet)erK 2er;e 9rostadK InBar 9redriHsenK (orten F. +undK "aaHon SHarK
'aal QastnesK Oo)n Samperi.
)ttpCII&&&.serasidis.BrIcircuitsIa,rRispIa,rRisp.)tm
Sc)midt @er)ard
B%.)**%"3 I*'"#-2&')#* '# ':% A33%(5,$ L+*.2+.% #6 ATMEL>AVRM)&"#&#*'"#,%"3@
D)&)%(5"% -% 2D.
1ttp2AA===.a.r-asm-tutorial.net
1ttp2AA===.a.r!reaHs.net
1ttp2AA===.atmel.com
@uido Soc)er
P"#."+(+*-# %, ()&"#&#*'"#,+-#" AVR &#* GCC 23+*-# ,)5& E..H
Traducido al espaol por:
Al"erto #ardo
$a%ardoyo&ya'oo.es(
2005!01!09 )enerated "y l*%arser +ersion 2.51
1ttp2AA===.linu!ocus.org
CDROMB
6 Atmel Corporation 2445
S#6'Y+"% +*- T%&:*)&+, L)5"+"$
"nero 8$$O
D)3%8# -% ,+ '+"7%'+ %=4%")(%*'+, UAMI>AVR

Vous aimerez peut-être aussi