Autor Tema: Dudas sobre la grabación en Flash del PIC16F876  (Leído 1439 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PicMinor

  • PIC16
  • ***
  • Mensajes: 222
Dudas sobre la grabación en Flash del PIC16F876
« en: 11 de Noviembre de 2009, 19:33:09 »
Saludos al Foro!

Estoy cacharreando con el MPLAB para preparar unas subrutinas con el objeto de grabar datos en la Flash del PIC16F876.

Me he encontrado con algunas curiosidades (o dudas) que voy a tratar de explicar.

Lo primero que me he encontrado es que no me deja grabar datos más que de cuatro en cuatro (Que son 8 bytes), es decir, tengo que grabar 4 parejas de EEDATH/EEDATA. Si intento grabar 3 no graba nada, si intento 5 me graba 4. ¿Curioso no?.

Lo segundo es que el byte alto del dato (EEDATH) no puede tomar un valor más alto que 0x3F. Supongo que tendrá que ver con el tema de las direcciones de 14 Bits.

Y lo que más me ha sorprendido ha sido lo siguiente: Como no se exactamentte el número de medidas que tengo que almacenar, he creado un buffer circular, de tal manera que cuando esté lleno vuelva a grabar desde el principio. Pues bien cuando se llena el Buffer y vuelve al principio no graba los datos, mejor dicho, no los graba bien. Lo que ocurre es que cambia algún Nibble de los 8 Bytes que le toca grabar, concretamente los Nibbles que están a 3 F F F. Pero aún es más divertido. Si manualmente en la ventana "Program Memory" del MPLAB introduzco en las posiciones de memoria a grabar un dato cualquiera, por ejemplo 0000 0000 0000 0000 no me graba nada. Pero si introduzco manualmente los valores 3FFF 3FFF 3FFF 3FFF (que serían los valores de una Flash Borrada) ¡Sí que los graba!. Pero si modifico el programa para que primero grabe los valores 3FFF 3FFF 3FFF 3FFF y luego grabe encima los valores correctos... lo hace bien en la primera vuelta pero no en la segunda. Parece como si la memoria Flash solo se pudiera grabar una vez con datos distintos de 3FFF o dos veces si el primer dato es 3FFF y el segundo distinto (O que grabar 3FFF no es grabar nada).

Todo esto es con el MPLAB, no lo he probado con un PIC real. Cuando lo haga ya os comentaré

Saludos!


 

anything