- Introducción a los
microcontroladores. - Breve introducción a la
programación de los µcontroladores
PIC - La familia de los
PIC. - Microcontrolador PIC
16c711
1. INTRODUCCION A LOS MICROCONTROLADORES.
Los microcontroladores están conquistando el
mundo. Están presentes en nuestro trabajo, en
nuestra casa y en nuestra vida, en general. Se pueden encontrar
controlando el funcionamiento de los ratones y teclados de los
computadores, en los teléfonos, en los hornos microondas y
los televisores de nuestro hogar. Pero la invasión acaba
de comenzar y el nacimiento del siglo XXI es testigo de la
conquista masiva de estos diminutos computadores, que
gobernarán la mayor parte de los aparatos que fabricaremos
y usamos los humanos.
1.1 Controlador y
microcontrolador.
Recibe el nombre de controlador el dispositivo que se
emplea para el gobierno de uno o
varios procesos. Por
ejemplo, el controlador que regula el funcionamiento de un horno
dispone de un sensor que mide constantemente su temperatura
interna y, cuando traspasa los límites
prefijados, genera las señales
adecuadas que accionan los efectores que intentan llevar el
valor de la
temperatura dentro del rango estipulado.
Aunque el concepto de
controlador ha permanecido invariable a través del
tiempo, su
implementación física ha variado
frecuentemente. Hace tres décadas, los controladores se
construían exclusivamente con componentes de lógica
discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de
memoria y E/S
sobre una tarjeta de circuito impreso. En la actualidad, todos
los elementos del controlador se han podido incluir en un chip,
el cual recibe el nombre de microcontrolador. Realmente consiste
en un sencillo pero completo computador
contenido en el corazón
(chip) de un circuito integrado.
Un microcontrolador es un circuito integrado de alta
escala de
integración que incorpora la mayor parte de
los elementos que configuran un controlador.
Un microcontrolador dispone normalmente de los
siguientes componentes:
- Procesador o UCP (Unidad Central de Proceso).
- Memoria RAM para
Contener los datos. - Memoria para el programa tipo
ROM/PROM/EPROM. - Líneas de E/S para comunicarse con el
exterior. - Diversos módulos para el control de
periféricos (temporizadores, Puertas
Serie y Paralelo, CAD: Conversores Analógico/Digital,
CDA: Conversores Digital/Analógico, etc.). - Generador de impulsos de reloj que sincronizan el
funcionamiento de todo el sistema.
Los productos que
para su regulación incorporan un microcontrolador disponen
de las siguientes ventajas:
- Aumento de prestaciones: un mayor control sobre un
determinado elemento representa una mejora considerable en el
mismo. - Aumento de la fiabilidad: al reemplazar un elevado
número de elementos por el microcontrolador disminuye el
riesgo de
averías y se precisan menos ajustes. - Reducción del tamaño en el producto
acabado: La integración del microcontrolador en un chip
disminuye el volumen, la
mano de obra y los stocks. - Mayor flexibilidad: las características de
control están programadas por lo que su
modificación sólo necesita cambios en el programa
de instrucciones.
El microcontrolador es en definitiva un circuito
integrado que incluye todos los componentes de un computador.
Debido a su reducido tamaño es posible montar el
controlador en el propio dispositivo al que gobierna. En este
caso el controlador recibe el nombre de controlador empotrado
(embedded controller).
1.2 Diferencia entre
microprocesador y
microcontrolador.
El microprocesador es un circuito integrado que contiene
la Unidad Central de Proceso (UCP), también llamada
procesador, de un
computador. La UCP está formada por la Unidad de Control,
que interpreta las instrucciones, y el Camino de Datos, que las
ejecuta.
Las patitas de un microprocesador sacan al exterior las
líneas de sus buses de direcciones, datos y control, para
permitir conectarle con la Memoria y
los Módulos de E/S y configurar un computador implementado
por varios circuitos
integrados. Se dice que un microprocesador es un sistema
abierto porque su configuración es variable de acuerdo con
la aplicación a la que se destine. (Figura
1.1.)
Figura 1.1. Estructura de un sistema abierto basado
en un microprocesador. La disponibilidad de los buses en el
exterior permite que se configure a la medida de la
aplicación.
Si sólo se dispusiese de un modelo de
microcontrolador, éste debería tener muy
potenciados todos sus recursos para
poderse adaptar a las exigencias de las diferentes aplicaciones.
Esta potenciación supondría en muchos casos un
despilfarro. En la práctica cada fabricante de
microcontroladores oferta un
elevado número de modelos
diferentes, desde los más sencillos hasta los más
poderosos. Es posible seleccionar la capacidad de las memorias, el
número de líneas de E/S, la cantidad y potencia de los
elementos auxiliares, la velocidad de
funcionamiento, etc. Por todo ello, un aspecto muy destacado del
diseño
es la selección
del microcontrolador a utilizar.
Figura 1.2. El microcontrolador es un sistema
cerrado. Todas las partes del computador están contenidas
en su interior y sólo salen al exterior las líneas
que gobiernan los periféricos.
1.3 Aplicaciones de los
microcontroladores.
Cada vez existen más productos que incorporan un
microcontrolador con el fin de aumentar sustancialmente sus
prestaciones, reducir su tamaño y coste, mejorar su
fiabilidad y disminuir el consumo.
Algunos fabricantes de microcontroladores superan el
millón de unidades de un modelo determinado producidas en
una semana. Este dato puede dar una idea de la masiva
utilización de estos componentes.
Los microcontroladores están siendo empleados en
multitud de sistemas
presentes en nuestra vida diaria, como pueden ser juguetes,
horno microondas, frigoríficos, televisores, computadoras,
impresoras,
módems, sistemas de arranque de automóviles, etc. y
otras aplicaciones con las que seguramente no estaremos tan
familiarizados como instrumentación electrónica, control de sistemas en una
nave espacial, etc. Una aplicación típica
podría emplear varios microcontroladores para controlar
pequeñas partes del sistema. Estos pequeños
controladores podrían comunicarse entre ellos y con un
procesador central, probablemente más potente, para
compartir la información y coordinar sus acciones,
como, de hecho, ocurre ya habitualmente en cualquier
PC.
1.4 El mercado de los
microcontroladores.
Aunque en el mercado de la microinformática la
mayor atención la acaparan los desarrollos de los
microprocesadores, lo cierto es que se venden cientos de
microcontroladores por cada uno de aquéllos.
Existe una gran diversidad de microcontroladores.
Quizá la clasificación más importante sea
entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las
prestaciones de los microcontroladores de 16 y 32 bits son
superiores a los de 4 y 8 bits, la realidad es que los
microcontroladores de 8 bits dominan el mercado y los de 4 bits
se resisten a desaparecer. La razón de esta tendencia es
que los microcontroladores de 4 y 8 bits son apropiados para la
gran mayoría de las aplicaciones, lo que hace absurdo
emplear micros más potentes y consecuentemente más
caros. Uno de los sectores que más tira del mercado del
microcontrolador es el mercado automovilístico. De hecho,
algunas de las familias de microcontroladores actuales se
desarrollaron pensando en este sector, siendo modificadas
posteriormente para adaptarse a sistemas más
genéricos. El mercado del automóvil es
además uno de los más exigentes: los componentes
electrónicos deben operar bajo condiciones extremas de
vibraciones, choques, ruido, etc. y
seguir siendo fiables. El fallo de cualquier componente en un
automóvil puede ser el origen de un accidente.
En cuanto a las técnicas
de fabricación, cabe decir que prácticamente la
totalidad de los microcontroladores actuales se fabrican con
tecnología
CMOS 4 (Complementary Metal Oxide Semiconductor). Esta
tecnología supera a las técnicas anteriores por su
bajo consumo y alta inmunidad al ruido.
La distribución de las ventas
según su aplicación es la siguiente:
- Una tercera parte se absorbe en las aplicaciones
relacionadas con los computadores y sus
periféricos. - La cuarta parte se utiliza en las aplicaciones de
consumo (electrodomésticos, juegos, TV,
vídeo, etc.) - El 16% de las ventas mundiales se destinó al
área de las comunicaciones. - Otro 16% fue empleado en aplicaciones
industriales. - El resto de los microcontroladores vendidos en el
mundo, aproximadamente un 10% fueron adquiridos por las
industrias
de automoción.
También los modernos microcontroladores de 32
bits van afianzando sus posiciones en el mercado, siendo las
áreas de más interés el
procesamiento de imágenes,
las comunicaciones, las aplicaciones militares, los procesos
industriales y el control de los dispositivos de
almacenamiento masivo de datos.
1.5 Variantes en los
microcontroladores
A la hora de escoger el microcontrolador a emplear en un
diseño concreto hay
que tener en cuenta multitud de factores, como la documentación y herramientas
de desarrollo
disponibles y su precio, la
cantidad de fabricantes que lo producen y por supuesto las
características del microcontrolador (tipo de memoria de
programa, número de temporizadores, interrupciones,
etc.):
Costos. Como es lógico, los fabricantes de
microcontroladores compiten duramente para vender sus productos.
Y no les va demasiado mal ya que sin hacer demasiado ruido venden
10 veces más microcontroladores que
microprocesadores.
Para que nos hagamos una idea, para el fabricante que
usa el microcontrolador en su producto una diferencia de precio
en el microcontrolador de algunos pesos es importante (el
consumidor
deberá pagar además el costo del
empaquetado, el de los otros componentes, el diseño del
hardware y el
desarrollo del software). Si el fabricante
desea reducir costos debe tener
en cuenta las herramientas de apoyo con que va a contar:
emuladores, simuladores, ensambladores, compiladores,
etc. Es habitual que muchos de ellos siempre se decanten por
microcontroladores pertenecientes a una única familia.
Aplicación. Antes de seleccionar un
microcontrolador es imprescindible analizar los requisitos de la
aplicación:
- Procesamiento de datos: puede ser necesario que el
microcontrolador realice cálculos críticos en un
tiempo limitado. En ese caso debemos asegurarnos de seleccionar
un dispositivo suficientemente rápido para ello. Por
otro lado, habrá que tener en cuenta la precisión
de los datos a manejar: si no es suficiente con un
microcontrolador de 8 bits, puede ser necesario acudir a
microcontroladores de 16 ó 32 bits, o incluso a hardware
de coma flotante. Una alternativa más barata y
quizá suficiente es usar librerías para manejar
los datos de alta precisión. – - Entrada Salida: para determinar las necesidades de
Entrada/Salida del sistema es conveniente dibujar un diagrama de
bloques del mismo, de tal forma que sea sencillo identificar la
cantidad y tipo de señales a controlar. Una vez
realizado este análisis puede ser necesario
añadir periféricos hardware externos o cambiar a
otro microcontrolador más adecuado a ese
sistema. - Consumo: algunos productos que incorporan
microcontroladores están alimentados con baterías
y su funcionamiento puede ser tan vital como activar una alarma
antirrobo. Lo más conveniente en un caso como
éste puede ser que el microcontrolador esté en
estado de
bajo consumo pero que despierte ante la activación de
una señal (una interrupción) y ejecute el
programa adecuado para procesarla. - Memoria: para detectar las necesidades de memoria de
nuestra aplicación debemos separarla en memoria
volátil (RAM), memoria no volátil (ROM, EPROM,
etc.) y memoria no volátil modificable (EEPROM). Este
último tipo de memoria puede ser útil para
incluir información específica de la
aplicación como un número de serie o
parámetros de calibración.
El tipo de memoria a emplear vendrá determinado
por el volumen de ventas previsto del producto: de menor a mayor
volumen será conveniente emplear EPROM, OTP y ROM. En
cuanto a la cantidad de memoria necesaria puede ser
imprescindible realizar una versión preliminar, aunque sea
en pseudo-código,
de la aplicación y a partir de ella hacer una
estimación de cuánta memoria volátil y no
volátil es necesaria y si es conveniente disponer de
memoria no volátil modificable
- Ancho de palabra: el criterio de diseño debe
ser seleccionar el microcontrolador de menor ancho de palabra
que satisfaga los requerimientos de la aplicación. Usar
un microcontrolador de 4 bits supondrá una
reducción en los costes importante, mientras que uno de
8 bits puede ser el más adecuado si el ancho de los
datos es de un byte. Los microcontroladores de 16 y 32 bits,
debido a su elevado coste, deben reservarse para aplicaciones
que requieran sus altas prestaciones (Entrada/Salida potente o
espacio de direccionamiento muy elevado). - Diseño de la placa: la selección de un
microcontrolador concreto condicionará el diseño
de la placa de circuitos.
Debe tenerse en cuenta que quizá usar un
microcontrolador barato encarezca el resto de componentes del
diseño.
Los microcontroladores más populares se
encuentran, sin duda, entre las mejores elecciones:
8048 (Intel). Es el padre de los microcontroladores
actuales, el primero de todos. Su precio, disponibilidad y
herramientas de desarrollo hacen que todavía sea muy
popular.
8051 (Intel y otros). Es sin duda el microcontrolador
más popular. Fácil de programar, pero potente.
Está bien documentado y posee cientos de variantes e
incontables herramientas de desarrollo.
80186, 80188 y 80386 EX (Intel). Versiones en
microcontrolador de los populares microprocesadores 8086 y 8088.
Su principal ventaja es que permiten aprovechar las herramientas
de desarrollo para PC.
68HC11 (Motorola y Toshiba). Es un microcontrolador de 8
bits potente y popular con gran cantidad de variantes.
683xx (Motorola). Surgido a partir de la popular familia
68k, a la que se incorporan algunos periféricos. Son
microcontroladores de altísimas prestaciones.
PIC (MicroChip). Familia de microcontroladores que gana
popularidad día a día.
Fueron los primeros microcontroladores RISC.
Es preciso resaltar en este punto que existen
innumerables familias de microcontroladores, cada una de las
cuales posee un gran número de variantes.
1.6 Recursos comunes a todos
los microcontroladores.
Al estar todos los microcontroladores integrados en un
chip, su estructura
fundamental y sus características básicas son muy
parecidas. Todos deben disponer de los bloques esenciales
Procesador, memoria de datos y de instrucciones, líneas de
E/S, oscilador de reloj y módulos controladores de
periféricos. Sin embargo, cada fabricante intenta
enfatizar los recursos más idóneos para las
aplicaciones a las que se destinan preferentemente.
En este apartado se hace un recorrido de todos los
recursos que se hallan en todos los microcontroladores, y por
ende en el PIC 16C711, describiendo las diversas alternativas y
opciones que pueden encontrarse según el modelo
seleccionado.
1.6.1 Arquitectura
básica
Aunque inicialmente todos los microcontroladores
adoptaron la arquitectura clásica de von Neumann,
en el momento presente se impone la arquitectura Harvard. La
arquitectura de von Neumann se caracteriza por disponer de una
sola memoria principal donde se almacenan datos e instrucciones
de forma indistinta. A dicha memoria se accede a través
de un sistema de buses único (direcciones, datos y
control).
La arquitectura Harvard dispone de dos memorias
independientes una, que contiene sólo instrucciones y
otra, sólo datos. Ambas disponen de sus respectivos
sistemas de buses de acceso y es posible realizar operaciones de
acceso (lectura o
escritura)
simultáneamente en ambas memorias. Figura
1.3.
Figura 1.3. La arquitectura Harvard dispone de dos
memorias independientes para datos y para instrucciones,
permitiendo accesos simultáneos.
Los microcontroladores PIC responden a
la arquitectura Harvard.
1.6.2 El procesador o UCP
Es el elemento más importante del
microcontrolador y determina sus principales
características, tanto a nivel hardware como
software.
Se encarga de direccionar la memoria de instrucciones,
recibir el código OP de la instrucción en curso,
su decodificación y la ejecución de la
operación que implica la instrucción, así
como la búsqueda de los operandos y el almacenamiento del resultado.
Existen tres orientaciones en cuanto a la arquitectura
y funcionalidad de los procesadores
actuales.
CISC: Un gran número de procesadores usados en
los microcontroladores están basados en la
filosofía CISC (Computadores de Juego de
Instrucciones Complejo).
Disponen de más de 80 instrucciones
máquina en su repertorio, algunas de las cuales son muy
sofisticadas y potentes, requiriendo muchos ciclos para su
ejecución.
Una ventaja de los procesadores CISC es que ofrecen al
programador instrucciones complejas que actúan como
macros.
RISC: Tanto la industria de
los computadores comerciales como la de los microcontroladores
están decantándose hacia la filosofía RISC
(Computadores de Juego de Instrucciones Reducido). En estos
procesadores el repertorio de instrucciones máquina es
muy reducido y las instrucciones son simples y, generalmente,
se ejecutan en un ciclo.
La sencillez y rapidez de las instrucciones permiten
optimizar el hardware y el software del procesador.
SISC: En los microcontroladores destinados a
aplicaciones muy concretas, el juego de instrucciones,
además de ser reducido, es "específico", o sea,
las instrucciones se adaptan a las necesidades de la
aplicación prevista. Esta filosofía se ha
bautizado con el nombre de SISC (Computadores de Juego de
Instrucciones Específico).
1.6.3 Memoria
En los microcontroladores la memoria de instrucciones
y datos está integrada en el propio chip. Una parte debe
ser no volátil, tipo ROM, y se destina a contener el
programa de instrucciones que gobierna la aplicación.
Otra parte de memoria será tipo RAM, volátil, y
se destina a guardar las variables y
los datos.
Hay dos peculiaridades que diferencian a los
microcontroladores de los computadores personales:
1. No existen sistemas de almacenamiento masivo como
disco duro
o disquetes.
- Como el microcontrolador sólo se destina a una
tarea en la memoria ROM,
sólo hay que almacenar un único programa de
trabajo.
La RAM en estos dispositivos es de poca capacidad pues
sólo debe contener las variables y los cambios de
información que se produzcan en el transcurso del
programa.
Por otra parte, como sólo existe un programa
activo, no se requiere guardar una copia del mismo en la RAM
pues se ejecuta directamente desde la ROM.
Los usuarios de computadores personales están
habituados a manejar Megabytes de memoria, pero, los
diseñadores con microcontroladores trabajan con
capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y
de RAM comprendidas entre 20 y 512 bytes.
Según el tipo de memoria ROM que dispongan los
microcontroladores, la aplicación y utilización
de los mismos es diferente. Se describen las cinco versiones de
memoria no volátil que se pueden encontrar en los
microcontroladores del mercado.
1º. ROM con máscara
Es una memoria no volátil de sólo
lectura cuyo contenido se graba durante la fabricación
del chip. El elevado costo del diseño de la
máscara sólo hace aconsejable el empleo de
los microcontroladores con este tipo de memoria cuando se
precisan cantidades superiores a varios miles de
unidades.
2ª. OTP
El microcontrolador contiene una memoria no
volátil de sólo lectura "programable una sola
vez" por el usuario. OTP (One Time Programmable). Es el usuario
quien puede escribir el programa en el chip mediante un
sencillo grabador controlado por un programa desde un
PC.
La versión OTP es recomendable cuando es muy
corto el ciclo de diseño del producto, o bien, en la
construcción de prototipos y series muy
pequeñas. Tanto en este tipo de memoria como en la
EPROM, se suele usar la encriptación mediante fusibles
para proteger el código contenido.
3ª EPROM
Los microcontroladores que disponen de memoria EPROM
(Erasable Programmable Read OnIy Memory) pueden borrarse y
grabarse muchas veces. La grabación se realiza, como en
el caso de los OTP, con un grabador gobernado desde un PC. Si,
posteriormente, se desea borrar el contenido, disponen de una
ventana de cristal en su superficie por la que se somete a la
EPROM a rayos ultravioleta durante varios minutos. Las
cápsulas son de material cerámico y son
más caros que los microcontroladores con memoria OTP que
están hechos con material plástico.
4ª EEPROM
Se trata de memorias de sólo lectura,
programables y borrables eléctricamente EEPROM
(Electrical Erasable Programmable Read OnIy Memory). Tanto la
programación como el borrado, se realizan
eléctricamente desde el propio grabador y bajo el
control programado de un PC. Es muy cómoda y
rápida la operación de grabado y la de borrado.
No disponen de ventana de cristal en la superficie.
Los microcontroladores dotados de memoria EEPROM una
vez instalados en el circuito, pueden grabarse y borrarse
cuantas veces se quiera sin ser retirados de dicho circuito.
Para ello se usan "grabadores en circuito" que confieren una
gran flexibilidad y rapidez a la hora de realizar
modificaciones en el programa de trabajo.
El número de veces que puede grabarse y
borrarse una memoria EEPROM es finito, por lo que no es
recomendable una reprogramación continua. Son muy
idóneos para la enseñanza y la Ingeniería de diseño.
Se va extendiendo en los fabricantes la tendencia de
incluir una pequeña zona de memoria EEPROM en los
circuitos programables para guardar y modificar
cómodamente una serie de parámetros que adecuan
el dispositivo a las condiciones del entorno.
Este tipo de memoria es relativamente
lenta.
5ª FLASH
Se trata de una memoria no volátil, de bajo
consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y
es más pequeña.
A diferencia de la ROM, la memoria FLASH es
programable en el circuito. Es más rápida y de
mayor densidad que la
EEPROM.
La alternativa FLASH está recomendada frente a
la EEPROM cuando se precisa gran cantidad de memoria de
programa no volátil. Es más veloz y tolera
más ciclos de escritura/borrado.
Las memorias EEPROM y FLASH son muy útiles al
permitir que los microcontroladores que las incorporan puedan
ser reprogramados "en circuito", es decir, sin tener que sacar
el circuito integrado de la tarjeta. Así, un dispositivo
con este tipo de memoria incorporado al control del motor de un
automóvil permite que pueda modificarse el programa
durante la rutina de mantenimiento periódico, compensando los desgastes y
otros factores tales como la compresión, la
instalación de nuevas piezas, etc. La
reprogramación del microcontrolador puede convertirse en
una labor rutinaria dentro de la puesta a punto.
1.6.4 Puertas de Entrada y Salida
La principal utilidad de las
patitas que posee la cápsula que contiene un
microcontrolador es soportar las líneas de E/S que
comunican al computador interno con los periféricos
exteriores.
Según los controladores de periféricos
que posea cada modelo de microcontrolador, las líneas de
E/S se destinan a proporcionar el soporte a las señales
de entrada, salida y control.
1.6.5 Reloj principal
Todos los microcontroladores disponen de un circuito
oscilador que genera una onda cuadrada de alta frecuencia, que
configura los impulsos de reloj usados en la
sincronización de todas las operaciones del
sistema.
Generalmente, el circuito de reloj está
incorporado en el microcontrolador y sólo se necesitan
unos pocos componentes exteriores para seleccionar y
estabilizar la frecuencia de trabajo. Dichos componentes suelen
consistir en un cristal de cuarzo junto a elementos pasivos o
bien un resonador cerámico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el
tiempo en que se ejecutan las instrucciones pero lleva
aparejado un incremento del consumo de
energía.
Cada fabricante oferta numerosas versiones de una
arquitectura básica de microcontrolador. En algunas
amplía las capacidades de las memorias, en otras incorpora
nuevos recursos, en otras reduce las prestaciones al
mínimo para aplicaciones muy simples, etc. La labor del
diseñador es encontrar el modelo mínimo que
satisfaga todos los requerimientos de su aplicación. De
esta forma, minimizará el costo, el hardware y el
software.
Los principales recursos específicos que
incorporan los microcontroladores son:
- Temporizadores o "Timers".
- Perro guardián o "Watchdog".
- Protección ante fallo de alimentación o
"Brownout". - Estado de reposo o de bajo consumo.
- Conversor A/D.
- Conversor D/A.
- Comparador analógico.
- Modulador de anchura de impulsos o PWM.
- Puertas de E/S digitales.
- Puertas de comunicación.
1.7.1 Temporizadores o "Timers"
Se emplean para controlar periodos de tiempo
(temporizadores) y para llevar la cuenta de acontecimientos que
suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el
valor adecuado y a continuación dicho valor se va
incrementando o decrementando al ritmo de los impulsos de reloj
o algún múltiplo hasta que se desborde y llegue a
0, momento en el que se produce un aviso.
Cuando se desean contar acontecimientos que se
materializan por cambios de nivel o flancos en alguna de las
patitas del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos
impulsos.
1.7.2 Perro guardián o "Watchdog"
Cuando el computador personal se
bloquea por un fallo del software u otra causa, se pulsa el
botón del reset y se reinicializa el sistema. Pero un
microcontrolador funciona sin el control de un supervisor y de
forma continuada las 24 horas del día. El Perro
guardián consiste en un temporizador que, cuando se
desborda y pasa por 0, provoca un reset automáticamente
en el sistema.
Se debe diseñar el programa de trabajo que
controla la tarea de forma que refresque o inicialice al Perro
guardián antes de que provoque el reset. Si falla el
programa o se bloquea, no se refrescará al Perro
guardián y, al completar su temporización,
"ladrará y ladrará" hasta provocar el
reset.
1.7.3 Protección ante fallo de
alimentación o "Brownout"
Se trata de un circuito que resetea al
microcontrolador cuando el voltaje de alimentación (VDD)
es inferior a un voltaje mínimo ("brownout"). Mientras
el voltaje de alimentación sea inferior al de brownout
el dispositivo se mantiene reseteado, comenzando a funcionar
normalmente cuando sobrepasa dicho valor.
1.7.4 Estado de reposo ó de bajo
consumo
Son abundantes las situaciones reales de trabajo en
que el microcontrolador debe esperar, sin hacer nada, a que se
produzca algún acontecimiento externo que le ponga de
nuevo en funcionamiento. Para ahorrar energía, (factor
clave en los aparatos portátiles), los
microcontroladores disponen de una instrucción especial
(SLEEP en los PIC), que les pasa al estado de reposo o de bajo
consumo, en el cual los requerimientos de potencia son
mínimos. En dicho estado se detiene el reloj principal y
se "congelan" sus circuitos asociados, quedando sumido en un
profundo "sueño" el microcontrolador. Al activarse una
interrupción ocasionada por el acontecimiento esperado,
el microcontrolador se despierta y reanuda su
trabajo.
1.7.5 Conversor A/D (CAD)
Los microcontroladores que incorporan un Conversor A/D
(Analógico/Digital) pueden procesar señales
analógicas, tan abundantes en las aplicaciones. Suelen
disponer de un multiplexor que permite aplicar a la entrada del
CAD diversas señales analógicas desde las patitas
del circuito integrado.
1.7.6 Conversor D/A (CDA)
Transforma los datos digitales obtenidos del
procesamiento del computador en su correspondiente señal
analógica que saca al exterior por una de las patitas de
la cápsula.
Existen muchos efectores que trabajan con
señales analógicas.
1.7.7 Comparador analógico
Algunos modelos de microcontroladores disponen
internamente de un Amplificador Operacional que actúa
como comparador entre una señal fija de referencia y
otra variable que se aplica por una de las patitas de la
cápsula. La salida del comparador proporciona un nivel
lógico 1 ó 0 según una señal sea
mayor o menor que la otra.
También hay modelos de microcontroladores con
un módulo de tensión de referencia que
proporciona diversas tensiones de referencia que se pueden
aplicar en los comparadores.
1.7.8 Modulador de anchura de impulsos o
PWM
Son circuitos que proporcionan en su salida impulsos
de anchura variable, que se ofrecen al exterior a través
de las patitas del encapsulado.
1.7.9 Puertas de E/S digitales
Todos los microcontroladores destinan algunas de sus
patitas a soportar líneas de E/S digitales. Por lo
general, estas líneas se agrupan de ocho en ocho
formando Puertas.
Las líneas digitales de las Puertas pueden
configurarse como Entrada o como Salida cargando un 1 ó
un 0 en el bit correspondiente de un registro destinado a su
configuración.
1.7.10 Puertas de comunicación
Con objeto de dotar al microcontrolador de la
posibilidad de comunicarse con otros dispositivos externos,
otros buses de microprocesadores, buses de sistemas, buses de
redes y
poder
adaptarlos con otros elementos bajo otras normas y
protocolos.
Algunos modelos disponen de recursos que permiten
directamente esta tarea, entre los que destacan:
- UART, adaptador de comunicación serie
asíncrona. - USART, adaptador de comunicación serie
síncrona y asíncrona - Puerta paralela esclava para poder conectarse con los
buses de otros microprocesadores. - USB (Universal Serial Bus), que es un
moderno bus serie para los PC. - Bus I2C, que es un interfaz serie de dos hilos
desarrollado por Philips. - CAN (Controller Area Network), para permitir la
adaptación con redes de conexionado multiplexado
desarrollado conjuntamente por Bosch e Intel para el cableado
de dispositivos en automóviles. En EE.UU. se usa el
J185O.
1.8 Herramientas para el
desarrollo de aplicaciones.
Uno de los factores que más importancia tiene a
la hora de seleccionar un microcontrolador entre todos los
demás es el soporte tanto software como hardware de que
dispone. Un buen conjunto de herramientas de desarrollo puede ser
decisivo en la elección, ya que pueden suponer una ayuda
inestimable en el desarrollo del proyecto.
Las principales herramientas de ayuda al desarrollo de
sistemas basados en microcontroladores son:
- Desarrollo del software:
Ensamblador. La programación en lenguaje
ensamblador puede resultar un tanto ardua para el
principiante, pero permite desarrollar programas muy
eficientes, ya que otorga al programador el dominio absoluto
del sistema. Los fabricantes suelen proporcionar el programa
ensamblador de
forma gratuita y en cualquier caso siempre se puede encontrar una
versión gratuita para los microcontroladores más
populares.
Compilador. La programación en un lenguaje de
alto nivel (como el C) permite disminuir el tiempo de desarrollo
de un producto. No obstante, si no se programa con cuidado, el
código resultante puede ser mucho más ineficiente
que el programado en ensamblador. Las versiones más
potentes suelen ser muy caras, aunque para los
microcontroladores más populares pueden
encontrarse versiones demo limitadas e incluso compiladores
gratuitos.
- Depuración: debido a que los
microcontroladores van a controlar dispositivos físicos,
los desarrolladores necesitan herramientas que les permitan
comprobar el buen funcionamiento del microcontrolador cuando es
conectado al resto de circuitos.
Simulador. Son capaces de ejecutar en un PC programas
realizados para el microcontrolador. Los simuladores permiten
tener un control absoluto sobre la ejecución de un
programa, siendo ideales para la depuración de los mismos.
Su gran inconveniente es que es difícil simular la entrada
y salida de datos del microcontrolador.
Tampoco cuentan con los posibles ruidos en las entradas,
pero, al menos, permiten el paso físico de la
implementación de un modo más seguro y menos
costoso, puesto que ahorraremos en grabaciones de chips para la
prueba in-situ.
Placas de evaluación. Se trata de pequeños
sistemas con un microcontrolador ya montado y que suelen
conectarse a un PC desde el que se cargan los programas que se
ejecutan en el microcontrolador. Las placas suelen incluir
visualizadores LCD, teclados, LEDs, fácil acceso a los
pines de E/S, etc. El sistema operativo
de la placa recibe el nombre de programa monitor. El
programa monitor de algunas placas de evaluación, aparte
de permitir cargar programas y datos en la memoria del
microcontrolador, puede permitir en cualquier momento realizar
ejecución paso a paso, monitorizar el estado del
microcontrolador o modificar los valores
almacenados los registros o en la
memoria.
Emuladores en circuito. Se trata de un instrumento que
se coloca entre el PC anfitrión y el zócalo de la
tarjeta de circuito impreso donde se alojará el
microcontrolador definitivo. El programa es ejecutado desde el
PC, pero para la tarjeta de aplicación es como si lo
hiciese el mismo microcontrolador que luego irá en el
zócalo. Presenta en pantalla toda la información
tal y como luego sucederá cuando se coloque la
cápsula.
2. BREVE INTRODUCCIÓN A LA PROGRAMACIÓN DE
LOS µCONTROLADORES PIC
Trataremos de brindar una breve descripción del método
para programar estos microcontroladores sin entrar en
técnicas avanzadas, nos centraremos directamente en la
programación de los µcontroladores que nos ocupan,
los PIC, es decir, no explicaremos en sí las estrategias
asociadas al diseño, ya que en este caso no nos
conciernen.
No obstante acompañamos nuestro trabajo con un
organigrama con
las distintas fases de implementación, en las que, de
hecho, suponemos, tras una fase de estudio del problema, elegido
ya el mejor µcontrolador, así como decidido el
sistema de conexión de patillas de E/S
correcto.
Las herramientas MPLAB, MPASM y MPSIM se utilizan para
los microcontroladores PIC y se pueden encontrar y bajar
gratuitamente de internet en la dirección www.microchip.com.
3. LA FAMILIA DE
LOS PIC.
Dado que las características de los
microcontroladores PIC en su mayoría se agrupan por
familias es muy importante para describir el modelo PIC 16C711
dar una idea de las características de su familia o gama.
El PIC 16C711 pertenece a la gama media.
Por otro lado hemos notado que Microchip ha hecho un
upgrade de casi todos sus microcontroladores incluyendo el 16C711
el cual ya tiene un sustituto (esto se informa en su sitio
web), dado que
la mayoría de la bibliografía que hemos
consultado no contemplan estos cambios, nosotros hemos decidido
realizar este análisis de la misma forma.
Hemos buscado en multitud de bibliografía y
realmente nadie da una respuesta concreta de porque la
popularidad del PIC, pero una aproximación a la realidad
puede ser esta:
Los PIC tienen varias cualidades interesantes, puede ser
la velocidad, el precio, la facilidad de uso, la
información, las herramientas de apoyo… .
Quizás un poco de todo eso es lo que produce esa
imagen de
sencillez y utilidad. Es probable que en un futuro próximo
otra familia de microcontroladores le arrebate ese
"algo".
Queremos constatar que para las aplicaciones más
habituales (casi un 90%) la elección de una versión
adecuada de PIC es la mejor solución; sin embargo, dado su
carácter general, otras familias de
microcontroladores son más eficaces en aplicaciones
específicas, especialmente si en ellas predomina una
característica concreta, que puede estar muy desarrollada
en otra familia.
Los detalles más importantes que vuelven "locos"
a los profesionales de la microelectrónica y
microinformática y las razones de la excelente acogida que
tienen los PIC son los siguientes:
- Sencillez de manejo: Tienen un juego de instrucciones
reducido; 35 en la gama media. - Buena información, fácil de conseguir y
económica. - Precio: Su costo es comparativamente inferior al de
sus competidores. - Poseen una elevada velocidad de funcionamiento. Buen
promedio de parámetros: velocidad, consumo,
tamaño, alimentación, código compacto,
etc. - Herramientas de desarrollo fáciles y baratas.
Muchas herramientas software se pueden recoger libremente a
través de Internet desde Microchip ( http://www.microchip.com
) - Existe una gran variedad de herramientas hardware que
permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC. - Diseño rápido.
- La gran variedad de modelos de PIC permite elegir el
que mejor responde a los requerimientos de la
aplicación.
Una de las razones del éxito
de los PIC se basa en su utilización. Cuando se aprende a
manejar uno de ellos, conociendo su arquitectura y su repertorio
de instrucciones, es muy fácil emplear otro
modelo.
3.1 Características
relevantes.
Descripción de las características
más representativas de los PIC:
3.1.1 Arquitectura.
La arquitectura del procesador sigue el modelo
Harvard. En esta arquitectura, la CPU se
conecta de forma independiente y con buses distintos con la
memoria de instrucciones y con la de datos.
La arquitectura Harvard permite a la CPU acceder
simultáneamente a las dos memorias. Además,
propicia numerosas ventajas al funcionamiento del sistema
como se irán describiendo.
3.1.2 Segmentación.
Se aplica la técnica de segmentación
("pipe-line") en la ejecución de las
instrucciones.
La segmentación permite al procesador
realizar al mismo tiempo la ejecución de una
instrucción y la búsqueda del código de
la siguiente. De esta forma se puede ejecutar cada
instrucción en un ciclo (un ciclo de
instrucción equivale a cuatro ciclos de
reloj).
Las instrucciones de salto ocupan dos ciclos al no
conocer la dirección de la siguiente
instrucción hasta que no se haya completado la de
bifurcación.
3.1.3 Formato de las
instrucciones.
El formato de todas las instrucciones es de la misma
longitud Todas las instrucciones de los microcontroladores de
la gama baja tienen una longitud de 12 bits. Las de la gama
media tienen 14 bits y más las de la gama alta. Esta
característica es muy ventajosa en la
optimización de la memoria de instrucciones y facilita
enormemente la construcción de ensambladores y
compiladores.
3.1.4 Juego de instrucciones.
Procesador RISC (Computador de Juego de
Instrucciones Reducido). Los modelos de la gama baja disponen
de un repertorio de 33 instrucciones, 35 los de la gama media
y casi 60 los de la alta.
3.1.5 Instrucciones Ortogonales.
Cualquier instrucción puede manejar cualquier
elemento de la arquitectura como fuente o como
destino.
3.1.6 Arquitectura basada en un "banco de
registros"
Esto significa que todos los objetos del sistema
(puertas de E/S, temporizadores, posiciones de memoria, etc.)
están implementados físicamente como
registros.
3.1.7 Diversidad de modelos de microcontroladores
con prestaciones y recursos diferentes
La gran variedad de modelos de microcontroladores
PIC permite que el usuario pueda seleccionar el más
conveniente para su proyecto.
- Herramientas de soporte potentes y
económicas.
La empresa
Microchip y otras que utilizan los PIC ponen a
disposición de los usuarios numerosas herramientas
para desarrollar hardware y software. Son muy abundantes los
programadores, los simuladores software, los emuladores en
tiempo real, Ensambladores, Compiladores C,
Intérpretes y Compiladores BASIC, etc.
La arquitectura Harvard y la técnica de
segmentación son los principales recursos en los que
se apoya el elevado rendimiento que caracteriza estos
dispositivos programables, mejorando dos
características esenciales:
1. Velocidad de ejecución.
2. Eficiencia en
la compactación del código.
3.2 Las gamas de PIC
Una de las labores más importantes del
ingeniero de diseño es la elección del
microcontrolador que mejor satisfaga las necesidades del
proyecto con el mínimo presupuesto.
Para resolver aplicaciones sencillas se precisan pocos
recursos, en cambio, las
aplicaciones grandes requieren numerosos y potentes. Siguiendo
esta filosofía Microchip construye diversos modelos de
microcontroladores orientados a cubrir, de forma óptima,
las necesidades de cada proyecto. Así, hay disponibles
microcontroladores sencillos y baratos para atender las
aplicaciones simples y otros complejos y más costosos
para las de mucha envergadura. Microchip dispone de cuatro
familias de microcontroladores de 8 bits para adaptarse a las
necesidades de la mayoría de los clientes
potenciales.
En la mayor parte de la bibliografía
encontremos tan solo tres familias de microcontroladores, con
lo que habrán despreciado la llamada gama enana, que es
en realidad una subfamilia formada por componentes
pertenecientes a las otras gamas. En nuestro caso hemos
preferido comentarla dado que los PIC enanos son muy apreciados
en las aplicaciones de control de personal, en sistemas de
seguridad y
en dispositivos de bajo consumo que gestionan receptores y
transmisores de señales. Su pequeño tamaño
los hace ideales en muchos proyectos donde
esta cualidad es fundamental.
Describiremos brevemente las familias enana, baja y
alta y nos concentraremos en la gama media a la cual pertenece
el 16C711 describiendo sus registros en el próximo
apartado.
3.2.1 La gama enana: PIC12C(F)XXX de 8
patitas
Se trata de un grupo de
PIC de reciente aparición que ha acaparado la
atención del mercado. Su principal
característica es su reducido tamaño, al
disponer todos sus componentes de 8 patitas. Se alimentan con
un voltaje de corriente continua comprendido entre 2,5 V y
5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4
MHz. El formato de sus instrucciones puede ser de 12 o de 14
bits y su repertorio es de 33 o 35 instrucciones,
respectivamente. En la Figura 3.1 se muestra el
diagrama de conexionado de uno de estos PIC.
Figura 3.1. Diagrama de conexiones de los PIC12Cxxx
de la gama enana.
Aunque los PIC enanos sólo tienen 8 patitas,
pueden destinar hasta 6 como líneas de E/S para los
periféricos porque disponen de un oscilador interno
R-C.
En la Tabla 3.1 se presentan las principales
características de los modelos de esta subfamilia, que
el fabricante tiene la intención de potenciar en un
futuro próximo. Los modelos 12C5xx pertenecen a la
gama baja, siendo el tamaño de las instrucciones de 12
bits; mientras que los 12C6xx son de la gama media y sus
instrucciones tienen 14 bits.
Los modelos 12F6xx poseen memoria Flash para el
programa y EEPROM para los datos.
Tabla 3.1. Características de los modelos
PIC12C(F)XXX de la gama enana.
3.2.2 Gama baja o básica: PIC16C5X con
instrucciones de 12 bits.
Se trata de una serie de PIC de recursos limitados,
pero con una de la mejores relaciones costo/prestaciones. Sus
versiones están encapsuladas con 18 y 28 patitas y
pueden alimentarse a partir de una tensión de 2,5 V, lo
que les hace ideales en las aplicaciones que funcionan con
pilas
teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4
MHz). Tienen un repertorio de 33 instrucciones cuyo formato
consta de 12 bits. No admiten ningún tipo de
interrupción y la Pila sólo dispone de dos
niveles. En la Figura 3.2 se muestra el diagrama de conexionado
de uno de estos PIC.
Figura 3.2: Diagrama de patitas de los PIC de la
gama baja que responden a la nomenclatura
PIC16C54/56.
Al igual que todos los miembros de la familia
PIC16/17, los componentes de la gama baja se caracterizan por
poseer los siguientes recursos: (en la Tabla 3.2 se presentan
las principales características de los modelos de esta
familia).
1. Sistema POR ("Power On Reset") Todos los PIC
tienen la facultad de generar una autoreinicialización
o autoreset al conectarles la alimentación.
2. Perro guardián (Watchdog o WDT) Existe un
temporizador que produce un reset automáticamente si
no es recargado antes que pase un tiempo prefijado.
Así se evita que el sistema quede "colgado" dado en
esa situación el programa no recarga dicho
temporizador y se genera un reset.
3. Código de protección. Cuando se
procede a realizar la grabación del programa, puede
protegerse para evitar su lectura. También disponen
los PIC de posiciones reservadas para registrar
números de serie, códigos de
identificación, prueba, etc.
Tabla 3.2. Características de los modelos
PIC16C®5X de la gama baja
4. Líneas de E/S de alta corriente. Las
líneas de E/S de los PIC pueden proporcionar o absorber
una corriente de salida comprendida entre 20 y 25 mA, capaz de
excitar directamente ciertos periféricos.
5. Modo de reposo (Bajo consumo o "sleep") Ejecutando
una instrucción (SLEEP), la CPU y el oscilador principal
se detienen y se reduce notablemente el consumo.
Para terminar el comentario introductorio sobre los
componentes de la gama baja conviene nombrar dos restricciones
importantes:
- La pila o "stack" sólo dispone de dos niveles
lo que supone no poder encadenar más de dos
subrutinas. - Los microcontroladores de la gama baja no admiten
interrupciones.
3.2.3 Gama media. PIC16CXXX con instrucciones de 14
bits
Es la gama más variada y completa de los PIC.
Abarca modelos con encapsulado desde 18 patitas hasta 68,
cubriendo varias opciones que integran abundantes
periféricos. Dentro de esta gama se halla el
«fabuloso PIC16X84» y sus variantes. En la Figura
3.3 se muestra el diagrama de conexionado de uno de estos
PIC.
Figura 3.3. Diagrama de patitas del PIC16C74, uno
de los modelos más representativos de la gama
media.
En esta gama sus componentes añaden nuevas
prestaciones a las que poseían los de la gama baja,
haciéndoles más adecuados en las aplicaciones
complejas. Admiten interrupciones, poseen comparadores de
magnitudes analógicas, convertidores A/D, puertos
serie y diversos temporizadores.
El repertorio de instrucciones es de 35, de 14 bits
cada una y compatible con el de la gama baja. Sus distintos
modelos contienen todos los recursos que se precisan en las
aplicaciones de los microcontroladores de 8 bits.
También dispone de interrupciones y una Pila de 8
niveles que permite el anidamiento de subrutinas. En la Tabla
3.3 se presentan las principales características de
los modelos de esta familia.
Tabla 3.3. Características relevantes de los
modelos PIC16X8X de la gama media.
Encuadrado en la gama media también se halla
la versión PIC14C000, que soporta el diseño de
controladores inteligentes para cargadores de
baterías, pilas pequeñas, fuentes de
alimentación ininterrumpibles y cualquier sistema de
adquisición y procesamiento de señales que
requiera gestión de la energía de
alimentación. Los PIC 14C000 admiten cualquier
tecnología de las baterías como Li-Ion, NiMH,
NiCd, Ph y
Zinc.
El temporizador TMR1 que hay en esta gama tiene un
circuito oscilador que puede trabajar asíncronamente y
que puede incrementarse aunque el microcontrolador se halle
en el modo de reposo ("sleep"), posibilitando la
implementación de un reloj en tiempo real.
Las líneas de E/S presentan una carga
"pull-up" activada por software.
3.2.4 Gama alta: PIC17CXXX con instrucciones de 16
bits.
Se alcanzan las 58 instrucciones de 16 bits en el
repertorio y sus modelos disponen de un sistema de
gestión de interrupciones vectorizadas muy potente.
También incluyen variados controladores de
periféricos, puertas de comunicación serie y
paralelo con elementos externos, un multiplicador hardware de
gran velocidad y mayores capacidades de memoria, que alcanza
los 8 k palabras en la memoria de instrucciones y 454 bytes
en la memoria de datos.
Quizás la característica más
destacable de los componentes de esta gama es su arquitectura
abierta, que consiste en la posibilidad de ampliación
del microcontrolador con elementos externos. Para este fin,
las patitas sacan al exterior las líneas de los buses
de datos, direcciones y control, a las que se conectan
memorias o controladores de
periféricos. Esta facultad obliga a estos
componentes a tener un elevado numero de patitas comprendido
entre 40 y 44. Esta filosofía de construcción
del sistema es la que se empleaba en los microprocesadores y
no suele ser una práctica habitual cuando se emplean
microcontroladores. En la tabla 3.4 se muestran las
características más relevantes de los modelos
de esta gama, que sólo se utilizan en aplicaciones muy
especiales con grandes requerimientos.
Tabla 3.4. Características más
destacadas de los modelos PIC17CXXX de la gama
alta.
Con vistas al siglo XXI, Microchip lanzó la
gama "mejorada" PIC18CXXX.
4. MICROCONTROLADOR PIC 16C711
4.1 Introducción a su
arquitectura
La alta performance de los PIC 16CXXX puede ser
atribuida a su arquitectura RISC la cuál ya hemos
comentado y a su modelo Harvard referente a la implementacion
de la memoria.
Buses separados de datos y programa posibilita alojar
instrucciones de tamaños diferentes, 8 bits para las
palabras de datos.
Lo códigos de operación (OPCODE) son de
14 bits haciendo esto posible tener todas las palabras de
instrucciones sencillas. Los 14 bits de ancho del bus de acceso
a la memoria de programa nos permite hacer un fetch a una
instrucción de 14 bits en un solo ciclo.
El "twostage pipeline" nos permite hacer el fetch de
una instrucción y la ejecución de otra al mismo
tiempo, consecuentemente todas las instrucciones (35) en un
único ciclo (200 ns. @ 20 Mhz.) con la excepción
de los saltos de programa.
La siguiente tabla muestra los tamaños de las
memorias de datos y programa de este PIC.
Dispositivo | Memoria de Programa | Memoria de Datos |
PIC 16C711 | 1K x 14 | 68 x 8 |
Tabla 4.1: Tamaño de las
memorias del PIC 16C711.
Los PIC 16CXX contienen la UAL de 8 bits y el registro
de trabajo de 8 bits, la UAL es la unidad aritmética de
propósito general, realiza operaciones booleanas y
aritméticas entre los datos del registro de trabajo (W
register) y otros registros. El W register es un registro no
direccionable utilizado por las operaciones de la
UAL.
En las operaciones de 2 operandos tipicas, un operando
esta en el W register y el otro o es una constante inmediata o
esta en otro registro; en las operaciones de 1 operando este
generalmente se encuentra en el W register pero esto no es
excluyente.
Dependiendo de las instrucciones ejecutadas en la UAL,
los valores de
los bits Carry ( C ), Digit Carry (DC) y cero (Z), en el STATUS
Register serán afectados.
Figura 4.2: Diagrama de boque de los PIC
16C71X
Figura 4.3: PIC16C710/71/711/715 PINOUT
DESCRIPTION
4.1.1 Clocking Scheme/Ciclo de
Instrucción:
La entrada de clock (OSC1) es internamente dividida
en 4 para generar 4 non-overlaping señales de clock
cuadradas llamadas Q1, Q2, Q3, Q4. Internamente el PC
(Program counter) es incrementado cada Q1, la
instrucción es traída (fetch) desde la memoria
de programa al registro de instrucción en Q4. La
instrucción en decodificada y ejecutada en el
intervalo entre Q1 y Q4 como lo muestra la siguiente
figura.
Figura 4.4: Clock / Instruction
Cycle.
4.1.2 Instruction Flow / Pipelining
El cilclo de instrucción consiste en 4 ciclos
Q ( Q1, Q2, Q3 y Q4) . Las instrucciones Fetch y Execute se
realizan bajo un método llamado Pipelined. Estas dos
instrucciones necesitan un ciclo de instrucción cada
una para llevarse a cabo, pero bajo este método en
casi todos los casos se pueden llevar a cabo en un ciclo de
instrucción ejecutando la instrucción que
está en el PC y haciendo el Fetch de la
instrucción PC+1, los casos en los que esta
operación dual no puede llevarse a cabo es en los
saltos de programa (ej. GOTO) en los cuales es necesario 2
ciclos de instrucción separados para cada una de estas
instrucciones (siguiente figura).
El ciclo Fetch comienza cuando el PC incrementa en
Q1.
En el ciclo de ejecución, la
instrucción que está en el IR es decodificada y
ejecutada mientras duran Q2, Q3 y Q4. La memoria de datos es
leida durante Q2 (operación read) y es escrita durante
Q4 (operación write).
Figura 4.5: Instrucción Pipeline
Flow.
4.2 Organización de su memoria
4.2.1 Organización de la memoria de
programa
Los PIC de la familia 16C71X tienen un program
counter (PC) de 13 bits, pudiendo direccionar una memoria de
programa de 8Kx14 de espacio.
Figura 4.6: rango de direccionamiento de esta
familia.
El Reset vector está en la dirección
0000h y el Interrupt Vector está en la
dirección 0004h.
Figura 4.7: Mapa de la memoria de programa y el
stack de los PIC 16C71 y 16C711.
Dado que estos chips pueden direccionar hasta 8K,
los accesos a direcciones superiores a la dirección
03FFh ocasionan un wraparround.
4.2.2 Organización de la memoria de
datos
La ampliación de recursos en los PIC
forzó en los catalogados como de gama media una nueva
estructura y la modificación de algunas instrucciones
(partiendo, claro está, de la gama baja). Una de las
diferencias fundamentales es, precisamente, la
ampliación de memoria de registros, a los que se
unieron algunos nuevos de sistema, y la accesibilidad a parte
de los mismos que antes quedaban ocultos, como OPTION o TRIS,
de los que hablaremos a continuación.
De este modo se optó por dos bancos de
registros de 128 posiciones cada uno, la mayoría de
los cuales son de propósito general. En el siguiente
esquema, que muestra esta organización, las
direcciones con casillas blancas muestran posiciones de
registros específicos, y las grises
generales.
Están implementadas en memoria estática.
El bit RP0 es el selector de banco:
RP0 (STATUS<5>) = 1 Bank
1
RP0 (STATUS<5>) = 0 Bank
0
Figura 4.8: Mapa de registros del PIC
16C711.
4.2.2.1 Registros de Funciones
especiales
Estos registros son utilizados por el CPU y los
periféricos para controlar la operación del
dispositivo.
Los registros de funciones especiales se pueden
clasificar en 2 conjuntos,
(core y peripheral).
No daremos una descripción muy pormenorizada
del tema poruqe deberíamos profundizar demasiado en
este tema, si el lector desea hacerlo, puede encontrar esta
información en la hoja de datos del chip 16C711 la
cuál se encuentra en www.microchip.com.
Figura 4.9: Sumario del registro de funciones
especiales (16C711).
4.3 Registros específicos
El PC. Direccionamiento del programa: El PC consta de
13 bits, con lo que es posible direccionar hasta 8K palabras,
separadas en bancos de 2K. El byte de menos peso de la
dirección se guarda en el registro PCL, sito en la
posición 0x02 del banco 0, mientras los 5 bits de
más peso se guardan en los 5 bits de menos peso del
registro PCLATH (dirección 0x08). Puesto que las
instrucciones CALL y GOTO sólo cuentan con 11 bits, sus
saltos serán relativos a la página en la que
estemos. El cambio real de página se hará
cambiando los bits PCLATH.4 y PCLATH.3.
El OPTION. Registro de opciones
Los siguientes registros no serán
explicados:
Los registros PIE1 y PIR1 están relacionados
con el comparador, así como CMCON y VRCON, y no
serán explicados. El registro FSR es utilizado en la
gama baja, por lo que tampoco nos ocuparemos de
él.
Los registros TMR0, PORTA, PORTB, TRISA Y TRISB,
están mas afines a la programación del Pic por lo
que los obviaremos.
R/W R/W R/W R/W R/W R/W R/W R/W
GIE PEIE T0IE INTE RBIE T0IF INTF
RBIF
GIE: Activación global de
interrupciones..
1 = Interrupciones activadas. 0 = Interrupciones
desactivadas.
PEIE. Activación de la interrupción de
periféricos (comparador)
1 = Activada. 0 = Desactivada.
T0IE: Activación de la interrupción del
TMR0.
1 = Activada. 0 = Desactivada.
INTE: Activación de la interrupción
externa.
1 = Activada. 0 = Desactivada.
RBIE: Activación de la interrupción de
la puerta B.
1 = Activada. 0 = Desactivada.
T0IF: Indicador de TMR0 se ha desbordado.
1 = TMR0 desbordado. Borrar por software. 0 = No se ha
desbordado.
INTF: Software de estado de la interrupción
externa
R/W R/W
/POR /BO
/POR: Señalizador de Power On Reset (reset por
activación del micro).
1 = No hubo Power On Reset. 0 = Ha habido Power On
reset.
/BO: Señalizador de Brown-Out (Caída de
tensión).
1 = No hubo Brown Out. 0 = Hubo Brown-Out
4.4 Repertorio de Instrucciones
4.4.1 Características generales y
direccionamiento
Habiendo escogido los diseñadores de PIC la
filosofía RISC, su juego de instrucciones es reducido
(33 instrucciones en la gama baja), siendo éstas,
además, sencillas y rápidas, puesto que casi
todas se ejecutan en un único ciclo de máquina
(equivalente a 4 del reloj principal). Sus operandos son de
gran flexibilidad, pudiendo actuar cualquier objeto como
fuente y como destino.
Posee tres tipos bien diferenciados de
direccionamiento, estos son:
- 1º Inmediato: El valor del dato está
incluido en el propio código OP, junto a la
instrucción. - 2º Directo: La dirección del dato
está incluido en el propio código OP, junto a la
instrucción. - 3º Indirecto: La dirección de la memoria
de datos que guarda el operando está contenida en un
registro.
Nosotros nos centraremos en la gama media, que tiene
35 instrucciones. La mayoría son idénticas a
las de la gama baja, si bien las diferencias serán
convenientemente explicadas.
4.4.2 Repertorio de instrucciones de la gama media
(Incluido el 16C711).
Set de instrucciones por
categorías:
Descripción del set de
instrucciones:
5.1 Bibliografía en Internet
Microchip. http://www.microchip.com
Parallax. http://www.parallaxinc.com
El Rincón del Pic. http://members.es.tripod.de/~InfoE/infop.htm
Microsystems Engineering: Los autores de los libros de Pics
en castellano. http://www.arrakis.es/~msyseng
Links sobre Pics de David Tait. http://www.man.ac.uk/~mbhstdj/piclinks.html
Rei Project: Mod Chip: Algunos proyectos.
http://chip.aeug.org
NewFound Electronics: Programador de Pics.
http://www.new-elect.com
Dontronics. http://www.dontronics.com
The Picmicro Ring. http://members.tripod.com/~mdileo/pmring.html
Microcontoladores: Información, Herramientas y
Programador. http://www.geocities.com/TheTropics/2174/micro.html
Microcontrollers: Enlaces. http://www.us-epanorama.net/microprocessor.html
Microcontroladores, automatas, electrónica,
etc. http://www.jmengual.com/
Parallel Port PIC16C5X/XX Programmer. http://www.labyrinth.net.au/~donmck/dtait/upp.html
Microchip Net resources. http://www.geocities.com/SiliconValley/Way/5807
PIC16/17 Microcontroller & Basic Stamp: Con algunos
proyectos. http://www.doc.ic.ac.uk/~ih/doc/pic
La página del autor de Programming and
Customizing the Pic Microcontroller: Con algunos
circuitos. http://www.myke.com/PICMicro
Pic Programming. Getting Started: 4 pasos para empezar
con los Pic. http://www.pp.clinet.fi/~newmedia/pic/index.html
Pic Programmer 2. http://www.jdm.homepage.dk/newpic.htm
GNUPic "Free Microcontroller Software Tools
http://huizen.dds.nl/~gnupic/index.html
Propic2: Programador de Pics. http://www.propic2.com
PicProg Home Page: Programador de Pics. http://virtuaweb.com/picprog
The Electronic Projects Page: Algunos proyectos.
http://www.blichfeldt.dk
Bengt Lindgrens HomePage: Programador y archivos.
http://home5.swipnet.se/~w-53783
The ultimate source for Pic and SX Tools http://www.adv-transdata.com
P16PRO & PICALL PIC programmers: Otro
programador http://www.geocities.com/SiliconValley/Peaks/9620
Diseño de sistemas con microcontroladores:
Enlaces. http://www.info-ab.uclm.es/~amartine
Free PIC 16×84 programmer with margining support.
http://www.ise.pw.edu.pl/~wzab/picprog/picprog.html
FlashPIC Developer for PIC16F84 and PIC16F87x Series PIC
Microcontrollers. http://www.cybermedix.co.nz/flashpic
Sagitron: Distribuidor de Microchip en España. http://www.sagitron.es
EDU-PIC: PIC Microcontrollers in education.
http://pages.hotbot.com/edu/edu-pic
Programmer for PIC-processors. http://www.qsl.net/lz2rr/pic.html
5.2 Bibliografía electrónica o
impresa
Microcontroladores PIC. La Solución en un
Chip.
Microcontroladores PIC. Diseño práctico de
aplicaciones.
Microcontroladores.
Programming and Customizing the Pic
Microcontroller
Electrónica. Microcontroladores y
Microprocesadores.
PIC16/17 Microcontroller Data Book.
July 1999 Technical Library CD-ROM
Manual de Microcontroladores
Microchip Technical CD-ROM First
Edition 2000
MPSIM Simulator Quick Reference Guide
MPASM Assembler Quick Reference Guide
MPSIM Simulator User’s guide
MPASM Assembler User’s Guide
Referencias del Autor:
Luis E. Sánchez Toledo
Soy estudiante de la facultad de Ingeniería y
Tecnologías de la Universidad
Católica del Uruguay.
Este trabajo fue realizado en el 2005 como trabajo de
fin de curso de la asignatura "Arquitectura de computadores
1"
Ante cualquier duda o consulta realizarla a
Espero les sirva.