Sei sulla pagina 1di 206

PROYECTO DE INGENIERA EN ELECTRNICA

I y II

DISEO DE TACOMETRO PARA LA MEDICIN DE


LAS RPM DEL MOTOR DE UN AVIN A PEQUEA
ESCALA .
REPORTE DE PROYECTO TERMINAL
MEXICO, JUNIO 2007
ASESORES:

ING. ORTIZ BALBUENA LAURA EUGENIA


ING. GONZALEZ MARTINEZ ALEJANDRO

AUTORES:
CASTORENA ORTEGA EDUARDO
GOMEZ MARTINEZ FRANCISCO
GUTIERREZ GOMEZ AMADO
RUIZ SANTIAGO ARTURO
SANTOS DIAZ EDUARDO
SEVILLA PEREZ EDGAR
0

INDICE

Pgina
OBJETIVO..................................................................................................... 2
INTRODUCCION........................................................................................................... 2
ESTADO DEL ARTE..... 3
DESARROLLO DEL PROYECTO................................................................................
PROGRAMA EN LENGUAJE ENSAMBLADOR DEL AVR..............
DIAGRAMA DE MONTAJE............................................................................
Recepcin...............................................................................................
Transmisin............................................................................................
Diseo....................................................................................................
Simulacin...............................................................................................
DIAGRAMA DE CONEXIONES............................................................... ..........
ETAPA TRANSMISORA........................................................................
Diagrama de conexin entre la PC y el Microcontrolador..........
Diagrama de conexin Max 232 con PC y el Microcontrolador
ETAPA RECEPTORA............................................................................
ELABORACION DE DIAGRAMA DE CONEXIONES...........................
ETAPATRANSMISORA.......................................................................
ETAPA RECEPTORA...........................................................................

8
8
13
13
14
15
17
19
19
19
19
20
21
21
22

RESULTADOS............................................................. . 23
OBSERVACIONES........................................................................................ 26
CONCLUSIONES........................................................................................... 27
BIBLIOGRAFIA Y REFERENCIAS............................................................... 27
APENDICE Y ANEXOS.......... 28
MANUAL DEL MICROCONTROLADOR EN ESPAOL................... 38
DISEO DE PARACAIDAS.............................................................................189

OBJETIVO.


Disear un tacmetro electrnico para medir las revoluciones de


un motor.

Programar en lenguaje ensamblador el microcontrolador AVR


AT90S8515.

Disear e Implementar la electrnica necesaria para establecer una


comunicacin inalmbrica por infrarrojos.

Ensamblar la parte de programacin con la parte electrnica.

Medicin de las RPM generadas por el motor de un avin a


pequea escala

INTRODUCCION.
Este proyecto consiste en el diseo de un tacmetro para medir las RPM de un motor de
avin a pequea escala.
Tacmetro (Del griego, tachos = velocidad y metron = medida) es un dispositivo para
medir la velocidad de giro de un eje, normalmente la velocidad de giro del motor, se mide
en Revoluciones por minuto (RPM).
La primera etapa de este proyecto consiste en realizar el programa en lenguaje
ensamblador para el microcontrolador AVR AT90S8515, en donde se tiene como entrada
un pulso de 5v cada vez que el sensor IR(Infrarrojo) es obstruido. En nuestro caso el
sensor se obstruye dos veces durante una vuelta del motor ya que las hlices son las que
generan la interrupcin, con esto se va contando el numero de pulsos que entran al
procesador en segundo. Una vez que se realizo el clculo, el microcontrolador manda
el dato obtenido a la computadora, y esto se multiplica por 60 para obtener el nmero de
revoluciones por minuto.
La segunda etapa se analiza la comunicacin inalmbrica por infrarrojos se identifican
dos elementos muy importantes para poder implementar esta comunicacin, La
transmisin y la recepcin. El transmisor lo constituye un oscilador a 40 khz y un led
infrarrojo que su misin es suministrar la onda portadora luminosa que transporta la
informacin.
En el otro extremo del sistema, se encuentra el receptor este consta de un fotodiodo, que
es un convertidor optoelctrico que recibe una seal debilitada por lo que es
indispensable tener a continuacin una seccin de amplificacin, para llevar la seal al
nivel adecuado para su tratamiento. Para esto existen cantidad de receptores infrarrojos
modulares completos para adaptar la seal luminosa recibida, son muy usados en
sistemas de control remoto de baja velocidad para esto seleccionamos el receptor modular
2

GP1U52X de Radio Shack. Este es un detector muy completo, para convertir seales
moduladas con portadora de 40 khz a lgica TTL o CMOS.
La tercera etapa consiste en los diagramas de conexiones. En esta seccin se describen
las conexiones para implementar la electrnica necesaria para establecer la comunicacin
por infrarrojos y obtener la lectura en RPM.
La cuarta etapa consiste en la lectura del programa TERM, esta lectura capturada por el
programa es multiplicada por 60 para poder obtener las RPM del motor.

ESTADO DEL ARTE.


Los tacmetros porttiles son los instrumentos ideales para determinar las revoluciones
de mquinas, piezas e instalaciones, Estos tacmetros sirven adems para realizar
mediciones pticas de la velocidad.
Existen en el mercado tacmetros de diferentes fabricantes y con diferentes
caractersticas. Por ejemplo, con los tacmetros de mano con interfaz RS-232 podr
medir revoluciones y velocidades y grabarlas directamente con el software del envo, as
como hacer una valoracin en el PC. Los tacmetros de mano digitales son ideales para
realizar mediciones de velocidad y revoluciones en inspeccin y mantenimiento. Los
PCE-T236 permiten mediciones de velocidad con y sin contacto con una muy buena
relacin calidad / precio. El medidor de revoluciones porttil sirve para realizar
mediciones de velocidad pticas o mecnicas.
Otro de los tacmetros industriales mas utilizados es el PAX I.
Empleo
El cuadro de mandos del tacmetro / contador de cmoda visualizacin posee una
pantalla con todos los valores e indicadores relevantes que facilita un manejo sencillo y
rpido. El aparato se maneja por regla general con las cinco teclas frontales. Durante una
programacin se determinan los modos y los datos que permanecen activos o bloqueados
tras la programacin de los bloqueos. El aparato puede emplearse simultneamente como
contador A, contador B y como tacmetro. Cada funcin puede mostrarse en la pantalla
presionando una tecla. Y no slo una programacin en el mismo tacmetro o en el
contador, sino tambin una programacin externa por medio de cable de interfaz y
software (es necesaria la tarjeta expandible adicional). As el tcnico puede preparar por
completo el aparato y montarlo en un cuadro para su posterior funcionamiento. Se facilita
un planeamiento rpido.

En la siguiente tabla se muestra las especificaciones tcnicas de los tacmetros mas


utilizados en el mercado, en esta caso son: PCE-T236 y PAX I.

Marca
Modelo
Figura

PCE Group
PCE-T236

PCE Group
PAX I

Descripcin

Este medidor de revoluciones digital


porttil PCE-T236 es ptimo para
establecer las revoluciones de
mquinas, piezas e instalaciones
giratorias (por ejemplo en cintas
transportadoras, en motores y
mecanismos
accionados
por
correas...). La medicin sin contacto
se realiza con la ayuda de una banda
reflectante que se adhiere a la pieza
giratoria, la medicin con contacto se
lleva a cabo por medio de un
adaptador mecnico con cabeza o con
rueda de medicin incluido en el envo
el medidor de revoluciones dispone de
un interruptor para seleccin de rangos
y memoria de valores MAX y MIN.

Puede emplearse tambin como un

instrumento de laboratorio flexible y


preciso para medir velocidad y
revoluciones o para realizar recuentos.
Por su slida carcasa y la clase de
proteccin IP 65, esta pantalla de
velocidad ha sido concebida para el
uso industrial. El componente
electrnico de la pantalla digital de
larga vida es utilizado y probado en
todo el mundo y nosotros lo
sometemos a un control de calidad de
3 das antes de la entrega. El
tacmetro ha sido desarrollado con
cinco teclas que hacen de l un
instrumento de uso rpido y seguro.
La pantalla es tambin muy cmoda
para el usuario, ya que permite
visualizar todos los parmetros a la
vez y modificarlos fcilmente. La
pantalla digital o el tacmetro pueden
ser complementados con una tarjeta

expandible de valores lmite de un


modo muy sencillo. La forma de la
carcasa se rige por la norma DIN
vigente para el montaje en caja
Rangos de
medicin de
velocidad

Resolucin

Precisin
Distancia de
medicin
mxima
Memoria
Alimentacin

Rango de
Temperatura
de operacin
Carcasa

5 ... 99999 rpm


0,5 ... 19999 rpm
contacto)
0,05 ... 1999 m/min
contacto)
0,2 ... 6560 ft/min
contacto)

