microcontrolador PIC: el comportamiento real difiere del simulador

1

Me encontré con algunas diferencias bastante extrañas en los comportamientos de mi microcontrolador PIC16F628a en comparación con el simulador integrado MPLAP.

Después de una larga búsqueda, resultó ser diferente debido a los valores predeterminados de las celdas libres.

En el simulador, al acceder a una ubicación de memoria que no se ha inicializado, el registro W se carga con 0x00, mientras que en el dispositivo real, se puede cargar algún otro valor (no recuerdo si era 0xFF o 0x7F ).

¿Hay alguna forma de hacer que todos los bytes no utilizados 0x00 en el dispositivo o cambiar el valor predeterminado del simulador al valor predeterminado no inicializado del PIC?

(También podría ser que mi pregunta muestre que no entendí algunos principios fundamentales sobre los PIC ... En este caso, le agradecería que alguien me enseñara ;-))

    
pregunta TomS

2 respuestas

4

Mi código de inicio estándar de la familia PIC 16F inicializa específicamente toda la memoria de datos del banco inferior a 0x00. Esta es una resaca de la primera vez que aprendí a programar microcontroladores PIC, pero considero que esta es una buena práctica de programación y el código se mantiene en todos mis proyectos.

El código requerido para hacer este ajuste a cero de la memoria de datos es diferente para cada variante PIC. Pero es un bucle simple y ocupa muy poco espacio de código.

Los 16F PIC más nuevos tienen mucha más memoria de datos que las partes heredadas con las que todavía trabajo. Puse a cero solo el primero o los dos bancos más bajos de memoria de datos.

Agregue un comentario si desea que publique el código que uso para los diferentes PIC que utilizo.

Todo lo que se dice: considero que es una mala práctica de programación tomar una decisión sobre la base de una lectura de una ubicación de datos que su programa no haya inicializado en algún valor específico. Esta es una causa común de errores de programación.

    
respondido por el Dwayne Reid
1

Supongo que es posible que no sea posible emular constantemente el contenido de la memoria sin inicializar en el simulador, ya que dicho contenido puede cambiar de una parte a otra, o incluso de la misma parte en diferentes condiciones, como la tensión de alimentación o la temperatura.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas