Está en la página 1de 12

3.

0 EEPROM DE DATOS Y MEMORIA DE PROGRAMA FLASH


En la memoria EEPROM y memoria Flash de programa se puede leer y escribir datos durante el funcionamiento normal. Estas memorias no estn mapeadas en el de espacio de registros. Pero, indirectamente a travs de los Registros de Funciones Especiales se puede realizar estas funciones. Hay seis registros de propsitos especficos que se utilizan para leer y escribir la memoria EEPROM:

EECON1 (18Ch) EECON2 (18Dh) EEDATA (10Ch) EEDATH (10Eh)

EEADR (10Dh) EEADRH (10Fh)

Cuando se interconecta con la memoria de datos EEPROM, EEDATA contiene los datos de 8-bits para lectura / escritura y EEADR mantiene la direccin del lugar EEPROM que se accede. Los dispositivos PIC16F873/A poseen 128 registros (00h a 7Fh) de 8 bits y 256 registros los PIC16F876A/877A. Cuando se realiza una conexin con la memoria de programa (FLASH), los registros EEDATA y EEDATH forman una palabra de dos bytes que contiene los datos de 14-bit de lectura/escritura y el EEADR y los registros EEADRH contienen la direccin 13-bits (ocupa dos bytes) de ubicacin de la memoria del programa que se accede. Los dispositivos PIC16F873A/874A poseen 4K palabras de Flash de programa, con un rango de direcciones de 0000h a 0FFFh. (16F876A/877A hasta 8 K palabras).

Registro EECON1

BIT 7 - EEPGD: Bit de seleccin de memoria de FLASH de Programa / EEPROM de datos 1 = Acceso a la memoria de programa (FLASH) 0 = Accesos a la memoria de datos (EEPROM). Lee "0" despus de un POR; este bit no se puede cambiar mientras est en curso una operacin de escritura. BIT 6-4: No implementados, se leen como "0 BIT 3 - WRERR: Bit de bandera de Error EEPROM 1 = Una operacin de escritura se termin prematuramente (cualquier MCLR o cualquier WDT Reset durante el normal funcionamiento) 0 = La operacin de escritura se complet. BIT 2 - WREN: Permitir la habilitar la operacin de Escritura en la EEPROM o FLASH. 1 = Permite ciclos de escritura en la EEPROM o FLASH. 0 = Inhibe escribir en las memorias.

BIT 1 - WR: Bit de control (u orden) de escritura 1 = Inicia un ciclo de escritura. El bit se borra por hardware una vez que la escritura esta realizada. El bit WR Slo se puede establecer a 1 (no puede ser limpiado) por software. 0 = ciclo de escritura a la EEPROM se ha completado. BIT 0 - RD: Bit de control (u orden) de lectura. 1 = Inicia una lectura de EEPROM, RD se borra por hardware. El bit RD slo se puede establecer a 1 (no puede limpiarse) por software. 0 = No inicia una lectura de EEPROM (o termino la operacin de lectura).

Operaciones en la memoria EEPROM (16F873A) Esta memoria permite leer y escribir solo palabras de 8 bits (128 registros de 1 Byte). En la escritura de un byte de datos en la memoria EEPROM, el dispositivo borra automticamente la ubicacin y escribe el dato nuevo (borrar-antes-escritura). El tiempo de escritura es controlada automticamente por un temporizador en el chip. El voltajes de escritura / borrado son generados por una bomba de carga, apto para funcionar en el rango de tensin del dispositivo para las operaciones de un byte o palabra. EEADR: El registro EEADR pueden direccionar hasta un mximo de 128 bytes de datos de EEPROM. Cundo se ha seleccionando una direccin de EEPROM de datos, slo se escribe el LSB de la direccin en el registro EEADR. Cuando se selecciona la memoria FLASH, La direccin del programa, el MSByte de la direccin se escribe en el registro EEADRH y el LSByte se escribe en el registro EEADR.

Lectura de la Memoria de Datos EEPROM


