¿Cómo funciona realmente el bit PMCON1.WRERR del PIC?

1

Sé por la hoja de datos que se establece automáticamente en un flanco ascendente del bit WR y se borra automáticamente al completarse con éxito. Por lo tanto, si todavía está encendido, entonces algo salió mal. Hasta ahora todo bien, pero ¿qué tan cerca debería verlo?

El chip que estoy usando para este proyecto (PIC16F1454) borra y escribe su memoria de programa en "filas" de 32 palabras cada una. Una escritura en esta memoria en realidad va a uno de los 32 cierres transparentes que corresponde a los bits más bajos de la dirección. Luego, si el bit LWLO está desactivado, la misma operación transfiere los 32 pestillos simultáneamente a la fila especificada por los bits superiores. Entonces, el procedimiento, dada una imagen de memoria, es borrar una fila si aún no lo está, configurar LWLO, llenar la fila excepto la última palabra, borrar LWLO y escribir la última palabra.

Durante este proceso, configuro WR para cada palabra como parte de la escritura del pestillo, por lo que WRERR también debe estar activado. Entonces, si la escritura es exitosa, WRERR vuelve a apagarse. La hoja de datos no dice si el pestillo tiene la tasa de éxito de RAM ordinaria o qué hacer si sale mal. Sí dice que todos los cierres se restablecen al valor borrado (0x3FFF) después de ser transferidos. ¿Es un problema llenar la fila y transferirla a ciegas, luego revisar WRERR y repetir la fila si es necesario? Si WRERR es bueno, verificaré los datos y repetiré si es necesario.

En otras palabras, ¿es posible fallar al escribir solo un pestillo?

    
pregunta AaronD

1 respuesta

1

Según la hoja de datos:

  

El bit WRERR se establece cuando se interrumpe una operación de escritura   por un reinicio durante el funcionamiento normal. En estas situaciones,   Después de restablecer, el usuario puede comprobar el bit WRERR   y ejecute la rutina de manejo de errores adecuada.

Eso significa que la única vez que realmente debería estar mirando el bit WRERR es al inicio de su programa para ver si se produjo un restablecimiento durante una operación de escritura. Si lo hizo, entonces sabes que no puedes confiar en el contenido de la memoria que escribiste. Luego, debe ejecutar una rutina de manejo de errores, que podría escanear el área de la memoria en la que escribe para buscar filas escritas parcialmente, no tener la suma de comprobación correcta, etc. y hacer algo "apropiado" con ellas, como como reemplazándolos con datos válidos, borrándolos, lo que sea correcto para su software.

La forma correcta de saber si la fila que has escrito se ha escrito correctamente es leerla y compararla con lo que le dijiste que escribiera, y si difieren, entonces algo salió mal (normalmente te has desgastado). su flash y usted necesita reemplazar el chip).

    
respondido por el Majenko

Lea otras preguntas en las etiquetas