|
AT90S2313
(AVR )
Es un microcontrolador
de 8 bits con un encapsulado de 20 pines. Parte de estos pines
tienen una función específica y no pueden ser reconfigurados
(VCC, GND, RESET,
XTAL1 y XTAL2). Otros, tienen un modo de trabajo totalmente configurable
por
programa y dependerá de la aplicación en la que se aplique.
Descripción de los pines

Pin
1 (RESET): (Entrada).
Reinicia la ejecución de instrucciones del microcontrolador
cuando está a 0 lógico. Un 1 lógico no afecta al
funcionamiento del microcontrolador.
Como mínimo este terminal debe estar a 0 dos ciclos de máquina
para que se procese el
RESET.
Pines
20,10 (VCC, GND): (Alimentación).
Vcc debe estar comprendido entre 2,7 y 6V.
Usualmente la alimentación esta en 5V estabilizados
Pines
4,5 (XTAL1,XTAL2):
(Entradas de reloj). Entre estas líneas se conecta el cristal
de cuarzo con la frecuencia de resonancia adecuada para la generación
del reloj interno,
o por el terminal XTAL1 se introduce la señal de reloj del sistema.
|
|
|
 |
 |
Pin
2 PD0 (RX). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 0 del puerto D, además puede tener la función especial
de recepción de datos serie para la UART.
Pin 3 PD1 (TX). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 1 del puerto D, también puede tener la función especial
de transmisión de datos serie desde la UART.
Pin 6 PD2 (INT0). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 2 del puerto D, además puede usarse para la generación
externa de interrupción.
Pin 7 PD3 (INT1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 3 del puerto D, además puede usarse para la atender interrupciones
externas.
Pin 8 PD4 (T0). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado
al BIT 4 del puerto D, además puede usarse como entrada de reloj
para el temporizador/contador 0.
Pin 9 PD5 (T1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 5 del puerto D, además puede usarse como entrada de reloj para
el temporizador/contador 1.
Pin 11 PD6 (ICP). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 6 del puerto D, además puede usarse como entrada de captura
de cuenta del temporizador/contador 0.
Pin 12 PB0 (AIN0). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 0 del puerto B, además puede usarse como una de las dos entradas
analógicas del comparador analógico integrado.
Pin 13 PB1 (AIN1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 1 del puerto B, además puede usarse como una de las dos entradas
analógicas del comparador analógico integrado.
Pin 14 PB2. (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al
BIT 2 del puerto B.
Pin 15 PB3 (OC1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado
al BIT 3 del puerto B, además puede usarse como salida del temporizador/contador
1.
Pin 16 PB4. (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado
al BIT 4 del puerto B.
Pines 16,17,18 / PB5,6,7 (MOSI,MISO,SCK). (Bidireccionales).
Estos terminales pueden funcionar como entradas o salidas digitales asociadas
a los bits 5,6,7 del puerto B, además pueden usarse como terminales
para la comunicación serie síncrona para la programación
de la memoria flash interna.
Descripción
interna.
En la siguiente figura muestra el diagrama en bloques de la arquitectura
interna del AT90S2313 AVR (RISC)

Detalles de los bloques del diagrama:
- Un banco
de 32 registros de 8 bits de propósitos generales, sobre los
que se realizan la totalidad de las operaciones de cálculo.
- Una ALU
de 8 bits para el cálculo aritmético y lógico con
los datos almacenados en
el banco de registros de propósitos generales.
- Una RAM
de 128x8 bits, para almacenamiento de datos
- Una EEPROM
interna de 128x8, para el almacenamiento de datos que deban
mantenerse, aun cuando no este con alimentación del microcontrolador.
- Una memoria
Flash EPROM de 1Kx16 bits para el almacenamiento de las instrucciones
del programa. Esta memoria dispone de un bus dedicado, distinto del
de datos, por el que transitan las instrucciones hacia el decodificador
de instrucciones,encargado de su ejecución.
- Un puerto
serie asíncrono o UART
- Un puerto
serie síncrono SPI
- Un contador
/temporizador de 8 bits
- Un contador
/temporizador de 16 bits con funciones de PWM, generación de
salida, control, etc.
- Un WATCHDOG
o perro guardián que vigila el correcto funcionamiento del
programa.
- Un comparador
analógico
- 15 líneas
de entrada/salida
- Una unidad
de generación de interrupciones
En
la siguiente figura se muestra el mapa de memoria de programa y datos.
Como
podemos observar, el microcontrolador utiliza una arquitectura HARVARD,
donde la memoria de datos y programa tienen buses independientes
La
memoria de programa presenta 1k direcciones de 16 bits. Cada instrucción,
A pesar de los diferentes modos de direccionamiento que presente, ocupa
16 bits, por lo
que cada dirección de la memoria de programa contiene aproximadamente
una instrucción.
La memoria de datos se divide en tres regiones. La inferior, que ocupa
las primeras 32
direcciones, esta ocupada por el banco de registros de propósitos
generales (direcciones
$00-$1F); La región central, cubre 64 direcciones en donde se ubican
los registros
asociados a los diferentes puertos de entrada/salida del microcontrolador,
UART,
comparador analógico, PUERTO B, PUERTO D, etc (direcciones $20-$5F).
La región
más alta, ocupa 128 posiciones y está asociada a la memoria
SRAM (direcciones $60-$DF).
Registros
de propósitos generales

Todas
las instrucciones que operan con los contenidos de los registros tienen
acceso al
conjunto del banco, salvo las instrucciones que cargan datos de forma
inmediata como
SBCI, SUBI, CPI, ANDI, ORI y LDI que sólo acceden a la segunda
mitad de los
registros (R16..R31)
Como ya se dijo con anterioridad, cada registro está también
mapeado en memoria, así
el registro r31 ocupa la dirección $1F del espacio de memoria de
datos, etc.
Los últimos 6 registros del banco, r26-r31, pueden tener funciones
alternativas como
apoyo a los modos de direccionamiento y, en ese caso, se agrupan por pares
para
constituir los registros X,Y,Z de 16 bits cada uno.
La
memoria de datos SRAM
La siguiente figura muestra cómo esta organizada la memoria datos
Muchas instrucciones utilizan el nombre del registro (R0..R31) en lugar
de la dirección
que ocupa este en el espacio de direccionamiento de datos.
De forma parecida ocurre con los registros de I/O. Las instrucciones de
entrada y salida
permiten reasignar un número a cada uno de ellos, de forma que
el primer registro de
este tipo que encontramos se numera como 0 (dirección $20), el
siguiente, 1 (dirección
$21) y así sucesivamente.
Modos de direccionamiento de datos y programas
El
AVR AT90S2313 permite 5 modos de direccionamiento de datos:
- Directo
- Indirecto
- Indirecto
con predecremento
- Indirecto
con postincremento
- Indirecto
con desplazamiento
- Inmediato
MODO
DE REGISTRO DIRECTO

La
instrucción contiene un campo de 5 bits que permite especificar
cualquier registro de
los 32 registros existentes en el mapa de registros
El
operando es contenido en registro d (Rd).
MODO
DE REGISTRO DIRECTO (2 REGISTROS)

La
instrucción contiene la dirección del operando fuente (Rr)
y del destino (Rd)(ambos
operandos son registros del mapa de registros).
Los
Operandos son contenidos en los registros r (Rr) y d (Rd).
El resultado se guarda en registro d (Rd).
MODO
DE REGISTRO E/S DIRECTO

En
este caso, la instrucción contiene la dirección de 6 bits
del registro de E/S. N es el registro que actúa como fuente o destino
de la información
MODO
DE DIRECCIONAMIENTO DIRECTO

La instrucción viene acompañada de una palabra de 16 bits
que contiene la dirección de
memoria (SRAM, E/S, FILE REGISTER), además de un campo Rd/Rr que
contiene el
registro que será fuente o destino de la información
MODO
DE DIRECCIONAMIENTO INDIRECTO CON DESPLAZAMIENTO

La
instrucción contiene el desplazamiento que se sumará al
registro Y o Z para formar
la dirección donde se encuentra el operando
MODO
DE DIRECCIONAMIENTO INDIRECTO

La
dirección del operando se encuentra en el registro X, Y o Z especificado
en el código
de operación de la instrucción.
MODO
DE DIRECCIONAMIENTO INDIRECTO CON PREDECREMENTO

Es
igual al modo anterior, con la diferencia que en este caso, el registro
X,Y,Z previamente se decrementa en una unidad.
MODO
DE DIRECCIONAMIENTO INDIRECTO CON POSTINCREMENTO

Igual
que el modo indirecto, pero al final el contenido del registro X, Y o
Z se incrementa
en una unidad.
MODO
DE DIRECCIONAMIENTO DE CONSTANTES EN MEMORIA DE
PROGRAMA (instrucción LPM)

Es
común que los programas contengan valores constantes, estas constantes
se almacenan junto con las instrucciones, en la memoria de programa.
Debido a que este microcontrolador presenta una arquitectura Harvard,
en donde los buses de datos y programa están separados, el acceso
a estas constantes parece una tarea imposible. No obstante, existe un
puente entre el bus de datos de la memoria de programa y el bus de datos
de la memoria de datos, que de forma controlada, sólo utiliza la
instrucción LPM.
Se recuerda que la memoria de programa tiene un tamaño de 1Kx16
bits, mientras que los buses de datos usan un tamaño de 8 bits.
En estas condiciones, el acceso a un byte
de la memoria de programa requiere que, en primer lugar, se especifique
la dirección del
dato en los 15 bits más significativos del registro Z. El BIT 0
de dicho registro se utiliza
para seleccionar el byte alto o bajo de la constante.
La ejecución de LPM vuelca el dato en el registro R0.
MODO
DE DIRECCIONAMIENTO DE PROGRAMA INDIRECTO (IJUMP,ICALL)

Estas
instrucciones permiten que la ejecución del programa salte a la
posición de la
memoria de programa indicada por el contenido del registro Z.
MODO
DE DIRECCIONAMIENTO RELATIVO DE PROGRAMA (RJMP ,RCALL)

La
instrucción contiene un desplazamiento K que se suma al contenido
del PC para
encontrar la siguiente instrucción a ejecutar. Esto es, la ejecución
del programa continua
en la dirección PC+k+1 los valores validos de k van desde -2048
a 2047
Continuara.....
Atención:
Esta página se distribuye tal cual con fines didácticos.
El autor no se hace responsable de las consecuencias que el uso, indebido
o no, de la información que contiene, pueda producir.
|