Está en la página 1de 24

MICROCONTROLADORES.

Primero que todo comenzaremos definiendo que son los microcontroladores:


Los microcontroladores (abreviado μC, UC o MCU) son circuitos integrados que
son capaces de ejecutar órdenes que fueron grabadas en su memoria. Su
composición está dada por varios bloques funcionales, los cuales cumplen una
tarea específica, son dispositivos que operan uno o más procesos, por lo
general los microcontroladores están basados en la arquitectura de Harvard, la
cual consiste en dispositivos de almacenamiento separados (memoria de
programa y memoria de datos).
El termino microcontrolador está dado por dos palabras que son
“Micro”-“Controlador” las cuales tienen por significado “pequeño (en tamaño)” y
“maniobrar o controlar (función principal)” procesos los cuales son definidos
mediante la programación.
Un micro controlador está constituido en su interior por las tres principales
unidades funcionales de una computadora, las cuales son: unidad central de
procesamiento, memoria y periféricos de entrada y salida.
En fin un microcontrolador es un sistema completo, con unas prestaciones
limitadas que no pueden modificarse y que puede llevar a cabo las tareas para
las que ha sido programado de forma autónoma.

Arquitectura de microcontroladores.
Arquitectura Von Neumann La arquitectura tradicional:

La arquitectura tradicional de computadoras y microcontroladores se basa en el


esquema propuesto por John Von Neumann, en el cual la unidad central de
proceso, o CPU, está conectada a una memoria única que contiene las
instrucciones del programa y los datos. El tamaño de la unidad de datos o
instrucciones está fijado por el ancho del bus de la memoria.
Las dos principales limitaciones de esta arquitectura tradicional son:
a) Que la longitud de las instrucciones está limitada por la unidad de
longitud de los datos, por lo tanto el microprocesador debe hacer varios
accesos a memoria para buscar instrucciones complejas.
b) La velocidad de operación (o ancho de banda de operación) está
limitada por el efecto de cuello de botella que significa un bus único para
datos e instrucciones que impide superponer ambos tiempos de acceso.
La arquitectura von Neumann permite el diseño de programas con código
automodificable, práctica bastante usada en las antiguas computadoras que
solo tenían acumulador y pocos modos de direccionamiento, pero innecesaria,
en las computadoras modernas.
La arquitectura Harvard y sus ventajas:

La arquitectura conocida como Harvard, consiste simplemente en un esquema


en el que el CPU está conectado a dos memorias por intermedio de dos buses
separados. Una de las memorias contiene solamente las instrucciones del
programa, y es llamada Memoria de Programa. La otra memoria solo almacena
los datos y es llamada Memoria de Datos. Ambos buses son totalmente
independientes y pueden ser de distintos anchos. Para un procesador de Set
de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set
de instrucciones y el bus de la memoria de programa pueden diseñarse de
manera tal que todas las instrucciones tengan una sola posición de memoria de
programa de longitud. Además, como los buses son independientes, el CPU
puede estar accediendo a los datos para completar la ejecución de una
instrucción, y al mismo tiempo estar leyendo la próxima instrucción a ejecutar.
Podemos observar claramente que las principales ventajas de esta arquitectura
son:
a) El tamaño de las instrucciones no está relacionado con el de los datos, y
por lo tanto puede ser optimizado para que cualquier instrucción ocupe
una sola posición de memoria de programa, logrando así mayor
velocidad y menor longitud de programa.
b) El tiempo de acceso a las instrucciones puede superponerse con el de
los datos, logrando una mayor velocidad de operación.
Una pequeña desventaja de los procesadores con arquitectura Harvard, es que
deben poseer instrucciones especiales para acceder a tablas de valores
constantes que pueda ser necesario incluir en los programas, ya que estas
tablas se encontraran físicamente en la memoria de programa (por ejemplo en
la EPROM de un microprocesador).
Arquitectura interna de un microcontrolador.

CPU (unidad central de proceso):


