Sie sind auf Seite 1von 18

UNIVERSIDAD POLITECNICA

SALESIANA

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Principales registros de control y manejo de las


memorias FLASH Y EEPROM

6º NIVEL

Integrantes:
 Geovanny Acosta
 Darío Cañaveral
 Nataly González
3.1. LOS REGISTROS DE CONTROL:

Para el funcionamiento de los PIC existe un conjunto de registros específicos (SFR) cuyos
bits soportan el control de los mismos. Dichos registros están ubicados en las primeras
posiciones de cada banco de la memoria de datos RAM. Las posiciones 00h, 80h, 100h y
180h no son registros físicos sino direcciones indirectas. Las diferencias entre los registros
de los Pic16f87x de28 y 40 patitas se debe a carecer los primeros de las puertas D y E, con
lo que no disponen de los registros portD, portE, trisD y trisE, y tampoco tienen los
registros que controlan la puerta paralela esclava que sólo está implementada en los
modelos de 40 patitas.

3.2. REGISTRO DE ESTADO (STATUS):

Es el registro más usado de todos, sus bits controlan las funciones vitales del procesador.
Por este motivo, está duplicado en las cuartas posiciones de cada banco
(03h, 83h, l03h y 183h).

Los tres bits de menos peso son los señalizadores de ciertas condiciones en las operaciones
lógico-aritméticas.

Los señalizadores PD# y TO# son activos por nivel bajo (#) y sirven para indicar le causa
que ha provocado la reinicialización del procesador.

2
Estos señalizadores son muy importantes en el proceso de Reset ya que nos indican la causa
que la ha originado y permiten actuar en consecuencia. No son escribibles.
Los PIC se resetean cuando:
 Se conecta la alimentación (POR: Power-on Reset).
 Cuando la tensión de alimentación baja de 4 V (BOR: Brown-out Reset), pero a esta
función se la puede desactivar poniendo a 0 el bit BODEN, presente en la palabra de
configuración.
En el reset POR como en el BOR 1os bits PD# y TO# toman el valor 1, y en los demás
casos depende de la causa que ha provocado el Reset.
Para el direccionamiento directo se utilizan los bits RP1 y RPO con la siguiente
codificación.

En el direccionamiento indirecto el bit IRP se usa seguidamente (concatenado) con el bit de


más peso del registro FSR para elegir el banco de RAM.

IRP: Selección del banco de RAM en direccionamiento indirecto


0: Banco 0 y 1 (00h-FFh)
1: Banco 2 y 3 (100h-1FFh)

El STATUS puede actuar como destino en ciertas instrucciones, aquí los bits los
señalizadores Z, C y DC no son escribibles para las instrucciones que les afecte la
operación que realizan, al igual que sucede con PD# y TO#. Por ejemplo, al ejecutar la
instrucción clrf STATUS el Registro de Estado toma un valor de 000uuluu. Los bits con
<<u>> no cambian el valor. Por tal razón es conveniente usar las instrucciones bcf, bsf,
swapf y mvof para manejar los bits de este registro para que no afecten a Z, C y DC.
Como los tres bits destinados al direccionamiento de la RAM (IRP, RP I y RP0) toman el
valor de 0 después del Reset, si se desease acceder al banco 3 de la RAM habrá que usar las
siguientes instrucciones:

Bsf STATUS, RP0


bsf STATUS, RP1

3
3.3. REGISTRO DE OPCIONES (OPTION)

Este registro tiene las mismas funciones que tenía en el PIC16F84:

1.- Asigna el divisor de frecuencias al Timer0 (TMR0) o al perro guardián.


2.- Elige el rango en el que trabaja el divisor de frecuencia.
3.- Selecciona el tipo de reloj del TMR0, que puede ser interno o externo, a través de
la patita TOCKI. También selecciona el flanco activo.
4.- Selecciona el flanco activo para la interrupción externa por RB0/INT.
5.- Activa o desactiva las resistencias de pull -up de la Puerta B.