Para leer una posicin de memoria de datos, el usuario debe escribir la direccin en el registro EEADR, limpiar el bit de control de EEPGD a 0 (EECON1 <7>) y despus colocar el bit de control de lectura RD a 1 (EECON1 <0>). El dato de 8 bits estar disponible en la siguiente ciclo en el registro EEDATA, por lo que se puede leer en la siguiente instruccin (vase el ejemplo 3-1). El registro EEDATA mantendr este valor hasta que otro sea ledo o hasta que otro sea escrito por el usuario (durante una operacin de escritura). Los pasos para la lectura de la memoria EEPROM de datos son: 1. Se escribe la direccin en la EEADR. Asegrese de que la direccin no es mayor que el tamao de la memoria de el dispositivo. 2. Borrar el bit EEPGD para apuntar a los datos de la memoria EEPROM. 3. Establezca a 1 el bit RD para iniciar la operacin de lectura. 4. Leer los datos del registro EEDATA.

Ejemplo de Lectura en EEPROM de datos


BANKSEL MOVF MOWF BANKSEL BCF BSF BANKSEL MOVF EEADR ; selecciona Banco 2 REGDIR,W ; Carga direccin del registro EEPROM en (w) EEADR ; Escribe direccin EEPROM en EEADR EECON1 ; selecciona Banco 3 EECON1, EEPGD; Selecciona escritura en EEPROM de datos EECON1, RD ; Selecciona lectura de datos de EEPROM EEDATA ; selecciona Banco 2 EEDATA,W ; Lee dato en (W)
EEPROM Datos
00h 01h 02h

El usuario asigno el registro REGDIR para que contenga la direccin del reg. EEPROM a leer

128 Registros
7Fh

8Bit

Escritura de datos de la memoria EEPROM de datos


Para escribir un registro en la EEPROM de datos, el usuario debe primero escribir la direccin en el registro EEADR y los datos del registro EEDATA. Luego el usuario debe seguir una secuencia especfica para iniciar la escritura de cada byte. La escritura no se iniciar si la secuencia no es exactamente la correcta: Escribir 55h en EECON2, seguido de AAh en el mismo registro EECON2. A continuacin, establezca a 1 el bit WR) para cada byte. Se recomienda que las interrupciones sean deshabilitadas durante este procedimiento. Adems, el bit WREN en EECON1 se debe establecer a 1 para permitir la escritura. Este mecanismo evita que accidentalmente se escriba en la memoria EEPROM de datos debido a inesperadas ejecuciones de cdigo (es decir, por perdidas de programas). El usuario debe mantener el WREN a cero (0) en todo momento, excepto cuando requiere la actualizacin de EEPROM. El bit WREN no se borrar por el hardware. En la realizacin del ciclo de escritura, el bit WR es limpiado por hardware cuando se completa la escritura, y el bit de Bandera de interrupcin (EEIF) ser colocado a 1. El usuario puede habilitar la interrupcin o bien realizar una encuesta de este bit. El bit bandera EEIF debe ser realizada por software.

Los pasos para escribir en la memoria EEPROM de datos son:


1. Compruebe el bit WR para ver si una escritura est en curso. 2. Escriba la direccin a la EEADR. Asegrese de que la direccin no es mayor que el tamao de la memoria del dispositivo (128 registros 00h a 7Fh). 3. Escribir el valor del dato de 8-bit que se programar en el registro EEDATA. 4. Borrar el bit EEPGD para apuntar a la memoria EEPROM de datos. 5. Establecer a uno el bit WREN para permitir las operaciones de escritura. 6. Deshabilitar las interrupciones para evitar interrumpir la siguiente secuencia. 7. Ejecutar la secuencia de instruccin especial de cinco: Escriba 55h EECON2 en dos etapas (primero a W, y luego a EECON2) Escriba AAh EECON2 en dos etapas (primero a W, y luego a EECON2) Coloque a 1 el bit WR, este bit inicia la operacin de escritura. 8. Habilitar nuevamente las interrupciones (en caso de que este usando interrupciones). 9. Borrar el bit WREN para desactivar la operacin de escritura.

10. En la realizacin del ciclo de escritura, el bit WR se borra y el bit EEIF de interrupcin se establece a 1.(EEIF deben ser borrado por el firmware.)

Ejemplo de Escritura en la EEPROM de datos