Podemos decir que la CPU, siglas en inglés de unidad central de proceso, es el
núcleo del microcontrolador. Se encarga de ejecutar las instrucciones
almacenadas en la memoria, de la que hablaremos más adelante. Es lo que
habitualmente llamamos procesador o microprocesador, término que a menudo
se confunde con el de microcontrolador. En esta línea cabe aclarar que, tal y
como estamos viendo, ambos términos no son lo mismo: el microprocesador es
una parte de un microcontrolador y sin él no sería útil; un microcontrolador, en
cambio, es un sistema completo que puede llevar a cabo de forma autónoma
una labor.
Memoria:
Entendemos por memoria los diferentes componentes del microcontrolador que
se emplean para almacenar información durante un periodo determinado de
tiempo. La información que necesitaremos durante la ejecución del programa
será, por un lado, el propio código, y por otro, los diferentes datos que usemos
durante la ejecución del mismo. Hablaremos por tanto de memoria de
programa y de memoria de datos, respectivamente.
La diferente naturaleza de la información que hay que almacenar hace
necesario el uso de diferentes tipos memorias. Sin hacer especial énfasis en
este apartado, sí habrá que tener en cuenta una clasificación básica, que
distingue entre memoria volátil y no volátil. La primera es aquella que pierde la
información que almacena al desconectarla de la alimentación; la segunda,
como resulta obvio, no. Por lo tanto, se hace evidente que al menos la memoria
de programa deberá ser no volátil: no sería práctico que el programa grabado
en el microcontrolador se borrara cada vez que apagáramos el dispositivo. Con
respecto a la memoria de datos, diremos por el momento según la situación
puede interesarnos una u otra.
Unidades de entrada/salida:
Las unidades de entrada/salida son los sistemas que emplea el
microcontrolador para comunicarse con el exterior. Imaginemos una televisión:
por un lado tiene un dispositivo de salida, como es la pantalla, y por otro lado,
de entrada, como son los botones de subir o bajar volumen y de cambio de
canal. Así, los dispositivos de entrada nos permitirán introducir información en
el microcontrolador y los de salida nos servirán para que éste la saque al
exterior.

Arquitectura RISC y CISC

RISC (Reduced Instruction Set Computer) – Computadora con Juego de


Instrucciones Reducidas.
En este caso la idea es que el microcontrolador reconoce y ejecuta sólo
operaciones básicas (sumar, restar, copiar etc…) Las operaciones más
complicadas se realizan al combinar éstas (por ejemplo, multiplicación se lleva
a cabo al realizar adición sucesiva). Es como intentar explicarle a alguien con
pocas palabras cómo llegar al aeropuerto en una nueva ciudad. Sin embargo,
no todo es tan oscuro. Además, el microcontrolador es muy rápido así que no
es posible ver todas las “acrobacias” aritméticas que realiza. El usuario sólo
puede ver el resultado final de todas las operaciones. Por último, no es tan
difícil explicar dónde está el aeropuerto si se utilizan las palabras adecuadas
tales como: a la derecha, a la izquierda, el kilómetro etc.
CISC (Complex Instruction Set Computer) – Computadoras con un juego de
instrucciones complejo.
¡CISC es opuesto a RISC! Los microcontroladores diseñados para reconocer
más de 200 instrucciones diferentes realmente pueden realizar muchas cosas a
alta velocidad. No obstante, uno debe saber cómo utilizar todas las
posibilidades que ofrece un lenguaje tan rico, lo que no es siempre tan fácil.
PARÁMETROS CARACTERÍSTICOS DE LOS MICROCONTROLADORES.
Los diferentes tipos de aplicaciones de los microcontroladores, exigen
requisitos distintos al microcontrolador utilizado para implementar un sistema
eléctrico de control o comunicaciones, lo que hace que no sea factible diseñar
un único microcontrolador idóneo para todas ellas. Por ellos los fabricantes han
desarrollado el concepto de familia que se define como un conjunto de
microcontroladores que se caracterizan por poseer una misma arquitectura
interna con un juego de instrucciones compatible y se diferencian en uno o más
de los siguientes parámetros:
 La capacidad de operación en paralelo.
 La capacidad de memoria.
 Los circuitos de interfaz de entrada/salida y los periféricos internos.
 El juego de instrucciones.
 La arquitectura externa.
 Los modos de operación.
