Está en la página 1de 19

UNIVERSIDAD POLITECNICA SALESIANA

INTEGRANTES

OSCAR AYALA

CHRISTIAN IBARRA

ANDRES VALDIVIESO
PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y
EEPROM

1. LOS REGISTROS DE CONTROL

Para gobernar el funcionamiento de los recursos 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 diferencias entre los registros de los PIC16F87x de 28 y 40 pines 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. Tampoco tienen los registros que
controlan la puerta paralela esclava que solo tiene 40 pines.

2. REGISTRO DE ESTADO (STATUS)

Sin duda éste es el registro más usado de todos, pues sus bits están destinados
a controlar las funciones vitales del procesador. Por este motivo, está duplicado
en las cuartas posiciones de cada banco (03h, 103h y 183h).

Figura 1.- Estructura interna del registro de estado

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

 Z: señalizador de cero. Se pone a 1 cuando el resultado es 0.


 C: acarreo/llevada del 8ºbit. Se pone a 1 automáticamente cuando existe un
acarreo en el bit de más peso en las instrucciones de suma.
 DC: acarreo/llevada en el 4ºbit. Funciona igual que el señalizador C, pero para
el cuarto bit.

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

 PD#: se activa a 0al ejecutarse la instrucción sleep. Se pone a 1


automáticamente tras la conexión de la alimentación.
 TO#: se activa a nivel bajo al desborde el perro guardián. Toma el valor de 1
tras la conexión e la alimentación.

Los señalizadores PD# y TO# son muy importantes en el proceso de reset por que
indican la causa que la ha originado.
Los PICs se resetean al conectar la alimentación (POR: Power on reset). También se
resetean cuando la tensión de alimentación baja de 4V (BOR: Brown-out Reset),
aunque esta función es factible desactivarla poniendo a 0 el bit boden, Tanto en el
reset POR como en el BOR los bits PD# y TO# toman el valor 1, mientras que en las
demás casos depende del Reset.

Finalmente, los tres bits de más peso del registro de estado se emplean para
seleccionar el banco de la RAM al que se desea acceder.

El bit IRP se usa concatenado con el bit de más peso del registro FSR para elegir el
banco de RAM en el direccionamiento indirecto.

En algunas instrucciones el, Registro de Estado puede actuar como destino, en cuyo
caso los bits de los señalizadores Z, C y DC no son escribibles en aquellas instrucciones
que les afecte la operación que realizan, al igual que sucede con PD# y TO.

3. REGISTRO E OPCIONES (OPTION)

Tiene las mismas funciones que tenían PIC16F84:

1ª Asigna el divisor de frecuencia s al Timer0 (TMR0)


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 del pin T0CKi.
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.
4. REGISTRO PARA CONTROLAR LAS INTERRUPCIONES

Los PIC16F87x tienen muchas causas que pueden originar una interrupción; 14
posibles causas tienen los de 28 pines y 15 los de 40. Al aceptarse una
interrupción se salva el valor del PC en la pila y se carga aquel con el valor
0004h, que es el vector de interrupción. La mayoría de los recursos o
periféricos de que disponen los PIC16F87x son capaces ed ocasionar una
interrupción, si se programan adecuadamente.

El PIC16F84 tiene 4 causas que generaban interrupción: desbordamiento del


TMR0, activación del pin RB0/INT, cambio del estado de una de los cuatro pines
de mas peso del puerto B y finalización de la estructura de un byte en la
EEPROM

1ª Desbordamiento del Timer1


2ª Desbordamiento del Timer2
3ª Captura o comparación en el módulo CCP1
4ª Captura o comparación en el módulo CCP2
5ª Transferencia en el puerto serie sincrónica
6ª Colisión del bus en el puerto serie sincrónico
7ª Fin de la transmisión en el USART
8ª Fin de la recepción en el USART
9ª Fin de la conversión A/D
10ª Transferencia en el puerto paralelo esclavo
Como los PIC16F87x disponen de mas causas que provocan interrupción, también
tienen más registros para contener los bits señalizadores y de permiso o prohibición.