(medicin ptica)
(medicin con
(medicin con
(medicin con

0,5 ... 999,9 = 0,1 rpm;


hasta 99999 = 1,0 rpm (medicin
ptica)
0,5 ... 999,9 = 0,1 rpm;
hasta 19,999 = 1,0 rpm (medicin con
contacto)
0,05 ... 99,99 = 0,01 m/min;
hasta 1999 = 0,1m/min (medicin con
contacto)
0,2 ... 999,9 = 0,1 ft/min;
hasta 6560 = 1 ft/min
(medicin con
contacto)
0,05 % del valor de medicin de rev.;
1 dgito
300 mm

ltimo valor, valores mximo y mnimo


4 bateras AA de 1,5V

0 ... + 50 C

plstico ABS

El
tacmetro
industrial
puede
programarse libre- mente introduciendo
una seal o un valor con ayuda del
teclado. La escala, el multiplicador y el
ajuste de punto decimal permiten un
clculo o un ajuste de los impulsos en
velocidad por ejemplo [m/min, m/s, ...],
as como de los valores del contador como
cantidad [n] o en metros recorridos [m] o
similar
El rango de la distancia de medida es de
30 ... 130 mm con una resolucin de
0,06 mm, un tiempo de respuesta de 10
ms y un error de 0,2 mm

0,05 % del valor de medicin de rev.;


1 dgito

130 mm

ltimo valor, valores mximo y mnimo


- 85 ... 250 VAC 50/60 Hz, 18
VA(modelo R 0000)
- 11 ... 36 VDC, 14W o 24 VAC +-10%,
15VA (modelo R 0010)
- mx. 85 % de humedad relativa
- 0 ... +50 C
- Carcasa de plstico roja a prueba de
golpes
- Fcil instalacin de las tarjetas

Pantalla

pantalla LCD, de 5 posiciones, se gira


automticamente segn el tipo de
medicin

65 x 215 x 38 mm
Dimensiones
Caractersticas - El aparato mide de modo ptico sin
generales
contacto con las bandas reflectantes
del envo.
- Medicin con contacto en rpm con
adaptador cnico (para extremos de
ejes o taladros de centro en motores y
mecanismos).
- Medicin con contacto en m/min con
rueda.
- Slida carcasa de plstico ABS.
- La pantalla LCD de 10 mm y 5
posiciones
del
medidor
de
revoluciones se gira automticamente
180 segn si la medicin se realiza
con
o
sin
contacto.
- Memoria para ltimo valor, valores
MIN / MAX.
Adaptadores
de
medicin
intercambiables.

adicionales
- 97 mm x 50 mm x 104 mm
- Refuerzo de la carcasa del tacmetro con
un
marco de montaje con tornillos de
sujecin
- Pantalla de 6 posiciones, 100 mm de
ancho y con LED alto, rojo de 14 mm
- Valor MIN / MAX: indicador: L12345 o
H12345
- Valor: -99999 a +999999 como contador
o
Tacmetro y 0,1 ... 99999,9 Hz
- Decimales: 0/ 0,0/ 0,00/ 0,000/
0,00
0,00000
- Tiempo de actualizacin mnimo: 0,1 s
- Tiempo de actualizacin mximo : 0,2 s
92 (+0,8) mm x 45 (+0,5) mm

- Aparato programable con pantalla


digital para velocidad / revoluciones y
recuentos en mquinas y en
instalaciones, as como en pruebas o
en
laboratorio.
- Pantalla LED digital de 6 posiciones.
- Mximo 34 kHz, se adapta a todos
los sensores de uso habitual.
- Opcin conectable: 2 o 4 valores
lmite, como salida rel o transistor.
- Programacin sencilla por medio del
teclado.
- Entradas de usuario de libre
programacin.
- Salida analgica (0 ... 10 V, 4 ... 20
mA por medio de tarjeta adicional de
salida
analgica).
- Memoria de valores MIN / MAX.
- Alto tipo de proteccin IP 65,
Dimensiones: 48 x 96 x 104 mm.

Peso
Contenido del
envo

300 g
1 medidor de revoluciones PCE-T236, 1
adaptador cnico, 1 adaptador de la rueda
de medicin, 1 rueda para superficies,
banda reflectante, maletn, instrucciones
de uso

aprox. 300 g (sin opcin para enchufar)


1 aparato industrial PAX I con las
funciones contador A, contador B y
tacmetro (modelo R 0000 o modelo R
0010, segn la alimentacin), 1 pieza de
junta, material de refuerzo, instrucciones
de uso

Los tacmetros de mano combinados son unos aparatos de aplicacin en la produccin,


en inspeccin y mantenimiento. Los tacmetros de mano son ideales para controlar la
velocidad de revoluciones de mecanismos, centrfugas, motores y ventiladores y de
muchas otras mquinas e instalaciones de uso en el mbito de la industria o de la
investigacin.
Los tacmetros / medidores longitudes sirven para el clculo por contacto de velocidades
y longitudes. Estos tacmetros estn tambin indicados para medir las longitudes en
mquinas e instalaciones giratorias (por ejemplo cintas transportadoras, motores,
mecanismos con correas, cilindros...).

DESARROLLO DEL PROYECTO


PROGRAMA EN LENGUAJE ENSAMBLADOR
A continuacin se presenta el programa en lenguaje ensamblador que fue creado para la
medicin de las vueltas generadas por el motor.
.NOLIST
.INCLUDE "8515def.inc"
.LIST
Existen 32 registros en los microprocesadores AVR, etiquetados originalmente como R0,
R1,..., R31, pero que pueden ser renombrados usando la directiva .def
.def registroTemporal=r16
Las directivas son tiles para el ensamblador pero en realidad no generan instrucciones
ejecutables. En vez de emplear el nombre r16 se puede acceder con el nombre definido en
la directiva.
Se definen los registros que se usaran.
.DEF cont1 = R16
.DEF start = r22
.DEF TEMP = r24
.DEF cont2= r15

.ORG
Para indicar que el segmento de cdigo o datos comienza en una direccin distinta de la
de por defecto.
.org $0000
rjmp Reset
.org $004
rjmp tc0i

;salta a la etiqueta Reset

Comienza el cdigo del programa en la etiqueta Reset


Reset:
ldi TEMP,low(RAMEND) ;inicializacin del apuntador de la pila
out SPL,TEMP
ldi TEMP,high(RAMEND)
out SPH,TEMP
8

;se carga en el registro TEMP el valor 00011011


ldi TEMP,0b00011011
out UCR,TEMP
En esta ltima instruccin se carga el valor del registro TEMP en el registro UCR con el
valor 00011011 . con el bit 3 se habilita
la transmisin y con el bit 4 se habilita la recepcin serial del procesador. Ahora
necesitamos definir la velocidad a la que se har la transmisin de los datos que ser a
9600 baud y tenemos un cristal de 4 Mhz entonces de la Tabla A so observa que. El valor
del registro UBRR debe ser igual a 25 pero convirtiendo este valor en hexadecimal se
obtiene 19h y este valor es el que se carga en el UBRR como se muestra
ldi TEMP,0x19
out UBRR, TEMP

inicio:

;etiqueta de referencia

ldi r25,0x11

;se carga en el registro 25 el valor 00010001

;En la siguiente instruccin se carga en el registro TEMP el valor 3


ldi TEMP,0x03
Ahora se hace un retardo ,decrementando el registro TEMP y comparndolo con el valor
cero si son iguales el programa ejecutara la siguiente instruccin si no son iguales el
programa saltara a la etiqueta retardo.
retardo:
dec TEMP
cpi TEMP,0
brne retardo
ldi start,0x2B
;se carga el valor + en ASCII
OUT UDR,start ;se pone el '+' en el UDR para ser transmitido
ldi TEMP,0x03 ;se carga el registro TEMP con 3 para hacer otro retardo
retardo2:
dec TEMP
cpi TEMP,0
brne retardo2

;decrementa TEMP
;compara si es igual a cero
;si es igual a cero salta a la siguiente instruccin sino
;salta a la etiqueta retardo2

ldi start,0x3C ;se carga el numero 3C que es 00111100 en el registro start


OUT UDR,start ;se carga en el UDR para ser transmitido
ser TEMP

;se carga el registro TEMP con el valor FF en hexadecimal


9

En la instruccin anterior se lleno el registro TEMP con 11111111 para poder utilizarlos
para declarar los puertos C,A y D como puertos de salida cargndoles en el registro DDR
en valor de TEMP
out DDRC,TEMP
out DDRA,TEMP
out DDRD,TEMP
Ahora se carga el valor 0 en el registro TEMP para utilizarlo para declarar el puerto B
como entrada de datos cargando el valor del registro TEMP en el registro DDRB
clr TEMP
out DDRB,TEMP
ldi TEMP,0x40
out TIMSK,TEMP

; se carga el valor 40 hexadecimal en TEMP

Se carga el registro TIMSK con 40 h que es 01000000 pues como se puede observar a
continuacin

Solo se habilita el bit 6 con el cual:


Bit 6 OCE1A: Timer/Counter1 Output CompareA March Interrupt Enable:
El Timer/Counter1 tiene la posibilidad de realizar comparaciones internas de su estado
actual con el de dos registros de 16 bits llamados OCR1A y OCR1B. Cuando el valor del
Timer1 coincide con el de OCR1A y este bit est puesto a 1 adems del bit I del registro
estado se produce una interrupcin. El vector de interrupcin se encuentra en la direccin
$004.
Como se habilito la interrupcin por comparacin ahora se deben de definir los valores
con los cuales se va a comparar. Como queremos que el procesador este censando cada
0.5 segundos y con una frecuencia de 4Mhz/64 = 65 Khz debemos tener el valor de
32768 pues 65Khz x 0.5 = 32768 = 8FFF en los dos registros por lo tanto los registros
tendrn los siguientes valores OCR1AH = 8F ,OCR1AL = FF.
Para que se haga la interrupcin y en ese momento envi por el puerto serial el valor de
revoluciones contadas.

ldi TEMP,0x8F

;se carga el registro TEMP con el valor 7F


10

out OCR1AH,TEMP
ldi TEMP,0xFF
;se carga el registro TEMP con el valor FF
out OCR1AL,TEMP
sei
;se habilitan las interrupciones globales

cuenta_revoluciones:

;comienza el contador de revoluciones

in TEMP,PINB ;se lee el puerto B y lo que tiene se guarda en el registro TEMP


cp cont1,TEMP ;se comparan estos registros para ver cuando hay un cambio '0' a
'1' o viceversa
breq cuenta_revoluciones ;si son iguales salta a la etiqueta cuenta_revoluciones
y se queda dando vueltas mientras no haya un cambio de '0' a '1' lgico o viceversa, una
vez que hubo un cambio de '0' a '1' o de '1' a '0' se ejecuta lo siguiente:
mov cont1,TEMP ;se copia el dato almacenado en el registro TEMP al registro
cont1

Ahora debemos activar los bits del registro de control B del temporizador del contador1
para hacer la divisin de frecuencia y obtener la frecuencia de 65 Khz.

4Mhz/64 = 65536 Hz
para poder hacer la divisin de frecuencia se debe cargar el valor 00000011 como se
muestra en la siguiente tabla 10.

11

ldi TEMP,0x03 ;se carga el registro TEMP con el valor 3


out TCCR1B,TEMP ;se carga el registro TCCR1B con el valor 00000011
cpi cont1,$1 ;se verifica si hubo un cambio de '1' a '0'
breq cuenta_revoluciones ;si el cambio fue de '0' a '1' salta a cuenta_revoluciones
inc cont2 ;va contando el numero de revoluciones que se detectan
rjmp cuenta_revoluciones ;salta a la etiqueta cuenta revoluciones
A continuacin se muestra el cdigo de la interrupcin que se har cada 0.5 segundos y
tiene la funcin de enviar la cuenta de las revoluciones y reiniciar los contadores.
tc0i:
;rutina de interrupcin solo incrementa el contador 2
out UDR ,cont2 ; se pone el valor de las revoluciones contadas en el udr para ser
transmitidas
clr cont2
;se limpia el contador de revoluciones
out TCCR1B,cont2
out TCNT1H,cont2 ;se limpia el registro alto del contador
out TCNT1L,cont2 ;se limpia el registro bajo del contador
reti
;termina la interrupcin y regresa a la instruccin en donde se quedo

12

DIAGRAMA DE MONTAJE

Figura 1. Montaje de Transmisor y Receptor para medir las RPM


Una vez terminado de programar el microcontrolador, nos damos a la tarea de
implementar una comunicacin inalmbrica. En este caso nos centramos en la
comunicacin mediante leds infrarrojos.
RECEPCIN.
En esencia se construye un receptor de infrarrojos que capta y decodifica la seal enviada
por un emisor. La etapa de RECEPCIN est compuesta por un decodificador y un
microcontrolador, el cual toma la seal del receptor infrarrojo. Dicha seal una vez
capturada e identificada por el microcontrolador se enva la informacin procesada a la
PC por medio del cable serial, esta informacin es capturada por medio del programa
TERM(el cual va mostrar las RPM del motor). La etapa del TRANSMISOR es colocada
detrs de la hlice del motor para poder emitir una seal con la informacin de las vueltas
que va generando el motor y a su vez mande la informacin hacia la recepcin.

Comenzaremos por definir y comentar la parte de la recepcin de la seal infrarroja ya


que, por un lado es sumamente sencilla de conectar a un microcontrolador y, por otro, es
necesario disear y ajustar los circuitos que necesitamos en la parte de la emisin.
Para la recepcin vamos a utilizar un dispositivo llamado GP1U52X(Radio Shack).
Este es un detector por infrarrojos esta diseado para recibir seales infrarrojas
moduladas; este dispositivo demodula una seal IR de 40 Khz y la convierte en una
fuente de datos serie. Al conectar el dispositivo al terminal de entrada del
microcontrolador, esta fuente de datos puede capturarse y almacenarse.
13

Figura 2. Diagrama del Receptor


Conexin de Hardware. Tal y como se indica en la figura 2 , El pin 1, Vout va
conectado al pin 1 de nuestro Microcontrolador en este caso AVR AT90S8515, por
medio de este pin se recibir toda la informacin captada por el led infrarrojo. Esta
informacin se manda hacia el microcontrolador para ser procesada. El pin 2 es Vcc es
alimentado con 5 VDC. El pin 3 es conectado hacia una tierra.

TRANSMISIN.
Una vez resuelto el problema de recepcin, vamos a centrarnos en la otra parte del
sistema: la emisin.
El objetivo es establecer una comunicacin entre dos dispositivos de una forma general.
La necesidad de generar un tren de pulsos de 40 Khz, para poder transmitirlo hacia la
recepcin y el dispositivo GP1U52X lo demodule. Nos conduce a trabajar con un
circuito integrado muy conocido y utilizado el 555 sus dos modos bsicos de operacin:
Astable y Monoestable.



Astable: El circuito entrega un tren continuo de pulso.


Monoestable: El circuito suministra un pulso de determinada duracin.

Para ambos modos de operacin la frecuencia y ancho de pulso se programan


externamente mediante resistencias y condensadores adecuados. Nosotros en este caso
utilizaremos el modo Astable para generar un tren pulsos continuo y con una frecuencia
de 40 khz.

14

Utilizando el 555 en modo Astable hace que se dispare as mismo y pueda funcionar
como un multivibrador. En esta configuracin son necesarias dos resistencias (RA y RB )
y un condensador
(C) en la siguiente
figura se muestra
la conexin tpica de
esta
configuracin.

Figura 3. Diagrama del Oscilador 555 en modo astable

DISEO.
Se realizan los clculos necesarios para obtener un oscilador con una frecuencia de 40
khz.
El capacitor C se carga a travs de las resistencias RA + RB . Variando los valores de
estos tres parmetros (C, RA y Rb) se puede ajustar para obtener una frecuencia de 40 khz,
con la siguiente ecuacin.
Nota: Para ms informacin sobre la obtencin de esta ecuacin, revisar las especificaciones del LM555 en
el apndice.

Tenemos la ecuacin para determinar RB, fijando RA = 1k y C = 470pF


1
1.44
f = =
................................................(1)
T ( R A + 2 R B )C
De la ecuacin 1, se despeja RB
RB =

1 1.44 * T
1
1

= 25 *10 6 s
R A donde T = =

2 C
f 40khz

Sustituyendo valores.

RB =

1 1.44 * 25 10 6
1 10 3 = 37877.7

12
2 470 10

15

RB = 37 k, pero no existe comercialmente esta resistencia.


La resistencia que utilizaremos es de 33 k.
Calculando la Frecuencia con RB = 33 k
f =

1
1.44
1.44
=
=
= 45 khz
3
T ( R A + 2 R B )C (1 10 + 2 * 33 10 3 ) * 470 10 12

f = 45 khz con una RB = 33 k.


La frecuencia obtenida en los clculos tericos es de 45 khz, para poder bajar esta
frecuencia a 40 khz, utilizamos una resistencia de ajuste como puede mostrarse en la Fig
3.
La resistencia conectada del pin 8 al pin 3, esta fue ajustada por medio de un
potencimetro hasta obtener una frecuencia de 40 khz. La resistencia obtenida es de 5.6
k.
Tenemos que: RA = 1k, RB = 33k, RL = 5.6k y C = 470 pF
El circuito queda de la siguiente forma:
VCC
+9V

RL
5.6k

RA
1k

555

1 Gnd
2 Trg
3 Out
4 Rst

Vcc 8
Dis 7
Thr 6
Ctl 5

RB
33k

.01uF

R
120
C
470pF

Figura 4. Diagrama del transmisor

16

SIMULACIN.

La simulacin de este oscilador se realiz en pspice, el cdigo es el siguiente.

*SIMULACION DE UN OSCILADOR DE 40 KHZ


*
*DEFINICION DE LIBRERIA DEL LM555
*
.lib anl_misc.lib
*
*
*ALIMENTACION
V1 VCC 0 DC 12

*DESCRIPCION DEL CIRCUITO


*
RA VCC RB1 1k
RB RB1 RB2 33k
C1 RB2 0 470p
C2 C3 0 0.01U
RC VCC RC1 5.6k
RD RC2 0 120

*ESPECIFICACION DE PINES DEL LM555

X1 0 RB2 RC2 RC1 C3 RB2 RB1 VCC 555B

.tran 5u 0.25m 0.1m UIC


.probe
.end

17

Resultado de la Simulacin.

Figura 5. Simulacin del Oscilador

Como podemos ver en la figura anterior, el tren de pulsos obtenido a la salida del
oscilador tiene un periodo de 25.112 s esto implica una frecuencia de 39.9 khz, como
podemos observar en la simulacin, nuestro diseo es satisfactorio.
La amplitud del tren de pulsos es de 9 Volts.

Ahora nos centramos en el led infrarrojo que utiliza el oscilador para la parte transmisora,
el led utilizado es el IR333C Diodo emisor de luz (LED) infrarrojo, transparente, de 5
mm de dimetro, con longitud de onda de 940 nanmetros, 1.3 Volts tpicos en
polarizacin directa, 1.7 Volts mximos, 20 mW y ngulo transmisin de 27 grados. Para
la parte receptora, el sensor GP1U52X ya cuenta con su led infrarrojo.
Ya que analizamos la parte transmisora y receptora de nuestra comunicacin
inalmbrica por medio de leds infrarrojos, ahora procedemos a conjuntar todos los
componentes necesarios para llevar a cabo la comunicacin como se muestra en la Fig. 1,
en nuestro siguiente apartado de Diagrama de Conexiones.

18

DIAGRAMA DE CONEXIONES.
Diagrama de conexin Etapa transmisora

DIAGRAMA DE CONEXION ENTRE LA PC Y EL MICROCONTROLADOR

DIAGRAMA DE CONEXION
MICROCONTROLADOR

DEL

MAX

232

CON

PC

EL

Max 232. Tiene la


funcin de Adaptacin
de niveles entre la PC
y el Microcontrolador.
Nivel RS232 ----12 V
Nivel TTL--------5 V

19

Diagrama de conexin Etapa receptora

En esta etapa Receptora tenemos el receptor infrarrojo GP1U52X pasa por una compuerta
Nand schmitt trigger 7413, para que el microcontrolador reciba 1 lgico como 5 volts,
0 lgico como 0 volts. En la adaptacin de niveles entre el micro y la pc tenemos el CI.
Max 232 que nos permite mandar la informacin almacenada en el micro hacia la pc.
Como podemos observar en el Diagrama de Recepcin el conector DB9(RS232) nos va
permitir conectar un cable serial hacia la pc para observar las RPM del motor.

20

ELABORACIN DE LOS DIAGRAMAS DE CONEXIONES


Diagrama de conexin Etapa transmisora

21

Diagrama de conexin Etapa receptora


GP1U52X

22

RESULTADOS
La ltima fase de este proyecto, es el montaje de los circuitos elaborados como se
muestra en la figura 1, ya una vez montado se suministr de energa al motor para
realizar las pruebas necesarias y obtener la lectura de RPM del motor.

Tabla No. 1

23

Tabla No. 2
En la tabla No.1. Se toma la primera muestra de las mediciones de RPM del
motor, se observa que no son constantes porque el motor no est bien fijado, con esto
origina muchas vibraciones, por consiguiente el emisor y el receptor pierden linealidad.
En la tabla No.2. Se hiz un registro de las mediciones obtenidas, como podemos
observar en la partes sombreadas de amarillo, azul, verde y rosa por momentos hay
lecturas constantes, pero no son muy confiables ya que la luz del medio ambiente
introduce ruido.

24

Tabla No. 3
25

Este proyecto se realiz en su totalidad con el fin de medir las revoluciones por minuto
del motor de un avin de aeromodelismo, del cual se obtuvieron mediciones que aunque
no fueron al 100% confiable, nos dan una idea de la capacidad que tiene el motor.
En las tablas del 1 al 3. Se tienen las lecturas obtenidas por medio del tacmetro, en la
tabla 3 se detecta por momentos una lectura estable, la mxima lectura obtenida es de
15300 RPM.
Para la caracterizacin del motor solo se tiene que mejorar la forma de censar los datos
pues una vez que estos son transmitidos al microcontrolador estos son procesados
correctamente

OBSERVACIONES
El problema en la medicin de las revoluciones del motor no fueran confiables es debido
a que la luz ambiental causaba ruido en la transmisin y recepcin infrarroja, ya que
dependiendo de la cantidad de luz que haba en el lugar las mediciones no fueron
constantes.
El ruido introducido por otras fuentes de luz puede deberse a causas naturales, como por
ejemplo equipos electrnicos como lmparas y distintos equipos de vdeo; tambin
superficies reflectantes ubicadas cerca del emisor o detector infrarrojo que deterioran
tremendamente la forma original de la seal luminosa enviada.
Para eliminar el ruido introducido se suelen usar cdigos de lnea y adems enviar la
seal modulada con una portadora y as es posible diferir entre la seal y el ruido.
Adems cuando se realizaron pruebas para obtener las mediciones de las revoluciones del
motor ests variaban debido a que el motor encendido produce vibraciones las cuales
generan un error ya que en ciertos momentos tanto el receptor como el transmisor no
estn alineados y por lo tanto no se tiene un lectura confiable en ese instante.

26

CONCLUSIN
El lenguaje de programacin usado es ensamblador. Fue elegido para tener un
mejor control en los tiempos de sincronismo con la seal infrarroja. De igual manera
puede abordarse la programacin en C teniendo claro que al momento de compilar el
programa, puede resultar en una mayor cantidad de memoria de cdigo y que se vea
afectada la sincrona con la seal. La ventaja de programar en ensamblador adems del
sincronismo, es que si la aplicacin demanda rapidez y eficiencia en memoria, este
lenguaje es el adecuado. El cdigo fue escrito usando el entorno de programacin AVR
stdio 4.0 de Atmel y compilado con PonyProg 2000.
En el diseo y la implementacin electrnica para establecer la comunicacin
inalmbrica se disea un circuito emisor, y se utiliz un circuito receptor de infrarrojos.
Para la recepcin se ha utilizado un circuito receptor de infrarrojos como es el GP1U52X
de RadioShack, que en el mismo integrado engloba el receptor infrarrojo. Desde el punto
de vista de su utilizacin, este dispositivo lo podemos ver como una caja negra que una
vez alimentada, activa o desactiva una salida cuando recibe una seal infrarroja modulada
a 40 khz.
Para la emisin, la conexin realizada se hizo en base al modo astable del circuito
integrado 555. La gran ventaja de esto modo de operacin, es contar con una resistencia
de ajuste que permite seleccionar una frecuencia en el rango de los 36 a los 40 khz.
Al tener todo la electrnica necesaria y el microcontrolador cargado con el programa, se
hace el montaje como se muestra en la figura 1 de nuestro desarrollo de este proyecto,
aqu el punto mas importante es tener bien anclado el motor para que no haya vibraciones
al momento de ponerlo en marcha, y bien alineado el emisor con el receptor para que
nuestro microcontrolador pueda almacenar la informacin y mandarla por medio del
puerto serial hacia la computadora. Por medio del programa terminal obtenemos las
vueltas por segundo, pero como el objetivo es medir RPM, las mediciones capturadas en
el programa terminal se multiplica por 60 para obtener las mediciones en RPM.
Al tomar en cuenta la transmisin infrarroja como medio para la deteccin de las
revoluciones del motor no se tomaron en cuenta los beneficios y las complicaciones que
se tienen, por lo tanto es de suma importancia tomar en cuenta este tipo de factores que
pueden influir mucho en el desarrollo del proyecto. Para mejorar el diseo del tacmetro
se debe tomar en cuenta todo el ruido, que pueda intervenir en nuestra comunicacin
inalmbrica; en nuestro caso fue la luz ambiente. Se recomienda buscar algn dispositivo
que sea inmune a la luz para que se puedan tener medidas ms confiables.

BIBLIOGRAFIA Y REFERENCIAS
http://www.monografias.com/trabajos35/redes-inalambricas/redes-inalambricas.shtml
http://www.superrobotica.com/download/Basicx24/Infrared_App_Note_BX24.pdf
http://www.atmel.com/
http://www.os-engines.co.jp
http://www.pce-group-europe.com/espanol/index.php?cat=c104_Tacometros.html
27

APENDICE Y ANEXOS
Lenguaje Ensamblador en los microcontroladores AVR.
El trmino ensamblador (del ingls assembler) se refiere a un tipo de programa informtico que
se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto
que contiene cdigo mquina, ejecutable directamente por la mquina para la que se ha generado.
El propsito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en cdigo binario, que es el nico cdigo entendible por
la computadora, es en la prctica imposible. La evolucin de los lenguajes de programacin a
partir del lenguaje ensamblador origin tambin la evolucin de este programa ensamblador hacia
lo que se conoce como programa compilador.

Los registros son posiciones especiales de almacenamiento, con 8 bits de capacidad. Un


registro tiene la siguiente apariencia:

Un registro puede almacenar valores numricos de 0 a 255 (positivos sin signo) o entre
128 a 127 (con bit de signo en el bit 7), caracteres ASCII o simples conjuntos de bits sin
relaciones entre ellos. Existen 32 registros en los microprocesadores AVR, etiquetados
originalmente como R0, R1,..., R31, pero que pueden ser renombrados usando la
directiva .def
.def registroTemporal=r16
Las directivas son tiles para el ensamblador pero en realidad no generan instrucciones
ejecutables. En vez de emplear el nombre r16 se puede acceder con el nombre definido en
la directiva. As la instruccin
ldi registroTemporal, 150
carga en el r16 de manera inmediata el nmero 150.
Otra instruccin interesante es el de copiar datos desde un registro a otro: la instruccin
mov. El siguiente cdigo copia el contenido del r16 al registro r20.
mov r20,r16
Obsrvese que el primer registro es siempre el registro destino de la operacin. Existen
diferentes tipos de registros. As una instruccin del tipo
ldi r15, 15
no sera vlida, ya que los nicos registros que permiten cargar un valor de forma
inmediato son los registros del r16 al r31. Es decir, no se puede realizar este tipo de
operacin con los registros del r0 al r15. Existe una excepcin a esta regla, el comando
referido a limpiar los bits (poner todos los bits a 0)
clr r15
28

es vlido para todos los registros. Aparte del comando ldi, las siguientes instrucciones no
pueden emplearse con los registros r0 a r15:
andi r15,4 ;Realiza el y lgico entre el registro y un nmero
cbr r14,45 ;Limpia los bits en el registro determinados por una mscara de bits
cpi r13,6 ;Compara el contenido del registro con una constante
sbci r9,7 ;Resta al registro el valor del contenido de la constante y del resultado
; actual del bit de carry
sbr r12,89 ; Coloca a '1' los bits en el registro determinados por una mscara de
; bits
ser r3
;Coloca todos los bits del registro a 1
subi r15,9 ;Resta al registro el valor del contenido de la constante.
REGISTROS PUNTERO
Un papel especial es desempeado por las parejas de registros r16:r27, r28:r29 y r30:r31.
Estas parejas de registros de 16 bits son nombrados de una forma especial, X, Y y Z.
Pueden acceder a direcciones de 16 bits en la SRAM (X, Y, Z) o dentro de la memoria
del programa (Z). La parte alta de la direccin se coloca en el registro de ndice ms alto,
mientras que la parte baja de la direccin se almacena en el registro de ndice ms bajo.
Estas partes alta y baja tienen sus propios nombres. As la parte alta del registro Z (r31)
se puede acceder como ZH mientras que la baja (r30) se puede acceder como ZL.
Ejemplo:
.EQU direccion = RAMEND ;en este comentario indicaremos que RAMEND es
;la direccin ms alta en la SRAM
ldi YH,high(direccion) ; carga la parte alta de la direccin
ldi YL,low(direccion)
; carga la parte baja de la direccin
El acceso a direcciones a travs de estos registros punteros es muy sencillo. Los
siguientes ejemplos ilustran estos accesos de lectura (ld) y de escritura (st) con el puntero
X
ld r1,X
st X+,r1
ld r1,-X

; Lee de la direccin X, sin cambiar el fichero


;Escribe en la direccin X, e incrementa el puntero a la siguiente direccin
;Decrementa el puntero a la anterior direccin y lee de la direccin X

Para insertar los valores en la memoria de programa se emplean las directivas .DB y
.DW. Por ejemplo:
.DB 123,56,34,1 ; una lista de 4 bytes
.DB Esto es un texto ; una lista de bytes, cadena de caracteres.
.DW 13454 ; una palabra

29

En las definiciones es recomendable usar un nmero par de bytes ya que el ensamblador


aadir un 0 al final, lo cual puede no ser deseado. En vez de constantes se pueden definir
etiquetas (destino de saltos) del siguiente modo, siempre en la primera columna:
Etiqueta1:
; aqu iran unos comandos
Tabla:
.DW 134,12312
PUERTOS

Los puertos son puertas entre la unidad de procesamiento central hasta hardware o
software externo. El CPU se comunica con estos componentes, los lee y/o los escribe.
Los puertos tienen direcciones fijas, independientemente del microprocesador AVR. As,
por ejemplo el puerto B se encuentra siempre en la direccin 0x18 (notacin
hexadecimal). Por supuesto el programador no tiene necesidad de recordar todas estas
direcciones. Los nombres vienen definidos en un fichero de encabezado para los
diferentes tipos de microcontrolador y que son proporcionados por el fabricante. Estos
ficheros include tienen una lnea para definir la direccin del puerto B como sigue:
.EQU PORTB, 0x18
por lo que solamente se debe recordar el nombre del puerto y no su direccin. El fichero
correspondiente se incluye mediante la siguiente directiva
.include 8515def.inc
Los puertos generalmente se organizan en conjunto de 8 bits relacionados entre s, pero
pueden estar organizados en conjuntos sin relacin. En este caso es habitual que cada uno
de los bits tenga su propio nombre y funcin determinados. Como ejemplo, el registro
MCUCR consiste en un nmero de bits de control del integrado, cada uno de ellos con
sus nombres (por ejemplo ISC00, ISC01). La forma de enviar un valor determinado a uno
de estos puertos es mediante la instruccin out y mediante el empleo de un registro
intermedio:
ldi r16, 0b00010000
out MCUCR, r16

; ejemplo de configuracin binaria

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


in r16, MCUCR
En este caso debemos aclarar que existen algunos puertos que tienen bits que no son
usados o estn reservados. En este caso se devuelve un bit a 0.
Es frecuente que se desee poner a 0 1 un bit concreto de un puerto. Una opcin para
ello consistira en leer el registro correspondiente, emplear las operaciones lgicas para
alterar el bit seleccionado y reenviar el byte al puerto. Sin embargo, esto se puede llevar a
cabo mediante las instrucciones sbi (poner el bit a 1) y cbi (poner el bit a 0). Como
ejemplos:
30

.EQU bitCambiado = 5
sbi PortB, bitCambiado
cbi PortB, bitCambiado
Las dos instrucciones tienen una limitacin, solamente afectan a puertos con una
direccin inferior a 0x20.

PUERTOS RELEVANTES EN AVR

RAM ESTTICA, SRAM

La SRAM es una memoria que no es accesible directamente por el CPU (ALU) como es
el caso de los registros. Para acceder a esta parte de la memoria se deben emplear los
registros como paso intermedio. Por lo tanto las operaciones que involucran a la SRAM
son ms lentas que la de los registros. A partir del modelo AT90S8515 se permite
31

conectar una RAM externa adicional. Uno de los casos de empleo ms importante de la
SRAM es como pila.
El acceso a la SRAM se lleva a cabo mediante las instrucciones STS y LDS. Ejemplos
STS 0x0060, R1 ; el contenido del registro R1 se copia en la direccin 0x0060
LDS R1, 0x0060 ; el contenido de la direccin 0x0060 se copia en el registro R1

Se suelen emplear nombres simblicos para evitar emplear direcciones fijas.


.EQU direccionMemoria = 0x0060
STS direccionMemoria, R1
SRAM como pila
El uso ms comn de la SRAM es como pila. La pila es como una torre de bloques.
Cada bloque que se aade se coloca en el tope de la pila, cada vez que se extrae un dato
de la pila tambin se saca del tope de pila. Esta estructura es llamada LIFO (last in, first
out, el ltimo en entrar, el primero en salir).
Para emplear la SRAM como pila se necesita definir el puntero de pila. El puntero de pila
es de 16 bits, accesible como un puerto. SPH es la parte ms significativa y SPL la parte
menos significativa. Para construir la pila, el puntero se carga con el valor de la direccin
ms alta de la SRAM (la pila crece hacia las direcciones ms bajas).
ldi r16, HIGH(RAMEND)
out SPH, r16
ldi r16, LOW(RAMEND)
out SPL, r16
El empleo de la pila es sencillo. Los contenidos de los registros pueden volcarse en la pila
de la siguiente forma
push r16
De modo anlogo para extraer elementos de la pila,
pop r16
Un caso especial de uso de las pilas es el de la llamada a las subrutinas. Al llamar a la
subrutina el programa almacena en la pila la direccin de la prxima instruccin a
ejecutar
rcall rutina ;saltar a la subrutina
...
rutina:
; aqu las instrucciones de la subrutina
ret ; instruccin de retorno de la subrutina
DIRECTIVAS
.CODE
Para indicar el comienzo de un cdigo de un programa.
.DSEG
La seccin de la SRAM en el integrado (datos)
.ESEG
La seccin EEPROM
32

.ORG
Para indicar que el segmento de cdigo o datos comienza en una direccin distinta de la
de por defecto.
SALTOS
La ejecucin de un programa es lineal. Sin embargo, las instrucciones de bifurcacin
(branches) y los saltos incondicionales alteran esta ejecucin lineal. Supngase que se
desea implementar un contador de 32 bits empleando los registros r1 a r4. El bit ms
significativo en r1 se incrementa en 1 (operacin inc). Si el registro se desborda, el
registro tendr el valor de 0 (255+1=0), y se tendr que sumar 1 al r2. En caso de
desbordamiento de r2, se incrementa r3 y as sucesivamente. Para ello se emplea la
instruccin brne.
inc r1
brne sigue
inc r2
brne sigue
inc r3
brne sigue
inc r1
sigue:
Como ejemplo de instrucciones de salto condicional:
brge ; mayor o igual (con bit de signo)
brlt ; menor que (con bit de signo)
MACROS
Una macro permite la utilizacin repetida de secuencias de instrucciones. Por ejemplo:
.MACRO Delay
nop
nop
nop
nop
.ENDMACRO
; instrucciones
Delay
; ms instrucciones

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

Aparte del rcall para llamar a las subrutinas, existe otra clase de salto incondicional, el
rjmp: saltar directamente a la direccin deseada. Aqu, a diferencia no va a haber un
retorno (ret) a la siguiente instruccin. Existen unas instrucciones que permiten saltarse
(skip) la siguiente instruccin a ejecutar, por ejemplo
33

sbrc r1,7
;saltarse la siguiente direccin si el bit 7 del registro est a
baja
rcall siBitDistinto7 ;ejecutada solamente si el bit 7 est a 0
rcall otro
;ejecutada de todas maneras

Anlogamente se encuentra la instruccin sbic para los puertos de entrada/salida


sbic PINB,0 ; saltarse la siguiente instruccin si el bit 0 del puerto b est a baja
Otro tipo de instruccin de skip es la de comparacin de registros
cpse r1,r2 ;saltarse la siguiente instruccin si los contenidos de r1 y r2 son
;iguales
INTERRUPCIONES

Con frecuencia se debe reaccionar ante condiciones hardware u otros eventos, por
ejemplo en el cambio de valor del pin de un puerto (por ejemplo detectar que un usuario
ha pulsado una tecla). Un modo de procesarlo podra consistir en hacer un bucle que
leyese continuamente el valor de esa lnea. Desgraciadamente, un programa debe hacer
en general ms cosas que estar leyendo en un bucle un puerto y no puede permitirse el
lujo de ese bucle. Adems en caso de deteccin de pulsos muy pequeos, el mtodo del
bucle es intil. Es ms adecuado emplear interrupciones. Las interrupciones se disparan
por alguna condicin, que debe ser habilitada primero, ya que todas las interrupciones
hardware se encuentran deshabilitadas por defecto. El microprocesador posee un bit en su
registro de estado para permitir que se procesen las interrupciones. Para activar/desactivar
este bit se emplean las instrucciones sei y cli.
Si la condicin de la interrupcin se produce, el procesador coloca en la pila, la direccin
de la siguiente instruccin a ejecutar. De este modo, la ejecucin del programa puede
continuar despus de procesar la interrupcin. Despus procesar la instruccin
correspondiente en su vector de interrupcin, que generalmente es un salto incondicional
a la subrutina de procesamiento de interrupcin. El vector de interrupcin es una posicin
dependiente del procesador.
Existe un orden de prioridad en las interrupciones, de modo que si dos o ms
interrupciones habilitadas se producen simultneamente solamente ser procesada la de
mayor prioridad. Las dems simplemente esperarn a que se haya procesado la de mayor
prioridad. La rutina de procesamiento puede terminar con la instruccin

COMUNICACIN INALAMBRICA POR INFRARROJOS

El uso de la luz infrarroja se puede considerar muy similar a la transmisin digital con
microondas.
El haz infrarrojo puede ser producido por un laser o LED. Los dispositivos emisores y
receptores deben estar alineados uno del otro o bien esta en lnea tras la posible reflexin
de rayo en superficies como las paredes. En infrarrojos no existen problemas de
seguridad ni de interferencias ya que estos rayos no pueden atravesar los objetos(paredes
por ejemplo). Tampoco es necesario permiso para su utilizacin(en microondas y ondas
34

de radio si es necesario un permiso para asignar una frecuencia de uso). Velocidades de


transmisin hasta 100 Kbps pueden ser soportados a distancias de 16 kms.
La conexin es punto a punto(al nivel experimental se practican otras posibilidades). El
uso de esta tcnica tiene ciertas desventajas. El haz infrarrojo es afectado por el clima,
interferencia atmosfrica y por otros obstculos fsicos. Como contrapartida, tiene
inmunidad contra el ruido magntico, o sea, la interferencia elctrica.
Modos de Radiacin Infrarroja.
Las estaciones con tecnologa infrarroja pueden usar tres modos diferentes de radiacin
para intercambiar la energa ptica entre transmisores- receptores
 Punto a punto
 Cuasi-difuso
 Difuso
 En el modo punto-a-punto los patrones de radiacin del emisor y del receptor
deben estar lo mas cerca posible, para que su alineacin sea correcta. Como
resultado, el modo punto-a-punto requiere una lnea de vista entre las dos
estaciones a comunicarse. Este modo usado para la implementacin de redes
inalmbricas infrarrojas. A diferencia del modo punto-a-punto, el modo cuasidifuso y difuso son de emisin radial, o sea que cuando una estacin emite una
seal ptica, sta puede ser recibida por todas las estaciones al mismo tiempo en
la clula. En el modo cuasi-difuso las estaciones se comunican entre si, por medio
de superficies reflejantes. No es necesaria la lnea de vista entre dos estaciones
estn cerca de la superficie de reflexin.


 El modo cuasi-difuso: A diferencia del modo punto-a-punto, el modo cuasidifuso y difuso son de emisin radial, o sea que cuando una estacin emite una
seal ptica, sta puede ser recibida por todas las estaciones al mismo tiempo en
la clula. En el modo cuasidifuso las estaciones se comunican entre si, por medio
de superficies reflejantes . No es necesaria la lnea-de-vista entre dos estaciones,
pero si deben de estarlo con la superficie de reflexin. Adems es recomendable
que las estaciones estn cerca de la superficie de reflexin, esta puede ser pasiva
activa. En las clulas basadas en reflexin pasiva, el reflector debe de tener altas
propiedades reflectivas y dispersivas, mientras que en las basadas en reflexin
activa se requiere de un dispositivo de salida reflexivo, conocido como satlite,
35

que amplifica la seal ptica. La reflexin pasiva requiere ms energa, por parte
de las estaciones, pero es ms flexible de usar.

 El modo difuso, el poder de salida de la seal ptica de una estacin debe ser
suficiente para llenar completamente el total del cuarto. Por lo tanto la lnea de
vista no es necesaria y la estacin se puede orientar hacia cualquier lado. El modo
difuso es el mas flexible, en trminos de localizacin y posicin de la estacin, sin
embargo esta flexibilidad requiere un gran nmero de emisiones pticas.

Por otro lado la transmisin punto-a-punto es el que menor poder ptico consume,
pero no debe de haber obstculos entre las dos estaciones. En topologa de
Ethernet se puede usar el enlace punto-a-punto, pero el retardo producido por el
acceso al punto ptico de cada estacin es muy representativo en el rendimiento
de la red. Es ms recomendable y ms fcil de implementar el modo de radiacin
cuasi-difuso. La tecnologa infrarroja esta disponible para soportar el ancho de
banda de Ethernet, ambas reflexiones son soportadas(por satlites y reflexiones
pasivas).

36

Las principales propiedades de los sistemas de comunicacin por ondas


infrarrojas son:


Se usan ampliamente en comunicaciones de corta distancia, como


controles remotos de TV, puertas electrnicas, redes LAN, computadores
sin conexin fsica a la red, etc.

Son direccionales, pero no atraviesan objetos slidos. Esto puede verse


como una ventaja desde el punto de vista de no-interferencia.

Existe gran cantidad de equipo, emisores y receptores baratos, fciles de


implementar.

Tienen gran ancho de banda.


A continuacin se presentara el manual del microcontrolador AVR AT90S8515 traducido
al espaol para mayor comodidad del lector. As como la hoja de especificaciones del
SHARP GP1U52X, LM555 se anexan en una carpeta llamada especificaciones, archivo
en formato pdf .

37

Este manual se encuentra dividido en 13 apartados. A


continuacin se muestra brevemente el contenido de cada uno
de ellos.

 Caractersticas:
En este apartado encontrar las caractersticas generales, elctricas y tpicas del AT90S8515,
un resumen de sus registros y la configuracin de sus pines.
 Descripcin:
Podr encontrar el diagrama de bloques del microcontrolador, el oscilador de cristal y la

descripcin de sus pines.




Arquitectura:
Este apartado muestra una gran cantidad de informacin. Nos habla de la arquitectura del
microcontrolador, registros de propsito general, memorias EEPROM, FLASH y SRAM,
ALU, modos de direccionamiento de programa y datos, tiempos de acceso a memoria y
de ejecucin de instrucciones, memoria de I /O, manejo de Reset e interrupciones y los
modos de descanso.

 Timers:
En este apartado se describen con detalle el Timer/Contador0 de 8 bits y el Timer/Contador1
de 16 bits.


Watchdog:
Podr conocer el Timer Watchdog ( perro guardin ). Se trata de un Timer con su propio
oscilador interno que puede provocar el Reset del microcontrolador.

 EEPROM:
Este apartado se centra en la memoria EEPROM, accesos de lectura y escritura, en sus
registros y en prevenir su adulteracin.


SPI:
Se analiza la Interface Perifrica Serie ( SPI ) que permite la transferencia de datos
sncrona de alta velocidad.

 UART:
En este apartado se describe el Receptor y Transmisor Asncrono Universal, ms conocido
como UART, con sus registros, transmisin y recepcin de datos, y el generador de Baud
Rate.


Comparador Analgico:
En este apartado nos dedicaremos al comparador analgico, su control y sus registros.
38

 Interface a SRAM externa:


Conoceremos la interface a SRAM externa que se compone del Puerto A, Puerto C, pin ALE y
los pines RD' y WR'.


Puertos de I/O:
Los puertos de I/O son los Puertos A, B, C y D, y en esta seccin se comentarn los
distintos registros de cada uno de ellos y sus funciones.

 Programacin de Memoria:
En esta seccin encontraremos los bits "llave" (cerradura) de memoria de datos y programa,
bits de fusible, bytes de firma, programacin de FLASH y EEPROM, y la programacin en
paralelo y en serie.

MANUAL DEL MICROCONTROLADOR AVR 90S8515.

CARACTERSTICAS GENERALES DEL


AT90S8515
 Utiliza la arquitectura AVR RISC.
 AVR - Arquitectura RISC de alto rendimiento y bajo consumo.
- 118 instrucciones. La mayora de un simple ciclo de reloj de ejecucin.
- 32 x 8 registros de trabajo de propsito general.
- Capacidad de procesamiento de unos 8 MIPS a 8 MHz.

 Memoria de datos y memoria de programa no voltil.


- 8K Bytes de FLASH programable en sistema.
Resistencia: 1.000 ciclos de escritura / borrado.
- 512 Bytes de SRAM.
- 512 Bytes de EEPROM programable en sistema.
Resistencia: 100.000 ciclos de escritura / borrado.
-

Bloqueo programable para el programa FLASH y seguridad de datos EEPROM.


39

 Caractersticas de los perifricos.


- Un Timer/Contador de 8 bits con preescaler separado.
- Un Timer/Contador de 16 bits con preescaler separado.
Modos de Comparacin, captura y doble PWM de 8, 9 o 10 bits.
- Comparador analgico On-Chip.
- Timer watchdog programable con oscilador On-Chip.
- UART serie programable.
- Interface serie SPI maestro / esclavo.

 Caractersticas especiales del microcontrolador.


- Modos de bajo consumo idle y power-down.
- Fuentes de interrupcin externas e internas.

 Especificaciones.
- Bajo consumo, tecnologa de proceso CMOS de gran velocidad.
- Funcionamiento esttico total.

 Consumo de energa a 4 MHz, 3V, 25C.


- Activo: 3.0 mA.
- Modo idle: 1.0 mA.
- Modo power-down: <1 A.

 I/O y encapsulados.
- 32 lneas de I/O programables.
-PDIP de 40 pines, PLCC y TQFP de 44 pines.

40

 Tensiones de funcionamiento.
- 2.7 - 4.0V para AT90S8515-4.
- 4.0 - 6.0V para AT90S8515-8.

 Niveles de velocidad.
- 0 - 4 MHz para AT90S8515-4.
- 0 - 8 MHz para AT90S8515-8.

 VCC: 2.7 6.0 V.

41

CONFIGURACIN DE LOS PINES


A continuacin se muestra el tipo de configuracin de pines AT90S8515:

42

Figura 1. Pines de AVR AT90S8515

43

DIAGRAMA A BLOQUES DEL MICROCONTROLADOR AVR AT90S8515.

44

Figura 2. Diagrama a
Bloques

45

DESCRIPCIN DE LOS PINES.

VCC: Voltaje de Alimentacin.

GND: Tierra.

Puerto A (PA7..PA0): El puerto A es un puerto de 8-bit bidireccional configurable como


entrada o como salida. Los pines del puerto pueden proporcionar resistencias pull-up internas
(seleccionadas por cada bit). Los buffers de salida del puerto A pueden asumir 20 mA y pueden
manejar directamente los displays de un LED. Cuando los pines PA0..PA7 son usados como
entradas se pone externamente a pull-low y generan corriente si las resistencias internas de pullup se activan. Los pines del puerto A estn en tri-estado cuando se pone activa una condicin de
Reset, aun cuando no est activo el reloj.
Cuando se usa una SRAM externa, el puerto A sirve como direccin/dato multiplexado de
entrada/salida

Puerto B (PB7 .. PB0): El puerto B es un puerto bidireccional de I / O de 8-bit con


resistencias internas de pull-up. Los buffers de salida del puerto B pueden asumir 20 mA. Como
entradas, los pines del puerto B que estn a pull-low, pueden generar corriente si las resistencias
de pull-up se activan. Los pines del puerto B estn en tri-estado cuando se pone activa una
condicin de Reset, aun cuando no est activo el reloj.
El puerto B tambin sirve para las funciones de varias caractersticas especiales de los
AT90S8515 como se ve en la seccin "Puertos de I/O".

Puerto C (PC7 .. PC0): El puerto C es un puerto bidireccional de I / O de 8-bit con


resistencias internas de pull-up. Los buffers de salida del puerto C pueden asumir 20 mA. Como
entradas, los pines del puerto C que estn a pull-low, pueden generar corriente si las resistencias
de pull-up se activan. Los pines del puerto C estn en tri-estado cuando se pone activa una
condicin de Reset, aun cuando no est activo el reloj.
El puerto C tambin sirve como direccin de salida cuando se usa la SRAM externa.

46

Puerto D (PD7 .. PD0): El puerto D es un puerto bidireccional de I / O de 8-bit con


resistencias internas de pull-up. Los buffers de salida del puerto D pueden asumir 20 mA. Como
entradas, los pines del puerto D que estn a pull-low, pueden generar corriente si las resistencias
de pull-up se activan. Los pines del puerto D estn en tri-estado cuando se pone activa una
condicin de Reset, aun cuando no est activo el reloj.
El puerto D tambin sirve para las funciones de varias caractersticas especiales de los
AT90S8515 como se ve en la seccin "Puertos de I/O".

RESET: Entrada de Reset. Un nivel bajo en este pin de ms de 50 ns puede generar un


Reset, aun cuando el reloj no est corriendo. El Reset no se garantiza que se produzca con pulsos
ms cortos.

XTAL1:

Entrada del oscilador y entrada al circuito que opera con el reloj interno.

XTAL2:

Salida del oscilador.

ICP: ICP es el pin de entrada para la funcin de captura de entrada del Timer/Contador1.

OC1B:
OC1B es el pin de salida para la funcin B de comparacin de de salida del
Timer/Contador1.

ALE: ALE es usada cuando la memoria externa se habilita. El microcontrolador AT90S8515


permite la ampliacin de su memoria SRAM a travs de una memoria externa. El uso de este pin
es necesario para acceder a la memoria ya que es el Address Latch Enable.
El pin ALE es usado para asegurar la direccin de bajo orden (8 bit) en un latch de
direccin durante el primer ciclo de acceso y los pines AD0-7 se usan para los datos durante el
segundo ciclo de acceso.

OSCILADOR DE CRISTAL

47

XTAL1 y XTAL2 son la entrada y salida, respectivamente, de un amplificador inversor


que puede configurarse para el uso como un oscilador on-chip, como se muestra en la
figura 3. Incluso puede usarse un cristal de cuarzo o un resonador cermico. Para manejar
el dispositivo desde una fuente del reloj externo, XTAL2 debe quedar desconectado
mientras se est manejando XTAL1 como se muestra en la figura 4.

Figura 3. Conexiones del Oscilador

Nota: Cuando se use el oscilador MCU como reloj de un dispositivo externo, un buffer HC debe
conectarse como se indica en la figura 3.

48

Figura 4. Configuracin del reloj externo

49

A continuacin se describe la arquitectura del microprocesador.

Visin de conjunto de la arquitectura


 Figura de la arquitectura del AT90S8515
 Figura de los mapas de memoria
Archivo de registro de propsito general
ALU Unidad Aritmtico-lgica
Memoria de Programa FLASH Programable en Sistema
Memoria de datos SRAM Interna y Externa
Modos de direccionamiento de programa y datos
Memoria de datos EEPROM
Tiempos de acceso a memoria y de ejecucin de instruccin
Memoria de I/O
 Registro de estado
 Puntero de pila
Manejo de Reset e interrupciones
Modos de descanso

50

VISIN DE CONJUNTO DE LA ARQUITECTURA


El concepto de acceso rpido al archivo de registro contiene 32 x 8-bit registros de trabajo de
propsito general con un tiempo de acceso de un solo ciclo de reloj. Esto significa que durante un
solo ciclo de reloj, se ejecuta una operacin de ALU (Unidad Aritmtico-Lgica). Dos operandos
son la salida del archivo de registro, la operacin se ejecuta y el resultado se guarda en el archivo
de registro en un ciclo de reloj.
Pueden usarse seis de los 32 registros como tres punteros de registro de direccin indirectos
para el direccionamiento del espacio de datos, habilitando clculos de direccin eficaces.
Tambin se usa uno de los tres punteros de direccin para observar la tabla de constantes. Estos
registros de funciones agregados son los registros de 16-bit X, Y y Z.
La ALU soporta funciones aritmticas y lgicas entre los registros o entre una constante y
un registro. Tambin se ejecutan operaciones de un nico registro en la ALU.
Adems del funcionamiento del registro, los modos de direccionamiento de memoria
convencionales pueden usarse tambin en el archivo de registro. Esto es habilitado por el hecho
que al archivo de registro se le asignan las 32 direcciones de la parte baja del espacio de datos
($00 - &1F), permitindoles ser accedidos como si ellos fueran posiciones de memoria ordinarias.
El espacio de memoria de I/O contiene 64 direcciones para las funciones perifricas de la
CPU como los registros de control, Timer/Contadores, convertidores A/D y otras funciones de
I/O. La memoria de I/O puede ser accedida directamente o con las direcciones de espacio de
datos de esos archivos de registro , $20 - $5F.
El AVR utiliza el concepto de arquitectura Harvard, con memorias separadas y buses para
programa y datos. La memoria de programa se ejecuta con un sistema de dos fases. Mientras una
instruccin est ejecutndose, la siguiente instruccin se pre-extrae de la memoria de programa.
Este concepto permite varias instrucciones en cada ciclo de reloj. La memoria de programa es la
memoria FLASH programable en el sistema.

Con las instrucciones de salto relativo (relative jump) y llamada (call), se acceden
directamente los 4K de espacio de direcciones. La mayora de las instrucciones de los AVR tiene
el formato simple de palabra (word) de 16-bit. Cada direccin de memoria de programa contiene
una instruccin de 16 o 32 bit.

Durante las interrupciones y las llamadas a subrutinas, la direccin de retorno del


contador de programa (PC) se guarda en la pila. La pila est de forma acertada situada en
la SRAM de datos general y por consiguiente, el tamao de la pila est slo limitado por
el tamao total de la SRAM y por el uso de la SRAM. Todos los programas del usuario
deben inicializar el SP en la rutina de Reset (antes de la ejecucin de subrutinas o
51

interrupciones). El puntero de pila (SP) de 16 bit es accesible para lectura y escritura en


el espacio de I/O.
Los 512 byte de la SRAM de datos pueden ser accedidos fcilmente a travs de los cinco modos
de direccionamiento diferentes soportados en la arquitectura AVR. Los espacios de memoria en la
arquitectura AVR son todos mapas de memoria lineales y regulares.

Figura 5. Arquitectura del AVR RISC AT90S8515

52

Un mdulo de interrupcin flexible tiene sus registros de control en el espacio de I/O con
un bit de interrupcin global adicional de habilitacin en el registro de estado. Todas las
diferentes interrupciones tienen un vector de interrupcin separado en la tabla de vectores
de interrupcin al principio de la memoria de programa. Las diferentes interrupciones
tienen prioridad de acuerdo con la posicin de vector de interrupcin. El ms bajo tiene la
direccin del vector de interrupcin y el ms alto la prioridad.

Figura 6. Mapas de Memoria

53

ARCHIVO DE REGISTRO DE PROPSITO GENERAL.

La siguiente figura 7. Muestra la estructura de los 32 registros de trabajo de propsito general en


el CPU.

54

Figura 7. Registros de trabajo de propsito


general de la CPU de un AVR
Todas las instrucciones de operaciones de registro tienen en el set de instrucciones acceso directo
y acceso de un simple ciclo a todos los registros. La nica excepcin son las cinco constantes
aritmticas y las instrucciones lgicas SBCI, SUBI, CPI, ANDI y ORI entre una constante y un
registro, y la instruccin de LDI para carga de datos constantes inmediatos. Estas instrucciones se
aplican a la segunda mitad de los registros en el archivo del registro (R16..R31). Las operaciones
generales SBC, SUB, CP, AND y OR, y todas las otras operaciones entre dos registros o en un
solo registro, se aplica al archivo de registro entero.

Como se muestra en la figura 7, cada registro tiene asignada una direccin de memoria de datos y
los traza directamente en las primeras 32 posiciones del espacio de datos de usuario. Aunque no
estn fsicamente implementadas como direcciones de SRAM, esta organizacin de memoria
proporciona gran flexibilidad en el acceso a los registros, como los registros X, Y y Z para
apuntar a cualquier registro en el archivo.
55

Registros -X, -Y y -Z

Los registros R26..R31 tienen algunas funciones agregadas a su uso de propsito general.
Estos registros son punteros de direccin para direccionamiento indirecto del espacio de
datos. Los tres registros de direccionamiento indirecto X, Y y Z se definen como:

Figura 8. Registros X, -Y y Z
En los diferentes modos de direccionamiento estos registros de direccin tienen funciones como
desplazamiento fijo, incremento automtico y decremento (vea las descripciones para las
diferentes instrucciones).

LA ALU .- Unidad Lgica Aritmtica.

El alto desempeo de la ALU opera en conexin directa con todos los 32 registros de trabajo de
propsito general. Las operaciones de la ALU en los registros dentro del archivo de registros son
ejecutados en un solo ciclo de reloj. .Las operaciones de la ALU son divididas dentro de 3
categoras principales como son Aritmtica, Lgica y funcin de bit.

56

MEMORIA DE PROGRAMA FLASH PROGRAMABLE EN SISTEMA.

El AT90S8515 contiene 8Kbytes de memoria flash programable on-chip para


almacenaje de programa. Desde que todas las instrucciones son de 16 o 32 bits de
palabra, la flash es organizada como 4K x 16. La memoria flash tiene una duracin de por
lo menos 1000 ciclos de escritura / borrado. El AT90S8515 el contador de programa (PC)
es de 12 bits, de este modo se dirige alas 4096 direcciones de memoria de programa.
MEMORIA DE DATOS SRAM INTERNA Y EXTERNA
En la siguiente figura se presenta como esta organizada la memoria SRAM del AT90S8515.

57

Figura 9. Organizacin de la SRAM


Las 608 posiciones de memoria de datos ms bajas direccionan el archivo de Registro, la
memoria de I/O y la memoria de datos SRAM interna. Las primeras 96 posiciones direccionan el
archivo de Registro + la memoria de I/O, y las siguientes 512 posiciones direccionan la memoria
de datos SRAM interna. Se puede poner una SRAM de datos externa optativa en el mismo
espacio de memoria SRAM. Esta SRAM puede ocupar las posiciones que siguen a la SRAM
interna y puede llegar hasta 64K - 1, dependiendo del tamao de la SRAM.
58

Cuando las direcciones de acceso del espacio de memoria de datos exceden las posiciones de la
SRAM interna de datos, se accede a la SRAM de datos externa usando las mismas instrucciones
que para el acceso a la memoria SRAM de datos interna. Cuando se accede al espacio de datos
interno, los pines de strobe de lectura y escritura (RD' y WR') estn inactivos durante todo el ciclo
de acceso. El funcionamiento de la SRAM externa es habilitado poniendo a 1 el bit SRE en el
registro MCUCR.

Para el acceso a la SRAM externa toma un ciclo de reloj adicional por byte comparado con el
acceso a la SRAM interna. Esto significa que los rdenes LD, ST, LDS, STS, PUSH y POP
toman un ciclo de reloj adicional. Si la pila se sita en la SRAM externa, las llamadas y el retorno
de subrutinas y las interrupciones toman dos ciclos de reloj extra porque el contador de programa
de 2 byte necesita un PUSH y un POP. Cuando se usa la interface de SRAM externa con estado
de espera, se usan dos ciclos de reloj adicionales por byte. Esto tiene el efecto siguiente: Las
instrucciones de transferencia de datos toman dos ciclos de reloj extras, mientras que las
interrupciones, llamadas y retorno de subrutina necesitarn cuatro ciclos de reloj ms que lo
especificado en el manual de juego de instrucciones.

Los cinco modos de direccionamiento diferentes para la memoria de datos son: Directo, Indirecto,
Indirecto con Desplazamiento, Indirecto con Pre-decremento e Indirecto con Post-incremento. En
el archivo de registro, los registros R26 a R31 ofrecen registros puntero de direccionamiento
indirecto.

El direccionamiento directo alcanza todo el espacio de datos.

El modo Indirecto con desplazamiento ofrece 63 posiciones de direccin que se extiende desde la
parte baja de direcciones dadas por los registros Y o Z.

Al usar los modos de direccionamiento indirecto de registros con pre-decremento y post-incremento


automtico, los registros de direcciones X, Y y Z son decrementados e incrementados.

Los 32 registros de trabajo de propsito general, 64 registros de I/O, los 512 bytes de SRAM de
datos interna y los 64K bytes de la SRAM de datos externa optativos en los AT90S8515 son
todos accesibles a travs de todos estos modos de direccionamiento.

59

Vea la prxima seccin para una descripcin detallada de los diferentes modos de
direccionamiento.

Modos de direccionamiento de programa y datos


o
o
o
o
o
o
o
o
o
o
o

Registro Directo, Registro simple RD


Registro Directo, dos registros Rd y Rr
I/O Directo
Dato directo
Dato indirecto con desplazamiento
Dato indirecto
Dato indirecto con pre-decremento
Dato indirecto con post-incremento
Direccionamiento de una Constante usando la
Instruccin LPM
Direccionamiento de programa indirecto, IJMP e
ICALL
Direccionamiento de memoria relativo, RJMP y
RCAL

MODOS DE DIRECCIONAMIENTO DE PROGRAMA Y DATOS


El engrandecido microcontrolador RISC AVR AT90S8515 soporta poderosos y eficientes modos
de direccionamiento para acceso a la memoria de programa (FLASH) y memoria de dato (SRAM,
Archivo de Registro y Memoria I/O). Esta seccin describe los diferentes modos de
direccionamiento soportada por la arquitectura AVR. En al parte de OP se presenta la parte del
cdigo de operacin de la instruccin de la palabra. No todas las figuras muestran la localidad
exacta de los bits de direccionamiento.

REGISTRO DIRECTO, REGISTRO UNICO RD.

Figura 10. Direccionamiento de Registro nico Directo.

60

El operando esta contenido en registro d(Rd).

REGISTRO DIECTO, DOS REGISTROS RD Y


RR
Figura 11. Direccionamiento de Registro Directo,
dos registros

61

Los operandos estn contenidos en los registros r(Rr) y d(Rd). El resultado es


almacenado en el registro d(Rd).

I/O DIRECTO

Figura 12. Direccionamiento Directo I/O

La direccin del operando esta contenido en 6 bits de la instruccin de la palabra. n es la


direccin del registro destino o fuente.

DATO DIRECTO

Figura 13. Direccionamiento de Dato Directo

62

Los 16 bits de la direccin de dato esta contenido en el 16 LSBs de dos instrucciones de


palabra Rd/Rr especifica el registro de destino fuente.

DATO INDIRECTO CON DESPLAZAMIENTO

Figura 14. Dato Indirecto con Desplazamiento

63

La direccin del operando es el resultado, sumando el contenido del registro Y o Z con la


direccin contenido en 6 bits de la palabra de instruccin.

DATO INDIRECTO

Figura 15. Direccionamiento de Dato Indirecto

Direccin del operando es el contenido del registro X, Y o Z.

DATO INDIRECTO CON PREDECREMENTO

Figura 16. Direccionamiento de Dato Indirecto con Predecremento

64

El registro X, Y o Z es decrementado antes de la operacin. La direccin de operando esta en el


contenido del registro X, Y o Z que es decrementado.

DATO INDIRECTO CON


POSTINCREMENTO

Figura 17. Direccionamiento de dato indirecto con postincremento

65

El registro X, Y o Z es incrementado despus de la operacin. La direccin de operando es el


contenido del registro X, Y o Z previo hacia lo incrementado.

DIRECCIONAMIENTO DE UNA
CONSTANTE USANDO LA INSTRUCCIN LPM

Figura 18. Cdigo de Memoria del Direccionamiento de una Constante

La direccin del byte constante es especificado por el contenido del registro Z. La


seleccin de la palabra 15 MSBs con direccin (0-4K) y LSB, seleccin del byte bajo era
limpiado (LSB=0) o byte alto si se activa (LSB=1).
DIRECCIONAMIENTO DE PROGRAMA
INDIRECTO, IJMP Y ICALL

Figura 19. Direccionamiento de Memoria de Programa Indirecto

66

La ejecucin del programa continua en la direccin contenida por el registro Z(i.e. el PC


esta cargado con el contenido del registro Z).

DIRECCIONAMIENTO DE PROGRAMA
RELATIVO, RJMP Y RCALL

Figura 20. Direccionamiento de Memoria de Programa Relativa

67

La ejecucin del programa continua en la direccin PC+K+1. La direccin relativa K es


2048 a 2047.
MEMORIA DE DATOS EEPROM
Los AT90S8515 contienen 512 bytes de memoria de datos EEPROM. Est organizado como un
espacio de datos separado, en el que pueden leerse y escribirse simples bytes. La EEPROM tiene
una duracin de por lo menos 100.000 ciclos del escritura/borrado. El acceso entre la EEPROM y
el CPU se describe en el captulo dedicado a la EEPROM y especifica los registros
de direccin de la EEPROM, el registro de datos de la EEPROM y el registro de control de la
EEPROM

TIEMPOS DE ACCESO A MEMORIA Y DE EJECUCIN DE INSTRUCCIN

Esta seccin describe los conceptos de temporizacin de acceso general para la ejecucin de la
instruccin y para el acceso de memoria interna.
El CPU del AVR es manejada por el reloj del sistema , directamente generado por el cristal
del reloj externo para el chip. Ninguna divisin interna del reloj es usada.

La figura siguiente muestra de forma paralela la bsqueda y la ejecucin de la


instruccin habilitadas por la arquitectura Harvard y el concepto de archivo de registro de
rpido acceso. ste es el concepto bsico para obtener ms de 1 MIPS por MHz con los
nicos resultados correspondientes por funciones por costo, funciones por reloj y
funciones por unidad de potencia.

Figura 21. Bsqueda y ejecucin de la instruccin de forma paralela


La figura siguiente muestra el concepto de temporizacin interna para el archivo de
registro. En un solo ciclo de reloj se ejecuta una operacin de ALU que usa dos
operadores registro y el resultado se guarda en el registro destino.
68

Figura 22. Operacin ALU de simple ciclo

El acceso a SRAM de datos interna es realizado en dos ciclos de reloj de sistema como se
describe a continuacin.

Figura 23. Ciclos de


acceso a Data SRAM on-chip

Vea " Interface a SRAM Externa" para tener una descripcin del acceso a SRAM externa.

69

La definicin del espacio de I/O de los AT90S8515 se muestra en siguiente tabla.

70

Direccin

Nombre

Funcin

$3F ($5F)

SREG

Registro de estado

$3E ($5E)

SPH

Puntero de pila Alto

$3D ($5D)

SPL

Puntero de pila Bajo

$3B ($5B)

GIMSK

Registro de mscara de interrupcin general

$3A ($5)

GIFR

Registro de Bandera de interrupcin general

$39 ($59)

TIMSK

Registro de mscara del Timer/Contador

$38 ($58)

TIFR

Registro de Bandera del Timer/Contador

$35 ($55)

MCUCR

Registro de control general del MCU

$33 ($53)

TCCR0

Registro de control del Timer/Contador 0

$32 ($52)

TCNT0

Timer/Contador 0 (8-bit)

$2F ($4F)

TCCR1A

Registro de control A del Timer/Contador 1

$2E ($4E)

TCCR1B

Registro de control B del Timer/Contador 1

$2D ($4D)

TCNT1H

Byte alto del Timer/Contador 1

$2C ($4C)

TCNT1L

Byte bajo del Timer/Contador 1

$2B ($4B)

OCR1AH Byte alto, registro de comparacin de salida A del T/C1

$2A ($4A)

OCR1AL

$29 ($49)

OCR1BH Byte alto, registro de comparacin de salida B del T/C1

$28 ($48)

OCR1BL

Byte bajo, registro de comparacin de salida B del T/C1

$25 ($45)

ICR1H

Byte alto, registro de captura de entrada del T/C1

$24 ($44)

ICR1L

Byte bajo, registro de captura de entrada del T/C1

$21 ($41)

WDTCR

Registro de control del Timer Watchdog

$1F ($3F)

EEARH

Byte alto, registro de direccin de la EEPROM

$1E ($3E)

EEARL

Byte bajo, registro de direccin de la EEPROM

$1D ($3D)

EEDR

Registro de datos de la EEPROM

Byte bajo, registro de comparacin de salida A del T/C1

71

$1C ($3C)

EECR

Registro de control de la EEPROM

$1B ($3B)

PORTA

Registro de datos, Puerto A

$1A ($3A)

DDRA

Registro de direccin de datos, Puerto A

$19 ($39)

PINA

Pines de entrada, Puerto A

$18 ($38)

PORTB

Registro de datos, Puerto B

$17 ($37)

DDRB

Registro de direccin de datos, Puerto B

$16 ($36)

PINB

Pines de entrada, Puerto B

$15 ($35)

PORTC

Registro de datos, Puerto C

$14 ($34)

DDRC

Registro de direccin de datos, Puerto C

$13 ($33)

PINC

Pines de entrada, Puerto C

$12 ($32)

PORTD

Registro de datos, Puerto D

$11 ($31)

DDRD

Registro de direccin de datos, Puerto D

$10 ($30)

PIND

Pines de entrada, Puerto D

$0F ($2F)

SPDR

Registro de datos de I/O del SPI

$0E ($2E)

SPSR

Registro de estado del SPI

$0D ($2D)

SPCR

Registro de control del SPI

$0C ($2C)

UDR

Registro de datos de I/O de la UART

$0B ($2B)

USR

Registro de estado de la UART

$0A ($2A)

UCR

Registro de control de la UART

$09 ($29)

UBRR

Registro de Baud Rate de la UART

$08 ($28)

ACSR

Registro de control y estado del Comparador Analgico

Tabla 1. I/0 AT90S8515


Nota: Las posiciones reservadas o no usadas no se muestran en la tabla 1

Todos los I/Os y perifricos del AT90S8515 estn en el espacio de I/O. Las posiciones de I/O son
accedidas por las instrucciones IN y OUT transfiriendo datos entre los 32 registros de trabajo de
propsito general y el espacio de I/O. Los registros de I/O dentro del rango de direcciones $00 $1F son accesibles a nivel de bit directamente usando las instrucciones SBI y CBI. En estos
72

registros, el valor de simples bits puede ser verificado usando las instrucciones SBIS y SBIC
(vaya a la seccin del set de instrucciones para ms detalles). Al usar las rdenes especficas de
I/O, IN y OUT, deben usarse las direcciones de I/O $00 - $3F. Al direccionar registros de I/O
como SRAM, debe agregarse $20 a esta direccin. Todas las direcciones de registros de I/O a lo
largo de esta web son mostradas con la direccin de SRAM entre parntesis.

Para la compatibilidad con dispositivos futuros, si se accede a los bits reservados, deben ser
escritas a cero. Las direcciones de memoria de I/O reservadas nunca deben ser escritas.

Algunas de las banderas de estado son borrados escribiendo un "1" lgico en ellos. Observe que
las instrucciones CBI y SBI podrn operar en todos los bits en el registro de I/O, escribiendo un
"1" en cualquier bandera leda como set y borrando as la bandera. Las instrucciones CBI y SBI
slo trabajan con los registros $00 a $1F.

73

EL REGISTRO DE ESTADO - SREG

El registro de estado se denomina SREG y se encuentra en la direccin $3F($5F). La

descripcin de los bits es la siguiente

Todos los bits de este registro son de escritura o lectura. El valor inicial de este registro es 0x00.
La descripcin de los bits es la siguiente:
Bit 7-I: Habilitacin de Interrupcin Global:
Este bit es el que permite habilitar las interrupciones cuando est a 1. El control individual de las
interrupciones es configurado en los registros GIMSK y TIMSK. Si este bit est a 0 todas las
interrupciones estn deshabilitadas independientemente del estado de los registros GIMSK y
TIMSK. Este bit es puesto a 0 por hardware en el momento en el que se produce la interrupcin y
es puesto de nuevo a uno tras la instruccin RETI que sirve para producir el retorno de
interrupcin.
74

Bit 6-T: Almacenamiento de Copia de bit:


Las instrucciones para copiar bits BLD (Bit LoaD) y BST (Bit STore) utilizan el bit T como
fuente o como destino para un bit. Un bit de un registro del archivo de registros puede copiarse en
el bit T mediante la instruccin BST, y un bit en T puede ser copiado en un bit de un registro del
archivo de registros mediante la instruccin BLD.
Bit 5-H: Half Carry Flag:
Esta bandera indica que se ha producido un half carry en algunas operaciones aritmticas.
Ver la descripcin del set de instrucciones para una informacin detallada.
Bit 4-S: Bit de Signo, S = N V:
El bit-S realiza una operacin exclusiva entre los bits N y el bit V del registro estado.
Ver la descripcin del set de instrucciones para una informacin detallada.
Bit 3-V: Bandera de Desbordamiento de complemento a dos:
La bandera V se pone a 1 al producirse desbordamiento al realizar operaciones con complemento
a 2.
Ver la descripcin del set de instrucciones para una informacin detallada.
Bit 2-N: Negative Flag:
La bandera N indica un resultado negativo tras realizar una operacin aritmtica o una lgica. Ver
la descripcin del set de instrucciones para una informacin detallada.
Bit 1-Z: Zero Flag:
La bandera Z indica un resultado de 0 tras realizar una operacin aritmtica o una lgica.

Ver la descripcin del set de instrucciones para una informacin detallada.


Bit 0-C: Carry Flag:
Esta bandera indica un acarreo tras realizar una operacin aritmtica o una lgica.
Observe que el Registro de Estado no se guarda automticamente al entrar en una rutina de
interrupcin y se restaura al volver de una rutina de interrupcin. Debe ser manipulado por
software.

Puntero de Pila SP

75

El puntero de pila general de la tecnologa AVR es de 16 bits y est construido sobre dos registros
de 8 bits localizados en las posiciones $3E($5E) y $3D($5D). Dado que el microcontrolador
AT90S8515 soporta 64 kB de memoria externa SRAM, los 16 bits son utilizados:

Todos los bits son de lectura y escritura y en estado inicial los 16 bits estn a cero.

El puntero de Pila apunta al rea de pila de la SRAM de datos donde se localizan la pila
de interrupcin y de subrutina. Este espacio de la pila en la SRAM de datos debe ser
definido por el programa antes de que se ejecute cualquier llamada a subrutina o se
habiliten interrupciones. El puntero de pila debe estar a set para apuntar por encima de
$60. El puntero de pila es decrementado en 1 cuando los datos se introducen en la pila
con la instruccin PUSH y es decrementado en 2 cuando una direccin se introduce en la
pila con llamadas a subrutinas e interrupciones. El puntero de pila es incrementado en 1
cuando el dato se saca de la pila con la instruccin POP y es incrementado en 2 cuando
una direccin se saca de la pila con retorno de subrutina RET o retorno de interrupcin
RETI.

76

Manejo de reset e interrupciones


o
o
o

Fuentes de reset
Reset de Power-on
Reset externo

o Reset de Watchdog
o
o
o
o
o
o
o

Manejo de interrupcin
Registro de mascara de interrupcin general GIMSK
Registro de bandera de interrupcin general - GIFR
Registro de mascara de interrupcin
Timer/Contador-TIMSK
Registro de bandera de interrupcin
Timer/Contador - TIFR
Interrupciones externas
Tiempo de respuesta de interrupcin
Registro de control MCU MCUCR

del
del

Manejo del RESET e INTERRUPCIONES.


El microcontrolador AT90S8515 posee 12 diferentes fuentes de interrupcin. Todas las
interrupciones tienen un vector de reset propio en el espacio de memoria del programa.
Todas las interrupciones tienen asignados unos bits que deben ser puestos a uno
conjuntamente con el bit I del registro estado para que las interrupciones puedan
producirse.
Las direcciones ms bajas del espacio de memoria de programa son automticamente
definidas para el vector de Reset y para los vectores de interrupcin. La lista completa de vectores
se muestra en la siguiente tabla. Esta lista tambin determina los niveles de prioridad de las
77

diferentes interrupciones. La mayor prioridad la tiene el vector de RESET y a continuacin el


vector INT0 y as sucesivamente.

Tabla 2. Vectores de Reset e Interrupcin


Fuentes de RESET
Los AT90S8515 tienen tres fuentes de reset:

Reset de Power-on. El MCU se resetea cuando el voltaje de suministro est debajo del
umbral de Power-on (VPOT).

Reset externo. El MCU se resetea cuando un nivel bajo est presente en el pin de RESET
durante ms de 50 ns.

Reset del Watchdog. El MCU se resetea cuando el periodo del timer watchdog expira y el
watchdog est habilitado.

Durante el reset, todos los registros de I/O se ponen a sus valores iniciales y el programa
empieza su ejecucin desde la direccin $000 hasta $00d. La instruccin puesta en la
direccin $000 debe ser la instruccin RJMP (salto relativo) a la rutina de manejo de
Reset. Si el programa nunca habilita una fuente de la interrupcin, los vectores de
interrupcin no se usan y el cdigo de programa regular puede ponerse en estas
posiciones. El diagrama del circuito en la siguiente figura muestra la lgica de Reset.

78

Figura 24.
Lgica de Reset
La Tabla que se muestra a continuacin define la temporizacin y los parmetros elctricos de la
circuitera de Reset.

Tabla 3. Caractersticas del Reset (Vcc = 5.0 v)


(*) El RESET de Power-on no funcionar a menos que la tensin de suministro est por debajo de VPOT (bajada).

El usuario puede seleccionar el tiempo de comienzo de acuerdo con el comienzo de un


oscilador tpico. El nmero de ciclos del oscilador del WDT usado para cada tiempo de
salida se muestra en tabla siguiente. La frecuencia del Oscilador del watchdog es voltajedependiente.

79

Tabla 4. Nmero de ciclos del oscilador del Watchdog

Reset de Power-on
Un circuito de Reset de Power-on (POR) asegura que el dispositivo se resetea desde el
power-on. Un reloj del Timer interno del oscilador del Watchdog le impide al MCU
empezar hasta despus de un cierto periodo despus de que VCC ha alcanzado la tensin
umbral de Power-on (VPOT), sin tener en cuenta el tiempo de subida de VCC (vea la
siguiente figura). El bit FSTRT de fusible en la Flash puede programarse para dar un
tiempo de comienzo ms corto si un resonador cermico o cualquier otro oscilador de
rpido comienzo es usado como reloj del MCU.

Figura 25. MCU Start-up, RESET ' y


VCC unidos

Si el retraso de comienzo es suficiente, el RESET puede conectarse directamente a VCC


o va una resistencia de pull-up externa. Manteniendo el bit bajo durante un periodo
despus de que VCC se ha aplicado, el periodo de Reset de Power-on puede extenderse.
Observe la figura para un ejemplo de temporizacin.

80

Figura 26. MCU Start-up, RESET ' controlado externamente

Reset externo

Un Reset externo es generado por un nivel bajo en el pin de RESET '. Los pulsos de
Reset ms largos que 50 ns generarn un Reset, aunque no est corriendo el reloj. No se
garantiza que pulsos ms cortos generen un Reset. Cuando la seal aplicada alcanza los
niveles de tensin Umbral de Reset (VRST) en su parte positiva, el Timer de retraso
inicia el MCU despus de que haya pasado el periodo de Time-out tTOUT.

Figura 27. Reset externo durante el funcionamiento


81

Reset del Watchdog

Cuando el Watchdog se desborde, generar un corto pulso de Reset de 1 ciclo de XTAL


de duracin. El Timer de retraso empieza a contar el periodo de time-out (tTOUT) en el
flanco de bajada de este pulso. Vaya al apartado "Watchdog" para ver ms detalles del
funcionamiento del Watchdog.

Figura 28. Reset de Watchdog durante el funcionamiento

Manejo de interrupcin

82

El AT90S8515 tiene dos registros de control de enmascaramiento de interrupciones de 8-bit;


GIMSK (Registro de enmascaramiento de interrupciones general) y TIMSK (Registro de
enmascaramiento de interrupciones del Timer/Contador).

Cuando una interrupcin ocurre, el bit I de habilitacin de interrupcin global es borrado


(cero) y todas las interrupciones estn deshabilitadas. El software del usuario puede poner
a set (uno) el bit I para habilitar interrupciones anidadas.
El bit I est a set (uno) cuando se ejecuta una instruccin de retorno de interrupcin (RETI).

Para interrupciones activadas por eventos que pueden permanecer estticos, la bandera de
interrupcin est a set cuando el evento ocurre. Si la bandera de interrupcin es borrada y la
condicin de interrupcin persiste, la bandera no estar a set hasta que el evento ocurra la
prxima vez.

Cuando el Contador de Programa es llevado al vector de interrupcin para ejecutar la rutina de


manejo de interrupcin, el hardware borra la bandera correspondiente que genera la interrupcin.
Algunos de las banderas de interrupcin tambin pueden ser borrados escribiendo un "1" lgico
en la posicin de bit de la bandera.

Si una condicin de interrupcin ocurre cuando el bit de habilitacin de interrupcin


correspondiente est borrado (cero), la bandera de interrupcin se pondr a set y se
recordar hasta que el bit de interrupcin se habilite o la bandera sea borrado por
software.
Si una o ms condiciones de interrupcin ocurren cuando el bit de habilitacin de interrupcin
global est borrado (cero), las bandera(s) de interrupcin correspondiente se pondr a set y se
recordar hasta que el bit de habilitacin global de interrupcin est a set (uno) y ser ejecutado
por orden de prioridad.

Tenga en cuenta que la interrupcin de nivel externa no tiene un Bandera y slo se recordar
mientras la condicin de interrupcin est activa.

83

Interrupciones

El microcontrolador AT90S8515 tiene dos registros de 8 bits para el control de interrupciones, el


GIMSK registro general de interrupciones y el TIMSK registro para interrupciones de los
Timer/Contadores. Cuando se produce una interrupcin el bit I del registro estado que permite
que se puedan producir interrupciones es puesto a cero de modo que todas las interrupciones
quedan deshabilitadas. Una vez atendida la interrupcin y ejecutado el cdigo de programa
necesario el usuario tiene que volver a poner este bit a uno (instruccin SEI) para que de nuevo
las interrupciones puedan producirse. Cuando el contador de programa se sita en el vector
correspondiente para ejecutar una interrupcin y as ejecutar la rutina programada la bandera que
seala la fuente de interrupcin que se encontrar en el registro GIFR o en el TIFR es puesto
automticamente a cero.

84

Registro de enmascaramiento de interrupcin general- GIMSK.

Este registro sirve para activar en el microcontrolador la posibilidad de actuar segn


fuentes externas de interrupcin. El valor inicial de este registro es 0x00.

Bit 7- INT 1: Habilitacin de la peticin de interrupcin externa 1.


Cuando este bit es puesto a 1 y el bit I del registro de estado tambin est a 1, el
microcontrolador queda configurado para admitir una interrupcin externa por la patita 3 del
puerto D. Tambin es posible definir si la interrupcin se quiere que sea por nivel alto o por nivel
bajo. Esto se selecciona mediante los bits 1 y 0 del registro de control general del MCU (registro
MCUCR). Una interrupcin externa en INT1 se producir incluso si el pin 3 del puerto D est
configurado como salida. La interrupcin correspondiente de la peticin de interrupcin externa 1
se ejecuta desde la direccin de memoria de programa $002.

Bit 6- INT 0: Habilitacin de peticin de interrupcin externa 0.


Cuando este bit es puesto a 1 y el bit I del registro estado tambin est a 1, el microcontrolador
queda configurado para admitir una interrupcin externa por la patita 2 del puerto D. Tambin es
posible definir si la interrupcin se quiere que sea por nivel alto o por nivel bajo. Esto se
selecciona mediante los bits 1 y 0 del registro de control general del MCU (registro MCUCR).
Una interrupcin externa en INT0 se producir incluso si el pin 2 del puerto D est configurado
como salida. El vector correspondiente para ejecutar esta interrupcin desde la direccin de
memoria de programa $001.
85

Bit 50: Bits reservados.


Estos bits estn reservados para el microcontrolador, slo se pueden leer y su estado siempre es
cero.

El registro de bandera de interrupcin general GIFR


Este registro es complemento del registro GIMSK y posee las banderas que sealizan que una
interrupcin en INT1 o en INT0 se ha producido. El valor inicial de este registro es 0x00.

Bit 7 INTF1: Bandera de interrupcin externa 1:


Cuando un flanco en el pin INT1 activa una peticin de interrupcin, la bandera de interrupcin
correspondiente INTF1, se pone a set (uno). Si el bit I en SREG y el bit de habilitacin de
interrupcin correspondiente INT1 en GIMSK estn a set (uno), el MCU saltar al vector de
interrupcin. La bandera es borrada cuando la rutina de interrupcin se ejecuta. Alternativamente,
la bandera puede ser borrada escribiendo un "1" lgico en l. Esta bandera est siempre borrada
cuando INT1 est configurada como una interrupcin por nivel.

Bit 6 INTF0: Bandera de interrupcin externa 0:

Cuando un flanco en el pin INT0 activa una peticin de interrupcin, la bandera de


interrupcin correspondiente INTF0, se pone a set (uno). Si el bit I en SREG y el bit de
habilitacin de interrupcin correspondiente INT0 en GIMSK estn a set (uno), el MCU
saltar al vector de interrupcin. La bandera es borrada cuando la rutina de interrupcin
se ejecuta. Alternativamente, la bandera puede ser borrada escribiendo un "1" lgico en
l. Esta bandera est siempre borrada cuando INT0 est configurado como una
interrupcin por nivel. El MCU saltara al vector interrupcin $001.
86

Bit 50: Bits reservados.


Estos bits estn reservados para el microcontrolador, slo se pueden leer y su
estado siempre es cero.

Registro de enmascaramiento de interrupcin del


Timer/Contador TIMSK.

El valor inicial de este registro es 0x00.

Bit 7 TOIE1: Habilitacin de interrupcin por desbordamiento del Timer/Contador 1:


Este bit si es puesto a 1 permite que pueda producirse una interrupcin por desbordamiento del
Timer1. Es necesario que el bit I del registro Estado tambin est a 1. Cuando esta interrupcin se
produce el programa salta al vector $006 donde debe encontrarse una instruccin RJMP para
ejecutar el cdigo de programa correspondiente. La interrupcin correspondiente (en el vector
$006) se ejecuta si ocurre un desbordamiento en el Timer/Contador1, es decir, cuando el bit
TOV1 est a set en el registro de banderas de interrupcin del Timer/Contador (TIFR).

Bit 6 OCE1A: Habilitacin de interrupcin de Comparacin A de salida del Timer/Contador


1:
El Timer/Contador1 tiene la posibilidad de realizar comparaciones internas de su estado actual
con el de dos registros de 16 bits llamados OCR1A y OCR1B. Cuando el valor del Timer1
coincide con el de OCR1A y este bit est puesto a 1 adems del bit I del registro estado se
produce una interrupcin. El vector de interrupcin se encuentra en la direccin $004.
Bit 5 OCE1B: Habilitacin de interrupcin de Comparacin B de salida del
Timer/Contador1 :
87

Cuando este bit est puesto a 1 juntamente con el bit I del registro Estado y el valor del registro
de 16 bits OCR1B coindice con el del Timer1 se produce una interrupcin cuyo vector es el $005.

Bit 4: Bit reservado:


Este bit est reservado para el microcontrolador, es de slo lectura y su estado siempre es cero.

Bit 3 TICIE1: Habilitacin de interrupcin de captura de entrada del Timer/Contador1:


Si este bit es puesto a 1 juntamente con el bit I del registro Estado, cuando se produce un evento
en el pin 31 del microcontrolador (ICP) es producida la interrupcin cuyo vector es el $003. El
cdigo que debe ejecutarse tras producirse est interrupcin ser lgicamente el de enviar al
registro de 16 bits ICR1 el valor del Timer1.

Bit 2: Bit reservado:


Este bit est reservado para el microcontrolador, es de slo lectura y su estado siempre es cero.

Bit 1 TOIE0: Habilitacin de interrupcin por desbordamiento del Timer/Contador0:


Este bit si es puesto a 1 permite que pueda producirse una interrupcin por desbordamiento del
Timer0. Es necesario que el bit I del registro Estado tambin est a 1. Cuando esta interrupcin se
produce el programa salta al vector $008.

Bit 0: Bit reservado:


Este bit est reservado para el microcontrolador, es de slo lectura y su estado siempre es cero.

El registro de bandera de interrupciones del Timer/Contador


TIFR.

88

Mediante este registro puede conocerse cual de las posibles causas de interrupcin mediante los
Timer/Contador es la que ha generado una, o tambin puede determinarse cuando los
Timer/Contador son desbordados en su cuenta.

Bit 7 TOV1: Bandera de desbordamiento del Timer/Contador1:


Este bit es puesto a uno cuando ocurre un desbordamiento en el Timer/Contador1. Este bit se
pone a cero cuando se ejecuta el cdigo correspondiente de interrupcin. Tambin es posible
ponerlo a cero mediante software escribiendo un 1 en esta bandera. Cuando el Timer/Contador1
est en modo PWM este bit es puesto a 1 cuando el contador cambia su direccin a la $0000.

Bit 6 OCF1A: Bandera 1A de comparacin de salida:


Esta bandera se pone a uno cuando coinciden los valores del Timer1 con el del registro de 16 bits
OCR1A. Esta bandera puede ser puesta a cero tras ejecutar la correspondiente interrupcin
asociada a este hecho o escribiendo por software un uno en est bit.
El bit OCF1A est a set (uno) cuando se compara el Timer/Contador1 y el dato en OCR1A
(Registro 1A de comparacin de salida). OCF1A es borrado por hardware al ejecutar el vector de
manejo de interrupciones correspondiente. Alternativamente, OCF1A es borrado escribiendo un
"1" lgico en la bandera. Cuando el bit I en SREG, OCIE1A (habilitacin de interrupcin A de
comparacin del Timer/Contador1) y el OCF1A estn a set (uno), se ejecuta la interrupcin de
comparacin del Timer/Contador1.

Bit 5 OCF1B: Bandera 1B de comparacin de salida:


Esta bandera se pone a uno cuando coinciden los valores del Timer1 con el del registro de 16 bits
OCR1B. Esta bandera puede ser puesto a cero tras ejecutar la correspondiente interrupcin
asociada a este hecho o escribiendo por software un uno en est bit.
89

El bit OCF1B est a set (uno) cuando se compara el Timer/Contador1 y el dato en OCR1B
(Registro 1B de comparacin de salida). OCF1B es borrado por hardware al ejecutar el vector de
manejo de interrupciones correspondiente. Alternativamente, OCF1B es borrado escribiendo un
"1" lgico en la bandera. Cuando el bit I en SREG, OCIE1B (habilitacin de interrupcin B de
comparacin del Timer/Contador1) y el OCF1B estn a set (uno), se ejecuta la interrupcin de
comparacin del Timer/Contador1.

Bit 4: Bit reservado:


Este bit est reservado para el microcontrolador, es de slo lectura y su estado siempre es cero.

Bit 3 ICF1: Bandera 1 de Captura de entrada:


Esta bandera se pone a uno para sealar que el valor del Timer/Counter1 ha sido completamente
transferido al registro de 16 bits ICR1. Esta bandera es puesto a cero automticamente tras
ejecutar el correspondiente vector de interrupcin o por software escribiendo en l un uno lgico.
El bit ICF1 est a set (uno) para marcar un evento de captura de entrada, indicando que el valor
del Timer/Contador1 ha sido transferido al registro de captura de entrada (ICR1). ICF1 es borrado
por hardware al ejecutar el vector de manejo de interrupciones correspondiente.
Alternativamente, ICF1 es borrado escribiendo un "1" lgico en la bandera. Cuando el bit I de
SREG, TICIE1 (habilitacin de interrupcin de captura de entrada del Timer/Contador1) y ICF1
estn a set (uno), se ejecuta la interrupcin de captura del Timer/Contador1.

Bit 2: Bit reservado:


Este bit est reservado para el microcontrolador, es de slo lectura y su estado
siempre es cero.

Bit 1 TOV0: Bandera de desbordamiento del Timer/Contador0:


Este bit es puesto a uno cuando ocurre un desbordamiento en el Timer/Contador0. Este bit se
pone a cero cuando se ejecuta el cdigo correspondiente de interrupcin. Tambin es posible
ponerlo a cero mediante software escribiendo un 1 en esta bandera.

El bit TOV0 est a set (uno) cuando ocurre un desbordamiento en el Timer/Contador0.


TOV0 es borrado por hardware al ejecutar el vector de manejo de interrupciones
correspondiente. Alternativamente, TOV0 es borrado escribiendo un "1" lgico en la
bandera. Cuando el bit I de SREG, TOIE0 (habilitacin de interrupcin por
90

desbordamiento del Timer/Contador0) y TOV0 estn a set (uno), se ejecuta la


interrupcin por desbordamiento del Timer/Contador0.
Bit 0: Bit reservado:
Este bit est reservado para el microcontrolador, es de slo lectura y su estado siempre es cero.

Interrupciones Externas.

Las interrupciones externas se pueden realizar mediante los pines INT1 e INT0 que se encuentran
en las patitas 3 y 2 del puerto D respectivamente. Las interrupciones pueden ser producidas por
nivel alto o bajo segn se configure en los bits 0 y 1 del registro MCUCR.
Si son habilitadas, las interrupciones se activarn aun cuando los pines INT0/INT1 se
configuren como salidas. Las interrupciones externas se establecen como se describe en la
especificacin para el registro de control MCU (MCUCR).

Tiempo de respuesta de las Interrupciones.

La ejecucin de la respuesta a una interrupcin es un proceso que tiene una duracin mnima de 4
ciclos de reloj. Despus de estos 4 ciclos de reloj el programa ejecuta el cdigo de programa
correspondiente a la interrupcin producida. Durante este perodo de 4 ciclos de reloj, el Contador
de Programa (2 bytes) es colocado en el Stack, y el Stack Pointer es decrementado en dos
unidades. Tras producirse una interrupcin la instruccin que se ejecutar en el vector
correspondiente ser una de salto RJMP a la rutina de cdigo correspondiente y esta es una
instruccin que tarda dos ciclos de reloj. Si una interrupcin es producida mientras se est
ejecutando una instruccin multiciclo se esperar a que la instruccin finalice de ser ejecutada
antes de atender a la interrupcin.
El retorno de una rutina de interrupcin dura 4 ciclos de reloj. Durante estos 4 ciclos de
reloj el Contador de Programa (2 bytes) es nuevamente cargado con su valor del Stack y el Stack
Pointer es incrementado en dos unidades. Cuando el microcontrolador sale de la ejecucin del
cdigo de interrupcin, vuelve al programa principal y ejecuta exactamente la instruccin que se
encontraba antes de que se produjera la interrupcin.

91

Registro de Control del Microcontrolador MCU MCUCR

Este registro contiene los bits de control para las funciones generales del MCU.

Bit 7 SRE: Habilitacin de la SRAM externa :


Cuando este bit es puesto a 1 es habilitada una memoria externa SRAM, y los pines AD0-7
(puerto A), A8-15 (puerto C), WR y RD (puerto D) son activados. Cuando este pin se pone a cero
la memoria SRAM externa es deshabilitada y las configuraciones del puerto vuelven a su estado
normal de funcionamiento.
92

Bit 6 SRW: Estado de espera de la SRAM externa:


Cuando este bit est a uno, es insertado un ciclo de espera en el tiempo de acceso a una memoria
SRAM externa. Si este bit est a cero el acceso a la memoria SRAM externa es ejecutada con el
esquema normal de tres ciclos.

Bit 5 SE: Habilitacin de descanso:


El bit SE debe ponerse a set (uno) para hacer que los MCU entren en el Modo de descanso
cuando la instruccin SLEEP se ejecuta. Para evitar que el MCU entre en el Modo de descanso, a
menos que sea el propsito del programador, se recomienda poner a set el bit de habilitacin de
descanso (SE) justo antes de la ejecucin de la instruccin SLEEP..

Bit 4 SM: Modo de descanso:


Este bit selecciona entre los dos modos posibles de sleep, el Idle Mode y el Power Down. Cuando
el bit est a 1 se selecciona Power Down y cuando est a 0 Idle Mode.

Bit 3, 2 ISC11, ISC10: Control de percepcin de la interrupcin 1, Bit 1 y Bit 0:


La interrupcin externa 1 es activada cuando el bit correspondiente del registro GIMSK est
activado y cuando el bit I del registro Estado tambin lo est. Pero tambin es posible definir si la
interrupcin en INT1 se quiere que sea por nivel alto o bajo segn se seala en la siguiente tabla:

Tabla 5. Control de percepcin de interrupcin 1

Bit 1, 0 ISC01, ISC00: Control de percepcin de interrupcin 0, Bit 1 y Bit 0:

93

La interrupcin externa 0 es activada cuando el bit INT0 del registro GIMSK est activado y
cuando el bit I del registro Estado tambin. Pero tambin es posible definir por que nivel se quiere
que sea la interrupcin como se muestra en la siguiente tabla:

Tabla 6. Control de percepcin de interrupcin 0


El valor en el pin INTn se comprueba antes de que se detecten flancos. Si se selecciona la
interrupcin por flanco, los pulsos con una duracin mayor que un periodo de reloj del CPU
generarn una interrupcin. Los pulsos mas cortos no garantizan que genere una interrupcin. Si
se selecciona la interrupcin por nivel bajo, este nivel bajo debe mantenerse hasta la realizacin
de la instruccin que actualmente se est ejecutando para generar una interrupcin. Si est
habilitada, una interrupcin activa por nivel generar una demanda de interrupcin mientras el pin
se mantenga a nivel bajo.

Modos de Descanso.

Para entrar en el modo sleep el bit SE del registro MCUCR debe estar activado. Una vez que el
microcontrolador est en SLEEP, si se produce una interrupcin se ejecutar la subrutina de
interrupcin correspondiente y a continuacin se ejecutar la instruccin que se encuentre a
continuacin de la instruccin SLEEP en el programa principal. Cuando se entra en el modo
SLEEP el contenido del archivo de registros, la SRAM y la memoria permanecen inalterados. Si
ocurre un Reset mientras se est en modo SLEEP el microcontrolador despierta y se ejecuta el
programa desde el vector $000.
Nota: Si se utiliza una fuente de interrupcin para despertar al microcontrolador cuando ste se
encuentra en Power Down Mode es necesario que la seal se mantenga durante un perodo
superior a 16 ms que es el tiempo que tarda el oscilador en recuperar su funcionamiento. En caso
contrario, la bandera de interrupcin se pondra a cero antes de que el microcontrolador empezara
la ejecucin de la interrupcin.
94

Modo Idle.
Cuando el bit SM est a cero y se ejecuta la instruccin SLEEP el microcontrolador entra en Idle
Mode, que es un estado en el que se permite a los Timer/Contador, al watchdog y al sistema de
interrupciones que sigan funcionando. Esto permite que el microcontrolador despierte tanto por
interrupciones externas como internas (producidas por los Timer) as como las interrupciones del
Watchdog. Si la interrupcin por el Comparador Analgico no es requerida por el programa del
microcontrolador, el comparador analgico puede ser desactivado mediante el bit ACD del
registro de Control del Comparador Analgico ACSR. Esto reducir el consumo durante el Idle
Mode.

Power Down Mode.

Cuando el bit SM est a 1 la instruccin SLEEP obliga al microcontrolador a entrar en el


modo Power Down Mode. El usuario puede seleccionar si quiere que el Watchdog est
activado durante el Power Down Mode. Si el Watchdog est activado cuando se desborde
har que el microcontrolador se despierte. Si el Watchdog est desactivado, slo un
RESET externo o una interrupcin externa pueden despertar el microcontrolador.





Introduccin
Preescaler del Timer/Contador
Timer/Contador 0 de 8 Bits
95

 Registro de control del T/C 0 TCCR0


 Timer/Contador 0 TCNT0
Timer/Contador 1 de 16 Bits
 Registro de control A - TCCR1A
 Registro de control B - TCCR1B
 Registros TCNT1H y TCNT1L
 Registros de comparacin de salida

 Registros de captura de entrada


 Modo PWM

Timer/Contadores

El AT90S8515 presenta dos Timer/Contadores, uno de 8 bits y otro de 16 bits. Ambos


Temporizadores pueden tener asignado un preescaler individual. Ambos pueden ser usados como
Timers segn la base de tiempos del oscilador interno o como contadores sincronizndose con
eventos externos.
96

Figura 29. Preescaler del Timer/Contador

Los cuatro diferentes tipos de preescalamiento son: CK/8, CK/64, CK/256 y CK/1024 donde CK
es el reloj oscilador. Para los dos Timer/Counters.

Timer/Contador0 de 8 bits

El Timer/Contador 0 de 8 bit puede seleccionar la fuente del reloj de CK, del preescaler CK o de
un pin externo. Adems, puede detenerse como se describe en la especificacin del registro de
control (TCCR0) para el Timer/Contador 0. La bandera de estado de desbordamiento se encuentra
en el registro de banderas de interrupcin (TIFR) del Timer/Contador. Las seales de control se
encuentran en el registro de control (TCCR0) del Timer/Contador 0. Las opciones de habilitar /
deshabilitar interrupciones para el Timer/Contador 0 se encuentran en el registro de
enmascaramiento de interrupciones (TIMSK) del Timer/Contador.

Cuando el Timer/Contador 0 tiene un reloj externo, la seal externa se sincroniza con la


frecuencia del oscilador del CPU. Para asegurar el funcionamiento apropiado del reloj
externo, el tiempo mnimo entre dos transiciones de relojes externos debe ser por lo
97

menos un periodo de reloj interno del CPU. La seal de reloj externo se prueba en el
flanco ascendente del reloj interno del CPU.
Las caractersticas del Timer/Contador 0 de 8 bit ofrecen una alta resolucin y un uso de
alta exactitud con las opciones ms bajas del preescaler. De forma similar, las opciones
altas del preescaler hacen til al Timer/Contador 0 para funciones de velocidades ms
bajas o funciones cronometradas exactas para acciones poco frecuentes.
La siguiente figura muestra el diagrama de bloques del Timer/Contador0.

Figura 30. Diagrama de bloques del Timer/Contador 0

98

El registro de control del Timer/Contador0- TCCR0

Bits 7 3: Bits reservados:


Bits reservados para el microcontrolador y cuyo valor siempre es cero.

Bits 2, 1, 0 CS02, CS01, CS00: Selector de reloj0, bits 2, 1 y 0:

99

Con estos tres bits se selecciona el preescaler que se quiere que tenga el
Timer/Contador 0 segn la siguiente tabla:

Tabla 7. Seleccin de preescala Clock 0

La condicin de Stop proporciona una funcin de habilitacin/deshabilitacin del Timer. Los


modos de divisin de CK estn directamente proporcionados por el reloj del oscilador CK. Si los
modos del pin externo se usan para el Timer/Contador 0, las transiciones en PB0/(T0) pueden
detener el contador incluso si el pin es configurado como salida. Esta caracterstica puede dar al
usuario el control por software de la cuenta.

El contador Timer/Contador 0 TCNT0:

El Timer/Contador0 est compuesto por un contador ascendente con acceso de lectura y


escritura que va desde el valor 0x00 hasta el valor 0xff. Cuando pasa del valor 0xff de
nuevo al 0x00 es cuando se habla de que el Timer se ha desbordado (overflow). En este
registro de lectura y escritura es en el que se puede introducir el valor inicial con el que se
100

quiere que el temporizador realice su cuenta. Si se est escribiendo el Timer/Contador0 y


una fuente de reloj est presente, el Timer/Contador0 contina contando en el ciclo de
reloj que sigue a la operacin de escritura.
El Timer/Contador1 de 16 bits

Figura 31. Diagrama de bloques del Timer/Contador1

El Timer/Contador 1 de 16 bit puede seleccionar la fuente del reloj de CK, del preescaler CK o de
un pin externo. Adems, puede detenerse como se describe en la especificacin para los registros
de control (TCCR1A y TCCR1B) para el Timer/Contador 1. Las diferentes banderas de estado (
101

overflow, compare match y capture event ) se encuentran en el registro de banderas de


interrupcin (TIFR) del Timer/Contador. Las seales de control se encuentran en los Registros de
control (TCCR1A y TCCR1B) del Timer/Contador 1. Las opciones de habilitar / deshabilitar
interrupciones para el Timer/Contador 1 se encuentran en el registro de enmascaramiento de
interrupciones (TIMSK) del Timer/Contador.

Cuando el Timer/Contador 1 tiene reloj externo, la seal externa se sincroniza con la frecuencia
del oscilador del CPU. Para asegurar el funcionamiento apropiado del reloj externo, el tiempo
mnimo entre dos transiciones de los relojes externos debe ser por lo menos un periodo de reloj
interno del CPU. La seal de reloj externo se prueba en el flanco creciente del reloj interno del
CPU.

Las caractersticas del Timer/Contador 1 de 16 bit ofrecen una alta resolucin y un uso de alta
exactitud con las opciones ms bajas del preescaler. De forma similar, las opciones altas del
preescaler hacen til al Timer/Contador 1 para funciones de velocidades ms bajas o funciones
cronometradas exactas para acciones poco frecuentes.

El Timer/Contador 1 proporciona dos funciones de salida de Comparacin que usan el registro de


salida de Comparacin 1 A y B (OCR1A y OCR1B) como fuentes de datos para ser comparados
con el contenido del Timer/Contador 1. Las funciones de salida de Comparacin incluyen el
borrado opcional del contador en el comparador A y las acciones en los pines de salida de
comparacin en ambas parejas de comparacin.

El Timer/Contador 1 tambin puede usarse como un Modulador-Demodulador de Anchura de


Pulso de 8, 9 o 10 bit. En este modo, el contador y los registros OCR1A/OCR1B sirven como un
doble PWM autosuficiente con pulsos centrados.

La funcin de Captura de Entrada del Timer/Contador 1 proporciona una captura del contenido
del Timer/Contador 1 al Registro de Captura de Entrada (ICR1), activado por un evento externo
en el pin de captura de entrada (ICP). Las opciones de evento de captura son definidas por el
Registro del control (TCCR1B) del Timer/Contador 1. Adems, el Comparador Analgico puede
ponerse a "1" para activar la Captura de la Entrada. Vaya al apartado "Comparador Analgico"
para conocer los detalles. El pin lgico de los ICP se muestra en la siguiente Figura.

102

Figura 32. Diagrama del pin ICP


Si la funcin de Anulador de Ruido se habilita, la
condicin del disparo real para el evento de captura se
supervisa sobre cuatro muestras y las cuatro deben ser
iguales para activar la bandera de captura.

El Registro de Control A del


Timer/Contador1 TCCR1A

Bits 7,6 - COM1A1,COM1A0: Modo1A de salida de comparacin, Bits 1 y 0:

Los bits de control COM1A1 y COM1A0 determinan cualquier accin sobre un pin de
salida llevando a cabo la comparacin en el Timer/Contador 1. Cualquier accin sobre un
pin de salida afecta al pin OC1A (Output CompareA pin 1). sta es una funcin
alternativa a un puerto de I/O y el bit de control de direccin correspondiente debe
ponerse a set (uno) para controlar el pin de salida. La configuracin del control se puede
ver en la tabla que se muestra a continuacin.

103

Bits 5, 4 COM1B1, COM1B0: Modo1B de salida de comparacin, Bits 1 y


0
Los bits de control COM1B1 y COM1B0 determinan cualquier accin sobre un pin de
salida llevando a cabo la comparacin en el Timer/Contador 1. Cualquier accin sobre un
pin de salida afecta al pin OC1B (Output CompareB). La configuracin del control se
muestra en la siguiente tabla.

Tabla 8. Compare 1 modo de seleccin


Nota: X = A o B. En modo PWM, estos bits tienen distinta funcin

Bits 3, 2: Bits reservados.


Bits reservados para el microcontrolador.

Bits 1, 0: PWM11, PWM10: Bits 1 y 0 de seleccin de modulacin de anchura de pulsos:


Estos bits especifican el modo PWM de funcionamiento del Timer/Contador1 segn se especifica
en la siguiente tabla:

Tabla 9. PWM Modo de Seleccin

104

El Registro de Control B del Timer/Contador1 TCCR1B

Bit 7 ICNC1: Entrada de Captura 1 Anuladora de Ruido (4 CKs):

Cuando el bit ICNC1 es borrado (cero), se deshabilita la activacin de la funcin


anuladora de ruido de la entrada de captura. La captura de entrada se activa al primer
flanco del subida / bajada probado en el ICP (input capture pin) como se especifica.
Cuando el bit ICNC1 est a set (uno), cuatro muestras sucesivas son tomadas en el ICP, y
todas las muestras deben ser alto / bajo segn las especificaciones de activacin de las
entradas de captura en el bit ICES1. La frecuencia de la prueba es la frecuencia del reloj
XTAL.
Bit 6 ICES1: Seleccin del flanco de entrada de Captura 1:
Mientras el bit ICES1 es borrado (cero), el contenido del Timer/Contador 1 se transfiere al
Registro de Captura de Entrada (ICR1) en el flanco de bajada del pin de captura de entrada (ICP).
Mientras el bit ICES1 est a set (uno), el contenido del Timer/Contador 1 se transfiere al ICR1 en
el flanco de subida del ICP.

Bits 5, 4: Bits Reservados:


Estos bits estn reservados para el microcontrolador y son solo de lectura.

Bit 3 CTC1: Borrado del Timer/Contador 1 en la operacin de Comparacin:


105

Cuando el bit de control CTC1 esta a set (uno), el Timer/Contador 1 es reseteado a $0000
en el ciclo de reloj siguiente a la comparacin A. Si el bit de control CTC1 es borrado, el
Timer/Contador1 contina contando y no es alterado por la operacin de comparacin.
Desde que la operacin de comparacin es detectada en el ciclo de reloj del CPU que
sigue a la operacin, esta funcin se comportar de forma diferente cuando un preescaler
mayor que 1 se use para el timer. Cuando se usa un preescaler de 1 y el registro de
comparacin A se pone a C, el timer contar como sigue si CTC1 est a set:
... | C-2 | C-1 | C | 0 | 1 | ...

Cuando el preescaler se pone para dividir por 8, el timer contar de esta forma:

... | C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-2 | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1 | C, 0, 0, 0, 0,
0, 0, 0 | ...

En modo de PWM, este bit no tiene efecto.

Bit 2, 1, 0 CS12, CS11, CS10: Seleccin de reloj 1, bits 2, 1 y 0:


Los bits 2, 1 y 0 de seleccin de reloj 1, definen la fuente del preescaler del Timer/Contador1.

Tabla 10. Seleccin de preescala Clock 1

106

La condicin de la Stop proporciona una funcin de habilitacin/deshabilitacin. del


timer. Los modos de baja divisin de CK son divididos directamente desde el reloj del
oscilador CK. Si los modos del pin externo se usan para el Timer/Contador 1, las
transiciones en PB1/(T1) pueden empezar la cuenta aun cuando el pin est configurado
como salida. Este rasgo puede dar al usuario el control de software de la cuenta.

El registro Timer/Contador1 TCNT1H y TCNT1L

107

Este registro de 16-bit contiene los valores del preescaler del Timer/Counter1 de 16-bit . Para
asegurar que ambos, los bytes altos y bajos se leen y se escriben simultneamente cuando el CPU
accede a estos registros, el acceso es realizado usando un registro temporal (TEMP) de 8-bit. Este
registro temporal tambin se usa al acceder a OCR1A, OCR1B e ICR1. Si el programa principal y
las rutinas de interrupcin realizan el acceso a registros usando TEMP, las interrupciones deben
desactivarse durante el acceso desde el programa principal (y desde las rutinas de interrupcin si
las interrupciones se permiten desde dentro de las rutinas de interrupcin).

Escritura en el TCNT1 del Timer/Contador1:

Cuando el CPU escribe en el byte alto TCNT1H, el dato escrito se pone en el registro TEMP.
Luego, cuando el CPU escribe en el byte bajo TCNT1L, este byte de datos se combina con el byte
de datos del registro TEMP, y los 16 bits se escriben simultneamente en el registro TCNT1 del
Timer/Contador1. Por consiguiente, se debe acceder primero al byte alto TCNT1H por una
operacin de escritura del registro de 16-bit.

Lectura en el TCNT1 del Timer/Contador:

Cuando el CPU lee el byte bajo TCNT1L, el dato del byte bajo TCNT1L se enva a el CPU y el
dato del byte alto TCNT1H se pone en el registro TEMP.

Cuando el CPU lee los datos en el byte alto TCNT1H, la CPU recibe el dato en el registro TEMP.
Por consiguiente, se debe acceder primero al byte bajo TCNT1L por una operacin de lectura del
registro de 16-bit.

El Timer/Contador1 se comporta como un contador ascendente o ascendente /


descendente (en modo PWM) con acceso a lectura y escritura. Si el Timer/Contador1 es
escrito y una fuente de reloj est seleccionada, el Timer/Contador1 contina contando en
el ciclo del reloj de timer siguiente despus de que se prefije con el valor escrito.

108

Registro de Comparacin de salida


del Timer/Contador1 OCR1AH y OCR1AL

Registro de Comparacin de salida del Timer/Contador1OCR1BH Y OCR1BL

Los registros de comparacin de salida son registros de 16-bit de lectura / escritura.

Los registros de comparacin de salida del Timer/Contador1 contienen los datos a ser
comparados continuamente con el Timer/Contador1. Las acciones en las operaciones de
comparacin estn especificadas en los registros de control y estado del Timer/Contador1. Una
operacin de comparacin slo ocurre si el Timer/Contador1 cuenta al valor de OCR. Una
109

escritura por software que pone a set TCNT1 y OCR1A o OCR1B al mismo valor no genera una
operacin de comparacin.

Una operacin de comparacin pondr a set la bandera de interrupcin de comparacin en el ciclo


de reloj de CPU que sigue al evento de comparacin.

Como los Registros de Comparacin de salida (OCR1A y OCR1B) son registros de 16bit, un registro temporal (TEMP) se usa cuando OCR1A/B se escriben para asegurar que
se actualizan ambos bytes simultneamente. Cuando el CPU escribe el byte alto,
OCR1AH o OCR1BH, el dato se guarda temporalmente en el registro TEMP. Cuando el
CPU escribe el byte bajo, OCR1AL o OCR1BL, el registro TEMP se escribe
simultneamente a OCR1AH o OCR1BH. Por consiguiente, el byte alto OCR1AH u
OCR1BH debe escribirse primero para una completa operacin de escritura de registro de
16-bit.
El registro TEMP tambin se usa al acceder a TCNT1 e ICR1. Si el programa principal y
las rutinas de interrupcin realizan el acceso a registros que usan TEMP, deben
desactivarse las interrupciones durante el acceso del programa principal (y de las rutinas
de interrupcin si las interrupciones se permiten desde dentro de las rutinas de
interrupcin).
Registro de Captura de entrada del Timer/Contador1 ICR1H e ICR1L

El registro de captura de entrada es un registro de 16-bit de solo lectura.

110

Cuando el flanco de subida o bajada (segn la seleccin del flanco de captura de entrada [ICES1])
de la seal en el pin de captura de entrada (ICP) se detecta, el valor actual del Timer/Contador1 se
transfiere al Registro de Captura de Entrada (ICR1). Al mismo tiempo, la bandera de captura de
entrada (ICF1) est a set (uno).
Como el Registro de Captura de Entrada (ICR1) es un registro de 16-bit, un registro
temporal (TEMP) se usa cuando se lee ICR1 para asegurar que se leen ambos bytes
simultneamente. Cuando el CPU lee el byte bajo ICR1L, el dato se enva al CPU y el dato del
byte alto ICR1H se pone en el registro TEMP. Cuando el CPU lee los datos en el byte alto
ICR1H, el CPU recibe el dato en el registro TEMP. Por consiguiente, debe accederse primero al
byte bajo ICR1L para una completa operacin de lectura del registro de 16-bit.
El registro TEMP tambin se usa al acceder a TCNT1, OCR1A y OCR1B. Si el programa
principal y las rutinas de interrupcin realizan el acceso a registros que usan TEMP, deben
desactivarse las interrupciones durante el acceso del programa principal (y de las rutinas de
interrupcin si las interrupciones se permiten desde dentro de las rutinas de interrupcin).

Timer/Contador1 en Modo PWM

Cuando el modo PWM se selecciona en el Timer/Contador1, el Registro de comparacin de


salida1A (OCR1A) y el Registro de comparacin de salida1B (OCR1B) forman un doble PWM
de 8 -, 9 - o 10-bit, libre cuenta, libre de fallos y fase correcta, con salidas en los pines
PD5(OC1A) y OC1B. El Timer/Contador1 acta como un contador ascendente / descendente,
contando desde $0000 hasta el mximo (vea la Tabla 11), donde se vuelve y cuenta hacia abajo
de nuevo hasta cero antes de que el ciclo se repita. Cuando el valor del contador se iguala al
contenido de los 10 bits menos significativos de OCR1A u OCR1B, los pines PD5(OC1A)/OC1B
estn a set o borrados segn la situacin de los bits COM1A1/COM1A0 o COM1B1/COM1B0
del Registro de control del Timer/Counter1 (TCCR1A). Vea la Tabla 12 para ms detalles.

Tabla 11. Valores mximos del timer y frecuencia del PWM

111

Tabla 12. Seleccin del modo de comparacin1 en modo PWM


Nota: X = A o B

Observe que en el modo PWM, los 10 bits OCR1A/OCR1B menos significantes, cuando son
escritos, se transfieren a una posicin temporal. Son latcheados cuando el Timer/Contador1
alcanza el valor mximo. Esto previene que ocurran pulsos de PWM de longitud impar (glitches)
en caso de una desincronizacin en la escritura en OCR1A/OCR1B. Vea la siguiente figura como
ejemplo.

Figura 33. Efectos de la desincronizacin del latch en OCR1

Durante el tiempo entre la escritura y la operacin del latch, una lectura de OCR1A o
OCR1B leer el contenido de la posicin temporal. Esto significa que el valor ms
recientemente escrito siempre se leer fuera de OCR1A/B.

112

Cuando el OCR1 contienen $0000 o el mximo, la salida OC1A/OC1B se actualiza a


bajo o alto en la prxima operacin de comparacin segn la situacin de COM1A1/COM1A0 o
COM1B1/COM1B0. Esto se muestra en la tabla que viene a continuacin.
Nota: Si el registro de comparacin contiene el valor mximo y el preescaler no est en uso
(CS12 ..CS10 = 001), la salida del PWM no producir ningn pulso en absoluto, porque los
valores de cuenta ascendente y descendente se alcanzan simultneamente. Cuando el preescaler
est en uso (CS12 ..CS10. 001 o 000), la salida de PWM est activa cuando el contador alcanza el
valor mximo; pero la operacin de comparacin de cuenta descendente no se interpreta que se
alcanza antes de la prxima vez que el contador alcance el valor mximo y hace un pulso de
PWM de un periodo.

Tabla 13. Salidas PWM de OCR1X = $0000 o TOP ( mximo )

Nota: X = A o B

En modo PWM, la bandera1 de desbordamiento del Timer (TOV1) est a set cuando el
contador pasa de $0000. La interrupcin1 de desbordamiento del Timer opera
exactamente como en el modo de Timer/Contador normal, es decir, que se ejecuta cuando
TOV1 est a set, con tal de que la interrupcin1 de desbordamiento del Timer y las
interrupciones globales estn habilitadas. Esto tambin se aplica a las banderas de
comparacin1 de salida del Timer y a las interrupciones.

Timer Watchdog
 Registro de control del Timer Watchdog

113

TIMER WATCHDOG

El Watchdog es un Timer que acta con su propio oscilador integrado en el propio chip
cuya frecuencia es de 1 MHz. ste es el valor tpico a Vcc = 5V. Controlando el
preescaler del Timer Watchdog, el intervalo de reset del Watchdog puede ajustarse (vea
la Tabla 14 para una descripcin detallada). La instruccin WDR (reset del Watchdog)
resetea el Timer Watchdog. Pueden seleccionarse ocho periodos de ciclo de reloj
diferentes para determinar el periodo de reset. Si el periodo de reset expira sin otro reset
de Watchdog, el AT90S8515 se resetea y ejecuta desde el vector de reset. Para prevenir
una desactivacin involuntaria del Watchdog cuando ste se va a desconectar, se debe
seguir una secuencia de desconexin especial. Vaya a la descripcin del registro de
control del Timer Watchdog para conocer ms detalles.

Figura 34. Watchdog Timer


114

REGISTRO DE CONTROL DEL TIMER WATCHDOG WDTCR

Bits 7..5 Res: Bits reservados


Estos bit son bits reservados en los AT90S8515 y siempre se leern como cero.

Bit 4 WDTOE: Habilitacin de desconexin del


Watchdog

Cuando el bit WDE es borrado, este bit debe ponerse a set (uno). De otro modo, el
Watchdog no se desactivar. Una vez se ponga a set, el hardware podr borrar este bit a
cero despus de cuatro ciclos de reloj. En la descripcin del bit WDE se observa como se
realiza un procedimiento de desactivacin del Watchdog.
Bit 3WDE: Habilitacin del Watchdog
Cuando el WDE est a set (uno) el Timer Watchdog se habilita y si el WDE es borrado (cero) la
funcin del Timer Watchdog est deshabilitada. WDE slo puede borrarse si el bit de WDTOE
est a set (uno). Para desactivar un Timer Watchdog habilitado, debe seguirse el procedimiento
siguiente:

1. En la misma operacin, escriba un "1" lgico en WDTOE y WDE. Un "1" lgico debe ser
escrito en WDE aunque est a uno antes de empezar la operacin de deshabilitacin.

115

2. Dentro de los prximos cuatro ciclos de reloj, escriba un "0" lgico en WDE. Esto desactiva el
Watchdog.

Bits 2 ..0WDP2, WDP1, WDP0 : Preescaler 2, 1 y 0 del Timer Watchdog

Los bits WDP2, WDP1 y WDP0 determinan el preescaler del Timer Watchdog cuando el
Timer Watchdog est habilitado. Los diferentes valores del preescaler y sus
correspondientes periodos de Time-out se muestran en la tabla siguiente.

Tabla 14. Seleccin del preescaler del Timer Watchdog

Nota: La frecuencia del oscilador del Watchdog depende del voltaje como se muestra en la
seccin de las Caractersticas Elctricas.

La instruccin WDR (reset del Watchdog) siempre debe ejecutarse antes de que el Timer
Watchdog se habilite. Esto asegura que el periodo de reset estar de acuerdo con la situacin del
predivisor del Timer Watchdog. Si el Timer Watchdog se habilita sin reset, no puede empezar a
contar desde cero.

Para evitar un reset involuntario del MCU, el Timer Watchdog debe deshabilitarse
o debe resetearse antes de cambiar la seleccin del predivisor.
116

Acceso de Lectura-Escritura de EEPROM


 Registros de direccin de la EEPROMEEARH y EEARL
 Registro de datos de la EEPROMEEDR
 Registro de control de la EEPROMEECR
 Prevenir la adulteracin de la EEPROM

ACCESO DE LECTURA-ESCRITURA DE EEPROM


Los registros de acceso de EEPROM se encuentran en el espacio de I/O.

El tiempo de acceso a escritura est en el rango de 2.5 - 4 ms, dependiendo de los voltajes de
VCC. Una funcin de autocuenta, sin embargo, permite al software del usuario detectar cuando
puede escribirse el prximo byte. Si el programa del usuario contiene cdigo que escribe en la
EEPROM, debe tomarse alguna precaucin. En energas muy filtradas, VCC es probable que
suba o caiga despacio en power-up/down. Esto causa que el dispositivo durante algn periodo de
tiempo corra a un voltaje ms bajo del que se especific como mnimo para la frecuencia de reloj
usado. El funcionamiento del CPU bajo estas condiciones puede provocar que el contador de
programa realice saltos involuntarios y en el futuro ejecutar el cdigo de escritura de EEPROM.
Para afianzar la integridad de la EEPROM, se aconseja al usuario usar un circuito externo de reset
de bajo voltaje en este caso.

Para prevenir la escritura involuntaria en la EEPROM, debe seguirse un procedimiento de


escritura. Dirjase a la descripcin del registro de control de la EEPROM para tener ms
detalles sobre este tema.
Cuando se est escribiendo en la EEPROM, el CPU se detiene durante dos ciclos del reloj antes
de que la prxima instruccin se ejecute. Cuando se lee la EEPROM, el CPU se detiene durante
cuatro ciclos del reloj antes de que la prxima instruccin se ejecute.

117

REGISTROS DE DIRECCIN DE LA EEPROM EEARH Y EEARL

Los registros de direccin de la EEPROM (EEARH y EEARL) especifican las


direcciones de EEPROM en los 512 byte de espacio de EEPROM para los AT90S8515.
Los bytes de datos de la EEPROM son direccionados linealmente entre 0 y 512.
REGISTRO DE DATOS DE LA EEPROM EEDR

Bits 7..0EEDR7..0: Datos de EEPROM

118

Para la operacin de escritura de la EEPROM, el registro EEDR contiene los datos que van a ser
escritos en la EEPROM en la direccin dada por el registro EEAR. Para la operacin de lectura
de la EEPROM, el EEDR contiene los datos ledos fuera de la EEPROM en la direccin dada por
EEAR.

REGISTRO DE CONTROL DE LA EEPROM EECR

Bits 7 ..3 RES: Bits reservados


Estos bits son bits reservados en el AT90S8515 y siempre se leen como cero.

Bit 2EEMWE: Habilitacin de escritura del


Maestro de la EEPROM
El bit EEMWE determina, si se pone EEWE a uno, que la EEPROM sea escrita. Cuando
EEMWE est a set (uno), poniendo a set EEWE se escribirn datos a la EEPROM a la
direccin seleccionada. Si EEMWE es cero y se pone a set EEWE no tendr efecto.
Cuando EEMWE ha sido puesta a set (uno) por software, el hardware borra el bit a cero
despus de cuatro ciclos de reloj.
Vea la descripcin del bit EEWE para un procedimiento de escritura de la EEPROM.

Bit 1EEWE: Habilitacin de escritura de la


EEPROM
La seal de habilitacin de escritura de la EEPROM (EEWE) es la que controla la
escritura de la EEPROM. Cuando la direccin y los datos estn correctamente puestos, el
bit EEWE debe ponerse a set para escribir el valor en la EEPROM. El bit EEMWE debe
ponerse a set cuando el "1" lgico se escribe en EEWE, de otra forma no tendr lugar la
escritura de la EEPROM. El siguiente procedimiento debe seguirse al escribir la
EEPROM (el orden de pasos 2 y 3 no es esencial):
1. Espere hasta que EEWE sea cero.
119

2. Escriba la nueva direccin de EEPROM en EEARL y EEARH (opcional).


3. Escriba el nuevo dato de EEPROM a EEDR (opcional).

4. Escriba un "1" lgico en el bit EEMWE de EECR (para poder escribir un "1"
lgico al bit EEMWE, el bit EEWE debe escribirse a cero en el mismo ciclo).
5. Dentro de los cuatro ciclos de reloj posteriores a poner a set EEMWE, escriba un "1"
lgico en EEWE.

Cuando el tiempo de acceso a escritura ( Tpicamente 2.5 ms a VCC = 5V o 4 ms a VCC = 2.7V)


ha pasado, el bit EEWE se borra (cero) por hardware. El software del usuario puede examinar
este bit y espera un cero antes de escribir el prximo byte. Cuando EEWE se ha puesto a set, el
CPU se detiene durante dos ciclos antes que la prxima instruccin se ejecute.

Precaucin: Una interrupcin entre el paso 4 y el paso 5 har que falle el ciclo de escritura, ya
que la habilitacin de escritura del maestro de la EEPROM habr terminado. Si una rutina de
interrupcin accede a la EEPROM est interrumpiendo otro acceso a la EEPROM, se modificarn
los registros EEAR o EEDR y causarn el fallo de acceso a EEPROM de la accin interrumpida.
Se recomienda tener la bandera de interrupcin global borrado durante los cuatro ltimos pasos
para evitar estos problemas.

Bit 0EERE: Habilitacin de lectura de la


EEPROM
La seal de habilitacin de lectura de la EEPROM (EERE) es la que controla la lectura de la
EEPROM. Cuando se pone la direccin correcta en el registro EEAR, el bit EERE debe ponerse a
set. Cuando el bit EERE se borra (cero) por hardware, el dato pedido se encuentra en el registro
EEDR.
El acceso de lectura de la EEPROM dura una instruccin y no hay ninguna necesidad de
examinar el bit EERE. Cuando EERE se pone a set, el CPU se detiene durante los cuatro ciclos
anteriores a que la prxima instruccin se ejecute.

El usuario debe examinar el bit EEWE antes de empezar la operacin de lectura.


Si una operacin de escritura est en marcha cuando el nuevo dato o la direccin se
escriben en los registros de I/O de la EEPROM, la operacin de escritura se interrumpir
y el resultado es indefinido.


Caractersticas principales del SPI


 Funcionalidad del pin SS'

 Modos de los datos


 Registros del SPI
 Registro de control del SPISPCR
 Registro de estado del SPISPSR
120

 Registro de datos del SPI-SPDR

CARACTERSTICAS PRINCIPALES DEL SPI


La Interface Perifrica serie (SPI) permite una transferencia de datos sncrona de alta
velocidad entre el AT90S8515 y los dispositivos perifricos o entre varios dispositivos AVR. Las
caractersticas del SPI del AT90S8515 incluyen lo siguiente:








Transferencia de datos sncrona de 3 hilos, Full-duplex


Funcionamiento como Maestro o Esclavo
Transferencia de datos, primero LSB o MSB
Cuatro velocidades de bit programables
Bandera de interrupcin de fin de transmisin
Bandera de proteccin de Colisin en escritura
Activacin desde el Modo Idle (Slo en modo esclavo)

Figura 35. Diagrama de bloques SPI


121

La interconexin entre los CPUs del maestro y del esclavo con el SPI se muestra en la
siguiente figura. El pin PB7(SCK) es el reloj de salida en el modo maestro y es la entrada
de reloj en el Modo esclavo. Escribiendo en el registro de datos del SPI del maestro, el
CPU pone en marcha el generador de reloj del SPI y el dato escrito se desplaza fuera del
pin PB5(MOSI) y entra en el pin PB5(MOSI) del CPU del esclavo. Despus de mover un
byte, el generador de reloj del SPI se detiene y pone a set la bandera de fin de transmisin
(SPIF). Si el bit de habilitacin de interrupcin del SPI (SPIE) en el registro SPCR est a
set, una interrupcin es solicitada. La entrada de seleccin del esclavo, PB4(SS'), se pone
a nivel bajo para seleccionar un dispositivo SPI esclavo individual. Los dos registros de
desplazamiento en el maestro y en el esclavo puede ser considerado como un registro de
desplazamiento circular de 16-bit distribuido.
Cuando el dato se desplaza del maestro al esclavo, el dato tambin se desplaza en la direccin
opuesta, simultneamente. Esto significa que durante un ciclo de desplazamiento, el dato en el
maestro y en el esclavo se intercambia.

Figura 36. Conexin Maestro-Esclavo del MSI

El sistema tiene un solo buffer en la direccin de transmisin y doble buffer en la


direccin de recepcin. Esto significa que los bytes que se van a transmitir no pueden
escribirse en el registro de datos del SPI antes de que el ciclo de desplazamiento entero se
complete. Cuando el dato se recibe, sin embargo, el byte recibido debe leerse del registro
de datos del SPI antes de que el prximo byte haya sido completamente desplazado. De
otra forma, el primer byte se pierde.
Cuando el SPI se habilita, la direccin de datos de los pines MOSI, MISO, SCK y SS' es
sustituida segn la siguiente tabla.
122

Tabla 15. Sustitucin de los pines del SPI


FUNCIONALIDAD DEL PIN SS'

Cuando se configura el SPI como maestro (MSTR en SPCR est a set), el usuario puede
determinar la direccin del pin SS'. Si SS' se configura como una salida, el pin es un pin
de salida general que no afecta al sistema SPI. Si SS' se configura como una entrada,
debe mantenerse a nivel alto para asegurar el funcionamiento SPI del maestro. Si el pin
SS' se maneja a nivel bajo por la circuitera perifrica cuando el SPI se configura como
maestro con el pin SS' definido como una entrada, el sistema SPI interpreta esto como
otro maestro que selecciona el SPI como un esclavo y empieza a enviarle datos. Para
evitar la disputa en el bus, el sistema SPI realiza las acciones siguientes:
1. El bit MSTR en SPCR es borrado y el sistema SPI se convierte en esclavo. Como resultado de
que el SPI se vuelva esclavo, los pines MOSI y SCK se vuelven entradas.

2. La Bandera SPIF en SPSR est a set, y si la interrupcin de SPI se habilita y el bit I en SREG
est a set, la rutina de interrupcin se ejecutar.

As, cuando se usa el transmisor SPI de manejo de interrupciones en modo maestro y


existe una posibilidad que SS' se utilice a nivel bajo, la interrupcin siempre debe
verificar que el bit MSTR todava est a set. Una vez que el bit MSTR ha sido borrado
por un esclavo seleccionado, debe ponerse a set por el usuario para repermitirle el modo
maestro de SPI.
Cuando el SPI se configura como esclavo, el pin SS' siempre es una entrada. Cuando SS' se
mantiene a nivel bajo, el SPI se activa y MISO se vuelve una salida si se configur as por el
usuario. Los dems pines son entradas. Cuando SS' se maneja a nivel alto, todos los pines son
entradas y el SPI es pasivo, lo que significa que no recibir datos entrantes. Observa que la lgica
de SPI se resetear una vez el pin SS' se ponga a nivel alto. Si el pin SS' es puesto a nivel alto

123

durante una transmisin, el SPI dejar de enviar y recibir inmediatamente y ambos datos
recibidos y transmitidos deben ser considerados como perdidos.

MODOS DE LOS DATOS


Hay cuatro combinaciones de fase de SCK y polaridad con respecto a los datos serie que son
determinados por los bits de control CPHA y CPOL. Los formatos de transferencia de datos del
SPI se muestran en la Figura 37 y en la Figura 38.

Figura 37. Formato de transferencia SPI con CPHA = 0 y DORD = 0

Figura 38. Formato de transferencia SPI con CPHA = 1 y DORD = 0


REGISTROS DEL SPI

Registro de control del SPI SPCR


124

Bit 7SPIE: Habilitacin de interrupcin del SPI


Este bit causa la ejecucin de la interrupcin del SPI si el bit SPIF en el registro SPSR
est a set y las interrupciones globales se habilitan.
Bit 6SPE: Habilitacin del SPI
Cuando el bit SPE est a set (uno), el SPI se habilita. Este bit debe ponerse a set para habilitar
cualquier operacin del SPI.

Bit 5DORD: Orden de los datos


Cuando el bit DORD est a set (uno), el LSB de la palabra se transmite primero.
Cuando el bit DORD es borrado (cero), el MSB de la palabra se transmite primero.

Bit 4MSTR: Seleccin de Maestro / esclavo


Este bit selecciona el modo maestro de SPI cuando est a set (uno), y el modo esclavo de
SPI cuando es borrado (cero). Si SS' se configura como una entrada y se maneja a nivel
bajo mientras MSTR est a set, MSTR se borrar y SPIF en SPSR se pondr a set. El
usuario tendr que poner a set MSTR para rehabilitar el modo maestro del SPI.
Bit 3CPOL: Polaridad del reloj
Cuando este bit est a set (uno), SCK est a nivel alto cuando estamos en modo Idle.
Cuando CPOL es borrado (cero), SCK est a nivel bajo cuando estamos en modo Idle.
Vea la Figura 37 y la Figura 38 de la pgina anterior para obtener informacin adicional.

Bit 2CPHA: Fase del reloj


Vea la Figura 37 o la Figura 38 para conocer la funcionalidad de este bit.

125

Bits 1, 0SPR1, SPR0,: Seleccin de la frecuencia


de reloj 1 y 0 del SPI
Estos dos bits controlan la frecuencia de SCK del dispositivo configurado como maestro.
SPR1 y SPR0 no tienen efecto en el esclavo. La relacin entre SCK y la frecuencia fcl de
reloj del oscilador se muestra en la siguiente Tabla.

Tabla 16. Relacin entre SCK y la frecuencia del oscilador

Registro de estado del SPISPSR

Bit 7SPIF: Bandera de interrupcin del SPI


Cuando una transferencia serie es completada, el bit SPIF est a set (uno) y una
interrupcin se genera si SPIE en SPCR est a set (uno) y se habilitan las interrupciones
globales. Si SS' es una entrada y se maneja a nivel bajo cuando el SPI est en modo
maestro, esto tambin pondr a set la bandera SPIF. SPIF es borrado por hardware al
ejecutar el vector de manejo de interrupcin correspondiente. Alternativamente, el bit
SPIF es borrado leyendo primero el registro de estado del SPI cuando SPIF est a set
(uno), y despus accediendo al registro de datos del SPI (SPDR).
Bit 6WCOL: Bandera de colisin de escritura
El bit WCOL est a set si el registro de datos del SPI (SPDR) est escribiendo durante una
transferencia de datos.

126

El bit WCOL (y el bit SPIF) se borran (cero) leyendo primero el registro de estado del SPI
cuando WCOL est a set (uno), y despus accediendo al registro de datos del SPI.

Bits 5 ..0Res: Bits reservados


Estos bits son bits reservados en el AT90S8515 y siempre se leern como cero.

El interface SPI en los AT90S8515 tambin se usa para la memoria de programa y para la
transmisin o recepcin de EEPROM.
Registro de datos del SPI SPDR

El registro de datos del SPI es un registro del lectura / escritura usado para la transferencia de
datos entre el archivo de registro y el registro de desplazamiento del SPI. Escribiendo al registro
comienza la transmisin de los datos.

La lectura del registro prepara el buffer de recepcin del Registro de


desplazamiento para ser ledo.

Transmisin de datos
 Recepcin de datos
 Control de la UART
 Registro de datos de I/O de la UART - UDR
 Registro de estado de la UART - USR
 Registro de control de la UART - UCR
127

 Generador de Baud rate


 Registro de Baud rate de la UART - UBRR

Los AT90S8515 ofrecen un Receptor y Transmisor Asncrono Universal full duplex (UART) con
registros de recepcin y transmisin separados. Las caractersticas principales son:










Generador de una gran variedad de baud rates (bps)


Altas tasas de Baud Rates a bajas frecuencias de XTAL
Datos de 8 o 9 bits
Filtro de ruido
Detector de desbordamiento
Deteccin de error de estructura
Deteccin de falso bit de start
Tres Interrupciones distintas para TX Completo, registro de datos TX Vaco
y RX Completo

TRANSMISIN DE DATOS

En la siguiente figura se muestra un bloque esquemtico del transmisor de la UART.


128

Figura 39. Transmisor del UART

La transmisin de los datos se comienza escribiendo los datos a transmitir en el registro de datos
de I/O de la UART, UDR. Los datos se transfieren de la UDR al registro de desplazamiento de
Transmisin cuando:

Un nuevo carcter se ha escrito en UDR despus de que el bit de stop del carcter
anterior haya sido enviado. El registro de desplazamiento es cargado inmediatamente.

Un nuevo carcter se ha escrito en UDR antes de que el bit de stop del carcter
anterior haya sido enviado. El registro de desplazamiento es cargado cuando el
bit de stop del carcter a transmitir haya sido enviado.
129

Si el registro de desplazamiento Transmisor de 10 (11)-bit est vaco, el dato se transfiere


de UDR al registro de desplazamiento. En este momento el bit UDRE (registro de datos
del UART vaco) en el registro de estado del UART, USR, est a set. Cuando este bit est
a set (uno), el UART est listo para recibir el prximo carcter. Al mismo tiempo que el
dato se transfiere de UDR al registro de desplazamiento de 10(11)-bit, el bit 0 del registro
de desplazamiento es borrado (bit de start) y el bit 9 o 10 est a set (bit de stop). Si se
selecciona una palabra de datos de 9-bit (el bit CHR9 en el registro de control del UART,
UCR est a set), el bit TXB8 en UCR se transfiere al bit 9 en el registro de
desplazamiento de transmisin. En el reloj del baud rate que sigue a la operacin de
transferencia al registro de desplazamiento, el bit de start se desplaza fuera en el pin
TXD. Entonces le siguen los datos siendo LSB el primero. Cuando el bit de stop se ha
desplazado fuera, el registro de desplazamiento es cargado si cualquier nuevo dato se ha
escrito al UDR durante la transmisin. Durante la carga, UDRE est a set. Si no hay
ningn nuevo dato para enviar en el registro UDR cuando el bit de stop se desplaza fuera,
la Bandera UDRE permanecer a set hasta que UDR sea escrito de nuevo. Cuando
ningn nuevo dato se ha escrito y el bit de stop ha estado presente en TXD en la duracin
de un bit, la Bandera TX Completo (TXC) en USR est a set. El bit TXEN en UCR
habilita el Transmisor del UART cuando est a set (uno). Cuando este bit se borra (cero),
el pin PD1 puede usarse para I/O general. Cuando TXEN est a set, el Transmisor del
UART se conectar a PD1 que est obligado a ser un pin de salida sin tener en cuenta la
situacin del bit DDD1 en DDRD.

RECEPCIN DE DATOS
La figura siguiente de Recepcin de datos muestra un diagrama de bloques del Receptor
de la UART.

130

Figura 40. Receptor del UART


La lgica "front-end" del receptor prueba la seal del pin RXD a una frecuencia 16 veces el baud
rate. Mientras la lnea est en modo Idle, una sola muestra de "0" lgico se interpretar como el
flanco descendente de un bit de start y la secuencia de deteccin del bit de start es comenzada.
Siguiendo la transicin de 1 a 0, el receptor prueba el pin RXD en las muestras 8, 9 y 10. Si dos o
ms de estas tres muestras se encuentran a "1" lgico, el bit de start se rechaza como un pico de
ruido y el receptor empieza buscando la prxima transicin de 1 a 0.

Si, sin embargo, se detecta un bit de start vlido, se realiza la prueba de los bits de datos que
siguen al bit start. Estos bits tambin se prueban en las muestras 8, 9 y 10. El valor lgico
encontrado en por lo menos dos de las tres muestras se toma como el valor del bit. Todos los bits
se desplazan en el registro de desplazamiento Transmisor cuando son probados. La prueba de un
carcter entrante se muestra en la siguiente figura.

131

Figura 41. Prueba del dato recibido


Cuando el bit de stop entra en el receptor, la mayora de las tres muestras debe ser "1" para
aceptar el bit de stop. Si dos o ms muestras son "0"s lgicos, la bandera de Error de estructura
(FE) del registro de estado de la UART (USR) est a set. Antes de leer el registro UDR, el
usuario siempre debe verificar el bit FE para detectar errores en la estructura.

Si se descubre o no un bit de stop vlido al final de un ciclo de recepcin del carcter, el dato se
transfiere a UDR y la bandera RXC en USR est a set. UDR es de hecho dos registros fsicamente
separados, uno para los datos transmitidos y otro para los datos recibidos. Cuando UDR es ledo,
se accede al registro de datos de recepcin, y cuando UDR es escrito, se accede al registro de
datos de transmisin. Si se selecciona una palabra de datos de 9-bit (el bit CHR9 en el registro de
control del UART (UCR) est a set), el bit RXB8 en UCR est cargado con el bit 9 en el registro
de desplazamiento de transmisin cuando el dato se transfiere a UDR.

Si, despus de haber recibido un carcter, el registro UDR no se ha ledo desde el ltimo
recibido, la bandera de desbordamiento (OR) en USR est a set. Esto significa que el
ltimo byte de datos desplazado en el registro de desplazamiento no poda transferirse a
UDR y que se ha perdido. El bit OR pasa por un buffer y se actualiza cuando un byte de
datos vlido se lee en UDR. As, el usuario siempre debe verificar el bit OR despus de
leer el registro UDR para descubrir cualquier desbordamiento si el baud rate es alto o la
carga del CPU es alto.
Cuando el bit RXEN en el registro UCR es borrado (cero), el receptor est deshabilitado. Esto
significa que el pin PD0 puede usarse como un pin de I/O general. Cuando RXEN est a set, el
Receptor del UART se conectar a PD0 que est obligado a ser un pin de entrada sin tener en
cuenta la situacin del bit DDD0 en DDRD. Cuando se obliga a PD0 a ser entrada por la UART,
el bit PORTD0 todava puede usarse para controlar la resistencia de pull-up en el pin.

Cuando el bit CHR9 en el registro UCR est a set, los caracteres transmitidos y recibidos
son de 9 bits de longitud, ms los bits de start y stop. El noveno bit de dato para ser
132

transmitido es el bit TXB8 del registro UCR. Este bit debe ponerse al valor deseado antes
de que una transmisin sea comenzada escribiendo en el registro UDR. El noveno bit de
datos recibido es el bit RXB8 del registro UCR.
CONTROL DE LA UART

Registro de datos de I/O de la UART UDR

El registro UDR realmente son dos registros fsicamente separados que comparten la
misma direccin de I/O. Al escribir al registro, se escribe en el registro de datos de
transmisin de la UART. Al leer de UDR, se lee el registro de datos de recepcin de la
UART.
Registro de estado de la UART USR

El registro USR es un registro de solo lectura que proporciona informacin sobre el estado de la
UART.

Bit 7RXC: Recepcin de UART completa


Este bit est a set (uno) cuando un carcter recibido se transfiere del registro de
desplazamiento de recepcin a UDR. El bit est a set sin tener en cuenta cualquier
deteccin de error en la estructura. Cuando el bit RXCIE en UCR est a set, la
133

interrupcin de recepcin de UART completa se ejecutar cuando RXC est a set (uno).
RXC es borrado leyendo UDR. Cuando se usa la interrupcin de recepcin de datos, la
rutina de interrupcin de recepcin de UART completa debe leer UDR para borrar RXC,
de otra forma una nueva interrupcin ocurrir una vez que la rutina de interrupcin
termine.
Bit 6TXC: Transmisin de UART completa
Este bit est a set (uno) cuando el carcter entero (incluso el bit de stop) en el registro de
desplazamiento de transmisin se ha desplazado fuera y ningn nuevo dato se ha escrito en UDR.
Esta bandera es especialmente til en interfaces de comunicaciones half-duplex, donde una
aplicacin de transmisin deba entrar en modo recepcin y libre el bus de comunicaciones
inmediatamente despus de completar la transmisin.

Cuando el bit TXCIE en UCR est a set y poniendo a set TXC provoca que se ejecute la
interrupcin de transmisin de UART completa. TXC es borrado por hardware al ejecutar el
vector de interrupcin correspondiente. Alternativamente, el bit TXC se borra (cero) escribiendo
un "1" lgico en el bit.

Bit 5UDRE: Registro de datos de la UART vaco


Este bit est a set (uno) cuando un carcter escrito a UDR se transfiere al registro de
desplazamiento de transmisin. Si este bit se pone a set indica que el transmisor est listo para
recibir un nuevo carcter para la transmisin.

Cuando el bit UDRIE en UCR est a set, la interrupcin de transmisin de UART completa se
ejecuta mientras UDRE est a set. UDRE es borrado escribindole en UDR. Cuando se usa una
interrupcin de transmisin de datos, la rutina de interrupcin de registro de datos de la UART
vaco debe escribir en UDR para borrar UDRE, de otra forma una nueva interrupcin ocurrir
cuando la rutina de la interrupcin termine.
UDRE est a set (uno) durante el reset para indicar que el transmisor est listo.

Bit 4FE: Error de estructura


Este bit est a set si se detecta una condicin de error en la estructura, es decir, cuando el bit de
stop de un carcter entrante es cero.

El bit FE se borra cuando el bit de stop del dato recibido es uno.

134

Bit 3OR: Desbordamiento


Este bit est a set si se detecta una condicin del desbordamiento, es decir, cuando un
carcter ya presente en el registro UDR no se lee antes que el prximo carcter se
desplace al registro de desplazamiento de recepcin. El bit OR pasa por un buffer, que
significa que estar a set una vez el dato vlido en UDRE se lee.
El bit OR se borra (cero) cuando el dato se recibe y se transfiere a UDR.

Bits 2 ..0Res: Bits reservados


Estos bits son bits reservados en los AT90S8515 y siempre se leern como cero.

Registro de Control de la UART UCR

Bit 7RXCIE: Habilitacin de la Interrupcin de RX completa


Cuando este bit est a set (uno), la puesta a set del bit RXC en USR provocar que se
ejecute la rutina de interrupcin de recepcin completa con tal de que estn habilitadas
las interrupciones globales.
Bit 6TXCIE: Habilitacin de la Interrupcin de
TX completa
Cuando este bit est a set (uno), la puesta a set del bit TXC en USR provocar que se
ejecute la rutina de interrupcin de transmisin completa con tal de que estn habilitadas
las interrupciones globales.
Bit 5UDRIE: Habilitacin de la interrupcin de
registro de datos de UART vaco
Cuando este bit est a set (uno), la puesta a set del bit UDRE en USR provocar que se
ejecute la rutina de interrupcin de registro de datos de UART vaco con tal de que las
interrupciones globales estn habilitadas.

135

Bit 4RXEN: Habilitacin del receptor


Este bit habilita al receptor de UART cuando est a set (uno). Cuando el receptor est
deshabilitado, las banderas de estado RXC, OR y FE no pueden ponerse a set. Si estas
banderas estn a set y se deshabilita RXEN no provoca que se borren.
Bit 3TXEN: Habilitacin del transmisor
Este bit habilita el transmisor de UART cuando est a set (uno). Al deshabilitar el
transmisor mientras se est transmitiendo un carcter, el transmisor no se deshabilita
antes que el carcter en el registro de desplazamiento y cualquier carcter siguiente en
UDR ha sido completamente transmitido.
Bit 2CHR9: Caracteres de 9-bit
Cuando este bit est a set (uno), transmite y recibe caracteres con 9 bit de longitud ms
los bits de start y stop. El noveno bit se lee y se escribe usando los bits RXB8 y TXB8 en
UCR respectivamente. El noveno bit de datos puede usarse como un bit de stop extra o
como un bit de paridad.
Bit 1RXB8: Bit 8 de recepcin de datos
Cuando CHR9 est a set (uno), RXB8 es el noveno bit de datos del carcter recibido.
Bit 0TXB8: Bit 8 de transmisin de datos
Cuando CHR9 est a set (uno), TXB8 es el noveno bit de datos en el carcter a ser
transmitido.
GENERADOR DE BAUD RATE

El generador de Baud rate es un divisor de frecuencia que genera Baud rates de acuerdo
con la ecuacin siguiente:

BAUD = Baud rate


f CK = Frecuencia de clock del cristal
UBRR = Contenido del registro de Baud rate de la UART, UBRR (0 - 255)

136

Para frecuencias de cristal standard, los Baud rates normalmente usados pueden generarse usando
las situaciones de UBRR de la Tabla de Baud rates. Los valores de UBRR que producen un Baud
rate que difieren del valor real menos de 2% del Baud rate designado estn en negrita en la tabla.
Sin embargo, el uso de Baud rates que tienen ms de 1% de error no se recomienda. Errores
mayores proporcionan menor inmunidad al ruido.

Tabla 17. Baud rates

137

Registro de baud rate de la UART


UBRR

El registro UBRR es un registro de 8-bit de lectura / escritura que especifica el baud rate
de la UART segn la ecuacin que se muestra al principio de esta pgina.


Introduccin

 Control del Comparador analgico y registro de estado ACSR


INTRODUCCIN

138

Figura 42. Diagrama de bloques del Comparador Analgico

Control del Comparador analgico y


registro de estado ACSR

Bit 7ACD: Comparador analgico deshabilitado


Cuando este bit est a set (uno), la energa al Comparador Analgico se desconecta. Este
bit puede activarse en cualquier momento para apagar el Comparador Analgico. Esto
reducir el consumo de energa en los modos active e idle. Cuando se cambia el bit ACD,
la interrupcin de Comparador Analgico debe ser desactivada borrando el bit ACIE en
ACSR. De otro modo puede ocurrir una interrupcin cuando se cambia el bit.
Bit 6Res: Bit reservado
Este bit es un bit reservado en los AT90S8515 y siempre se leer como cero.

139

Bit 5ACO: Salida del Comparador analgico


ACO se conecta directamente a la salida del comparador.

Bit 4ACI: Bandera de interrupcin del


Comparador analgico
Este bit est a set (uno) cuando un evento de salida del comparador activa el modo de
interrupcin definido por ACI1 y ACI0. La rutina de interrupcin del Comparador
Analgico se ejecuta si el bit ACIE est a set (uno) y el I-bit en SREG est a set (uno).
ACI es borrado por hardware al ejecutar el correspondiente vector de interrupcin .
Alternativamente, ACI es borrado escribiendo un "1" lgico en la bandera. Observe sin
embargo, que si otro bit en este registro es modificado usando la instruccin SBI o CBI,
ACI se borrar si se ha activado antes de la operacin.
Bit 3ACIE: Habilitacin de interrupcin del
Comparador analgico
Cuando el bit ACIE est a set (uno) y el bit I en el registro de estado est a set (uno), la
interrupcin de Comparador Analgico se activa. Cuando se borra (cero), la interrupcin
est desactivada.
Bit 2ACIC: Habilitacin de captura de entrada
del Comparador analgico
Cuando est a set (uno), este bit permite que la funcin de Captura de Entrada en el
Timer/Contador 1 sea activada por el Comparador Analgico. La salida del comparador
est, en este caso, directamente conectada a la lgica "front-end" de captura de entrada y
hace que el comparador utilice el anulador de ruido y caractersticas de seleccin de
flancos de la interrupcin de captura de entrada del Timer/Counter1. Cuando se borra
(cero), no se da ninguna conexin entre el comparador analgico y la funcin de captura
de entrada . Para hacer que el comparador active la interrupcin de captura de entrada del
Timer/Contador 1, el bit TICIE1 en el registro de mscara de interrupcin del timer
(TIMSK) debe ponerse a set (uno).
Bits 1, 0ACIS1, ACIS0: Seleccin de modo de
interrupcin del comparador analgico
Estos bits determinan qu eventos del comparador activan la interrupcin del comparador
analgico. Las diferentes opciones se muestran en la siguiente tabla.

140

Tabla 18. Seleccin de modo de interrupcin mediante ACIS1 y ACIS0


Nota: Al cambiar los bits ACIS1/ACIS0, la interrupcin del comparador analgico debe ser
desactivada borrando su bit de habilitacin de interrupcin en el registro ACSR. De otra forma
una interrupcin puede ocurrir cuando los bits estn cambiados.


Puerto A

Registro de datos del Puerto A - PORTA


Registro de direccin de datos del Puerto A - DDRA
Direccin de los pines de entrada del Puerto A - PINA
Puerto A como I/O digital general
Diagramas del Puerto A

Registro de datos del Puerto B - PORTB


Registro de direccin de datos del Puerto B - DDRB
Direccin de los pines de entrada del Puerto B - PINB
Puerto B como I/O digital general
Funciones alternativas del Puerto B
Diagramas del Puerto B

Puerto B

Puerto C

Registro de datos del Puerto C - PORTC

Registro de direccin de datos del Puerto C - DDRC

Direccin de los pines de entrada del Puerto C - PINC


Puerto C como I/O digital general
Diagramas del Puerto C

Registro de datos del Puerto D - PORTD


Registro de direccin de datos del Puerto D - DDRD
Direccin de los pines de entrada del Puerto D - PIND
Puerto D como I/O digital general
Funciones alternativas del Puerto D
Diagramas del Puerto D

Puerto D

Todos los puertos de los AVR tienen la funcionalidad de leer-modificar-escribir cuando


se usan como puertos de I/O digitales generales. Esto significa que la direccin de un pin
del puerto puede cambiarse involuntariamente cambiando la direccin de cualquier otro
pin con las instrucciones SBI y CBI. Lo mismo se aplica al cambio del valor de control
(si se configur como salida) o la habilitacin o no de las resistencias de Pull-up (si se
configur como entrada).
141

PUERTO A

El Puerto A es un puerto de I/O bidireccional de 8-bit. Se asignan tres posiciones de direccin de


memoria de I/O para el Puerto A; para el Registro de DatosPORTA, $1B($3B), para el Registro
de Direccin de DatosDDRA, $1A($3A) y para los pines de entrada del Puerto APINA,
$19($39). Las direcciones de los pines de entrada del Puerto A son de slo lectura, mientras que
el Registro de datos y el Registro de Direcciones de Datos son de lectura / escritura.

Todos los pines del puerto tienen resistencias de Pull-up seleccionables individualmente.
Los buffers de salida del Puerto A pueden llevar 20 mA y as manejar directamente
displays LED. Cuando se usan los pines de PA0 a PA7 como entradas y ponen
externamente a Pull-low, pueden dar corriente si las resistencias de Pull-up internas se
activan.
Los pines del Puerto A tienen funciones alternativas relacionadas a la SRAM de datos externa
optativa. El Puerto A puede configurarse para ser el bus de datos / direcciones de bajo orden
multiplexado durante el acceso a la memoria de datos externa. En este modo, el Puerto A tiene
resistencias internas de Pull-up.

Cuando el Puerto A se pone en su funcin alternativa mediante el bit SRE (SRAM externa
habilitada) en MCUCR (Registro de control MCU), las situaciones alternativas sustituyen al
Registro de Direccin de Datos.

Registro de datos del Puerto A - PORTA

142

Registro de direccin de datos del Puerto A DDRA

Direccin de los pines de entrada del Puerto A PINA

La direccin de los pines de entrada del Puerto A (PINA) no es un registro; esta direccin
habilita el acceso al valor fsico en cada pin del Puerto A. Al leer PORTA, se lee el latch
de datos del Puerto A y cuando se lee PINA, se leen los valores lgicos existentes en los
pines.

El Puerto A como I/O Digital General

Los ocho pines del Puerto A tienen la misma funcionalidad cuando se usan como pines de I/O
digitales. PAn, pin de I/O general: El bit DDAn en el registro DDRA selecciona la direccin de
este pin. Si DDAn est a set (uno), PAn se configura como un pin de salida. Si DDAn se borra
(cero), PAn se configura como un pin de entrada. Si PORTAn est a set (uno) cuando el pin se
configura como un pin de entrada, se activa la resistencia Pull-up del MOS. Para desconectar la
resistencia de Pull-up, el PORTAn tiene que ser borrado (cero) o el pin tiene que ser configurado
como un pin de salida. Los pines del Puerto A estn en tri-estado cuando una condicin de Reset
se pone activa, aun cuando el reloj no est activo.

143

Tabla 19. Efectos de DDAn en los pines del Puerto A


Nota: n:7,6...0, nmero de pin.

144

Diagramas del Puerto A


145

Observe que todos los pines del puerto estn sincronizados.

Figura 42. Diagramas Esquemticos del Puerto A (Pines PA0 - PA7)

PUERTO B
El Puerto B es un puerto bidireccional de I/O de 8-bit. Se asignan tres posiciones de
direccin de memoria de I/O para el Puerto B, uno para el Registro de DatosPORTB,
$18($38), Registro de Direccin de DatosDDRB, $17($37) y los pines de entrada del
Puerto BPINB, $16($36). Las direcciones de los pines de entrada del Puerto B son slo
de lectura, mientras que el Registro de datos y el Registro de Direcciones de Datos es de
lectura / escritura. Todos los pines del puerto tienen resistencias de Pull-up seleccionables
individualmente. Los buffers de salida del Puerto B pueden llevar 20 mA y as manejar
directamente displays LED. Cuando se usan los pines de PB0 a PB7 como entradas y
ponen externamente a Pull-low, pueden dar corriente si las resistencias de Pull-up
internas se activan.
Los pines del Puerto B con sus funciones alternativas se muestra en la siguiente tabla.
146

Tabla 20. Funciones alternativas de los pines del Puerto B

Cuando los pines se usan para las funciones alternativas, los registros DDRB y PORTB
tienen que ser puestos segn la descripcin de las funciones alternativas.
Registro de datos del Puerto B PORTB

Registro de direccin de datos del Puerto B DDRB

147

Direccin de los pnes de entrada del Puerto B PINB

Puerto B como I/O Digital General

Los ocho pines del Puerto B tienen la misma funcionalidad cuando se usan como pines de I/O
digitales. PBn, pin de I/O general: El bit DDBn en el registro DDRB selecciona la direccin de
este pin. Si DDBn est a set (uno), PBn se configura como un pin de salida. Si DDBn se borra
(cero), PBn se configura como un pin de entrada. Si PORTBn est a set (uno) cuando el pin se
configura como un pin de entrada, se activa la resistencia Pull-up del MOS. Para desconectar la
resistencia de Pull-up, el PORTBn tiene que ser borrado (cero) o el pin tiene que ser configurado
como un pin de salida. Los pines del Puerto B estn en tri-estado cuando una condicin de Reset
se pone activa, aun cuando el reloj no est activo.

Tabla 21. Efectos de DDBn en los pines del Puerto B


Nota: n:7,6...0, nmero de pin.

Funciones alternativas del Puerto B


La configuracin de los pines alternativos es como se muestra a continuacin:

148

SCKPuerto B, Bit 7
SCK: Pin de salida del reloj maestro, pin de entrada del reloj esclavo para el canal SPI. Cuando el
SPI se habilita como esclavo, este pin se configura como una entrada sin tener en cuenta la
situacin de DDB7.
Cuando el SPI se habilita como un maestro, la direccin del dato de este pin es controlada
a travs de DDB7. Cuando el pin es obligado a ser una entrada, el Pull-up todava puede ser
controlado por el bit PORTB7. Vea la descripcin del puerto SPI para conocer ms detalles.

MISOPuerto B, Bit 6
MISO: Pin de entrada de datos maestro, pin de salida de datos esclavo para el canal SPI.
Cuando el SPI se habilita como un maestro, este pin se configura como una entrada sin
tener en cuenta la situacin de DDB6. Cuando el SPI se habilita como esclavo, la
direccin del dato de este pin es controlada a travs de DDB6. Cuando el pin es obligado
a ser una entrada, el Pull-up todava puede ser controlado por el bit PORTB6. Vea la
descripcin del puerto SPI para conocer ms detalles.
MOSIPuerto B, Bit 5
MOSI: Salida de datos del maestro del SPI, entrada de datos del esclavo para el canal SPI.
Cuando el SPI se habilita como esclavo, este pin se configura como una entrada sin tener en
cuenta la situacin de DDB5.

Cuando el SPI se habilita como un maestro, la direccin del dato de este pin es controlada a
travs de DDB5. Cuando el pin es obligado a ser una entrada, el Pull-up todava puede ser
controlado por el bit PORTB5. Vea la descripcin del puerto SPI para conocer ms detalles.

SSPuerto B, Bit 4
SS': Entrada de seleccin del puerto esclavo. Cuando el SPI se habilita como esclavo,
este pin se configura como una entrada sin tener en cuenta la situacin de DDB4. Como
esclavo, el SPI se activa cuando este pin se maneja a nivel bajo. Cuando el SPI se habilita
como un maestro, la direccin del dato de este pin es controlada a travs de DDB4.
Cuando el pin es obligado a ser una entrada, el Pull-up todava puede ser controlado por
el bit PORTB4. Vea la descripcin del puerto SPI para conocer ms detalles.
AIN1Puerto B, Bit 3
AIN1: Entrada negativa del Comparador analgico. Cuando se configura como una
entrada (se borra DDB3 [cero]) y con la resistencia interna de Pull-up del MOS
desconectada (se borra PB3 [cero]), este pin tambin sirve como la entrada negativa del
Comparador Analgico del Chip.
149

AIN0Puerto B, Bit 2
AIN0: Entrada positiva del Comparador analgico. Cuando se configura como una
entrada (se borra DDB2 [cero]) y con la resistencia interna de Pull-up del MOS
desconectada (se borra PB2 [cero]), este pin tambin sirve como la entrada positiva del
Comparador Analgico del Chip.
T1Puerto B, Bit 1
T1: Fuente de cuenta del Timer/Contador1. Vea la descripcin del Timer para conocer
ms detalles.
T0Puerto B, Bit 0
T0: Fuente de cuenta del Timer/Contador0. Vea la descripcin del Timer para conocer
ms detalles.

150

Figura 43. Diagrama esquemtico del Puerto B. (Pines PB0 y PB1)

151

Figura 44. Diagrama esquemtico del Puerto B. (Pines PB2 y PB3)

152

Figura 45. Diagrama esquemtico del Puerto B. (Pin PB4)

153

Figura 46. Diagrama esquemtico del Puerto B. (Pin PB5)

154

Figura 47. Diagrama esquemtico del Puerto B. (Pin PB6)


155

156

Figura 48. Diagrama esquemtico del Puerto B. (Pin PB7)

157

PUERTO C

El Puerto C es un puerto de I/O bidireccional de 8-bit. Se asignan tres posiciones de


direccin de memoria de I/O para el Puerto C, uno para el Registro de DatosPORTC,
$15($35), Registro de Direccin de DatosDDRC, $14($34) y los pines de entrada del
Puerto CPINC, $13($33). Las direcciones de los pines de entrada del Puerto C son de
slo lectura, mientras que el Registro de datos y el Registro de Direcciones de Datos es
de lectura / escritura.
Todos los pines del puerto tienen resistencias de Pull-up seleccionables individualmente. Los
buffers de salida del Puerto C pueden llevar 20 mA y as manejar directamente displays LED.
Cuando se usan los pines de PC0 a PC7 como entradas y ponen externamente a Pull-low, pueden
dar corriente si las resistencias de Pull-up internas se activan.

Los pines del Puerto C tienen funciones alternativas relacionadas a la SRAM de datos externa
optativa.

El Puerto C puede configurarse para ser el byte de direccin de alto-orden durante el


acceso a la memoria de datos externa. Cuando el Puerto C se pone en su funcin
alternativa mediante el bitSRE (SRAM externa habilitada) en MCUCR (Registro de
control MCU), las situaciones alternativas sustituyen al Registro de Direccin de Datos.
Registro de datos del Puerto C PORTC
158

Registro de direccin de datos del Puerto C DDRC

Direccin de los pines de entrada del Puerto C PINC

La direccin de los pines de entrada del Puerto C (PINC) no es un registro; esta direccin
habilita el acceso al valor fsico en cada pin del Puerto C. Al leer PORTC, se lee el latch
de datos del Puerto C y al leer PINC, se leen los valores lgicos existentes en los pines.
Puerto C como I/O Digital General

Los ocho pines del Puerto C tienen la misma funcionalidad cuando se usan como pines de
I/O digitales. PCn, pin de I/O general: El bit DDCn en el registro DDRC selecciona la
direccin de este pin. Si DDCn est a set (uno), PCn se configura como un pin de salida.
Si DDCn se borra (cero), PCn se configura como un pin de entrada. Si PORTCn est a set
(uno) cuando el pin se configura como un pin de entrada, se activa la resistencia Pull-up
del MOS. Para desconectar la resistencia de Pull-up, el PORTCn tiene que ser borrado
159

(cero) o el pin tiene que ser configurado como un pin de salida. Los pines del Puerto C
estn en tri-estado cuando una condicin de Reset se pone activa, aun cuando el reloj no
est activo.

Tabla 22. Efectos de DDCn en los pines del Puerto C

Diagramas del Puerto C


Observe que todos los pines del puerto estn sincronizados.

Figura 49. Diagramas Esquemticos del Puerto C (Pines PC0 - PC7)

160

PUERTO D
El Puerto D es un puerto bidireccional de I/O de 8-bit con resistencias internas de Pullup. Se asignan tres posiciones de direccin de memoria de I/O para el Puerto D, uno para
el Registro de DatosPORTD, $12($32), Registro de Direccin de DatosDDRD,
$11($31) y los pines de entrada del Puerto DPIND, $10($30). Las direcciones de los
pines de entrada del Puerto D son de slo lectura, mientras que el Registro de datos y el
Registro de Direcciones de Datos es de lectura / escritura.
Los buffers de salida del Puerto D pueden llevar 20 mA. Como entradas, los pines del
Puerto D que se ponen externamente a Pull-low, pueden dar corriente si las resistencias de Pullup internas se activan.
Algunos pines del Puerto D tienen funciones alternativas como se muestra en la siguiente
tabla.

Tabla 23. Funciones alternativas de los pines del Puerto D

Cuando los pines se usan para la funcin alternativa, los registros DDRD y PORTD tienen que
ser puestos segn la descripcin de la funcin alternativa.

Registro de datos del Puerto D


PORTD

Registro de direccin de datos del Puerto D DDRD


161

Direccin de los pines de entrada del Puerto D PIND

La direccin de lo pines de entrada del Puerto D (PIND) no es un registro; esta direccin


habilita el acceso al valor fsico en cada pin del Puerto D. Al leer PORTD, se lee el latch
de datos del Puerto D y al leer PIND, se leen los valores lgicos existentes en los pines.
Puerto D como I/O Digital General
PDn, pin de I/O general: El bit DDDn en el registro DDRD selecciona la direccin de este pin. Si
DDDn est a set (uno), PDn se configura como un pin de salida. Si DDDn se borra (cero), PDn se
configura como un pin de entrada. Si PORTDn est a set (uno) cuando el pin se configura como
un pin de entrada, se activa la resistencia de Pull-up del MOS. Para desconectar la resistencia de
Pull-up, el PORTDn tiene que ser borrado (cero) o el pin tiene que ser configurado como un pin
de salida. Los pines del Puerto D estn en tri-estado cuando una condicin de Reset se pone
activa, aun cuando el reloj no est activo.

Tabla 24. Efectos de DDDn en los pines del Puerto D


Nota: n:7,6...0, nmero de pin.

Funciones alternativas del Puerto D


RD'Puerto D,Bit 7
RD' es la patilla de control de lectura de la memoria de datos externa. Vea "la Interface a SRAM
Externa" para tener una informacin detallada.
162

WR'Puerto D, Bit 6
WR' es la patilla de control de escritura de la memoria de datos externa. Vea "la Interface a
SRAM Externa" para tener una informacin detallada.

OC1APuerto D, Bit 5
OC1A: Salida de la operacin de comparacin de salida. El pin PD5 puede servir como una salida
externa cuando se produce la comparacin en el Timer/Contador1. El pin PD5 tiene que ser
configurado como salida (DDD5 a set [uno]) para que sirva esta funcin. Vea la descripcin del
Timer/Contador1 para tener ms detalles y saber cmo habilitar la salida. El pin OC1A tambin
es el pin de salida para la funcin del Timer en modo PWM.

INT1Puerto D, Bit 3
INT1: Fuente de Interrupcin externa 1. El pin PD3 puede servir como una fuente de interrupcin
externa al MCU. Vea la descripcin de las interrupciones para conocer ms detalles y saber cmo
habilitar la fuente.

INT0Puerto D, Bit 2
INT0: fuente de Interrupcin externa 0. El pin PD2 puede servir como una fuente de interrupcin
externa al MCU. Vea la descripcin de las interrupciones para conocer ms detalles y saber cmo
habilitar la fuente.
TXDPuerto D, Bit 1
Transmisin Datos (pin de salida de datos para la UART). Cuando el transmisor de UART se
habilita, este pin se configura como salida, sin tener en cuenta el valor de DDRD1.

RXDPuerto D, Bit 0
Recepcin Datos (pin de entrada de datos para la UART). Cuando el receptor de UART se
habilita, este pin se configura como una entrada, sin tener en cuenta el valor de DDRD0. Cuando
la UART obliga a este pin a ser una entrada, un "1" lgico en PORTD0 conectar la resistencia de
Pull-up interna.

Diagrama del puerto D

163

Observe que todos los pines del puerto estn sincronizados.

Figura 50. Diagrama esquemtico del Puerto D. (Pin PD0)

164

Figura 51. Diagrama esquemtico del Puerto D. (Pin PD1)

165

Figura 52. Diagrama esquemtico del Puerto D. (Pines PD2 y PD3)

166

Figura 53. Diagrama esquemtico del Puerto D. (Pin PD4)

167

Figura 54. Diagrama esquemtico del Puerto D. (Pin PD5)

168

Figura 55. Diagrama esquemtico del Puerto D. (Pin PD6)

169

Figura 56. Diagrama esquemtico del Puerto D. (Pin PD7)




Bits "llave" (o cerradura) de la Memoria de Datos y Programa


 Bits de Fusible
 Bytes de Firma
 Programacin de FLASH y EEPROM
 Programacin en paralelo
 Nombres de seales

 Entrada en modo programacin














Borrado del chip


Programacin de la memoria FLASH
Lectura de la memoria FLASH
Programacin de la EEPROM
Lectura de la memoria EEPROM
Programacin de los bits de fusible
Programacin de los bits "llave" (cerradura)
Lectura de los bits de fusible y llave
Lectura de los bytes de firma
Caractersticas de la Programacin en Paralelo
Transmisin serie

 Algoritmo de la programacin serie


170

 Encuesta de datos de EEPROM


 Encuesta de datos de la FLASH
 Caractersticas de la Programacin Serie

BITS "LLAVE" (o cerradura) DE LA


MEMORIA DE DATOS Y PROGRAMA
El MCU AT90S8515 proporciona dos bits llave que pueden ser dejados sin programar
("1") o puede programarse ("0") para obtener las caractersticas adicionales listadas en la
siguiente tabla. Los bits llave slo pueden borrarse con la orden "Erase" del Chip.

Tabla 25. Modos de proteccin de los bit de "llave" (o cerradura)

Nota: (Modo 2) - En modo Paralelo, tras la programacin de los bits de Fusible est tambin
deshabilitado. Programe los bits de Fusible antes de programar los bits de "llave".

BITS DE FUSIBLE
Los AT90S8515 tienen dos bits de Fusible, SPIEN y FSTRT. Cuando el Fusible SPIEN se
programa ("0"), la Programacin Serie y la Transmisin de Datos se habilitan. El valor
predefinido es programado ("0"). Cuando el Fusible FSTRT se programa ("0"), se selecciona el
tiempo corto de "start-up". El valor predefinido est desprogramado ("1"). Los dispositivos con
este bit pre-programado ("0") puede funcionar por solicitud.
Los bits de Fusible no son accesibles en el Modo de Programacin Serie. El estado de los bits de
Fusible no es afectado por el borrado del Chip.

BYTES DE FIRMA

Todos los microcontroladores de Atmel tienen un cdigo de firma de tres byte que
identifica el dispositivo. Este cdigo puede leerse en modo Serie y Paralelo. Los tres
bytes residen en un espacio de direccin separado.
Para los AT90S8515(1) son :
171

 $000: $1E (indica que est fabricado por Atmel)


 $001: $93 (indica 8 KB de memoria FLASH)
 $002: $01 (indica que es un dispositivo AT90S8515 cuando la firma byte $001 es $93)
Nota: 1. cuando se programan los dos bits "llave" (cerradura modo 3), los bytes de la firma no
pueden leerse en Modo Serie. Leyendo los bytes de la firma devolver: $00, $01 y $02.

PROGRAMACIN DE FLASH Y EEPROM

Los AT90S8515 de Atmel ofrecen 8K bytes de memoria de programa FLASH Reprogramable en


el sistema y 512 bytes de memoria de datos EEPROM.

El AT90S8515 se enva con los arrays del programa FLASH que est en el chip y la
memoria de datos EEPROM en el estado de borrado (es decir, contenido = $FF) y
preparado para ser programado. Este dispositivo soporta un modo de Programacin
Paralelo de alto-voltaje (12V) y un modo de Programacin Serie de bajo-voltaje. Los
+12V se usan nicamente para habilitar la programacin y ninguna corriente de
importancia pasa por este pin. El modo de Programacin Serie proporciona una manera
conveniente para transmitir el programa y los datos en los AT90S8515 dentro del sistema
del usuario.
Los arrays de la memoria de datos y memoria en los AT90S8515 se programan byte por byte en
cualquier modo de programacin. Para la EEPROM, un ciclo de auto-borrado es proporcionado
en el mismo tiempo de la operacin de escritura en el modo de Programacin Serie. Durante la
programacin, la tensin de suministro debe estar de acuerdo con la tabla siguiente.

Tabla 26. Tensin suministrada durante la programacin

PROGRAMACIN PARALELA
Esta seccin describe cmo Programar en Paralelo y verificar la memoria de programa
FLASH, la memoria de datos EEPROM, los bits "llave" (o cerradura) y los bits de
Fusible en el AT90S8515.
Nombres de seales

En esta seccin, algunos pines del AT908515 son referenciados por los nombres de la
seal que describen su funcin durante la Programacin Paralela. Vea la siguiente figura
y la tabla 27. Los pines no descritos en la tabla 27 son referenciados por los nombres del
172

pin. Los pines XA1/XA0 determinan la accin ejecutada cuando se da un pulso positivo
en el pin XTAL1. La codificacin de los bit se muestran en la tabla 28. Al pulsar WR' u
OE', la orden cargada determina la accin ejecutada. La orden es un byte donde a los
diferentes bits se les asignan funciones como se muestra en la tabla 29.

Figura 57. Programacin Paralela

Tabla 27. Mapa de los nombres de los pines

173

Tabla 28. Codificacin de XA1 y XA0

Tabla 29. Codificacin de los bit del byte de la orden

Entrada en modo programacin

El algoritmo siguiente pone el dispositivo en Modo de Programacin Paralelo:


1. Aplique una tensin de suministro de 4.5 a 5.5 V, entre VCC y GND.
2. Ponga los pines RESET ' y BS a "0" y espere 100 ns por lo menos.
3. Aplique 11.5 - 12.5 V para hacer un RESET '. Cualquier actividad en BS dentro
de 100 ns despus de que se apliquen los +12V para un RESET ' causar que el
dispositivo falle entrando en el modo de programacin.
Borrado del Chip

La orden de borrado de Chip borrar las memorias FLASH y EEPROM y los bits llave
(cerradura). Los bits llave no se resetean hasta que la FLASH y la EEPROM han sido
174

completamente borradas. Los bits de Fusible no se cambian. El borrado del Chip debe
realizarse antes de que la FLASH o la EEPROM se reprogramen.
Orden cargada "Borrado del Chip"
1.
2.
3.
4.
5.

Ponga XA1, XA0 a "10". Esto habilita la carga de la orden.


Ponga BS a "0".
Ponga el dato a "1000 0000". sta es la orden para borrar el Chip.
D un pulso positivo a XTAL1. Esto carga la orden.
D un pulso negativo tWLWH_CE de ancho (entre 5 y 15 ms. Valor tpico de 10 ms) a
WR' para ejecutar el borrado del chip. El borrado del Chip no genera ninguna
actividad en el pin RDY/BSY '.

Programacin de la memoria FLASH

A: Cargue la orden "Escribir la FLASH"


1.
2.
3.
4.

Ponga XA1, XA0 a "10". Esto habilita la carga de la orden.


ponga BS a "0."
Ponga el dato a "0001 0000". sta es la orden para escribir la FLASH
D un pulso positivo a XTAL1.

B: Cargue la direccin del byte alto


1.
2.
3.
4.

Ponga XA1, XA0 a "00". Esto habilita la carga de la direccin.


Ponga BS a "1". Esto selecciona el byte alto.
Ponga el dato = Direccin del byte alto ($00 - $0F).
D un pulso positivo a XTAL1. Esto carga la direccin del byte alto.

C: Cargue la direccin del Byte Bajo


1.
2.
3.
4.

Ponga XA1, XA0 a "00". Esto habilita la carga de la direccin.


Ponga BS a "0". Esto selecciona el byte bajo.
Ponga el dato = Direccin del byte bajo ($00 - $FF).
D un pulso positivo a XTAL1. Esto carga la direccin del byte bajo.

D: Cargue el byte bajo del dato


1. Ponga XA1, XA0 a "01". Esto habilita la carga del dato.
2. Ponga el dato = Byte bajo del dato ($00 - $FF).
3. D un pulso positivo a XTAL1. Esto carga los datos del byte bajo.
E: Escriba el byte bajo del dato
1. Ponga BS a "0". Esto selecciona la parte baja del dato.
175

2. D un pulso negativo a WR'. Esto empieza la programacin del byte de dato.


RDY/BSY ' est a nivel bajo.
3. Espere hasta que RDY/BSY ' est a nivel alto para programar el prximo byte.
(Observe la siguiente figura 58 para ver las formas de onda sealadas.)
F: Cargue el byte alto del dato
1. Ponga XA1, XA0 a "01". Esto habilita la carga de los datos.
2. Ponga el dato = Byte alto del dato ($00 - $FF).
3. D un pulso positivo a XTAL1. Esto carga el byte alto del dato.
G: Escriba el byte alto del dato
1. Ponga BS a "1". Esto selecciona la parte alta del dato.
2. D un pulso negativo a WR'. Esto empieza la programacin del byte de datos.
RDY/BSY ' est a nivel bajo.
3. Espere hasta que RDY/BSY ' est a nivel alto para programar el prximo byte.
(Observe la siguiente figura 59 para ver las formas de onda sealadas.)
Se retienen la orden y la direccin cargadas en el dispositivo durante la programacin.
Para una programacin eficaz debe ser considerado lo siguiente :
 La orden slo necesita ser cargada una vez al escribir o leer mltiples posiciones
de memoria.
 El byte alto de la direccin slo necesita ser cargado antes de programar una
nueva pgina de 256-word en la FLASH.
 Pase por alto escribiendo el valor del dato $FF, es decir, el contenido de la
FLASH entera y EEPROM despus del borrado del Chip.

Estas consideraciones tambin se aplican a la programacin de la EEPROM y lectura de


la FLASH, EEPROM y del byte de firma.

176

Figura 58. Formas de onda de la programacin de la FLASH

Figura 59. Formas de onda de la programacin de la FLASH

177

Lectura de la memoria FLASH

El algoritmo para leer la memoria FLASH es como sigue (Vaya a la Programacin de la


FLASH para ver los detalles de la carga de ordenes y direcciones):
A: Cargue la orden "0000 0010".
B: Cargue la direccin del byte alto ($00 - $0F).
C: Cargue la direccin del byte bajo ($00 - $FF).
Ponga OE' a "0" y BS a "0". El byte bajo de la palabra de FLASH puede leerse
ahora del dato.
5. Ponga BS a "1". El byte alto de la palabra de FLASH puede leerse ahora del
dato.
6. Ponga OE' a "1."

1.
2.
3.
4.

Programacin de la EEPROM

El algoritmo de la programacin para la memoria de datos EEPROM es como sigue


(Vaya a la Programacin de la FLASH para ver los detalles de la carga de ordenes,
direcciones y datos):
1.
2.
3.
4.
5.

A: Cargue la orden "0001 0001."


B: Cargue la direccin del byte alto ($00 - $01).
C: Cargue la direccin del byte bajo ($00 - $FF).
D: Cargue el byte bajo del dato ($00 - $FF).
E: Escriba el byte bajo del dato.

Lectura de la memoria EEPROM

El algoritmo para leer la memoria EEPROM es como sigue (Vaya a la Programacin de


la FLASH para los detalles de la carga de las ordenes y direcciones):
A: Cargue la orden "0000 0011."
B: Cargue la direccin del byte alto ($00 - $01).
C: Cargue la direccin del byte bajo ($00 - $FF).
Ponga OE' a "0" y BS a "0". El byte del dato de la EEPROM puede leerse ahora
del dato.
5. Ponga OE' a "1.
1.
2.
3.
4.

Programacin de los bits de Fusible

El algoritmo para programar los bits de Fusible es como sigue (Vaya a la Programacin
de la FLASH para los detalles de la carga de las ordenes y datos):
1. A: Cargue la orden "0100 0000."
178

2. D: Cargue el byte bajo del dato. Bit n = "0" programar y bit n = "1" borra el bit
de Fusible.

 Bit 5 = Bit de Fusible SPIEN


 Bit 0 = Bit de Fusible FSTRT
 Bit 7-6, 4-1 = "1". Estos bits son reservados y no deben ser programados

3. D un pulso negativo de tWLWH_PFB de ancho (entre 1.0 y 1.8 ms. Valor tpico de
1.5 ms) a WR' para ejecutar la programacin. La programacin de los bits de
Fusible no genera ninguna actividad en el pin RDY/BSY '.
Programacin de los bits llave (Cerradura)

El algoritmo para programar los bit llave es como sigue (Vaya a la Programacin de la
FLASH para los detalles de la carga de las ordenes y datos):
1) A: Cargue la orden "0010 0000."
2) D: Cargue el byte bajo del dato. Bit n = "0" programar el bit llave (cerradura).
 Bit 2 = Bit llave 2
 Bit 1 = Bit llave 1
 Bit 7 - 3, 0 = "1". Estos bits son reservados y no deben ser programados

3) E: Escriba el byte bajo del dato.


Los bits llave slo pueden ser borrados ejecutando el borrado del Chip.
Lectura de los bit de Fusible y llave (cerradura)

El algoritmo para leer los bit de Fusible y llave (Cerradura) son como sigue (Vaya a la
Programacin de la FLASH para los detalles de la carga de las rdenes):
1. A: Cargue la orden "0000 0100."
2. Ponga OE' a "0" y BS a "1". Puede leerse ahora el estado de los bit de Fusible y
llave (Cerradura) en el dato ("0" significa programado).
 Bit 7 = Bit llave 1
 Bit 6 = Bit llave 2
 Bit 5 = Bit de Fusible SPIEN
 Bit 0 = Bit de Fusible FSTRT
3. Ponga OE' a "1."
Observe que BS necesita ser puesto a "1."
179

Lectura de los Bytes de Firma

El algoritmo para leer los bytes de Firma es como sigue (Valla a la Programacin de la
FLASH para los detalles de la carga de las ordenes y direcciones):
1. A: Cargue la orden "0000 1000."
2. C: Cargue el byte bajo de la direccin ($00 - $02).
Ponga OE' a "0" y BS a "0". El byte de Firma seleccionado puede leerse ahora en
el
dato.
3. Ponga OE' a "1.

CARACTERSTICAS DE LA PROGRAMACIN EN PARALELO

Figura 60. Tiempos de la Programacin en Paralelo

180

Tabla 30. Caractersticas de la programacin en paralelo a TA=25C 10%,


VCC=5V 10%

(1) Utilice tWLWH_CE para el borrado del Chip y tWLWH_PFB para programar
Notas:
los bits de Fusible.
(2) Si tWLWH
RDY/BSY '.

se mantiene ms tiempo que tWLRH no se ver ningn pulso de

181

TRANSMISIN SERIE
Los arrays de memoria de datos y programa pueden programarse usando un Bus SPI
mientras el RESET ' est unido a GND. La interface Serie consiste en los pines SCK,
MOSI (entrada) y MISO (salida). Vea la siguiente figura. Despus de que el RESET ' se
ponga a nivel bajo, la instruccin de habilitacin de programacin necesita ser ejecutada
primero antes de que las instrucciones program/erase puedan ejecutarse.

Figura 60. Programacin Serie y Verificacin

Para la EEPROM, se proporciona un ciclo de auto-borrado al mismo tiempo que la


instruccin de escritura y no hay necesidad de ejecutar primero la instruccin de borrado
de Chip. La instruccin de borrado de Chip lleva el contenido de cada posicin de
memoria de los arrays de Programa y EEPROM a $FF. Los arrays de las memorias
EEPROM y de programa tienen espacios de direccin separados: $0000 a $0FFF para la
memoria de Programa y $0000 a $01FF para la memoria EEPROM. Tanto un reloj
externo que se proporciona al pin XTAL1 como un cristal, necesitan ser conectados a los
pines XTAL1 y XTAL2. Los periodos mnimos bajo y alto para la entrada de reloj Serie
(SCK) se definen de la siguiente forma:
 Bajo: > 2 ciclos de reloj de XTAL1
 Alto: > 2 ciclos de reloj de XTAL1
Algoritmo de la Programacin Serie

182

Al escribir datos Serie al AT90S8515, el dato se toma en el flanco de subida de SCK. Al


leer el dato del AT90S8515, el datos es toma en el flanco de bajada de SCK. Para
programar y verificar el AT90S8515 en el Modo de Programacin Serie, se recomienda
la secuencia siguiente (vea las estructuras de las instrucciones de 4-byte en la tabla 32):

1. Secuencia de Power-up: Aplique la energa entre VCC y GND mientras RESET '
y SCK se ponen a "0". Si un cristal no se conecta por los pines XTAL1 y XTAL2,
aplique una seal de reloj al pin XTAL1. En algunos sistemas, el programador no
puede garantizar que ese SCK se mantenga a nivel bajo durante el Power-up. En
este caso, en el RESET ' debe darse un pulso positivo de por lo menos dos ciclos
de XTAL1 de duracin despus de que SCK se ha puesto a "0."
2. Espere por lo menos 20 ms y habilite la Programacin Serie enviando la
instruccin de habilitacin de la Programacin Serie al pin MOSI (PB5).
3. Las instrucciones de Programacin Serie no funcionarn si la comunicacin no
est sincronizada. Cuando est en sincronizacin, el segundo byte ($53) har eco
hacia atrs cuando se emite el tercer byte de la instruccin de habilitacin de
Programacin. Sea el eco correcto o no, deben transmitirse los cuatro bytes de la
instruccin. Si el $53 no hiciera eco hacia atrs, d un pulso positivo a SCK y
emita una nueva instruccin de habilitacin de Programacin. Si el $53 no se ve
en 32 intentos, no hay ningn dispositivo funcional conectado.
4. Si se realiza un borrado de Chip (debe hacerse para borrar la FLASH), espere
tWD_ERASE despus de la instruccin, d un pulso positivo al RESET ' y vuelve a
empezar desde el paso 2. En la pgina de las Caractersticas de la Programacin
Serie se puede ver una tabla con los valores del tWD_ERASE.
5. En el array de FLASH o EEPROM se programa un byte en un momento que se
proporciona la direccin y datos junto con la instruccin apropiada de escritura.
Una posicin de memoria EEPROM se borra primero automticamente antes de
que los nuevos datos se escriban. Use la encuesta de datos para descubrir cuando
puede escribirse el prximo byte en la FLASH o en la EEPROM. Si el registro no
es usado, espere tWD_PROG antes de transmitir la prxima instruccin. En la pgina
de las Caractersticas de la Programacin Serie se puede ver una tabla con los
valores de tWD_PROG. En un dispositivo borrado, ningn $FFs en el archivo(s) de
datos necesita ser programado.
6. cualquier posicin de memoria puede ser verificada usando la instruccin de
lectura que devuelve el contenido de la direccin seleccionada en el pin de salida
Serie MISO (PB6).
7. Al final de la sesin de programacin, el RESET ' puede ponerse a nivel alto para
comenzar el funcionamiento normal.
8. Secuencia de Power-off (si se necesita):
 Ponga XTAL1 a "0" (si no se usa un cristal).
 Ponga RESET ' a "1."
 Desconecte VCC.
183

Encuesta de datos de EEPROM

Cuando un byte est programndose en la EEPROM, leyendo la posicin de direccin


que est programndose dar el valor P1 hasta que el auto-borrado finalice y entonces el
valor P2. Vea la tabla siguiente para ver los valores P1 y P2.

En este momento el dispositivo est listo para un nuevo byte de EEPROM, el valor
programado se leer correctamente. Esto se usa para determinar cuando puede escribirse
el prximo byte. No trabajar para los valores P1 y P2, de modo que para programar estos
valores, el usuario tendr que esperar por lo menos el tiempo tWD_PROG prescrito antes de
programar el prximo byte. En la pgina de las Caractersticas de la Programacin Serie
se puede ver una tabla con los valores del tWD_PROG.

Tabla 31. Lectura del valor devuelto en la encuesta de la EEPROM


Encuesta de datos de la FLASH

Cuando un byte est programndose en la FLASH, leyendo la posicin de direccin que


se ha programado dar el valor $7F. En este momento el dispositivo est listo para un
nuevo byte, el valor programado se leer correctamente. Esto se usa para determinar
cuando puede escribirse el prximo byte. No trabajar para el valor $7F y al programar
este valor, el usuario tendr que esperar por lo menos tWD_PROG antes de programar el
prximo byte.

Figura 60. Formas de onda de la Programacin Serie

184

Tabla 32. Set de instrucciones de la Programacin Serie


Nota: 1. los bytes de Firma no son lebles en el modo llave (cerradura) 3, es decir, los dos
bits llave programados.









a = Bits altos de la direccin


b = Bits bajos de la direccin
H = 0 byte Bajo, 1 byte Alto
= Salida de dato
i = Entrada de dato
x = No importa
1 = Bit llave 1
2 = Bit llave 2

185

INTERFACE A SRAM EXTERNA


La interface a la SRAM se compone de:





Puerto A: Bus de direccin bajo y bus de datos multiplexado


Puerto C: Bus de direccin alto
Pin ALE: Habilitacin del latch de direcciones
Pines RD' y WR': Patillas de lectura y escritura

La SRAM externa de datos es habilitada poniendo a set el bit SRE (Habilitacin de


SRAM externa) del MCUCR (Registro de control MCU) y anular la situacin del
Registro de Direcciones de Datos (DDRA). Cuando el bit SRE se borra (cero), la SRAM
externa de datos est deshabilitada y se usan el pin normal y las direccin de datos
puestas. Cuando SRE se borra (cero), el espacio de direcciones que se encuentra por
encima del lmite de la SRAM interna no se mapea en la SRAM interna, puesto que los
dispositivos AVR no tienen un interface a la SRAM externa. Cuando ALE va de nivel
alto a bajo, hay una direccin vlida en el Puerto A. ALE estar bajo durante una
transmisin de datos. RD' y WR' estn activos slo al acceder a la SRAM externa.
Cuando la SRAM externa se habilita, la seal ALE puede tener pulsos cortos al acceder a
la RAM interna, pero la seal ALE es estable al acceder a la SRAM externa. La "figura
61" indica como conectar una SRAM externa al AVR que usa ocho latches que son
transparentes cuando G est a nivel alto. Por defecto, el acceso a SRAM externa, es un
esquema de 3 ciclos como se muestra en la "figura 62". Cuando se necesita un estado de
espera extra en el ciclo de acceso hay que poner a set (uno) el bit SRW en el registro
MCUCR. El esquema de acceso resultante se muestra en la "figura 63". En ambos casos,
observe que el Puerto A es Bus de datos de un solo ciclo. En cuanto el acceso a los datos
termina, el Puerto A se convierte en un bus bajo de direcciones de nuevo.

186

Figura 61. SRAM externa conectada al AVR

Figura 62. Ciclos de la memoria SRAM externa de datos sin estado de espera

187

Figura 63. Ciclos de la memoria SRAM externa de datos con estado de


espera

188

Intencin:
Durante el proceso de desarrollo y prueba, una de las etapas ms complicadas y peligrosas
respecto de las maniobras del avin, es el aterrizaje. Por otro lado, se debe recordar que en esta
etapa del desarrollo, el control automtico de aterrizaje no est considerado; por tal motivo, se
dise un paracadas con la finalidad de brindar proteccin al avin en el momento del
aterrizaje. El procedimiento de recuperacin puede comenzar con el simple hecho de apagar el
motor. De sta forma, el avin desciende y solo se necesita desplegar el paracadas para ponerlo a
salvo. De ah la necesidad de su construccin, adems de resguardar los componentes
electrnicos que estn montados, independientemente del motor y el fuselaje.
Estado del arte:
En la ltima dcada ha habido muchas
compaas, que se han especializado en
disear paracadas de precisin y alto
desempeo; Los paracadas se han ido
especializando para cada tipo de aplicacin,
como son los militares, personales, carga y
formas desde elpticas hasta circulares, con
pesos que pueden ir desde un 1kg hasta 2500
Kg.
Algunas de las innovaciones en el
paracaidismo han sido por ejemplo, el uso
de dispositivos no pirotcnicos para la
apertura de paracadas, tela sin costuras,
vlvulas
mono-direccionales
para
incrementar el ascenso durante tiempos ms
prolongados.

189

Los paracadas que hoy en da se


construyen, se disean en computadoras con
programas de modelado en tercera
dimensin, pero el problema es que los
programas tradicionales funcionan bien para
estructuras slidas, pero no con estructuras
flexibles y membranas elsticas. Por lo tanto
los modelos hechos en estos sistemas no
funcionan exactamente igual en la realidad
que en programa de simulacin. Compaas
como Atair Parachutes ha desarrollado
software especializado y mtodos para crear
patrones de tensin y flexibilidad en las
simulaciones.

Para nuestro caso, se ha considerado el


desarrollo de un paracadas esttico, ya que
el nico objetivo es aterrizar el avin de
manera vertical.

190

Desarrollo Terico:
Para poder estimar el dimetro del paracadas esttico con seccin transversal circular, haremos las
siguientes suposiciones.
1. La apertura del paracadas se realiza cuando el avin se encuentra planeando y se dispone a
aterrizar, esto es; el motor se ha apagado.
2. El avin se encuentra a una altura suficiente z0, que permita abrir el paracadas y que el
avin alcance la velocidad de descenso vertical deseada, es decir; v zd
3. Suponemos que a la altura z0, la densidad del aire es constante y para todo fin prctico su
valor se puede considerar el que corresponde al nivel del mar, esto es: =1.29 Kg/m3.
4. Suponemos tambin que a la altura z0, el flujo de aire, es decir el fluido se comporta en
forma laminar a pesar de las superficies aerodinmicas del avin, es decir; alas, cola
vertical y cola horizontal. En otras palabras, consideramos una atmsfera uniforme.
5. Podemos considerar que la velocidad inicial de descenso vertical v z0 se puede expresar
como: v z0 = v sin donde v es la velocidad de desplazamiento del avin respecto de tierra.

Cuando la velocidad v del avin disminuye de manera que las superficies aerodinmicas ya no
producen fuerza de sustentacin, el avin esta sujeto a la accin de su propio peso. El empuje del
aire se considera despreciable ya que la densidad del aire es mucho menor que la del avin. Por otra
parte, consideramos que el rozamiento del avin con el aire es despreciable.
Tomemos el eje z, como el eje en la direccin de la gravedad y tomando el sentido positivo hacia
arriba. De esta forma, las ecuaciones de movimiento considerando v z0 = 0 sern:

a = g , v z = gt y z = z 0

gt 2
2

Ahora bien, cuando se abre el paracadas el avin est sometido a la accin de su peso y de una
fuerza de friccin proporcional al cuadrado de la velocidad, tal y como se muestra en la figura 1..

ma = -mg + kv z2

(1)

191

Fig.1 Fuerzas que actan sobre el paracadas


Donde la constante de proporcionalidad esta dada por
k=

(2)

Donde
es la densidad del aire. Aunque la densidad del aire vara con la altura, en este clculo
aproximado se utilizar su valor al nivel del mar de 1.29 kg/m3.
A es el rea de la seccin transversal frontal del paracadas expuesta al aire.
es un coeficiente que depende de la forma del objeto

La tabla 1, muestra los coeficientes de arrastre para tres objetos


Forma del objeto

Valor aproximado de

Disco circular

1.2

Esfera

0.4

Avin

0.06
Tabla 1

Como el paracadas de 1/3 de hemisferio es menos aerodinmico que una esfera, pero ms
aerodinmico que un disco de frente, tomamos para el coeficiente de forma el promedio de
los valores dados para estas dos formas en la tabla, es decir, = 0.8.

192

Cuando el avin en cada libre despliega el paracadas, la velocidad se reduce bruscamente hasta
alcanzar una velocidad lmite constante v zd , que se obtiene cuando el peso del avin es igual a la
fuerza de friccin, es decir; cuando la aceleracin es cero. Por tanto podemos rescribir (1) como

-mg + kv 2 = 0 , donde despejando la velocidad obtenemos:

v zd =

mg
k

(3)

La ecuacin (3) se conoce como velocidad de descenso y es la velocidad a la cual el avin tocar
tierra.
El valor de la velocidad de descenso es independiente de la velocidad vertical inicial del avin, al
momento de abrir el paracadas.
Ahora bien, retomando la ecuacin (1), podemos escribir la ecuacin de movimiento de la siguiente
manera:

dv z
k
= g + v z2
dt
m

(4)

Integramos la ecuacin del movimiento para obtener la velocidad vz del mvil en cualquier instante
t. Las condiciones iniciales son: v z0 es la velocidad vertical del avin en el instante t0 en el que abre
el paracadas, por tanto:
t


d =

t0

vz

1
d z
k
2
v z0 g
z
m

De la expresin del lado derecho de la igualdad, factorizando g tenemos:


t


d =

t0

vz

v z0

1
k 2
z 1
g

mg

d z o bien g d =
t0

vz

v z0

1
k 2

z 1

mg

d z ahora bien, recordando la

ecuacin (3), podemos rescribir la ltima expresin como:


t

g d =
t0

vz

v z0

z
2 1

vz

d z

(5)

193

Integrando la ecuacin (5) obtenemos:


v
1
1
z
t
g t = - v z d ln z+v z d + v z d ln z v z d
0
2
2
vz
0

(6)

Evaluando la expresin anterior y resolviendo para vz obtenemos:

v z = v z d

(v
(v

z0

z0

v zd e

v zd e

g
( t t 0 )
v zd
g
( t t0 )
vzd

g
( t t0 )
vzd

g
( t t0 )
vzd

+ v z0 + v z d e

v z0 + v z d e

(7)
De igual manera, podemos obtener una expresin para vz en funcin de la posicin. Podemos
escribir que:

dv z dv z dz dv z
v z por tanto sustituyendo esta expresin en la ecuacin (1) tenemos:
=
=
dt
dz dt
dz
vz
dv z
k
dv z recordando la ecuacin (3) podemos rescribir la
v z = g + v z2 o bien gdz =
k 2
dz
m
vz 1
mg
expresin anterior como:

gdz =

vz
v z2
v z2
d

dv z

(8)

Integrando (8) por ambos lados, esto es;


z

g d =
z0

vz

v z0

z
2 1

vz

d z

(9)

Resolviendo las integrales anteriores obtenemos:


194

v z2
z
= d ln z2 z2
z0
d
2

(10)

Evaluando (10) y resolviendo para vz obtenemos:

v z = v z2 + v z2 v z2 e
d
d
0

2g
(z0 z )
v z2
0

(11)

Las ecuaciones (7) y (11), determinan la velocidad de descenso para cualquier instante de tiempo t y
para cualquier altura z respectivamente.
La ecuacin (3), determina la velocidad de descenso deseable que hace que el avin impacte tierra
sin sufrir daos estructurales ni tampoco daos en la electrnica del avin.
En este punto, se considera que una velocidad de descenso entre 1 y 1.5 m/s no daarn el avin, es
decir; 1 v z 1.5 m/s .
d

Ahora bien, dado que k =

A
y que el diseo del paracadas esttico es de forma de 1/3 de
2

esfera, y la superficie que presenta la friccin es circular, el rea queda determinada por A = r 2
donde r es el radio del crculo. Sustituyendo esta expresin en k, tenemos k =

r 2
2

. Finalmente

sustituyendo esta expresin en (3) y resolviendo para r obtenemos:

r=

2mg

(12)

Como el paracadas esttico tipo 1/3 de hemisferio es menos aerodinmico que una esfera, pero ms
aerodinmico que un disco de frente, tomemos para el coeficiente de forma el promedio de los
valores dados para estas dos formas en la tabla 1, es decir, = 0.8.
La grfica de la figura 4, muestra las curvas del radio del paracadas contra la velocidad redescenso,
par un peso del avin de 5, 3 y 2 N.

195

Figura 4. Curvas del radio contra la velocidad de descenso para tres valores diferentes de peso

Como se aprecia en la grfica de la figura 4, mientras menor sea la velocidad de descenso, mayor
ser el radio del paracadas, lo cual era un resultado esperado.
Escogiendo el valor de 1.2 m/s como velocidad de descenso, y con un peso del avin de 5 N,
obtenemos de acuerdo con la ecuacin (12) un radio de:

r=

2 * 0.51* 9.8
1.29 * * 0.8 * (1.2) 2

= 1.464 m

r = 1.464 m
Por lo que el dimetro requerido ser:
D = 2r = 2(1.464m) = 2.928m
Para efectos del diseo el dimetro ser:

D = 2.8m
196

Diseo.
Para la construccin del paracadas, se
decidi consultar al cuerpo de paracaidistas
de la Infantera de Marina, debido a que
ellos realizan muchas prcticas de salto. As
se decidi acudir con ellos, los cuales,
permitieron tomar fotos y video de los
paracadas que poseen, y proporcionaron un
pedazo de tela, de la cual estn compuestos.
Los paracadas de la Infantera de Marina.
Estos son comprados en Estados Unidos y
tienen un costo aproximado de $30000
pesos, y pueden soportar personas de un
peso de hasta 180kg.

Ya para su construccin, se busc una tela


similar a la muestra que fue proporcionada,
y se copio el modelo que se muestra en las
fotografas. La diferencia principal es que el
paracadas de la Marina consta de 24 gajos,
mientras que el propio solamente de 18, esto
debido a que es considerablemente ms
pequeo.

197

Desarrollo Experimental.
Para el diseo del paracadas primero se construy un modelo a escala, esto para tener la certeza
de la forma que iba a tener una vez terminado. Puesto que el paracadas ya desplegado debe tener
forma semiesfrica, se tom como molde una bola de unicel de 21.5 cm de dimetro (fig.1).

Figura 1. Molde de unicel.

Se dividi la esfera en 18 secciones de 20 grados cada una, trazando sobre una tela de color
blanco, desde el polo superior de la semiesfera hasta la base de esta, dos lneas para marcar la
forma que tiene una seccin y poder tomar las medidas de esta (fig.2).

Figura 2. Trazo de una seccin.

Ya con el trazo en la tela, se obtuvieron las medidas de la seccin y de ah se construy una


plantilla, con las dimensiones que se muestran en la figura 3, la cual sirvi de base para marcar
sobre la tela las dems secciones.

198

Figura 3. Plantilla.

Se fabric el paracadas con la tela de un paraguas, esta tela es similar a la que emplean los
paracaidistas de la marina, solo que es un poco ms gruesa y pesada. Las uniones fueron cocidas
junto con los cordones para sujetar el peso del objeto de prueba, estos cordones estn hechos con
hilo Nylon.
Resultados.
Se puso a prueba el funcionamiento del modelo a escala, dejando caer un objeto de 100g de peso
desde una altura aproximada de 10m. Se realizaron varias pruebas, midiendo el tiempo de
descenso, los resultados obtenidos se presentan en la siguiente tabla:
Intento
1
2
3
4
5
6
7

Tiempo de descenso [s]


2.59
3.12
2.77
2.95
3.42
2.91
3.22

Se desea calcular el tiempo de descenso promedio:


_

t=

1 7
ti
7 i =1

De esta manera se tiene que el tiempo promedio es:


_

t = 2.98s
199

Con el tiempo promedio de descenso, y la altura h a la cual fue lanzado el paracadas, se calcula
la velocidad promedio de descenso:
_

v=

h
_

= 3.35 m/s

t
Cabe mencionar que al tener poco peso y tamao, el descenso de este paracadas era sumamente
afectado por el viento, por lo que en presencia de rfagas de este, el paracadas descenda
perdiendo toda estabilidad, as como que en ocasiones los hilos se enredaban y el paracadas no se
desplegaba. Sin embargo, en lo general, este modelo a escala funcion muy bien.
Paracadas en tamao requerido.
Despus del xito obtenido al realizar las pruebas con el modelo a escala, se pas a la fabricacin
del modelo en el tamao real requerido, as que se calcularon las dimensiones que debera tener
este paracadas, multiplicando por un factor de escala.
Este factor de escala E se determin dividiendo el dimetro requerido entre el dimetro de la bola
de unicel, de esta manera se tiene:

E=

Drequerido
Dunicel

2.8m
= 13
0.215m

Se multiplic por el factor de escala cada una de las medidas, para obtener as las dimensiones
que debe tener la plantilla para el paracadas en tamao natural. La figura 4 muestra la forma de
esta plantilla.

200

Fig.4 Plantilla con dimensiones reales.

Ya con la plantilla, cortamos las 18 secciones necesarias para que el paracadas tenga la forma
correcta, la tela empleada fue tela de Nylon, que tiene prcticamente las mismas caractersticas
tanto en espesor, como en ligereza, que los paracadas profesionales empleados por el cuerpo de
paracaidistas de la Marina.
Se procedi a unir cada una de las secciones, esto se hizo cociendo un tirante en cada unin; esto
se hizo para reforzar el paracadas, ya que de no haberlo hecho, era muy probable la ocurrencia de
un desgarre en la tela impidiendo as el buen funcionamiento del diseo. Adems, se cocieron los
cordones necesarios para sujetar el avin de aeromodelismo al paracadas, estos cordones tienen
una longitud de 4m. En la figura 5 podemos observar el modelo ya terminado del paracadas.

Fig.5 Paracadas terminado.

201

Resultados.
Se realizaron varias pruebas para comprobar el funcionamiento del diseo. Los cordones del
paracadas fueron atados a una mochila, en cuyo interior se coloc una pesa de 5 kg y se dej caer
desde una altura aproximada de 15mts.
En los primeros dos lanzamientos no se tuvo xito, el paracadas no se despleg; despus de un
anlisis de las posibles causas, se concluy que los cordones del paracadas eran muy largos para
la altura de lanzamiento. Fig 6.

a)

202

b)
Fig.6 a) y b) Lanzamientos fallidos.