A continuación se describe cada uno de ellos.
Capacidad de operación en paralelo.
Se define la capacidad de operación de un microcontrolador como el número
de bits de las combinaciones binarias con las que realiza operaciones
aritméticas o lógicas en un solo ciclo de instrucción. Los microcontroladores
más utilizados actualmente son de 8 bits que se denomina octeto (Byte). Los
microcontroladores de 6 y 32 bits se reservan para las aplicaciones en las que
se trabaja con informaciones binarias de un número elevado de bits en coma
fija y en coma flotante.
Capacidad de memoria.
Los microcontroladores tienen una memoria en la que almacenan los datos y
otra en la que almacenan las instrucciones. Ambas se caracterizan por ser de
acceso aleatorio, es decir, el tiempo que se tarda en escribir o leer cualquier
posición de la memoria es el mismo indeterminante de su situación física.
Memoria de datos.
La memoria de datos se caracteriza porque en ella se pueden leer y escribir
durante la ejecución del programa y pueden ser de dos tipos:
Memorias volátiles o activas.
Son memorias que pierden la información contenidas en ellas cuando se les
deja de aplicar la tensión de alimentación. Se les suele conocer con el nombre
RAM (Random Access Memory).
Memorias no volátiles.
Son memorias que se pueden leer y escribir mediante impulsos eléctricos y
reciben el nombre de EEPROM. Se usan para almacenar un número pequeño
de datos, que deben conservarse al dejar de aplicar la tensión de alimentación.
Se utiliza también para contener instrucciones.
Memoria FLASH
Las memorias FLASH utilizan transistor MOS de puerta flotante en los que el
espesor del aislante situado entre ella y el canal es mucho menor que en las
EPROM. Esto hace que se puedan borrar mediante impulsos eléctricos y que
su densidad de integración y velocidad sean mayores que las de las EEPROM.
Las memorias EEPROM y FLASH son memorias que se pueden programar en
el propio sistema en el que están instaladas y por ello reciben el nombre de
memorias programables en el sistema y se las suele conocer por el acrónimo
ISP (In – System Programmable).
Circuito de interfaz de entrada/salida y periféricos internos.
En las aplicaciones de control y comunicaciones, en las que se utilizan los
microcontroladores, se deben ejecutar gran cantidad de tareas de
entrada/salida lo que hace necesario que dispongan de un número elevado de
terminales dedicados a las mismas y un área de silicio que contenga los
circuitos digitales adecuados.
Los microcontroladores contienen en su interior diversos circuitos de interfaz
tales como puertos paralelos, puertos serie y circuitos de control de la
transferencia.
Puertos paralelos.
Los puertos paralelos de un microcontrolador contienen los circuitos
representados en la figura siguiente mediante símbolos lógicos no
normalizados, con el objetivo de que el lector conozca las diferentes formas
utilizadas por los fabricantes de microcontroladores para representar los
circuitos de interfaz y de que sea capaz de interpretarlas correctamente.
Esquema de bloques básicos de un bit de un puerto paralelo de salida.

MICROCONTROLADOR PIC16F84
Un microcontrolador es un circuito integrado programable que contiene todos
los componentes necesarios para controlar el funcionamiento de una tarea
determinada, como el control de una lavadora, un teclado de ordenador, una
impresora, un sistema de alarma, etc. Para esto, el rnicrocontrolador utiliza muy
pocos componentes asociados. Un sistema con rnicrocontrolador debe
disponer de una memoria donde se almacena el programa que gobierna el
funcionamiento del mismo que una vez programado y configurado, solo sirve
para realizar la tarea asignada. La utilización de un microcontrolador en un
circuito reduce notablemente el tamaño y número de componentes y, en
consecuencia, disminuye el número de averías y el volumen y el peso de los
equipos, entre otras ventajas.
El microcontrolador PIC16F84. Esta encapsulado en un económico DIL de 18
pines (figura siguiente). Debido a sus múltiples aplicaciones y facilidad de uso
es uno de los microcontroladores más utilizados en la actualidad para la
realización de proyectos sencillos.

Microcontrolador PIC16F84A.
El microcontrolador PIC16F84 puede trabajar con una frecuencia máxima de 10
MHz. La versión avanzada PIC16F84A-20 puede llegar hasta los 20 MHz.
Alimentación de un PIC16F84
Normalmente el microcontrolador PIC16F84 se alimenta con 5 voltios aplicados
entre los pines VDD y VSS que son, respectivamente, la alimentación y la
masa del chip.
En la figura siguiente describe un circuito de alimentación que obtiene los 5
voltios a partir de una tensión continua de 12 voltios y de al menos 1 amperio.
Este circuito se basa en el popular regulador de tensión 7805. Dispone de un
diodo en la entrada para proteger en el caso que se aplicaran tensiones con la
polaridad invertida.
El condensador C4 reduce considerablemente el rizado de la tensión de
entrada que finalmente el regulador 7805 se encarga de estabilizar a los 5
voltios de alimentación de todo el entrenador. Por ultimo dispone de un diodo
LED indicador de encendido.
El consumo de corriente para el funcionamiento del microcontrolador depende
de la tensión de alimentación, de la frecuencia de trabajo y de las cargas que
soporten sus salidas, siendo del orden de unos pocos miliamperios.
El circuito de alimentación del microcontrolador debe tratarse como el de
cualquier otro dispositivo digital, debiendo conectarse un condensador de
desacoplo de unos 100 nf lo más cerca posible de los pines de alimentación.
Entrenador para aprendizaje del microcontrolador PIC16F84.