4.1. Registro de control de interrupciones (INTCON)

Se trata de un registro leíble y escribible para facilitar su acceso para facilitar su


acceso, se halla duplicado en los cuatro bancos, ocupando las direcciones 0Bh,
8Bh, 10Bh y 18Bh, respectivamente. Tiene la misión de controlar las
interrupciones provocadas por el TMR0. El bit PEIE actúa como una segunda
llave parcial de permiso o prohibición de las causas que no están contempladas
en INTCON.

4.2. Registro de permiso de interrupciones 1 (PIE!)

Contiene los bits que permiten (1) o prohíben (0) las interrupciones provocadas
por los periféricos internos del micro controlador y que no estaban
contempladas en INTICON.

Ocupa la dirección la dirección 8Ch y para que cumplan su función los bits de
PIE1 es necesario que PEIE=1 en INTCON<6>. El bit PSPIE solo es valido en los
modelos de 40
pines.
4.3. Registro de permiso de interrupciones 2 (PIE2)

Contiene 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 en producción de una captura o una
comparación en el modulo CCP2.

4.4. Registros de los señalizadores de interrupciones 1 y 2 (PIR1 y PIR2)

En correspondencia con los bits de permiso/prohibición de las causas de


interrupción recogidas en los registro PIE1 y PIE2, existen otros dos registros,
PIR1 y PIR2, cuyos bits actúan de señalizadores del momento en el que se
origina la causa de la interrupción.

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 leer y escribir la memoria de código FLASH
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, respectivamente.

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. El registro EEADR se concatena con el
EEDATA y contiene los 6 bits de más peso de la palabra leída o a escribir en la flash.

Se proponen algunos programas fundamentales para manejar las opciones de lectura y


escritura en las memorias EEPROM y FLASH. En la parte dedicada a programación se
incluye un ejercicio completo:

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 escriben la secuencia de seguridad que carga EECON” 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
6ª Se debe borrar el señalizador EEIF
Es una buena práctica de programación verificar que todos los valores escritos en las
memorias EEPROM y FLASH son correctos.

Para evitar escrituras indeseadas en la EEPROM se controla el bit WREN, prohibiendo


cualquier operación escritura. Para realizar la misma proteccion en la memoria FLASH
se debe poner a 0 el bit WRT de la palabra de configuración.

Dependiendo del valor del bit WRT y de los bits de protección de código de CP1 y CP0,
se consiguen diversas alternativas de protección contra lectura y escritura FLASH.
Fig. Diversas posibilidades de protección de la memoria FLASH ante operaciones de
lectura y escritura, de acuerdo con los valores de los bits WRT, CP1 y CP0 de la palabra
de configuración.

PROGRAMAR PIC ES FACIL

Un programa que maneja las memorias FLASH de código y EEPROM de datos

Se han visto trozos de código para leer y escribir la memoria FLASH de instrucciones y
la memoria EEPROM de datos.

Los códigos ya vistos, con una pequeña modificación, son subrutinas a las cuales se
llamara para realizar procesos de lectura/escritura sobre las citadas memorias.
Así tendremos las siguientes subrutinas:

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

Falta por realizar el código correspondiente a la lectura de la EEPROM, que una vez
convertida a subrutina quedaría como sigue:
En las líneas que empiezan con * se pretende resaltar las modificaciones que habría
que llevar a cabo con los códigos anteriores para convertirlos a subrutinas.

Enunciado.-

La posibilidad de escribir la memoria de código mientras se está ejecutando un


programa puede resultar interesante para ciertas aplicaciones.

Si un programa necesita saber si es la primera vez que se utiliza, para pedir cierta
información inicial como configuración por ejemplo; o si ya se ha utilizado
anteriormente y esa información ya la tenemos.

La primera vez que se ejecute se leer la primera posición de la EEPROM, si en esta


posición se encuentra el valor 27h significa que el programa no se ha utilizado
anteriormente, se inicializaran una serie de contadores y se modificara el programa
para que la próxima vez los contadores no sean inicializados.

