JSUS M.
2.4.3
B. G.
Registrar Archivo Mapa (RFM) es una disposicin de todos los registros disponibles en un microcontrolador y esto es
extremadamente til al programar el dispositivo, especialmente cuando se utiliza un lenguaje ensamblador.
El RFM se divide en dos partes: los Registros de funciones especiales (SFR), y el general
Registros de Propsito (GPR). Por ejemplo, en un microcontrolador PIC16F84 hay 68 registros GPR
y stos se utilizan para almacenar datos temporales. Veremos ms adelante, cuando se programa en
PicBasic o PBP que estos registros se utilizan para almacenar las variables declaradas en un programa.
SFR es una coleccin de registros utilizados por el microcontrolador para controlar las operaciones internas de
el dispositivo. Dependiendo de la complejidad de los dispositivos el nmero de registros en el SFR
vara. Es importante que el programador entienda las funciones del registro SFR totalmente
ya que se utilizan tanto en lenguaje ensamblador y en lenguajes de alto nivel.
Dependiendo del modelo de microcontrolador PIC utilizado podra haber otros registros. Usted no necesita
conocer el funcionamiento de algunos de los registros desde PicBasic y PBP compilador carga stos
registros automticamente. Por ejemplo, la escritura y la lectura de la EEPROM son controlados por el registro
SFR EECON1, EECON2, EEADR y EEDATA. Pero, afortunadamente, PicBasic y PicBasicPro compiladores proporcionan
sencillas instrucciones de alto nivel para la escritura y lectura de la EEPROM y por lo tanto usted no necesita saber cmo
cargar estos registros.
Algunos de los registros SFR importante que puede que tenga que configurar durante la programacin utilizando un
lenguaje de alto nivel son:
OPTION register
I/O registers
Timer registers
INTCON register
Las funciones y las definiciones de los bits de estos registros se describen en detalle en la siguiente secciones.
OPTION register
Este registro se utiliza para configurar varias caractersticas internas del microcontrolador y se nombra como
OPTION_REG. Este es un registro de lectura y escritura que contiene varios bits de control a configurar el temporizador
en el chip y el temporizador de vigilancia (Watchdog). Este registro est en la direccin 81 (hexadecimal)
del microcontrolador y sus definiciones de los bits se dan en la Figura 2.8. El registro OPCION_ REG tambin se utiliza
para controlar el pin RB0 interrupcin externa. Este pin puede ser configurado para generar una interrupcin,
por ejemplo, cuando se cambia de la lgica 0 a lgica 1 y viceversa. El microcontrolador entonces suspende la
ejecucin principal del programa y salta a la rutina de servicio de interrupcin (ISR) para dar servicio a la interrupcin.
Al regresar de la interrupcin, el procesamiento normal se reanuda.
Por ejemplo, para configurar el pin INT para que las interrupciones externas sean aceptadas en el flanco ascendente
el siguiente patrn de bits debe ser cargado en OPTION_REG:
X1XXXXXX
X no importa y puede ser un 0 o un 1. En la seccin de proyectos veremos cmo configurar varios bits de este registro.
I/O registers
Estos registros se utilizan para el control de I / O. Todos los puertos de E / S en el microcontrolador PIC tiene dos
registros: registro de datos del puerto y puerto de registro de control de direccin.
Registro de datos del puerto tendr el mismo nombre que el puerto que controla. Por ejemplo, el microcontrolador
PIC16F84 tiene dos puertos de datos registra PORTA y PORTB. Un microcontrolador PIC16F877 tiene 5 puertos
datos registra PORTA, PORTB, PORTC, PORTD y PORTE. Un dato de 8 bits pueden ser enviados a cualquier
puerto, o un conjunto de datos de 8 bits se pueden leer en los puertos. Tambin es posible leer o escribir puertos
individualmente. Por ejemplo, cualquier bit de un puerto dado puede activar o se desactivar, o los datos se puede leer
de una o ms pines del puerto a la vez.
Los puertos de un microcontrolador PIC son bidireccionales. As, cada pin de un puerto se puede utilizar como una
entrada o un pin de salida. Puerto registro de control de direccin configura los pines del puerto como entradas o
salidas.
Este registro se llama el registro TRIS y cada puerto tiene un registro TRIS lleva el nombre de su puerto
nombre. Por ejemplo, TRISA es el registro de control de direccin para PORTA. Del mismo modo, es la TRISB
registro de control de direccin para PORTB y as sucesivamente.
El establecimiento de un bit en el registro TRIS hace que el puerto correspondiente Pines de registro una entrada.
Eliminacin de un bit en el registro TRIS hace que el puerto correspondiente pin una salida. Por ejemplo, para hacer que
los bits 0 y 1 de entrada PORTB y la otra salida los bits, tenemos que cargar el registro TRISB con el bit patrn.
00000011
FIGURA 2.9
Registro de datos y la direccin de puerto registros de control de puertos se puede acceder directamente a travs de la
Pic Basic Pro compilador. Por ejemplo, como veremos en un captulo posterior, TRISB registro se puede ajustar a 3 y
los datos se pueden leer desde PORTB en una variable llamada CNT en las instrucciones de PBP.
TRISB _ 3
CNT _ PORTB
El compilador PBP no tiene instrucciones directas de control de registro y como veremos en una tarde
captulo, tenemos que usar las instrucciones POKE. PEEK se utiliza para leer datos de un registro
y POKE se utiliza para enviar datos a un registro.
Cuando usamos las instrucciones POKE tenemos que especificar la direccin del registro del registro
queremos acceder. Las direcciones de registro de registros portuarios son (el carcter "$" especifica que
el nmero est en formato hexadecimal)
$05
$06
$07
$08
$09
TRISA
TRISB
TRISC
TRISD
TRISE
$85
$86
$87
$88
$89
POKE $86, 3
PEEK $06, CNT
Veremos en el prximo captulo cmo utilizar smbolos en el lenguaje PicBasic , para que nuestros programas
sean ms claro y fcil de manejar.
Timer registers
Dependiendo del modelo utilizado, algunos microcontroladores PIC tienen slo un temporizador, y algunos pueden
tener hasta 3 temporizadores.
En esta seccin vamos a examinar el microcontrolador PIC16F84 que slo tiene
un temporizador. La extensin a varios temporizadores es similar y veremos en la seccin de proyectos cmo utilizar
ms de un temporizador.
El temporizador en el microcontrolador PIC16F84 es un registro de 8 bits (llamado TMR0) que se puede utilizar
como temporizador o contador. Cuando se utiliza como contador, el registro se incrementa cada vez que un pulso de
reloj es aplicada al pin T0CK1 del microcontrolador. Cuando se utiliza como contador de tiempo, el registro se
incrementa en un velocidad determinada por la frecuencia de reloj del sistema y un prescaler seleccionado por el
registro OPTION_REG.
Las tasas de divisor varan de 1: 2 a 1: 256. Por ejemplo, cuando se usa un reloj de 4 MHz, la instruccin bsica
ciclo es 1us (el reloj se divide internamente por cuatro). Si seleccionamos una tasa prescaler de 1:16, el
contador se incrementa en cada 16us.
El registro TMR0 tiene la direccin 01 en la RAM que puede ser cargada con la instruccin POKE en PicBasic, o
accediendo al registro TMR0 directamente en PicBasicPro.
Se genera una interrupcin, cuando en el registro del temporizador hay un desbordamiento de 255 a 0. Esta
interrupcin se puede activar o desactivar por nuestro programa. As, por ejemplo, si necesitamos generar
interrupciones en intervalos de 200us usando un reloj de 4 MHz, podemos seleccionar un valor prescaler de 1: 4 y
habilitar las interrupciones de temporizador. La velocidad de temporizacin de reloj es entonces 4us. Para un tiempo de
espera de 200us, tenemos que enviar 50 pulsos de reloj al temporizador. Por lo tanto, el TMR0 debe ser cargado con
256-50=206, es decir, un recuento de 50 antes de que ocurra un desbordamiento.
El oscilador del Watchdog es independiente del reloj de la CPU y el tiempo de espera es de 18 ms. Para poner
en tiempo de espera el organismo de control, se debe restablecer peridicamente a travs de software. Si el organismo
de control no se restablece antes de que el tiempo de espera, el microprocesador se ver obligado a saltar a reset.
El prescaler se puede utilizar para extender el perodo de tiempo de espera y las tasas vlidos son 1, 2, 4, 8, 16, 32, 64, y
128. Por ejemplo, cuando se establece en 128, el perodo de tiempo de espera es de unos 2 s (18x128=2304 ms).
El temporizador de vigilancia se puede desactivar durante la programacin del dispositivo si no se usa.
El Watchdog es una parte muy importante de los microcontroladores PIC, informacin ms detallada sobre su
funcionamiento a continuacin.
TMR0 & WATCHDOG
TMR0 y el organismo de control se encuentran prcticamente en todos los microcontroladores PIC. La figura 2.10
muestra su funcionalidad y diagrama del TMR0 y el circuito de vigilancia. El funcionamiento del circuito de vigilancia
esta descrito anteriormente y slo el circuito Timer0 se describe en esta seccin.
La fuente de entrada para TMR0 se selecciona por T0CS bits de OPTION_REG y puede ser cualquiera la FOSC (frecuencia
de oscilador) del microcontrolador dividido por 4, o puede ser un reloj externo aplicado a la entrada RA4 / T0CK1. Aqu,
slo se vera el uso del oscilador interno. Si se utiliza un cristal de 4 MHz la frecuencia del oscilador interno es Fosc /
4=1MHz que corresponde a un perodo de T=1 /f 10^-6, o 1us. Timer0 se selecciona entonces como la fuente para el
prescaler en la limpieza de bit PSA de OPTION_REG.
El valor prescaler requerido se selecciona por los bits PS0 a PS2 como se muestra en la Figura 2.8. PSA Bit debe
entonces ser limpiado a 0 para seleccionar el prescaler para el temporizador. Todos los bits estn configurados ahora y
Timer0 registro aumenta cada vez que un pulso es aplicado por el oscilador interno. TMR0 registro es de 8-bits
y cuenta hasta 255, a continuacin, crea una condicin de desbordamiento, y sigue contando desde 0.
Cuando TMR0 cambia 255-0 genera una interrupcin de temporizador, si las interrupciones de temporizador y las
interrupciones globales estn habilitadas, (ver registro INTCON, la interrupcin se generar si GIE y TMR0 bits de
INTCON se establecen a 1). Consulte la Seccin 2.4.6 sobre Interrupciones, para ms informacin.
Al cargar un valor en el Timer0 podemos controlar el conteo hasta que se produce el desbordamiento.
La frmula dada a continuacin se puede utilizar para calcular el tiempo que tomar para que el temporizador produzca
un desbordamiento (generar una interrupcin), dado el perodo de oscilador, el valor cargado en el temporizador y el
valor del preescalador.
(2.1)
Por ejemplo, asumimos que estamos usando un cristal de 4 MHz, y el preescaler elegido como 1: 8 configurando
bits de PS2: PS0 a "010". Supongamos tambin que el valor cargado en el Registro de temporizador TMR0 es decimal
100. El tiempo de desbordamiento viene dada por
De este modo, el temporizador se desbordar despus de 1.248 ms y una interrupcin del temporizador se generar si
el temporizador y las interrupciones globales estn habilitados.
Lo que normalmente necesitamos es saber cul es el valor a cargar en el registro TMR0 para un tiempo de
desbordamiento determinado. Esto se puede calcular mediante la modificacin de la ecuacin. (2.1) como:
(2.2)
Por ejemplo, supongamos que queremos una interrupcin que se genera despus de 500us y los valores del reloj
y el preescaler son como antes. El valor que se carga en el registro TMR0 se puede calcular usando la Ec. Como en (2.2)
TMR1
Aunque TMR0 es el temporizador bsico en casi todos los microcontroladores PIC, algunos dispositivos tienen
varios temporizadores, por ejemplo, TMR0, TMR1 y TMR2. Temporizadores adicionales dan mayor funcionalidad a un
microcontrolador. En esta seccin se describir en detalle, el funcionamiento de TMR1.
TMR1 es un temporizador de 16 bits, que consta de dos registros de 8-bit TMR1H y TMR1L. Ver la figura 2,11.
Y un preescaler que se usa con TMR1. Los valores preescaler disponibles son slo 1, 2, 4, y 8.
TMR2
TMR2 es un temporizador de 8 bits con un preescaler y un postscaler y tiene un periodo PR2 registro de 8 bits.
Este temporizador se controla mediante el registro T2CON cuyas definicione se dan en la figura 2.13.
Las opciones de divisor son 1, 4, 16 y se seleccionan por los bits de T2CON T2CKPS1 y T2CKPS0.
TMR2 incrementa desde 0, hasta que coincida con PR2, y a continuacin, restablece a 0 en el siguiente ciclo.
Entonces se repite el ciclo. TMR2 puede desactivarse con el bit TMR2ON del registro T2CON para minimizar el consumo
de energa.