Problema de configuración con pic16F877A

2

Estoy creando un programa para un PIC16F877A. Parece estar funcionando correctamente en el simulador MPLABX. Estoy usando aproximadamente la mitad del programa disponible y la memoria de datos.

Durante la programación recibo el siguiente mensaje:

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0xfff
configuration memory
Debug Executive
Address: 1f00 Expected Value: 1170 Received Value: 3fff
Failed to program device

En la situación del simulador, he buscado en la memoria del programa. La dirección 1F00 no se usa y, de hecho, tiene el valor 3FFF. ¿Cómo proceder para encontrar el error?

El programa está escrito en XC8.

    
pregunta Decapod

2 respuestas

4

Para la depuración de hardware, se carga en la memoria del programa una pieza de código adicional llamada 'Debug Executive' desde 0x1F00-1FFF. Por alguna razón, su programador no puede escribir en esta área. Tres posibles causas que se me ocurren: -

  1. El flash está protegido contra escritura.

Asegúrese de que toda la memoria del programa se pueda escribir agregando #pragma config WRT = OFF a su código.

  1. En realidad, tiene un PIC16F877 (no 'A'), que tiene diferentes bits de configuración.

El 16F877 se puede configurar para proteger contra escritura 0x1F00-1FFF mientras deja otras áreas solas. La solución es seleccionar la MCU correcta y establecer los bits de configuración adecuados para ella.

  1. El chip está defectuoso, o en realidad es otro PIC que solo tiene 4k palabras de memoria de programa.

Intente rellenar el programa hasta que llene más de la mitad de la memoria, luego, si la programación falla por encima de 0x1000, ¡sabe que solo tiene 4k de Flash en funcionamiento!

    
respondido por el Bruce Abbott
3

Error encontrado.

El bit de configuración WRT cambió de OFF a HALF en el momento en que se inició el compilador. Así que comenté todo el código fuente y me fui

void main(void){
   while(1){};
};

Sin éxito. Con solo xc.h No hay problema. Mi cabecera causando problemas !!

#define ON  1
#define OFF 0

hizo que WRT cambiara de OFF a HALF

    
respondido por el Decapod

Lea otras preguntas en las etiquetas