Un microcontrolador es un circuito integrado que contiene
toda la estructura (arquitectura) de un microcomputador, o sea CPU, RAM, ROM,
circuitos de entrada y salida, entre otros.
ELEMENTOS
DEL MICROCONTROLADOR
REGISTROS
Un
registro o una celda de memoria es un circuito electrónico que puede memorizar
el estado de un byte.
REGISTROS
SFR
Cada
microcontrolador dispone de un número de registros de funciones especiales
(SFR), con la función predeterminada por el fabricante. Sus bits están
conectados a los circuitos internos del microcontrolador tales como
temporizadores, convertidores A/D, osciladores entre otros, lo que significa
que directamente manejan el funcionamiento de estos circuitos, o sea del
microcontrolador. Funcionan como interruptores que manejan el funcionamiento de
un circuito pequeño dentro del microcontrolador.
En
otras palabras, el estado de los bits de registros se fija dentro del programa,
los registros SFR dirigen los pequeños circuitos dentro del microcontrolador,
estos circuitos se conectan por los pines del microcontrolador a un dispositivo
periférico.
PUERTOS
DE ENTRADA/SALIDA (E/S)
Cada
microcontrolador tiene uno o más registros (denominados puertos) conectados a
los pines en el microcontrolador. Estos puertos pueden ser configurados como
entradas o salidas, dependiendo de la aplicación; eso se realiza simplemente
por medio de software, lo que significa que la función de algún pin puede ser
cambiada durante el funcionamiento.
CARACTERISTICAS
DE LOS PINES DE E/S
ØCorriente
máxima que pueden entregar/recibir: En la mayoría de los microcontroladores la
corriente obtenida de un pin es suficiente para activar un LED u otro
dispositivo de baja corriente (10-20mA). Mientras más pines de E/S haya, más
baja es la corriente máxima de un pin. En otras palabras, todos los puertos de
E/S comparten la corriente máxima declarada en la hoja de especificación
técnica del microprocesador.
ØPueden
disponer de los resistores pull-up: Estos resistores conectan los pines al polo
positivo del voltaje de la fuente de alimentación y su efecto se puede ver al
configurar el pin como una entrada conectada a un interruptor mecánico o a un
botón de presión. Las últimas versiones de los microcontroladores tienen las
resistencias pull-up
configurables por software.
ØCada
puerto de E/S normalmente está bajo el control de un registro SFR
especializado, lo que significa que cada bit de ese registro determina el
estado del pin correspondiente en el el
microcontrolador.
UNIDAD
DE MEMORIA
Parte
del microcontrolador utilizada para almacenar los datos. Cada
dirección de memoria corresponde a una localidad de memoria. El contenido de
cualquier localidad se puede leer y se le puede acceder al direccionarla. La
memoria se puede escribir en la localidad o leer.
TIPOS
DE MEMORIAS
MEMORIA
ROM (READ ONLY MEMORY) - MEMORIA DE SÓLO LECTURA.
La
memoria ROM se utiliza para guardar permanentemente el programa que se está
ejecutando. El tamaño de programa que se puede escribir depende del tamaño de
esta memoria. Los microcontroladores actuales normalmente utilizan el
direccionamiento de 16 bits, que significa que son capaces de direccionar hasta
64 Kb de memoria, o sea 65535 localidades.
ØRom
de máscara (enmascarada) – MROM.
La
ROM enmascarada es un tipo de ROM cuyo contenido es programado por el
fabricante. El término “de máscara” viene del proceso de fabricación, donde las
partes del chip se plasman en las mascaras utilizadas durante el proceso de
fotolitografía. Olvide la idea de modificarla...
ØOTP
ROM (One
Time Programmable ROM) - ROM programable una sola vez.
La
memoria programable una sola vez permite descargar un programa en el chip, pero
como dice su nombre, una sola vez.
ØUV
EPROM (UV Erasable Programmable ROM) - ROM programable borrable por rayos
ultravioleta.
El encapsulado de este
microcontrolador tiene una “ventana” reconocible en la parte alta. Eso permite
exponer la superficie del chip de silicio a la luz de ultravioleta y borrar el
programa completamente en varios minutos. Luego es posible descargar un nuevo
programa en él.
MEMORIA
FLASH.
Este
tipo de memoria se inventó en los años 80 en los laboratorios de la compañía
INTEL, como forma desarrollada de la memoria UV EPROM. Ya que es posible
escribir y borrar el contenido de esta memoria prácticamente un número
ilimitado de veces, los microcontroladores con memoria Flash son perfectos para
estudiar, experimentar y para la fabricación en pequeña escala. Por la gran
popularidad de esta memoria, la mayoría de los microcontroladores se fabrican
con tecnología flash hoy
en día.
MEMORIA
RAM (RANDOM ACCESS MEMORY) - MEMORIA DE ACCESO ALEATORIO.
Al
apagar la fuente de alimentación, se pierde el contenido de la memoria RAM. Se
utiliza para almacenar temporalmente los datos y los resultados inmediatos
creados y utilizados durante el funcionamiento del microcontrolador. Por
ejemplo, si el programa ejecuta la adición (de cualquier cosa) es necesario
tener un registro que representa lo que se llama “suma” en vida cotidiana. Con
tal propósito, uno de los registros de la RAM es denominado “suma” y se utiliza
para almacenar los resultados de la adición.
MEMORIA
EEPROM (ELECTRICALLY ERASABLE PROGRAMMABLE ROM) - ROM PROGRAMABLE Y BORRABLE
ELÉCTRICAMENTE.
El
contenido de la EEPROM se puede cambiar durante el funcionamiento (similar a la
RAM), pero se queda permanentemente guardado después de la pérdida de la fuente
de alimentación (similar a la ROM). Por lo tanto, la EEPROM se utiliza con
frecuencia para almacenar los valores creados durante el funcionamiento, que
tienen que estar permanentemente guardados.
UNIDAD
CENTRAL DE PROCESAMIENTO (CENTRAL PROCESSOR UNIT - CPU).
Unidad
que controla todos los procesos dentro del microcontrolador. Consiste en varias
unidades más pequeñas, de las que las más importantes son:
ØDecodificador
de instrucciones es la parte que descodifica las
instrucciones del programa y acciona otros circuitos basándose en esto. El
“conjunto de instrucciones” que es diferente para cada familia de
microcontrolador expresa las capacidades de este circuito;
ØUnidad
lógica aritmética (Arithmetical
Logical
Unit
- ALU).
Realiza todas las operaciones matemáticas y lógicas sobre datos;
ØAcumulador o
registro de trabajo. Es un registro SFR estrechamente relacionado con el
funcionamiento de la ALU. Es utilizado para almacenar todos los datos sobre los
que se debe realizar alguna operación (sumar, mover). También almacena los
resultados preparados para el procesamiento futuro. Uno de los registros SFR,
denominado Registro Status (PSW), está estrechamente relacionado con el
acumulador. Muestra el “estado” de un número almacenado en el acumulador (el
número es mayor o menor que cero etc.) en cualquier instante dado.
COMUNICACIÓN
EN SERIE
Cuando
es necesario establecer comunicación entre dos dispositivos a largas distancias
se utiliza la conexión en serie.
Hoy
en día, la mayoría de los microcontroladores llevan incorporados varios
sistemas diferentes para la comunicación en serie, como un equipo estándar.
La
comunicación en serie debe seguir un protocolo para que los dispositivos puedan
interpretar correctamente los datos que intercambian mutuamente. Los
microcontroladores se encargan de eso automáticamente, así que el trabajo de
programador/usuario es reducido a la escritura y lectura de datos.
BUS
El
bus está formado por 8, 16 o más cables. Hay dos tipos de buses: el bus de
direcciones y el bus de datos. El bus de direcciones consiste en tantas líneas
como sean necesarias para direccionar la memoria. Se utiliza para transmitir la
dirección de la CPU a la memoria. El bus de datos es tan ancho como los datos,
en este caso es de 8 bits o líneas de ancho. Se utiliza para conectar todos los
circuitos dentro del microcontrolador
VELOCIDAD
DE TRANSMISIÓN SERIAL
La
velocidad de transmisión serial (baud
rate) es
el término utilizado para denotar el número de bits transmitidos por segundo
[bps]. ¡Fíjese que este término se refiere a bits, y no a bytes! El protocolo
normalmente requiere que cada byte se transmita junto con varios bits de
control. Eso quiere decir que un byte en un flujo de datos serial puede
consistir en 11 bits. Por ejemplo, si velocidad de transmisión serial es 300
bps un máximo de 37 y un mínimo de 27 bytes se pueden transmitir por segundo.
SISTEMAS
DE COMUNICACIÓN SERIAL
I2C
(INTER INTEGRATED CIRCUIT) - CIRCUITO INTER-INTEGRADO
Es un
sistema para el intercambio de datos serial entre los microcontroladores y los
circuitos integrados especializados de generación. Se utiliza cuando la
distancia entre ellos es corta (el receptor y el transmisor están normalmente
en la misma placa de circuito impreso). La conexión se establece por medio de
dos líneas - una se utiliza para transmitir los datos, mientras que la otra se
utiliza para la sincronización (la señal de reloj). Un
dispositivo es siempre el principal (master - maestro), el que realiza el
direccionamiento de un chip subordinado (slave -
esclavo) antes de que se inicie la comunicación.
De
esta manera un microcontrolador puede comunicarse con 112 dispositivos
diferentes. La velocidad de transmisión serial es normalmente 100 Kb/seg (el
modo estándar) o 10 Kb/seg (modo de velocidad de transmisión
baja). Recientemente han aparecido los sistemas con la velocidad de transmisión
serial 3.4 Mb/sec.
SPI
(SERIAL PERIPHERAL INTERFACE BUS) - BUS SERIAL DE INTERFAZ DE PERIFÉRICOS
Un
bus serial de interfaz de periféricos es un sistema para la comunicación serial
que utiliza hasta cuatro líneas (normalmente solo son necesarias tres) - para
recibir los datos, para transmitir los datos, para sincronizar y (opcional)
para seleccionar el dispositivo con el que se comunica. Esto es la conexión
full duplex, lo que significa que los datos se envían y se reciben
simultáneamente.
La
velocidad de transmisión máxima es mayor que en el sistema de conexión I2C.
UART (UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER) - TRANSMISOR-RECEPTOR ASÍNCRONO
UNIVERSAL
Este
tipo de conexión es asíncrona, lo que significa que no se utiliza una línea
especial para transmitir la señal de reloj. En algunas aplicaciones este rasgo
es crucial (por ejemplo, en mandar datos a distancia por RF o por luz
infrarroja).
Puesto que se utiliza sólo una línea de
comunicación, tanto el receptor como el transmisor reciben y envían los datos a
velocidad misma que ha sido predefinida para mantener la sincronización
necesaria. Esto es una manera simple de transmitir datos puesto que básicamente
representa una conversión de datos de 8 bits de paralelo
OSCILADOR
Los
pulsos uniformes generados por el oscilador permiten el funcionamiento armónico
y síncrono de todos los circuitos del microcontrolador. El oscilador se
configura normalmente de tal manera que utilice un cristal de cuarzo o
resonador cerámico para estabilización de frecuencia. Además, puede funcionar
como un circuito autónomo (como oscilador RC). Es importante decir que las
instrucciones del programa no se ejecutan a la velocidad impuesta por el mismo
oscilador sino varias veces más despacio.
Eso
ocurre porque cada instrucción se ejecuta en varios ciclos del oscilador. En
algunos microcontroladores se necesita el mismo número de ciclos para ejecutar
todas las instrucciones, mientras que en otros el tiempo de ejecución no es el
mismo para todas las instrucciones. Por consiguiente, si el sistema utiliza el
cristal de cuarzo con una frecuencia de 20 MHZ, el tiempo de ejecución de una
instrucción de programa no es 50 nS,
sino 200, 400 o 800 nS dependiendo del tipo del
microcontrolador.
CIRCUITO
DE ALIMENTACIÓN
Hay
que mencionar dos cosas dignas de atención con relación al circuito de la
fuente de alimentación de microcontroladores:
ØBrown
out es
un estado potencialmente peligroso que ocurre al apagar el microcontrolador o
en caso de que el voltaje de la fuente de alimentación salga de unos márgenes
debido al ruido eléctrico. Como el microcontrolador dispone de varios circuitos
que funcionan a niveles de voltaje diferentes, ese estado puede causar un
comportamiento descontrolado. Para evitarlo, el microcontrolador normalmente
tiene un circuito incorporado para el brown out reset. El
circuito reinicia inmediatamente el microcontrolador si el voltaje de
alimentación cae por debajo del límite.
Ø
ØEl
pin de reset
(reinicio), marcado frecuentemente con MCLR (Master Clear Reset),
sirve para el reinicio externo del microcontrolador al aplicar un cero (0) o un
uno (1) lógico dependiendo del tipo del microcontrolador. En caso de que el
circuito brown out no
esté incorporado, un simple circuito externo para el brown out reset se
puede conectar al pin MCLR.
TEMPORIZADORES/CONTADORES
El
oscilador del microcontrolador utiliza cristal de cuarzo para su
funcionamiento. Aunque no se trata de la solución más simple, hay muchas
razones para utilizarlo. La frecuencia del oscilador es definida con precisión
y muy estable, así que siempre genera los pulsos del mismo ancho, lo que los
hace perfectos para medición de tiempo. Tales osciladores se utilizan en los
relojes de cuarzo. Si es necesario medir el tiempo transcurrido entre dos
eventos, basta con contar los pulsos generados por este oscilador. Esto es
exactamente lo que hace el temporizador.
La
mayoría de los programas utiliza estos cronómetros electrónicos en miniatura.
Generalmente son registros SFR de 8 o 16 bits cuyo contenido se aumenta
automáticamente con cada pulso. ¡Una vez que se llena el registro, se genera
una interrupción!
Si
los registros se aumentan con los pulsos que vienen de la fuente externa, tal
temporizador se convierte en un contador.
¿CÓMO
FUNCIONAN LOS TEMPORIZADORES?
En
práctica, los pulsos generados por el oscilador de cuarzo son llevados al
circuito una vez por cada ciclo de máquina directamente o por el pre-escalador,
lo que aumenta el número en el registro del temporizador. Si una instrucción
(un ciclo de máquina) dura cuatro períodos del oscilador de cuarzo, este número
será cambiado un millón de veces por segundo (cada microsegundo) al incorporar
al cuarzo que oscila con una frecuencia de 4 MHz.
Es
fácil de medir los intervalos de tiempo cortos de la manera descrita
anteriormente (hasta 256 microsegundos porque es el mayor número que un
registro puede contener). Esta obvia desventaja se puede superar de varias
maneras: al utilizar el oscilador más lento, por medio de registros con más
bits, del pre-escalador o de la interrupción. Las primeras dos soluciones
tienen algunas debilidades así que se recomienda utilizar el pre-escalador y/o
la interrupción.
UTILIZAR
UN PREESCALADOR EN EL FUNCIONAMIENTO DEL TEMPORIZADOR
Un
pre-escalador es un dispositivo electrónico utilizado para dividir la
frecuencia por un factor predeterminado. Esto quiere decir que se necesita
llevar 1, 2, 4 o más pulsos a su entrada para generar un pulso a la salida. La
mayoría de los microcontroladores disponen de uno o más pre-escaladores
incorporados y su tasa de división puede ser cambiada dentro del programa. El
pre-escalador se utiliza cuando es necesario medir los períodos de tiempo más
largos. Si el temporizador y el temporizador perro guardián comparten un
pre-escalador, éste no se puede utilizar por los dos simultáneamente.
UTILIZAR
UNA INTERRUPCIÓN EN EL FUNCIONAMIENTO DEL TEMPORIZADOR
Si el
registro del temporizador es de 8 bits, el mayor número que se puede escribir
en él es 255.
Si se
excede este número, el temporizador se reinicia automáticamente y el conteo
comienza de nuevo en cero. Esto es denominado desbordamiento o sobreflujo (overflow).
Permitido por el programa, el desbordamiento puede provocar una interrupción,
lo que abre completamente nuevas posibilidades. Por ejemplo, el estado de
registros utilizados para contar segundos, minutos o días puede ser
implementado en una rutina de interrupción. El proceso entero (excepto la
rutina de interrupción) se lleva a cabo internamente, lo que permite que los
circuitos principales del microcontrolador funcionen regularmente.
CONTADORES
Si un
temporizador se suministra por los pulsos ingresados por el pin de entrada en
el microcontrolador, se produce un contador. Evidentemente, es el mismo
circuito electrónico. La única diferencia es que los pulsos para contar se
ingresan por el pin de entrada y que su duración (anchura) no es definida. Por
eso, no se pueden utilizar para medición de tiempo, sino que se utilizan para
otros propósitos, por ejemplo: contar los productos en la cadena de montaje,
número de rotaciones del eje de un motor, pasajeros etc. dependiendo
del
sensor utilizado.
TEMPORIZADOR
PERRO GUARDIÁN (WATCHDOG)
El
perro guardián es un temporizador conectado a un oscilador RC completamente
independiente dentro del microcontrolador.
Si el
perro guardián está habilitado, cada vez que cuenta hasta el máximo valor en el
que ocurre el desbordamiento del registro se genera una señal de reinicio del
microcontrolador y la ejecución de programa inicia en la primera instrucción.
El punto es evitar que eso ocurra al utilizar el comando adecuado. La
idea se basa en el hecho de que cada programa se ejecuta en varios bucles, más
largos o cortos.
Si las
instrucciones que reinician el temporizador perro guardián se colocan en
lugares estratégicos del programa, aparte los comandos que se ejecutan
regularmente, el funcionamiento del perro guardián no afectará a la ejecución
del programa. Si por cualquier razón (ruidos eléctricos frecuentes en la
industria) el contador de programa “se queda atrapado” dentro de un bucle
infinito, el valor del registro continuará aumentado por el temporizador perro
guardián alcanzará el máximo valor, el registro se desbordará y Ocurre el
reinicio.
CONVERTIDOR
A/D
Las señales
del mundo real son muy diferentes de las que “entiende” el microcontrolador
(ceros y unos), así que deben ser convertidas para que el microcontrolador
pueda entenderlas. Un convertidor analógico-digital es un circuito electrónico
encargado de convertir las señales continuas en números digitales discretos. En
otras palabras, este circuito convierte un número real en un número binario y
se lo envía a la CPU para ser procesado. Este módulo se utiliza para medir el
voltaje en el pin de entrada.
El
resultado de esta medición es un número (el valor digital) utilizado y
procesado más tarde en el programa.
ARQUITECTURA
INTERNA DEL MICROCONTROLADOR
Todos
los microcontroladores actuales utilizan uno de dos modelos básicos de
arquitectura denominados Harvard y von-Neumann. Son
dos
maneras diferentes del intercambio de datos entre la CPU y la memoria.
Arquitectura
de von-Neumann :
Los
microcontroladores que utilizan la arquitectura von- Neumann disponen de un
solo bloque de memoria y de un bus de datos de 8 bits. Como todos los datos se
intercambian por medio de estas 8 líneas, este bus está sobrecargado, y la
comunicación por si misma es muy lenta e ineficaz. La CPU puede leer una
instrucción o leer/escribir datos de/en la memoria.
Los dos procesos no pueden ocurrir a la vez
puesto que las instrucciones y los datos utilizan el mismo bus. Por ejemplo, si
alguna línea de programa dice que el registro de la memoria RAM llamado “SUM”
debe ser aumentado por uno (instrucción: incf
SUMA), el microcontrolador hará lo siguiente:
1.Leer
la parte de la instrucción de programa que especifica QUÉ es lo que debe
realizar (en este caso es la instrucción para incrementar “incf”).
●
2.Seguir
leyendo la misma instrucción que especifica sobre CUÁL dato lo debe realizar
(en este caso es el contenido del registro “SUMA”).
●
3.Después
de haber sido incrementado, el contenido de este registro se debe escribir en
el registro del que fue leído (dirección del registro “SUMA”).
●
●
El
mismo bus de datos se utiliza para todas estas operaciones intermedias.
ARQUITECTURA
DE HARVARD
Los microcontroladores
que utilizan esta arquitectura disponen de dos buses de datos diferentes. Uno
es de 8 bits de ancho y conecta la CPU con la memoria RAM. El otro consiste en
varias líneas (12, 14 o 16) y conecta a la CPU y la memoria ROM. Por consiguiente,
la CPU puede leer las instrucciones y realizar el acceso a la memoria de datos
a la vez. Puesto que todos los registros de la memoria RAM son de 8 bits de
ancho, todos los datos dentro del microcontrolador que se intercambian son de
la misma anchura.
Durante
el proceso de la escritura de programa, sólo se manejan los datos de 8 bits. En
otras palabras, todo lo que usted podrá cambiar en el programa y a lo que podrá
afectar será de 8 bits de ancho. Todos los programas escritos para estos
microcontroladores serán almacenados en la memoria ROM interna del
microcontrolador después de haber sido compilados a código máquina. No
obstante, estas localidades de memoria ROM no tienen 8, sino 12, 14 o 16 bits.
4, 6 o 8 bits adicionales representan una instrucción que especifica a la CPU
qué hacer con los datos de 8 bits.
Las
ventajas de este diseño son las siguientes:
ØTodos
los datos en el programa son de un byte (8 bits) de ancho. Como un bus de datos
utilizado para lectura de programa tiene unas líneas más (12, 14 o 16), tanto
la instrucción como el dato se pueden leer simultáneamente al utilizar estos
bits adicionales. Por eso, todas las instrucciones se ejecutan en un ciclo
salvo las instrucciones de salto que son de dos ciclos.
Ø
ØEl
hecho de que un programa (la ROM) y los datos temporales (la RAM) estén
separados, permite a la CPU poder ejecutar dos instrucciones simultáneamente.
Dicho de manera sencilla, mientras que se realiza la lectura o escritura de la
RAM (que marca el fin de una instrucción), la siguiente instrucción se lee por
medio de otro bus.
Ø
ØEn
los microcontroladores que utilizan la arquitectura de von-Neumann,
nunca se sabe cuánta memoria ocupará algún programa. Generalmente, la mayoría
de las instrucciones de programa ocupan dos localidades de memoria (una
contiene información sobre QUÉ se debe realizar, mientras que la otra contiene información
sobre
CUÁL dato se debe realizar). Sin embargo, esto no es una fórmula rígida, sino
el caso más frecuente. En los microcontroladores que utilizan una arquitectura
Harvard, el bus de la palabra de programa es más ancho que un byte, lo que
permite que cada palabra de programa esté compuesto por una instrucción y un
dato. En otras palabras, una localidad de memoria - una instrucción de
programa.
JUEGO
DE INSTRUCCIONES
El
nombre colectivo de todas las instrucciones que puede entender el
microcontrolador es llamado Juego de Instrucciones.
Cuando se escribe un programa en ensamblador, en realidad se especifican
instrucciones en el orden en el que deben ser ejecutadas. La restricción
principal es el número de instrucciones disponibles. Los fabricantes aceptan
cualquiera de los dos enfoques descritos a continuación.
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...
MICROCONTROLADORES
PIC
Los
microcontroladores PIC fueron desarrollados por
Microchip Technology. El nombre
verdadero de este microcontrolador es PICmicro (Peripheral
Interface Controller),
conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la
compañía General Instruments. Este chip denominado PIC1650 fue diseñado para
propósitos completamente diferentes.
Diez años
más tarde, al añadir una memoria EEPROM, este circuito se convirtió en un
verdadero microcontrolador PIC.
A continuacion se
describe el
funcionamiento de un modelo particular que pertenece a la “clase media alta”.
Es PIC16F877
-
bastante poderoso para ser digno de atención y bastante simple para poder ser
utilizado por cualquiera. Así, los siguientes capítulos describen este
microcontrolador en detalle y también se refieren a la familia PIC entera.
Todos
los microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere
decir que su memoria de programa está conectada a la CPU por más de 8 líneas.
Hay microcontroladores de 12, 14 y 16 bits, dependiendo de la anchura del bus.
La tabla anterior muestra las características principales de estas tres
categorías.
Como
se puede ver en la tabla de la página anterior, salvo “los monstruos de 16
bits” PIC 24FXXX y PIC 24HXXX - todos los microcontroladores tienen la
arquitectura Harvard de 8 bits y pertenecen a una de las tres grandes grupos.
Por eso, dependiendo del tamaño de palabra de programa existen la primera, la
segunda y la tercera categoría de microcontroladores, es decir
microcontroladores de 12, 14 o 16 bits.
Puesto
que
disponen del núcleo similar de 8 bits, todos utilizan el mismo juego de
instrucciones y el “esqueleto” básico de hardware conectado a más o menos
unidades periféricas.
Los microcontroladores
PIC con palabras de programa de 14 bits parecen ser la mejor opción para los
principiantes. Aquí está el porqué...
JUEGO
DE INSTRUCCIONES
El
juego de instrucciones para los microcontroladores 16F8XX incluye 35
instrucciones en total. La razón para un número tan reducido de instrucciones
yace en la arquitectura
RISC.
Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto
de la velocidad operativa, la sencillez de la arquitectura y la compacidad del
código. Lo malo de la arquitectura RISC es que se espera del programador que
haga frente a estas instrucciones. Por supuesto, esto es relevante sólo si se
utiliza el lenguaje ensamblador para la programación. En la
programación
en el lenguaje de alto nivel C, se utilizan instrucciones relativamente
simples.
TIEMPO
DE EJECUCIÓN DE INSTRUCCIONES
Todas
las instrucciones se ejecutan en un ciclo. La únicas excepciones pueden ser las
instrucciones de ramificación condicional o las instrucciones que cambian el
contenido del contador de programa. En ambos casos, dos ciclos de reloj son
necesarios para la ejecución de la instrucción, mientras que el segundo ciclo
se ejecuta como un NOP (No operation).
Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se
utiliza un oscilador de 4 MHz, el tiempo nominal para la ejecución de la
instrucción es 1μS. En cuanto a las instrucciones de ramificación, el tiempo de
ejecución de la instrucción es 2μS.
JUEGO DE INSTRUCCIONES DE LOS
MICROCONTROLADORES PIC DE 14 BITS
*1 Si
un registro de E/S está modificado, el valor utilizado será el valor presentado
en los pines del microcontrolador.
*2 Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado.
*3 Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado
*2 Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado.
*3 Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado
No hay comentarios:
Publicar un comentario