Autor Tema: Escribir el la flash del pic  (Leído 9141 veces)

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

Desconectado gonz147

  • PIC10
  • *
  • Mensajes: 22
Escribir el la flash del pic
« en: 01 de Abril de 2010, 23:42:37 »
Hola amigos del foro.

Estoy empezando un programita en el que debería guardar cierta configuración en la flash para no perderla.

CCS trae unas funciones para esto (write_program_eeprom(), write_program_memory() ) pero no entiendo 2 cosas en principio:

1) Por lo visto la función write_program_eeprom() es para grabar la flash y no la eeprom, ya que hay otra función para esto ultimo (write_eeprom() ), es así no?

2) Si la función write_program_eeprom() sirve para guardar en flash, el archivo de ayuda dice que hay que borrar el bloque de memoria antes (erase_program_eeprom() ), lo que no encuentro es la segmentacion de memoria que usan los pic (particularmente PIC16F716), donde puedo encontrarla?

Ah, me olvidaba de preguntar si es posible ver el mapa de memoria resultante en CCS.

Espero sus respuestas
Firmat - Santa Fe - Argentina

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Escribir el la flash del pic
« Respuesta #1 en: 02 de Abril de 2010, 02:20:30 »
Hola amigos del foro.

Estoy empezando un programita en el que debería guardar cierta configuración en la flash para no perderla.

CCS trae unas funciones para esto (write_program_eeprom(), write_program_memory() ) pero no entiendo 2 cosas en principio:

1) Por lo visto la función write_program_eeprom() es para grabar la flash y no la eeprom, ya que hay otra función para esto ultimo (write_eeprom() ), es así no?

2) Si la función write_program_eeprom() sirve para guardar en flash, el archivo de ayuda dice que hay que borrar el bloque de memoria antes (erase_program_eeprom() ), lo que no encuentro es la segmentacion de memoria que usan los pic (particularmente PIC16F716), donde puedo encontrarla?

Ah, me olvidaba de preguntar si es posible ver el mapa de memoria resultante en CCS.

Espero sus respuestas

write_program_eeprom() es para guardar en la Memoria EEProm de tu Pic, em la Flash esta grabado el codigo fuente de tu Pic donde se ejecutan las instrucciones

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Escribir el la flash del pic
« Respuesta #2 en: 02 de Abril de 2010, 11:02:28 »
write_program_eeprom() es para guardar en la Memoria EEProm de tu Pic, em la Flash esta grabado el codigo fuente de tu Pic donde se ejecutan las instrucciones

No.

Esa instrucción sí se usa para grabar la Flash de memoria de programa donde reside el código fuente del PIC. Se usa comúnmente para actualizar firmware mediante bootloaders, por ejemplo.

Desconectado gonz147

  • PIC10
  • *
  • Mensajes: 22
Re: Escribir el la flash del pic
« Respuesta #3 en: 02 de Abril de 2010, 13:12:41 »

Esa instrucción sí se usa para grabar la Flash de memoria de programa donde reside el código fuente del PIC. Se usa comúnmente para actualizar firmware mediante bootloaders, por ejemplo.

Eso es lo que suponía, pero no encuentro información acerca de la segmentación, ya que al borrar en la flash lo hace de a bloques, y puedo borrar parte del programa principal si no lo tengo en cuenta.

saludos
Firmat - Santa Fe - Argentina

Desconectado giff

  • PIC10
  • *
  • Mensajes: 31
    • Ignogantes
Re: Escribir el la flash del pic
« Respuesta #4 en: 15 de Abril de 2010, 23:12:41 »
write_program_eeprom() es para guardar en la Memoria EEProm de tu Pic, em la Flash esta grabado el codigo fuente de tu Pic donde se ejecutan las instrucciones

No.

Esa instrucción sí se usa para grabar la Flash de memoria de programa donde reside el código fuente del PIC. Se usa comúnmente para actualizar firmware mediante bootloaders, por ejemplo.

Sacado desde la ayuda de CCS:

WRITE_PROGRAM_EEPROM:
Citar
Writes to the specified program EEPROM area.
See our WRITE_PROGRAM_MEMORY for more information on this function.

También está WRITE_PROGRAM_MEMORY y dice:
Citar
Writes count bytes to program memory from dataptr to address.  This function is most effective when count is a multiple of FLASH_WRITE_SIZE.  Whenever this function is about to write to a location that is a multiple of FLASH_ERASE_SIZE then an erase is performed on the whole block.

Por lo que leo la primera escribe en la EEPROM y la segunda en memoria de programa.

Entonces si es asi, ¿podria usar la memoria flash para ir guardando valores que se refrescan cada un segundo, una hora; a pesar de que recomienden guardar en bloques?)
« Última modificación: 15 de Abril de 2010, 23:17:46 por giff »
Mi blog sobre apuntes de electrónica: www.ignogantes.net

Desconectado gonz147

  • PIC10
  • *
  • Mensajes: 22
Re: Escribir el la flash del pic
« Respuesta #5 en: 16 de Abril de 2010, 14:25:48 »
finalmente desistí y guardo los valores en la eeprom, es sencillo como guardar un valor en una variable, no vale la pena renegar, de todas maneras la flash que traen los pic no es mucha como para suponer que te puede sobrar una cantidad significativa para guardar datos, si no te alcanza con la eeprom que trae conviene usar otro micro o poner memoria externa.

Yo estaba acostumbrado a los MSP430 que tienen mucha flash y ademas esta se puede manejar como si fuera una flash externa y esta bien explicado en la hoja de datos.

Salduos
Firmat - Santa Fe - Argentina

Desconectado alexmorales

  • PIC10
  • *
  • Mensajes: 6
Re:Escribir el la flash del pic
« Respuesta #6 en: 03 de Enero de 2018, 20:50:15 »
hola amigos tambien ando indagando sobre este tema ya que estoy haciendo un sistema que me envia 2 datos de 8 bits y necesito guardarlo en eeporm o en flash Curso Básico de programación Lenguaje C compilador CCS (Capitulo 3) Vídeo 1 es un video en youtube donde explican muy claro como conseguir las localidades disponibles para comenzar a grabar en la flash, en mi caso necesito concatenar esos 2 bytes y guardarlos en la flas que es de 16 its en el caso del 16f628a o guardarlos en memoria eeprom y despues crear un for que me lea de 2 en 2 para poder hacer el barrido y las comparaciones de los datos guardados con el dato que envio.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Escribir el la flash del pic
« Respuesta #7 en: 03 de Enero de 2018, 21:00:11 »
En el PIC16F628A no puede grabarse la FLASH desde el mismo programa del micro, si se puede guardar variables en la FLASH en el momento de compilacion, cada posicion de memoria tiene 14 bits, por lo cual no vas a poder guardar 16bits. Lo que vas a poder guardar si es 8 bits por cada lugar, Y seguramente sea reemplazado por RETLW los valores de la misma.

Si vas a poder guardarlo en la EEPROM, no importa si son de 16/24/32 bits, siempre se van a ir guardando de byte a byte, es decir, si tenes un entero de 16 bits, procedes a tomar los bits de menos peso y guardarlo en una posicion de memoria ( ejemplo 0x00 ) luego tomas los 8 bits de mas importancia y lo guardas en el que sigue ( 0x01 ) , para reconstruir podes hacer el paso inverso anterior, lees las 2 posicion de memoria, y usas make16 o desplazas en 8 bits al mas grande y lo sumas al mas pequeño guardandolo en una variable de 16bits.


 

anything