Se recort el tamao de los cordones a una longitud de 2.5 m con lo cual el problema fue
solucionado, todos lo lanzamientos siguientes fueron exitosos, a continuacin se muestran
algunas fotos con el paracadas desplegado.

203

204

En la siguiente tabla se muestran los tiempos de descenso para los cinco lanzamientos exitosos que
se tuvieron:

Intento
1
2
3
4
5

Tiempo de descenso [s]


2.10
2.24
2.19
2.41
2.26

Calculando el tiempo de descenso promedio:


_

t=

1 5
ti
5 i =1

De esta manera se tiene que el tiempo promedio es:


_

t = 2.24s
_

v=

h
_

= 6.69 m/s

t
Hay que hacer notar que sta es la velocidad media de descenso, no es la velocidad con que el
paracadas llega al piso; puesto que el tiempo registrado se midi desde que se lanz hasta el
aterrizaje. Para poder calcular la velocidad de descenso, hay que hacer las mediciones en el
momento en que se abre el paracadas; lo cual presenta una dificultad tcnica, ya que requerimos
conocer al menos, una altura dada dentro de la trayectoria de descenso del paracadas, para poder
cronometrar a partir de esa altura conocida el tiempo de descenso y por ende obtener la velocidad
de descenso del mismo. Esta prueba se har posteriormente.

206

Potrebbero piacerti anche