martes, 11 de mayo de 2021

 

3.3.5 Escritura en memoria flash

El datasheet del PIC16f887 menciona que; la programación en la memoria flash se escribe por bloques de dieciséis palabras con dirección secuencial. La dirección se almacena en los registros EEADR y EEADRH, mientras que cada palabra que será grabada, en los registros EEDATA y EEDATH [28]. Estos cuatro registros se localizan en el Banco2 de los registros de funciones especiales del microcontrolador. En la Figura 3.14 se muestra un fragmento de estos registros del PIC y se señalan en color rojo los mencionados anteriormente.


    Figura 3.14 Fragmento de registros especiales del PIC16f887.

 Como protección la memoria flash requiere de una secuencia o protocolo de eventos antes de iniciar la escritura:

1.    Poner a 1 el bit EEPGD del registro EECON1.

2.    Escribir 55h (55 hexadecimal), después AAh en el registro EECON2.

3.    Poner a 1 el bit WR del registro EECON1.

4.    Poner en no operación el procesador durante dos ciclos [28].

Los dos ciclos que el procesador se encuentra en no operación es el tiempo que se requiere para grabar o escribir en la memoria flash. Los registros utilizados para el protocolo se localizan en el Banco3 y se muestran en la Figura 3.14 señalados en color azul.

En la siguiente figura se muestra un fragmento del código de ejemplo para grabado de memoria flash extraído del datasheet del PIC16f887, en donde se puede observar este protocolo.


Figura 3.15 Protocolo de grabado de memoria flash.

 Como se mencionó, la escritura se hace a través de bloques, los cuales están distribuidos en ocho buffers de datos (EEDATH y EEDATA). La escritura de cada uno de estos se logra sí y solo sí se han completado los ocho buffers, de lo contrario la grabación no se realiza y el contenido de ese bloque de memoria se vuelve 0 en cada uno de los bits. La distribución de los buffers se puede observar en la Figura 3.16 [28].

 Figura 3.16 Distribución de buffers.

No hay comentarios:

Publicar un comentario