El registro OPTION toma el valor 1l 11 1111 en cualquier tipo de reinicialización que se


produzca. (Fig. 3.2.)

3.4. REGISTRO PARA CONTROLAR LAS INTERRUPCIONES:

Los Plcl6f87x tienen muchas causas que pueden originar una interrupción; los de 28 patitas
tienen 14 posibles causas y los de 15 posible s causas los de 40 patitas. Al aceptarse una
interrupción se salva el valor del PC en la pila se carga aquel con el valor 0004h, que es el
Vector de Interrupción. La mayoría de los Pic16f87x pueden ocasionar una interrupción, si
se programan adecuadamente los bits de los registros siguientes:
El PICl6F84 tenía 4 causas que generan interrupción:

 Desbordamiento del TMRO,


 Activación de la patita de interrupción RBO/INT
 Cambio del estado de una de las 4 patitas de más peso de la Puerta B
 Finalización de la escritura de un byte en la EEPROM.

Los nuevos PIC, además de las causas que producen interrupción en el PIC16F84, tienen
las siguientes:

4
Como los PIC16F87x tienen más causas de interrupción, también tienen más registros para
contener los bits señalizadores y de permiso o prohibición.

3.4.1. REGISTRO DE CONTROL DE INTERRUPCIONES (INTCON):

Es un registro al que se le puede leer y escribir, para su acceso, se halla duplicado en los
bancos, con direcciones 0Bh, 8Bh, 10Bh y 188h. Su función es de controlar las
interrupciones originadas por el TMRO, cambio de estado en las 4 líneas de más peso de la
Puerta B y activación de la patita RBO/INT.
Este registro se parece al registro con el mismo nombre al que había en el PIC16F84,
cambia el bit 6 en los nuevos PIC, que es el PEIE (permiso de interrupción de los
periféricos) en lugar del EEIE que tenía el PIC16F84 para permitir la interrupción cuando
finalice la escritura de un byte en la EEPROM. (Fig.3.3.)

5
3.4.2. REGISTRO DE PERMISO DE INTERRUPCIONES 1 (PIE 1)

Este registro tiene los bits que permiten (1) o prohíben (0) las interrupciones causadas por
los periféricos del microcontrolador y que no estaban en el registro INTCON.
Este registro ocupa la dirección 8Ch y para que cumplan su función los bits de PIE1 es
necesario que PEIE = 1 INTCON <6>. El bit PSPIE sólo es válido en los modelos de 40
patitas, poniendo a 0 en los tienen que 28 patitas. (Fig. 3.4)

3.4.3. REGISTRO DE PERMISO DE INTERRUPCIONES 2 (PIE2):

Este registro tiene los bits de permiso de interrupción de las causas que no figuraban en
PIE1, la de fin de escritura en la EEPROM, la procedente del comparador, colisión de bus
en el modo SSP y producción de una captura o una comparación en el módulo CCP2.
Cuando se leen los bits que no tienen asignada función se obtiene 0. (Fig. 3.5.)

3.4.4. REGISTROS DE LOS SEÑALIZADORES DE INTERRUPCIONES 1 Y 2


(PIR1 Y PIR2)

LOS BITS PIRI y PIR2, actúan de señalizadores del momento en el que se origina la causa
que provoca la interrupción independientemente si está permitida o prohibida. Ocupan las
direcciones 0Ch y 0Dh. (Fig. 3.6.)

3.5. LECTURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH

En el PIC16F84 se podía leer y escribir la memoria de datos EEPROM. En los PIC16F87x


también se puede la memoria de código FLASH. ES decir que podemos grabar un
programa que produce información en una memoria FLASH, sin necesidad de un grabador
externo.