Puertos de entrada/salida.
El microcontrolador se comunica con el mundo exterior a través de los puertos.
Estos están constituidos por líneas digitales de entrada/salida que trabajan
entre 0 y 5 V. los puertos se pueden configurar como entradas para recibir
datos o como salidas para gobernar dispositivos externos.
El PIC16F84 tiene dos puertos.
 Puerto A con 5 líneas, pines RA0 a RA4.
 Puerto B con 8 líneas, pines RB0 a RB7.
Cada línea puede ser configurada como entrada o como salida,
independientemente unas de otras, según se programe. Así, por ejemplo, en el
circuito de la figura anterior el puerto A es configurado como entrada para leer
los interruptores y el puerto B es configurado como salida para activar la barra
de diodos LEDs y el display de siete segmentos.
Las líneas son capaces de entregar niveles TTL cuando la tensión de
alimentación aplicada en VDD es de 5V. La máxima capacidad de corriente de
cada una de ellas es:
 25 ma, cuando el pin está a nivel bajo, es decir, cuando consume
corriente. Sin embargo la suma de las intensidades por las 5 líneas del
puerto A no puede exceder de 80 ma, ni la suma de las 8 líneas del
puerto B puede exceder de 150 ma.
 20 ma, cuando el pin está en nivel alto, es decir, cuando proporciona
corriente. Sin embargo la suma de las intensidades por las 5 líneas del
puerto A no puede exceder a 50ma, ni la suma de las 8 líneas del puerto
B puede exceder de 100 ma.
Oscilador
Todo microcontrolador requiere de un circuito que le indique la velocidad de
trabajo, es el llamado oscilador o reloj. Este genera una onda cuadrada de alta
frecuencia que se utiliza como señal para sincronizar todas las operaciones del
sistema. Este circuito es muy simple pero de vital importancia para el buen
funcionamiento del sistema. Generalmente todos los componentes del reloj se
encuentran integrados en el propio microcontrolador y tan solo se requieren
unos pocos componentes externos como un cristal de cuarzo o una red RC,
para definir la frecuencia de trabajo.
En el PIC16F84 los pines OSC1/CLKIN y OSC2/CLKOUT son las líneas
utilizadas para este fin. Permite 5 tipos de osciladores para definir la frecuencia
de funcionamiento.
 XT. Cristal de cuarzo.
 RC. Oscilador con resistencia y condensador.
 HS. Cristal de alta velocidad.
 LP. Cristal de baja frecuencia y bajo consumo de potencia.
 Externa. Cuando se aplica una señal de reloj externa.
Oscilador XT
Es el más utilizado y está basado en el oscilador a cristal de cuarzo o en un
resonador cerámico. Es un oscilador estándar que permite una frecuencia de
reloj muy estable comprendida entre 100 kHz y 4 MHz.
Oscilador RC
Es un oscilador de bajo coste formado por una red RC. Su principal
inconveniente es la baja precisión, pero como contrapartida esta su bajo precio
lo que hace interesante para muchas aplicaciones en las que no importa la
exactitud del tiempo.

Configuración del oscilador RC.

Osciladores HS y LP
El oscilador de cristal o resonador de alta velocidad HS trabaja a una
frecuencia comprendida entre 4 MHz y 20 MHz para el PIC16H84A.

Frecuencia del oscilador RC para diferentes valores de componentes.

El oscilador de cristal o cuarzo o resonador cerámico de baja potencia LP es un


oscilador de bajo consumo. Su cristal o resonador está diseñado para trabajar
con frecuencias comprendidas entre 32 y 200 kHz.
Oscilador configuración HS, XT y LP.

Utilizando una señal de reloj externa


