No me canso de decirle a los amigos que yo, en esto de la Picmanía, no dejo de ser un novato mas. En el fondo todos los somos siempre, ya que cuanto mas intentas profundizar mas cosas nuevas aprendes y/o descubres.
Dicen que la juventud comete la permanente impertinencia de creer que aquello que descubre por primera vez es la primera vez que se descubre. No soy nada joven y creo que tampoco impertinente. Así que aquello que descubro doy por supuesto que ya ha sido conocido por todos mis predecesores en esto, pero puede no ser verdad del todo y haber aún alguien que aún no lo sepa.
Es mi obligación y mi devoción ponerlo en común y compartirlo con todos ustedes. Para los que no lo sepán me complace ayudarles un poquito, para los que hace mucho tiempo que ya lo saben me consuelo en pensar que piensen de mi que al menos sirve para algo.
El tema que quiero comentar, y que ha dado paso a esta larguísima introducción, consiste realmente en algo que es de cajón, pero que hasta no haberlo sufrido en mis propias carnes no lo he tomado en cuenta.
Me he dado cuenta de que:
Tras programar el PIC y resetearlo por hardware tirando a masa el correspondiente pin de reset ... ¡¡¡¡ la RAM continúa intacta !!!! Si no inicializo a un valor conocido todas y cada una de las variables en la parte inicial de mi programa, que se ejecuta siempre tras un reset o al dar corriente al PIC, entonces aquellas que no haya inicializado tendrán aún el valor que tomaron antes de re-programar el PIC o pulsar el botón Reset.
Esto puede ser fuente de errores absolutamente incomprensibles ya que heredaremos valores de variables que es imposible que los hayan podido alcanzar tras una ejecución normal de nuestro programa.
Por lo tanto y como moraleja:
Inicializa los valores de las variables al inicio de tu programa, asi te asegurarás de que siempre partiras de unos valores conocidos. En la imagen que os pego mas abajo aparece una monitorización sobre el canal serie de un PIC al que acabo de re-programar y resetear. El último valor que aparece estaba almacenado en la RAM y provenía de la ejecución anterior del programa:
Ea, hasta otra.
Un saludo.