Autor Tema: Grabar en FLASH de PIC32MX220  (Leído 4678 veces)

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

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Grabar en FLASH de PIC32MX220
« 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);
}

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Grabar en FLASH de PIC32MX220
« Respuesta #1 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.







Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Re: Grabar en FLASH de PIC32MX220
« Respuesta #2 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...

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Grabar en FLASH de PIC32MX220
« Respuesta #3 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.

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Re: Grabar en FLASH de PIC32MX220
« Respuesta #4 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'

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Re: Grabar en FLASH de PIC32MX220
« Respuesta #5 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

Desconectado ALFREDOSKY

  • PIC16
  • ***
  • Mensajes: 118
Re: Grabar en FLASH de PIC32MX220
« Respuesta #6 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

Desconectado YOANMESA

  • PIC10
  • *
  • Mensajes: 5
Re: Grabar en FLASH de PIC32MX220
« Respuesta #7 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.

Desconectado YOANMESA

  • PIC10
  • *
  • Mensajes: 5
Re: Grabar en FLASH de PIC32MX220
« Respuesta #8 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.