Esta posibilidad suele ser utilizada para hacer funcionar varios
microcontroladores a partir de una única señal de reloj. La frecuencia del
oscilador dividida por cuatro, está disponible en el pin OSC2/CLKOUT.

Circuito para señal de reloj externa.

Reset
El llamado reset en un microcontrolador provoca la reinicializacion de su
funcionamiento, un “comienzo a funcionar desde cero”. En este estado, la
mayoría de los dispositivos internos del microcontrolador toman un estado
conocido.
En los microcontroladores se requiere un pin de reset para reiniciar el
funcionamiento del sistema cuando sea necesario. El pin de reset en los PIC se
denomina MCLR (Master Clear) y produce un reset cuando se le aplica un nivel
lógico bajo.
Algunas conexiones para el pin MCLR.

Para tener un control sobre el reset del sistema, se puede conectar un pulsador
y conseguir un reset manual llevando momentáneamente el pin MCLR a masa
cada vez que se presiona el pulsador. El reset permanecerá mientras tengamos
el pulsador presionado y no comenzara la secuencia de arranque hasta que no
lo liberemos, suministrando así un nivel lógico “1” al pin MCLR.
El PIC16F84 también permite el llamado power-on reset (POR) que
proporciona un reset al microcontrolador en el momento de conectar la fuente
de alimentación. El PIC dispone de un temporizador denominado reset PWRT
(power-up timer), que proporciona un retardo de 72 ms desde el momento de la
conexión a la alimentación; un reset se mantiene durante este tiempo,
garantizado que VCC alcance un nivel aceptable de tensión para un arranque
correcto del sistema.

PUERTOS DE ENTRADA Y SALIDA.


Los microprocesadores PIC16F84 tienen 2 puertos de entrada/salida paralelos
de usos generales denominados Puerto A y Puerto B.
El Puerto A es de 4 bits y el Puerto B es de 8 bits.
Los puertos del microcontrolador PIC16F84 son el medio de comunicación con
el mundo exterior, en ellos podremos conectar los periféricos o circuitos
necesarios como por ejemplo los módulos LCD, motores eléctricos, etc.; pero
estas conexiones no se podrán realizar arbitrariamente. Existen unas reglas
básicas que deberán cumplirse para que el microcontrolador no sufra daños o
se destruya. Para ello es necesario conocer los límites de corriente que puede
manejar el microcontrolador.
LIMITE DE CORRIENTE PARA LOS PUERTOS “A” Y “B”
Los puertos “A” y “B” del microcontrolador podrán ser programados como
entradas y salidas indiferentemente. Para el caso de que sean programados
como salida se denominan “Modo Fuente” por que suministran corriente y
cuando son programados como entrada se denominan “Modo Sumidero” por
que reciben corriente.
La máxima corriente que puede suministrar una línea programada como salida
es de 20 mili-amperios, pero si utilizamos toda las líneas del puerto “A”
programadas como salida, no deberá exceder de 50mA para todo el puerto “A”.
Para el caso del puerto “B” no deberá exceder de 100 mA.
Si las programamos como entradas (Sumidero), la corriente máxima que puede
manejar una sola línea es de 25 mA. Para el caso del puerto “A” programado
con todas sus líneas como entrada, la máxima es de 80 mA. En el caso del
puerto “B” es de 150 mA.
En caso de querer utilizar periféricos que manejen mayor cantidad de corriente
de la especificada, habrá que aplicar un circuito acoplador como por ejemplo
los buffers, transistores que se encarguen de controlar la corriente, etc.

IDENTIFICACIÓN DE LOS PINES UTILIZADOS PARA LOS PUERTOS DE


ENTRADA Y SALIDA
En la imagen siguiente se podrá observar claramente que el microcontrolador
tiene dos puertos denominados “A” y “B”. El puerto “A” tiene 5 líneas
disponibles (RA0, RA1, RA2, RA3, RA4) y el puerto “B” tiene 8 líneas
disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). Ambos Puertos
suman un total de 13 líneas que podrán ser programadas independientemente
como entradas o como salidas. Estas son las líneas que estarán destinadas a
comunicar el microcontrolador con el mundo exterior, como por ejemplo
motores, diodos luminosos “Leds”, módulos LCD, teclados matriciales, etc.