ATRS BANKSEL EECON1 ; selecciona Banco 3 BTFSC EECON1, WR ; Espera que la escritura este completa GOTO ATRAS BCF STATUS, RP0 ; Selecciona Banco 2 MOVF REGDIR,W ; Carga direccin registro EEPROM en (w) MOWF EEADR ; Escribe direccin EEPROM en EEADR MOVF REGDATA,W ; Carga dato en (W) MOVWF EEDATA ; Escribe dato (W) en EEDATA BANKSEL EECON1 ; Selecciona banco 3 BCF EECON1, EEPGD ; Selecciona la memoria EEPROM BSF EECON1, WREN ; Habilita escritura BCF INTCON, GIE ; Deshabilita interrupciones globales MOVLW 0X55 ; carga clave parte baja en (W) MOVWF EECON2 ; Carga (W) en EECON2 MOVLW 0XAA ; Carga clave parte alta en (W) MOVWF EECON2 ; Guarda (W) en EECON2 BSF EECON1,WR ; Habilita escritura en EEPROM BCF EECON1, WREN ; Deshabilita escritura BCF INTCON, GIE ; Habilita interrupciones

Lectura de la Memoria de Programa Flash


La memoria de programa Flash permite leer una sola palabra de 14 bit y escribir bloques de cuatro palabras. Las operaciones de escritura automtica en la memoria de programa realizan un borrado-antes de escribir el bloques de cuatro palabras Para leer un registro de la memoria de programa, el usuario debe escribir dos bytes de la direccin a los registros EEADR y EEADRH, establezca a 1 el bit de control EEPGD (EECON1 <7>) y a continuacin, colocar a uno (1) el control de bit RD (EECON1 <0>). Una vez que el bit de lectura de control est establecido, el controlador de memoria de programa Flash utilizar los prximos dos ciclos de instruccin para leer los datos. La secuencia para leer en la memoria FLASH de Programa son:

1. Compruebe el bit RD para ver si no hay una lectura en curso. 2. Escriba la direccin a la EEADR (parte baja) y en EEADRH (parte alta). Asegrese de que la direccin no es mayor que el tamao de la memoria del dispositivo (128 registros 00h a 7Fh). 3. Colocara a 1 el bit EEPGD para apuntar a la memoria FLASH de programa. 4. Establecer a uno el bit RD para ordenar la operacin de lectura. 5. Colocar dos instrucciones NOP a continuacin para permitir la operacin.

6. El valor del dato de 14-bit que se encuentra en esa direccin de FLASH se escribir
en el registro EEDATA (parte baja) y EEDATAH (parte alta).

Ejemplo de programa Lectura de datos en Memoria FLASH BANKSEL EEADR MOVF MOWF MOVF MOWF BSF BSF NOP NOP BANKSEL EEDATA MOVF MOVWF MOVF MOVWF EEDATA,W REGDATAL EEDATAH,W REGDATAH REGDIRL,W EEADR REGDIRH,W EEADRH ; selecciona Banco 2 ; Carga direccin baja del registro FLASH en (W) ; Escribe direccin EEPROM en EEADR ; Carga direccin alta del registro Flash en (W) ; Escribe direccin alta FLASH en EEADRH ; selecciona Banco 3 ; Selecciona lectura de datos en FLASH ; Lectura de datos ; Lectura de datos ; selecciona Banco 2 ; Lee dato bajo en (W) ; Escribe dato en registro de usuario ; Lee dato alto en (W) ; Escribe dato en registro de usuario

BANKSEL EECON1 EECON1, RD

EECON1, EEPGD; Selecciona memoria FLASH

Los registros REGDIRL, REGDIRH, REGDATA, REGDATAH son definido por el usuario para llevar un puntero de direcciones y datos de lectura de la memoria FLASH

Los datos estn disponibles en el ciclo siguiente, en el EEDATA y registros EEDATH. Proteccin contra escrituras expureas Hay condiciones en al cual el dispositivo no debe escribir en la memoria de datos EEPROM o en la memoria de programa FLASH. Para proteger de escritura espurias, varios mecanismos son provistos en el dispositivo. En un Power Up, el WREN es limpiado. Tambin el PWT (Power Up Timer, 72 mseg de duracin) previene una escritura en la EEPROM. El bit WREN previene de una escritura accidental durante un Brown Out producido por un parpadeo de energa o de una mal funcin del software. Operacin con Proteccin de Cdigo Cuando la EEPROM de datos esta protegido por cdigo, el microcontrolador internamente puede leer y escribir la memoria de programa y leer y escribir la EEPROM normalmente. Sin embargo todos los accesos externos a la EEPROM son deshabilitada. Las escrituras externas a la memoria de programa tambin son deshabilitada. Cuando la memoria de programa esta protegida por cdigo, el microcontrolador internamente puede leer y escribir la memoria de programa normalmente.

También podría gustarte