La memoria de datos EEPROM se puede leer y escribir durante el funcionamiento normal (rango completo de VDD). Esta memoria no está mapeada directamente en el espacio de archivo de registro. En cambio, se trata indirectamente a través de los registros de funciones especiales. Se utilizan cuatro SFR para leer y escribir esta memoria. Estos registros son: • EECON1 • EECON2 (no es un registro implementado físicamente) • EEDATA • EEADR EEDATA contiene los datos de 8 bits para lectura / escritura, y EEADR contiene la dirección de la ubicación EEPROM a la que se accede. Los dispositivos PIC16F84A tienen 64 bytes de EEPROM de datos con un rango de direcciones de 0h a 3Fh. La memoria de datos EEPROM permite la lectura y escritura de bytes. Una escritura de byte borra automáticamente la ubicación y escribe los nuevos datos (borrar antes de escribir). La memoria de datos EEPROM está clasificada para ciclos altos de borrado / escritura. El tiempo de escritura está controlado por un temporizador en chip. El tiempo de escritura variará con el voltaje y la temperatura, así como de un chip a otro. Consulte las especificaciones de CA para conocer los límites exactos. Cuando el dispositivo está protegido por código, la CPU puede continuar leyendo y escribiendo la memoria EEPROM de datos. El programador del dispositivo ya no puede acceder a esta memoria. Se dispone de información adicional sobre la EEPROM de datos en el Manual de referencia de rango medio de PICmicro ™ (DS33023). 3.1 Lectura de la memoria de datos EEPROM Para leer una ubicación de la memoria de datos, el usuario debe escribir la dirección en el registro EEADR y luego establecer el bit de control RD (EECON1 <0>). Los datos están disponibles, en el ciclo siguiente, en el registro EEDATA; por lo tanto, se puede leer en la siguiente instrucción. EEDATA mantendrá este valor hasta otra lectura o hasta que el usuario lo escriba (durante una operación de escritura).
3.2 Escritura de la memoria de datos EEPROM
Para escribir una ubicación de datos EEPROM, el usuario primero debe escribir la dirección en el registro EEADR y los datos en el registro EEDATA. Luego, el usuario debe seguir una secuencia específica para iniciar la escritura de cada byte.
La escritura no se iniciará si la secuencia anterior no se sigue exactamente (escriba 55h en EECON2,
escriba AAh en EECON2, luego establezca el bit WR) para cada byte. Recomendamos encarecidamente que las interrupciones se deshabiliten durante este segmento de código. Además, el bit WREN en EECON1 debe establecerse para habilitar la escritura. Este mecanismo evita escrituras accidentales en la EEPROM de datos debido a la ejecución errónea (inesperada) de código (es decir, programas perdidos). El usuario debe mantener el bit WREN limpio en todo momento, excepto cuando actualice EEPROM. El hardware no borra el bit WREN. Después de que se haya iniciado una secuencia de escritura, borrar el bit WREN no afectará este ciclo de escritura. El bit WR no podrá establecerse a menos que se establezca el bit WREN. Al finalizar el ciclo de escritura, el bit WR se borra en el hardware y se establece el bit indicador de interrupción de escritura completa de EE (EEIF). El usuario puede habilitar esta interrupción o sondear este bit. EEIF debe borrarse mediante software. 3.3 Verificación de escritura Dependiendo de la aplicación, una buena práctica de programación puede dictar que el valor escrito en la EEPROM de datos debe verificarse (Ejemplo 3-3) con el valor deseado que se va a escribir. Esto debe usarse en aplicaciones donde un bit EEPROM se estresará cerca del límite de especificación. Generalmente, la falla de escritura de EEPROM será un bit que se escribió como un "0", pero se lee como un "1" (debido a una fuga del bit).