La ventaja de este método es que, aunque un usuario quisiera hacer trampa, al


haberse modificado el programa le será imposible saber cuál es la secuencia que
seguía esta primera vez.

Organigrama.-
El organigrama de la figura representa el funcionamiento más completo del programa,
la primera vez que se ejecuta y las siguientes ocasiones ya desde la primera instrucción
se saltara a otras instrucciones.

Antes de grabar un nuevo programa es necesario borrar el PIC, pero este borrado no
afecta la EEPROM.
Se han 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 forma rápida y fiable el cambio de nuestro


código. Una vez comprobado el buen funcionamiento pueden ser eliminados.
El programa ha cambiado completamente la mayoría de las instrucciones han sido
cambiadas por el código de operación de la instrucción NOP.

A partir de este código sería imposible conocer el programa original.

Prueba del programa

En un programa donde no hay entradas y salidas y el resultado no puede comprobarse


asomple vista. Pordemos introducir el control y seguir los siguientes pasos:

1. Grabe en el microcontrolador el primer programa para situar en la posición 00


de la EEPROM el valor 27.
2. Ejecútelo
3. Vuelva al programa de grabación PICME TR y elija l aopcion Leer PIC, dentro de
la ventana MODELO ELEGIDO. Editar datos. Compruebe que en la pisicion 00 se
ha grabdo un 27.
4. Grabe ahora el programa del enunciado y antes de ejecutarlo fijeses en la
ventana BUFFER DE MEMORIA DE PROGRAMA. Compruebe el valor de la
EEPROM.
5. Ejecute el nuevo programa en el PIC.
6. Vuelva de nuevo al PICME TR y lea el PIC para comrpobar que tiene ahora
dentro.

DISEÑAR CON PIC ES FACIL

AMPLIACION DE PEREIFERICOS PARA EL TRABAJO CON PIC

El tratamiento de sendores analógicos y la regulación de motores, que estos PIC son


capaces de gobernar mediante su hardware interno, ha impulsado a diseñar una
plataforma con la que se pueda experiemntar técnicas vanzadas de control.

LA TARJETA DE EXPANSION Micro´PIC I/O

La Micro´PIC I/O es una tartejta dee xpansion que se conecta al Micro´PIC Trainer
mediante el PICBUS. Se basa en la inclusión de periféricos de E/S relacionados con las
nuevas características de los PIC16F87x.

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y


EEPROM.

1) Doble conector PICBUS: con todas las señales proporcionadas por los PICs de
28 npatitas.
2) Alimentación: para conexión de un transformador de 12 VAC.
3) Regleta de conexiones: asociadas al PICBUS para disponer de todas las señales
y conectar mediante cable de modo flexible a los distintos periféricos.
4) Generador de funciones: que proporciona una onda cuadrada de frecuencia
seleccionable por switches.
5) Cristal de cuarzo: Oscilador de 32.768 KHz para su uso en aplicaciones de
tiempo real.
6) Piezoeléctrico: dispositivo para genera con de un pitido cuando se activa.
7) Generador de tensión de referencias: necesarias en los conversores
analógico/digitales.
8) Sensores analógicos: de luminosidad (tipo LDR) y de temperatura (tipo LM35).
9) Circuito de detección de cruce a paso por cero: de una señal alterna senoidal.
10) Circuito de regulación de alterna: mediante un opto-triac que regula la potencia
aplicada a una carga resistiva (lámpara).
11) 2 relés: con sus correspondientes circuitos de excitación.
12) Motor DC: puede controlarse su prendido/apagado como su sentido y la
tensión que lo alimenta puede ser de 5 vac o de 12 Vac, según el jumper,
dispuesto a tal efecto.
13) Controlador de motor: con posibilidad de regular su velocidad.
14) Optoacoplador infrarrojo de corte: cercano al motor puede ser usado como
encoder para controlar los giros del motor.

Alimentación

Recibe una tensión de 12 VAC y un puente rectificador (D1) junto a un condensador