También hay que hacer mención a que el Pin número 3 perteneciente al puerto
“A” (RA4) también tiene otra nomenclatura denominada “TOCKI”, lo cual quiere
decir que esta línea se puede programar como entrada, salida y
temporizador/contador.
CONFIGURACIÓN DE LOS PUERTOS DE ENTRADA/SALIDA
Los bits de cada puerto se configuran mediante los bits correspondientes de un
registro de control asociado que recibe el nombre de TRIS. En realidad cada
puerto soporta dos registros:
1. El registro de datos, al que se denomina Puerto A o B (PortA o PortB).
2º El registro de control TRISA o TRISB, con el que se programa el sentido
(Entrada o Salida) de las líneas de cada puerto.
Los Puertos A y B se corresponden con las posiciones 5 y 6 del área de datos.
Cada uno de sus bits puede programarse como una línea de Entrada o de
Salida, según se ponga un 1 ó un 0 en el bit del registro de control TRIS
correspondiente.
Un 1 en el bit “x” del registro TRISA pone en alta impedancia (Entrada) la línea
asociada “x” del Puerto A. Si en el bit “x” de TRISA hubiese un 0, el contenido
del biestable de datos correspondiente del Puerto A pasaría a la patita de E/S
externa.
Cualquier línea puede funcionar como Entrada o como Salida. Sin embargo, si
actúa como Entrada, la información que se introduce desde el exterior no se
memoriza o graba, pasa simplemente por un dispositivo triestado por lo cual el
valor de dicha información debe mantenerse hasta que sea leída. La lectura se
realiza en “tiempo real”.
Cuando una patita de E/S funciona como salida, el bit que proviene del bus de
datos se guarda en el biestable del dato con lo cual la información que ofrece
esta patita permanece invariable hasta que se reescriba otro bit.
Para configurar la patita como Entrada, hay que cargar un 1 en el biestable de
control de E/S mientras que hay que cargar un 0 si se desea que sea Salida.
Cada línea de E/S de los puertos se programa de forma independiente y puede
ser Entrada o Salida. Cuando se produce un reset, todos los bits de los
registros TRIS pasan a tener el valor 1 y todas las líneas de E/S actúan como
Entrada por evidentes motivos de seguridad para evitar daños irreparables.
Los puertos que contienen entradas y salidas necesitan una atención especial
al escribir el programa. Instrucciones como bsf y bcf comienzan leyendo el
valor del puerto y cargándolo en el registro W; allí ejecutan la puesta a 1 ó a 0
del bit seleccionado y, luego, depositan el registro W en el puerto. También hay
que tener en cuenta las modificaciones que se produzcan en las patitas que
son entrada y pasan a salida, pues pueden estar presentes datos antiguos en
el registro de salida del puerto al ser memorizados.
Hay que prestar mucha atención a las operaciones que, tras una lectura de un
puerto. Sigue una escritura de la misma. Se debe dejar pasar un tiempo
determinado para que se estabilice el voltaje de las patitas. Insertando entre la
lectura y la escritura una instrucción NOP o cualquier otra que no implique a los
puertos, se eliminan estos errores potenciales.
Autor: Mendado Pérez Enrique.

Microcontroladores PIC. Sistema integrado para el autoaprendizaje.

MARCOMBO, EDICIONES TECNICAS 2007, Barcelona (España).

PROGRAMACIÓN DE ENTRADAS Y SALIDAS

Un periférico es un dispositivo externo conectado al microcontrolador. Algunos


posibles periféricos son: los interruptores (switches), diodos emisores de luz,
reles (relevadores), teclados matriciales (keypack), visualizadores (displays) de
7 segmentos o de cristal líquido, convertidores A/D o D/A, y también una
impresora, un motor, etc. Por su puesto, todos estos periféricos incluyen el
circuito de interfaz necesario para conectarlos a los puertos del
microcontrolador.
Un puerto (port) es un circuito que forma parte del microcontrolador y sirve de
interfaz con algún dispositivo externo (un periférico). La figura siguiente
muestra el esquema general de la conexión entre un microcontrolador y un
periférico a través de un puerto de E/S. en general en esta conexión, se
dispone de n líneas para transportar el dato (lo usual es n=8) y de m líneas
adicionales para controlar la transferencia de los datos entre el periférico y el
puerto. Las líneas de control pueden no ser necesarias, como sucede en la E/S
simple sin sincronización.
Desde el punto de vista de su programación, los puertos de identifican por sus
direcciones, ubicadas por lo general en la memoria de datos. Para hacer
referencia a los datos que entran y salen por un puerto, se necesita al menos
una dirección. El manejo de las señales de control puede requerir algunos bits
adicionales, repartidos en una o dos direcciones más. En los
microcontroladores PIC, el acceso de los puertos se realiza a través de los
registros de funciones especiales de la memoria de datos.

