Anda di halaman 1dari 4

Como usar la EEPROM de los PICs Usando la EEPROM de los PICs (ejemplo PIC 16x84) Hemos visto que

en muchos de los post y discusiones de este foro, hablamos de guardar los datos en la memoria EEPROM de los microcontroladores. En realidad no sabemos hasta donde llega el conocimiento de todos los que leemos esos escritos, por lo tanto trataremos de hacer una pequea introduccin de cmo proceder para usar la memoria EEPROM. Entonces, este mini tutorial est orientado a aquellos que no conocen o nuncan han intentado usar esta memoria. Muchas veces (si no la mayora de ellas) subutilizamos el MP (microprocesadores) basndonos en el software de control desarrollado en nuestras PC para guardar y leer los datos necesarios para el correcto funcionamiento de nuestras interfaces y circuitos de control, en lugar de emplear a fondo las facilidades que nos prestan. Existen muchas ventajas en guardar los datos en la memoria no voltil del MP. La ms inmediata y evidente es disponer en forma instantnea de las condiciones iniciales o de arranque para el funcionamiento de la electrnica de control. Por ejemplo, imagnense que hemos diseado un circuito que utiliza un motor paso a paso para colocar en determinado lugar una banda transportadora. Sabemos que el motor deber moverse desde 0 (inicio de la banda) hasta X pasos (final de la banda). Dentro de la memoria EEPROM podramos almacenar el valor de X (numero de pasos totales para recorrer la banda) y el valor de Y (lugar o nmero de pasos en donde se detuvo por ltima vez el motor). De esta forma, el circuito podra usar su memoria para conocer estos datos al encenderlo en lugar de esperar que algn otro proceso externo se lo informe. Otros datos que pudiramos guardar seran por ejemplo, el valor de correccin de backslash o de movimiento inercial de la banda para corregir ese error acumulativo. Para explicar como usar la EEPROM, vamos a basarnos en nuestro PIC de pruebas que es el ya famoso 16x84. Para utilizar cualquier otro, haremos uso de las datasheets para conocer la equivalencia de los comandos, el tamao de la EEPROM y sus direcciones de inicio y final. En el caso de 16x84 tenemos los siguientes datos: Tamao de la EEPROM: 64 bytes - 8 Bits por byte Direccin de Inicio: 0h Direccin Final: 3Fh Para acceder a esos 64 bytes usamos un direccionamiento indirecto. Esto quiere decir que la DIRECCIN especfica de la memoria EEPROM que nos interesa (de los 64 disponibles) estar almacenada en un registro determinado y por consiguiente, para que el programa del MP sepa donde leer o grabar tendremos que buscarlo en ese registro especfico. Este registro junto con otros cuatro que sirven para controlar todo el proceso de lectura

y escritura, son los siguientes: EEADR EEDATA EECON1 EECON2 1) EEADR contiene la direccin o posicin de la memoria EEPROM que queremos acceder bien sea para leerla o escribirla. Como este registro es un BYTE de 8 Bits, pudiramos entonces representar 256 distintos valores sin embargo solo necesitamos 64 de ellos para acceder a toda la memoria por lo que, los bit 6 y 7 no se usan y debern ser siempre cero (recuerden que los 8 bits los numeramos desde el 0 al 7). 2) EEDATA va a contener como su nombre lo indica, el dato leido o el que deseamos guardar. 3) La misin de EECON1 es controlar los procesos de escritura/lectura de la memoria. De sus 8 bits disponibles solo se usan los 5 de menos peso. Estos bits son:
a. Bit0: RD de Read Data, se pone a 1 cuando se va a realizar un ciclo de LECTURA desde la EEPROM, y vuelve automticamente a 0 cuando se temina ese proceso. b. Bit 1: WR de Write Data, se pone a 1 cuando se va a realizar un ciclo de ESCRITURA hacia la EEPROM, y vuelve automticamente a 0 cuando se temina ese proceso. c. Bit 2: WREN de Write Register ENable. Si est a 1 PERMITE el proceso de escritura hacia la EEPROM y si est a 0, no lo permite. d. Bit 3: WRERR de Write Register ERRor. Se va a 1 cuando un proceso de ESCRITURA no se realiz correctamente y a 0 en caso contrario. e. Bit 4: EEIF de EEprom Interrupt Finalization. Al colocarse a 1, indica que la operacin de ESCRITURA a finalizado con xito. Si se quiere colocarla a 0, deber hacerse por programa.

