TODOPIC

Microcontroladores PIC => Pic32 => Mensaje iniciado por: alarren en 14 de Marzo de 2013, 12:25:53

Título: Grabar en FLASH de PIC32MX220
Publicado por: alarren en 14 de Marzo de 2013, 12:25:53
Hola a todos,
Estoy intentando grabar un dato en memoria no volatil de un Pic32Mx220 segun dice el datasheet del micro y el datasheet de referencia de la familia Pic32 (capitulo 5) y no hay manera de grabar, sigo los pasos que pone pero nada de nada, eso si tampoco se como leerlo luego (ahora lo miro con el debuger)... ¿alguien me puede echar una mano?
Lo que quiero es que al arrancar el micro, lea una posicion de memoria flash y le sume 1 a ese numero que esté ahi, es básicamente para saber si se resetea el pic o no. Es un programa para un aparato que tiene que estar muchas horas funcionando sin resetearse y para saber si tiene algun problema o no.

El codigo que descifré de los datasheet y estoy probando para grabar en flash es este:

Código: [Seleccionar]
void flash(unsigned int direccion, unsigned int data)
{
unsigned int res;
NVMDATA = data;
NVMADDR = direccion;
res = NVMUnlock(0x4001);
return res;
}

void NVMUnlock (unsigned int nvmop)
{
unsigned int status;
NVMCON = nvmop;

NVMKEY = 0xAA996655;
NVMKEY = 0x556699AA;

NVMCONSET = 0x8000;
while (NVMCON & 0x8000);

return (NVMCON & 0x3000);
}
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: planeta9999 en 14 de Marzo de 2013, 13:39:32



Antes de poder actualizar la flash, tienes que borrarla, y para más inri, no se puede borrar una sola dirección, tienes que borrar una página completa, que en los PIC de 32 bit es de 4K (4096 byte). Si en esa página que vas a borrar hay parte de programa, tendrás que guardarlo previamente en un array y restaurarlo después del borrado.

Para borrar una página tienes que hacer una llamada a NVMemErasePage, pasando como parámetro la dirección de la página que quieres borrar, puedes actualizar la flash con una llamada a NVMWriteWord. Si necesitas salvar el contenido de la página, antes de borrarla, puedes salvarla con memcpy.






Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: alarren en 01 de Abril de 2013, 07:45:43
Pero para poder usar esas ordenes, ¿que libreria hay que tener? porque me dan error, lógicamente...
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: planeta9999 en 01 de Abril de 2013, 08:46:07
Pero para poder usar esas ordenes, ¿que libreria hay que tener? porque me dan error, lógicamente...


¿ que error te da ?
Pon un #include con NVMem.h, también necesitas el NVMem.c como fuente.
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: alarren en 02 de Abril de 2013, 06:06:12
Ahora me da este error, con los archivos que me has dicho puestos.

Código: [Seleccionar]
NVMem.h:39:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NVMemWriteWord'
NVMem.h:40:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NVMemErasePage'
NVMem.h:41:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NVMemWriteRow'
NVMem.h:42:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NVMemClearError'
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: alarren en 02 de Abril de 2013, 06:49:25
Ya lo he conseguido, no hacia falta poner un include con la libreria, bastaba con meter los archivos NVMem.h, NVMem.c y Logger.h en una carpeta llamada Include dentro del proyecto, luego agregar los NVMem al proyecto y listo.

Gracias
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: ALFREDOSKY en 02 de Abril de 2014, 20:22:42
Hola alarren, una pregunta, lograste guardar datos en la flash con el uso de las funciones NVM? si fue asi, cuando desconectaste la energia del pic y luego volviste a alimentarlo, aun tenias los datos almacenados??, pregunto esto porque no me queda claro la utilidad de esta libreria
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: YOANMESA en 02 de Agosto de 2019, 10:21:03
Ya lo he conseguido, no hacia falta poner un include con la libreria, bastaba con meter los archivos NVMem.h, NVMem.c y Logger.h en una carpeta llamada Include dentro del proyecto, luego agregar los NVMem al proyecto y listo.

Gracias


Amigo, me podrias decir donde encontraste la libreria Logger.h, no la he podido hallar.
Título: Re: Grabar en FLASH de PIC32MX220
Publicado por: YOANMESA en 02 de Agosto de 2019, 10:28:34
Ya lo he conseguido, no hacia falta poner un include con la libreria, bastaba con meter los archivos NVMem.h, NVMem.c y Logger.h en una carpeta llamada Include dentro del proyecto, luego agregar los NVMem al proyecto y listo.

Gracias

Hola, me podrias indicar donde encontraste la libreria Logger.h, no la he podido hallar.