Conexión entre el microcontrolador y un periférico a través de un puerto de E/S. obsérvese que


haya n líneas de datos y m líneas de control.
Autores: Fernando E. Valdés Pérez, Ramón Pallás Areny.

Microcontroladores: fundamentos y aplicaciones con PIC.

MARCOMBO, S.A. 2007. España.

PIC 16F877A

Características:
Este microcontrolador es fabricado por Microchip familia a la cual se le
denomina PIC. El modelo 16F877 posee varias características que hacen a
este microcontrolador un dispositivo muy versátil, eficiente y práctico para ser
empleado en la aplicación que posteriormente será detallada.
Algunas de estas características se muestran a continuación:
 Soporta modo de comunicación serial, posee dos pines para ello.
 Amplia memoria para datos y programa.
 Memoria reprogramable: La memoria en este PIC es la que se denomina
FLASH; este tipo de memoria se puede borrar electrónicamente (esto
corresponde a la "F" en el modelo).
 Set de instrucciones reducidas (tipo RISC), pero con las instrucciones
necesarias para facilitar su manejo.
Especificaciones:
 Nombre del parámetro Valor
 Programa Tipo de memoria flash
 Memoria de programa (KB) 14
 CPU Speed (MIPS) 5
 RAM 368 Bytes
 EEPROM de datos (bytes) 256
 Digital Periféricos de comunicación 1-UART, 1-A / E / USART, 1-SPI, 1-
I2C1-MSSP (SPI / I2C)
 Capture / Compare / PWM Periféricos 2 CCP
 Temporizadores 2 x 8 bits, 1 x 16-bit
 ADC 8 ch, de 10 bits
 Comparadores 2
 Rango de temperatura (C) -40 a 125
 Rango de Voltaje (V) 2-5,5
 Número de pines 40
2.1 ARQUITECTURA DE LOS PUERTOS DE E/S

Lectura de e/s y escritura de e/s son dos líneas de control que especifican una
entrada o salida, respectivamente. Los cuatro registros comunican en forma
directa con un dispositivo de e/s conectado a la interface. Los datos de e/s
hacia y desde el dispositivo pueden transferirse al puerto A o al puerto B. la
interface puede operar con un dispositivo de salida, con un dispositivo de
entrada o con un dispositivo que requiere tanto entradas como salidas.
Arquitectura básica de un computador
Un computador es una máquina que:
 acepta información de entrada
 La procesa ejecutando paso a paso una secuencia de instrucciones o
programa
 Y produce una información de salida.
El computador está por tanto compuesto por un equipo electrónico (hardware) y
un conjunto de programas (software).
El computador puede realizar dos tipos de instrucciones:
 Acciones
 Decisiones
Estructura de un Computador

Rendimiento del computador


Las prestaciones de un computador no sólo dependen de la velocidad del
procesador, que en muchos de ellos es el componente más rápido.
Los cuellos de botella están en:
 El intercambio de datos con la memoria:
 se puede mejorar aumentando la anchura de los buses de datos, o
mediante los sistemas de memoria jerárquicos (cachés dentro y fuera
del procesador), o incluso mediante sistemas jerárquicos de buses.
 El intercambio de datos con los dispositivos de entrada/salida:
 puede llegar a ser importante en sistemas empotrados en los que existe
una fuerte interacción con el entorno y las operaciones de entrada/salida
son muy frecuentes.
Entrada y salida de datos.
Los dispositivos de entrada/salida (E/S o I/O) forman junto con la CPU y la
memoria los elementos más importantes del computador.
Uno de sus objetivos principales es la eficiencia en las operaciones de
entrada/salida, minimizando el trabajo a realizar por la CPU.
Las velocidades de los dispositivos de E/S son muy variadas:
 Dispositivos lentos (p.e., ratón, teclado)
 Dispositivos medios (p.e., impresora)
 Dispositivos rápidos (p.e., red, disco)

Velocidades de dispositivos de E/S.


Rendimiento y E/S
La generación actual de procesadores es capaz de manejar los datos
producidos por los dispositivos, pero el principal problema está en la
transferencia de datos entre el procesador y el periférico.
Algunas soluciones están en:
 Uso de cachés y almacenamientos intermedios
 Buses de interconexión de mayor velocidad y con estructuras más