(C1) rectifica y filtra la VAC para entregarla a los reguladores UA7805 (U2), que
proporcionan +5 VDC y +12 VDC respectivamente.

Doble conector PICBUS

Se trata de dos conectores idénticos de 26 vías que soportan las mismas señales.
Mediante un cable plano se conecta uno de dichos conectores con el Micro´PIC
Trainer, en donde se aloja el PIC bajo prueba. El otro conector puede usarse para
acoplar también al Micro´PIC Trainer Plus. Pone a disposición del usuario un abanico
extensísimo de periféricos y un sistema d desarrollo de aplicaciones profesional.
Generador de funciones

Existe un generador de onda cuadrada cuya frecuencia se puede seleccionar entre 8n


valores diferentes con tres microrruptores (SW1).

Oscilador de 32.768 KHz

Compuesto además del cristal de cuarzo, por dos condensadores de 27 pF, configura
un oscilador de una frecuencia igual a la resonancia del cristal. Tiene la finalidad de
permitir al temporizador TMR1 trabajar en al modalidad en al que precisa una base de
tiempos externa gobernada por un cristal de cuarzo. Su estratégico valor tiene la
propiedad de que con 215 impulsos se consigue fácilmente el tiempo de 1 segundo.
Piezoeléctrico

Se trata de un zumbador que va a ser muy interesante para todas aquellas


aplicaciones en las que se precise generar pitidos o “beeps” sonoros o alarmas.

Sensores analógicos

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


animado al fabricante 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; proporciona una tensión de
2,5 VDC. Además mediante un jumper se puede relacionar como tensión de referencia
los +2,5 VDC o los +5 VDC de alimentación.
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. Consiste en un
rectificador en puente 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.en la tarjeta
I/O se ha utilizado como carga una lámpara de incandescencia de 12 VAC gobernada
por su potencia mediante un opto-triac MOC3041.

Relés

Es un dispositivo muy usado en la industria y muy fácil de controlar. Basta un sencillo


circuito de excitación para poder controlar la activación o no de las bobinas que abren
o cierran los contactos que controlan la carga.
Motor DC y driver L293B

Es capaz de controlar dos motores DC o uno PAP. Soporta una corriente de 1 A por
canal. Consta de 4 canales que son gobernados por señales de control EN1 y EN2
fácilmente generables por los recursos de los PIC16F87x, especialmente por el PWM.

Optoacoplador encoder

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


Micro´PIC I/O existe un optoaclopador de ranura ubicado físicamente debajo del eje
del motor. Para conformar un encoder basta recortar un disco de material rígido
transparente (plástico) 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
generara un pulso cada vez que pase una franja opaca.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

PUERTAS DE E/S

Los microcontroladores PIC16F87x encapsulados con 28 patitas disponen de tres


Puertas de E/S(A,B y C), mientras que los que tienen 40 patitas alcanzan las cinco
(A,B,C,D y E). Todas las son multifuncionales; las características principales de las
puertas son similares a las del PIC16F84.

PUERTA A

Solo dispone de 6 líneas, denominadas RA0-RA5. Son bidireccionales y su sentido


queda configurado según la programación de los bits del registro TRISA.las patitas
RA0/AN0, RA1/AN1 y RA2/AN2, además de líneas de E/S digitales también pueden
actuar como los canales de entrada 0,1 y 2 por los que se puede aplicar una señal
analógica al conversor A/D. Las patitas RA3/AN37V también puede actuar como
entrada de la Tensión de referencia para los periféricos que la precisan. La patita
RA4/T0CKI actúa como E/S digital y como entrada de la señal de reloj para el Timer 0. Y
la patita RA5/AN4/SS tiene multiplez¿xadas tres funciones: E/S digital, canal 4 para el
conversor A/D y selección del modo esclavo cuando se trabaja con al comunicación
serie síncrona.

BIBLIOGRAFIA:

 Microcontroladores PIC de Jose Maria Angulo Usategui, Edición 4

También podría gustarte