4) EECON2 no est fsicamente implementado y es empleado como un dspositivo de seguridad durante el proceso de escritura de la EEPROM. Si se lee, todos sus bits estarn a 0. Un ciclo de escritura de una localidad de memoria de la EEPROM tarda aproximadamente para estos MP con cristales de 4 MHz, unos 10 ms. Este tiempo es muy largo comparado con la velocidad del MP y por esta razn se hacen tantos esfuerzos en controlar su escritura y lectura. Leer los datos de la EEPROM: Segn lo que vimos anteriormente, para leer los datos de la EEPROM deberemos hacer lo siguiente: 1) Cargar la direccin que deseamos leer en EEADR 2) Poner a 1 el Bit RD del registro EECON1 indicndole al MP que lea la direccin 3) Y por ltimo transferir al acumulador o al literal deseado el dato ledo desde EEDATA

El cdigo tpico sera as (Recuerden que debemos de haber incluido el archivo 16F84A.INC donde se definen los registros del PIC). La variable DIRE debimos haberla declarado al comienzo del programa. Cdigo:
bcf ESTADO,RP0 ;Seleccionamos el Banco 0 movlw DIRE ;Ponemos en W la direccin que vamos a leer movwf EEADR ;y pasamos W al registro EEADR, definiendo la direccin a leer bsf ESTADO,rp0 ; Seleccionamos el Banco 1 bsf EECON1,RD ;Hacemos la lectura colocando RD a 1 bcf ESTADO,RP0 ;y regresamos al Banco 0 movf EEDATA,W ;para finalmente rescatar el dato desde EEDATA hacia W

Esta es una codificacin bsica que puede servir de modelo de arranque para sus diseos. Escribir los datos en la EEPROM: Anteriormente dijimos que EECON2 no estaba implementado en forma fsica y que si lo leamos obtendramos 0 pero, cumple funciones de control sobre la escritura que si deberemos considerar. Para esto, usaremos dos valores especficos, el 55h y el AAh. Dado el tiempo que tarda el proceso de escritura comparado con el tiempo de ejecucin del MP, estos dos valores permitirn al MP realizar acciones de sincronismo y control en el proceso de escritura de la EEPROM, as es que el cdigo deber tener un par de instrucciones de escrituras en EECON2 que parecieran no tener sentido pero que siempre deberemos usar, al menos en esta gama de PICs. El cdigo sera el siguiente: Las variables DIRE y ESCR la debimos de haber declarado al comienzo del programa. Cdigo:
bcf STATUS,RP0 movlw DIRE vamos a escribir movwf EEADR movlw ESCR en W movwf EEDATA bsf STATUS,RP0 bsf EECON1,WREN (WREN) en EECON1 a 1 escritura ;Seleccionamos Banco 0 ;Ponemos en W la direccin que ;y la guardamos en EEADR onemos ahora el dato a escribir ;y lo guardamos en EEDATA ;Seleccionamos Banco 1 ;Colocamos el permiso de escritura ;Aqu da inicio la secuencia de

movlw EECON2 movwf movlw movwf

0x55 h EECON2 0xAA h EECON2

;Inicio de las intrucciones para

;Fin de las intrucciones para EECON2 ;Comienza la escritura

bsf EECON1,WR propiamente dicha.

Cuando se complete todo el proceso de escritura, el Bit WR se pondr a 0 automticamente y el sealizador de interrupciones EEIF pasar a valer 1 (y all se quedar hasta que lo coloquemos a 0 por programa). Si se quiere realizar un proceso simple de verificacin de escritura adicional, podemos restar el dato que hemos escrito al valor actual del registro EEDATA. Si no hubo errores entonces esta resta debe dar 0 y por lo tanto el bit Z (cero) del registro de ESTADO se colocar a uno indicando esta condicin, lo que nos servir de bandera de comprobacin. Seguramente habrn diferencias notables en el manejo de lectura/escritura de otros modelos de PIC y de otra marca de microcontroladores pero su base de funcionamiento es prcticamente la misma. Debern tener en cuenta que el proceso de escritura de un byte, borra automticamente la posicin de memoria y luego escribe el dato es decir, borra antes de escribir, as es que tendrn que rescatar el dato anterior antes de su escritura si lo quieren utilizar para algo. Las memorias EEPROM resisten hasta un milln de ciclos de Lectura/Escritura y adems pueden almacenar sus datos en forma contnua sin degradacin por alrededor de 40 aos. Para los que no lo saben, EEPROM significa: Electrically Erasable Programmable Read Only Memory, que en castellano podra ser algo como: Memoria Programable de Solo Lectura Borrable Elctricamente. Espero les sea de utilidad esta explicacin y comiencen a sacarle ms provecho a sus MC.

Anda mungkin juga menyukai