6
La memoria EEPROM de los PIC16F87x tiene una capacidad de 128 o 256 bytes, con un
rango de direcciones de 00h a 7Fh o 00h a FFh.
En los PIC16F87x se puede leer y escribir la memoria FLASH y ésta puede alcanzar un
tamaño de 8 K palabras de 14 bits cada una.
Para esta necesidad, el registro EEADR se concatena con el EEADRH, que tiene los 5 bits
de más peso de la dirección, el registro EEDATAH se concatena con el EEDATA y tiene
los 6 bits de más peso de la palabra leída o a escribir en la FLASH. Estos dos nuevos
registros no se usan en las operaciones que afectan a la EEPROM. (Fig. 3.7.)
Para controlar la operación de lectura/escritura de las memorias EEPROM y FLASH hay
dos registros denominados EECON1 y EECON2, E1 EECONl (Fig. 3.8) ocupa la dirección

7
18Ch, el EECON2 no está implementado físicamente y se usa como registro de seguridad
en la operación de escritura. Antes de iniciar la escritura de una palabra se escribe en
EECON2 primero el dato 55h y luego el AAh.

La operación de escritura de una posición de la EEPROM consta de los siguientes pasos:

1. Se introduce el dato a escribir en EEDATA y la dirección en EEADR.


2. Se pone WREN=1 en EECON1. Permiso de escritura.
3. Se escribe la secuencia de seguridad que carga el registro EECON2 con el dato 55h
y luego con AAh.
4. Para iniciar la escritura se pone WR=1 en EECON1.
5. Al finalizar la escritura se activa el señalizador EEIF de forma automática.
6. Se debe borrar el señalizador EEIF y prohibir la escritura (WREN=0).

Ejemplo:

8
Para contener la dirección y el dato de la memoria FLASH se necesitan dos registros por
cada valor:

Denominación y misión de los bits del registro EECON1:

Ejemplos:

9
Siempre hay que verificar que los valores escritos en las EEPROM y FLASH son
correctos para no tener escrituras indeseadas producidas por espúreos en la
inicialización del microcontrolador.
En la EEPROM de controla el bit WREN, en la FLASH se debe poner a 0 el bit
WRT de la Palabra de Configuración.

Se tienen algunas alternativas de protección contra lectura y escritura de la FLASH,


de acuerdo con los valores de los bits WRT, CP1 y CP0 de la Palabra de
Configuración:

10
PROGRAMAR PIC ES FÁCIL

UN PROGRAMA QUE MANEJA LAS MEMORIAS FLASH DE CÓDIGO Y


EEPROM DE DATOS:

Los códigos son subrutinas; y tenemos las siguientes:

LEER-FLASH
ESCRIBIR-FLASH
LEER-EEPROM
ESCRIBIR-EEPROM

Código de la lectura de la EEPROM convertida a subrutina:

Enunciado:

En un programa necesitamos saber si es la primera vez que se utiliza o si ya fue


utilizado.
En este caso, la primera vez que se ejecute se leerá la primera posición de la
EEPROM, si en ésta posición se encuentra el valor 72h quiere decir que el
programa no se a ejecutado anteriormente, en cuyo caso se inicializarán una serie de
contadores y se modificará el programa para que la próxima vez los contadores no
se inicialicen; la ventaja es que aunque se quiera hacer trampa al programa y variar
el valor de la EEPROM, será imposible saber cuál era la secuencia que seguía la
primera vez.

11
Organigrama:

Organigrama del programa en su primera ejecución:

En siguientes ocasiones, ya desde la primera instrucción se saltará a otras


instrucciones.

Programa comentado:

Antes de hacer el programa principal se debe hacer un primer programa con el que
se escriba en la primera posición de la EEPROM el valor 27. Éste se grabará en el
PIC y su cuerpo llamará a la subrutina ESCRIBIR-EEPROM, habiendo antes
metido en el registro ADDR_L el valor 00 y en DATA_L el valor 27.

Antes de grabar un nuevo programa, se debe borrar el PIC.

Entonces el resultado final será:

12
13
14
¿Se ha dado cuenta de nuestra pequeña trampa? Hemos introducido puntos de control a lo
largo de todo el programa poniendo a 1 los bits de un registro según se iban ejecutando
partes, y mostrando el valor total al final del programa. De esta forma, podemos comprobar
de una forma rápida y fiable el cambio de nuestro código.
El programa ha cambiado completamente, tal y como se muestra más abajo. Tras la primera
instrucción, la mayoría de las instrucciones han sido cambiadas por el código de operación
de la instrucción NOP. Este método puede utilizarse para el campo de inteligencia artificial,
donde microbots pueden ir variando sus programas para adaptarse a situaciones concretas

PICME-TR mostrando el código del programa una vez modificado

Prueba del programa


En un programa donde no hay entradas y salidas el resultado no puede comprobarse a
simple vista. Podemos introducir puntos de control, como en nuestro caso, o utilizar
herramientas adecuadas para ello. Los pasos a realizar son los siguientes:

15
Figura 3.17. Esquema electrónico del oscilador

Figura 3.18. Esquema electrónico del zumbador piezoeléctrico.

Sensores analógicos

La inclusión de un convertidor analógico/digital entre los recursos del Pic16f87x ha


animado a incluir un Sensor de temperatura de tipo LM35D y un Sensor de luz tipo LDR.
La tensión de referencia necesaria que precisan los circuitos de alimentación se ha resuelto
con el circuito Lm336z-2.5V, que proporciona una tensión de 2.5 VDC. Mediante un
Jumper se puede relacionar como tensión de referencia los +2.5 VDC o los +5 VDC de
alimentación. Ambos sensores se muestran en la figura siguiente y forman junto a una
resistencia un divisor de tensión que se alimenta con el voltaje de referencia seleccionado.

Esquema electrónico de los sensores analógicos

Opto-triac para control AC

Para conseguir el control de la potencia de AC que se entrega en la carga es necesario


conocer el momento en el que la tensión' pasa por el valor de 0 VAC. El circuito puede

16
observarse en la parte izquierda de la figura 3.20 y consiste en un rectificador en puente de
Graetz que recibe 12 VAC y saca una tensión rectificada en doble onda de 100 Hz, que se
aplica al emisor del optoacoplador 4N33. Cada vez que la VAC pasa por 0 V se obtiene en
el colector del transistor un impulso positivo, que puede provocar una petición de
interrupción en el PIC.
En la tarjeta I/O se ha utilizado una lámpara de 12 VAC gobernada su potencia mediante un
opto-triac MOC3041

Relés

Es un dispositivo fácil de controlar. Basta un circuito de excitación para controlar la


activación o no de las bobinas que abren o cierran los contacto de control. La figura 3.21.
Muestra los dos relés alojados en el PIC

Motor DC y driver L293B

Para el control de motores en la tarjeta se ha elegido el circuito integrado L293B, que es


capaz de controlar 2 motores DC o uno PAP. Soporta una corriente de 1 Amp por canal.
Consta de 4 canales que son gobernados por señales de control EN1 y EN2

Figura 3.18. Esquema electrónico del opto-triac para control AC

17
Figura 3.18. Esquema electrónico de los relés

Optoacoplador encoger

Para realizar medidas sobre la velocidad del motor DC y de su posicionamiento, en el micro


PIC existe un optoacoplador de ranura ubicado físicamente debajo del eje del motor. Ver
parte derecha de la figura a continuación
Para conformar un encoder basta recortar un disco de material rígido transparente y realizar
un orificio en su centro para pegarlo al eje del motor. Luego se dibujan unas franjas radiales
opacas a la luz infrarroja. El número de franjas determinara la resolución. El disco encaja
en la ranura del optoacoplador, que genera un pulso cada que pase una franja opaca

Esquema electrónico del control de motores

Bibliografía:
MICROCONTROLADORES “PIC”: Diseño Práctico de Aplicaciones. Segunda parte: El
PIC16F87XX, PIC18FXXXX, JOSÉ MARÍA ANGULO USATEGUI, Edición 4,
Interamericana de España, Cap 3., Pág. 57 - 81

18

Das könnte Ihnen auch gefallen