elaboradas
 El uso de configuraciones multiprocesador puede ayudar también a
satisfacer altas demandas de E/S.
Arquitectura de la E/S

Periférico:
 Dispositivo que permite al microprocesador su interacción con el
entorno.

Interfaz:
 Conjunto de módulos electrónicos que permiten el control de un
periférico adaptando las diferentes velocidades y modos de
funcionamiento del microprocesador y los periféricos.
Bus:
 Normalmente se refiere al conjunto de señales con las que se comunica
el microprocesador con el entorno: memoria o periféricos (a través de las
interfaces).
Las principales razones de uso de una interfaz son:
 Existen una gran variedad de periféricos con normas de funcionamiento
diferentes y resultaría imposible implementar en el procesador tal
diversidad de controladores
 Las diferencias de velocidad de los dispositivos hace que no sea
práctico comunicarse con ellos directamente a través del bus del sistema
 En algunos casos incluso la velocidad del dispositivo es mayor que la de
la memoria o el procesador
 Los periféricos utilizan datos con formatos y tamaños de palabra
diferentes de los del microprocesador al que se conectan.
Funciones de la interfaz de E/S
Control y temporización
 De la transferencia de datos entre el dispositivo y el procesador
 Si el sistema utiliza un bus cada interacción de la interfaz de E/S con el
procesador puede requerir uno o más arbitrajes del bus
Comunicación con el procesador
 Decodificación de órdenes: la interfaz acepta órdenes del procesador
 Datos: intercambio de datos a través del bus
 Información de estado: saber si el dispositivo está preparado para
transferir datos o no
Comunicación con los dispositivos
 Intercambio de órdenes, información de estado y datos almacenamiento
temporal de datos
 Fundamental para equilibrar las diferencias de velocidad del procesador
y de los periféricos
Detección de errores
 Defectos mecánicos o eléctricos en el funcionamiento del dispositivo
(atasco de papel, cambio de un bit, etc.).
Conexión de las interfaces de E/S
Conexión mapeada en memoria
 El circuito de interfaz se conecta como si fuera memoria
 Se accede a los registros leyendo o escribiendo una variable en una
posición de memoria concreta
Conexión mediante puertos de entrada/salida
 El circuito de interfaz se conecta mediante líneas especiales
 Se accede a los registros mediante instrucciones especiales (in, out),
especificando un número de puerto.
Tipos de E/S
Entrada/salida por consulta o programada
 La CPU accede a los registros desde programa
 Para saber si el dispositivo está listo, se hace una consulta periódica
Entrada/salida por interrupciones
 El dispositivo avisa a la CPU cuando está listo
 La entrada/salida se hace mediante una rutina de servicio de
interrupción entrada/salida por acceso directo a memoria
 El dispositivo accede directamente a la memoria
 avisa a la CPU del inicio o final de la operación

a) E/S por consulta


La operación de E/S es controlada por la CPU
Antes de realizar la operación se comprueba el (los) registro(s) de estado, para
ver si el dispositivo está listo
Ventajas: sencillez
Desventajas:
 Ritmo de transferencia limitado por la velocidad de la CPU
 Tiempo de respuesta elevado, mayor que el periodo de consulta
 Sobrecarga de la CPU para operaciones de consulta que podrían
evitarse.

b) E/S por interrupciones


Permite al dispositivo marcar el instante en que se hace la transferencia de
datos.
El mecanismo de interrupción está presente en casi todos los computadores.

Identificación de la fuente de interrupción.

c) E/S por acceso directo a memoria


El ritmo de transferencia es superior al de los otros métodos.
El instante de E/S lo marca el dispositivo con interrupciones.
Hay líneas para desconectar a la CPU de la memoria.
Funcionamiento de la E/S directa.
Registros del dispositivo:
 IODIR: Dirección de memoria para la operación de E/S
 CONT: Contador de número de bytes a transferir
Funcionamiento habitual:
 La CPU carga los valores en los registros del dispositivo
 El dispositivo solicita el uso de la memoria: DMA-request
 La CPU se lo concede: DMA-acknowledge
 El dispositivo transfiere los datos. Para cada uno, incrementa
IODIR y decremento CONT
 Cuando CONT llega a 0 se devuelve el control de la memoria a la
CPU (DMA-request) y se envía una interrupción de aviso.

También podría gustarte