Autor Tema: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*  (Leído 12936 veces)

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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #15 en: 15 de Enero de 2014, 17:14:08 »
Si Diego se entiende tu concepto, yo me refería al comentario que hizo Bruno acerca de la empresa donde trabajo ...


Si. Era para una fábrica de autos de Argentina. El tiempo estimado de vida era entre 9 y 12 meses, debido al uso de la FLASH como RAM...



 :shock:  :shock:  :shock: Después de eso tenías que cambiar el coche ??? :D  :D  :D

Quien fue el craneo que se le ocurrio esa idea ?  :2]



Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #16 en: 15 de Enero de 2014, 20:08:14 »
flash como ram?? Eso no me cuadra, la flash es bastante mas lenta para utilizarla como ram que cualquier otra opcion, incluso una flash externa

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #17 en: 15 de Enero de 2014, 23:09:56 »
Si Diego se entiende tu concepto, yo me refería al comentario que hizo Bruno acerca de la empresa donde trabajo ...


Si. Era para una fábrica de autos de Argentina. El tiempo estimado de vida era entre 9 y 12 meses, debido al uso de la FLASH como RAM...



 :shock:  :shock:  :shock: Después de eso tenías que cambiar el coche ??? :D  :D  :D

Quien fue el craneo que se le ocurrio esa idea ?  :2]

flash como ram?? Eso no me cuadra, la flash es bastante mas lenta para utilizarla como ram que cualquier otra opcion, incluso una flash externa

No era para el auto en sí. Era para unos tableros que usaban los operarios en la fábrica... Sí, claro que era más lenta, pero los valores se grababan sólo un par de veces al día a lo sumo. No recuerdo los detalles exáctos pero sí sé que paginaban la RAM en ROM porque sino no alcanzaba la RAM del uC.

Saludos!!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #18 en: 16 de Enero de 2014, 08:18:50 »
Y no hubiese sido mas sencillo buscarse una MCU con mas RAM  :D :D

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #19 en: 17 de Enero de 2014, 13:24:34 »
Y no hubiese sido mas sencillo buscarse una MCU con mas RAM  :D :D

Pues cuando ingresé a la empresa ya había 300 tableros funcionando en fábrica y además mis ordenes eran desarrollar con lo que ya había.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #20 en: 17 de Enero de 2014, 14:10:04 »
Podes comentar mas sobre que hacen esos tableros?? :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #21 en: 21 de Enero de 2014, 12:17:52 »
Algunos eran tableros por RF que manejaban en cadena de producción los operarios para control de stock y pedido de repuestos. Otros eran estilo beepers RF para los encargados de depósito y repartidores de repuestos, etc. Había de todo un poco.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #22 en: 05 de Enero de 2017, 14:26:51 »
hola, una consulta, ya he podido guardar datos en la memoria de programa del pic 18f452, pero al momento de reescribirlo con otros datos o mejor dicho hacer una actualizacion de datos, no se guardan bien!

a que se debera esto?

saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #23 en: 05 de Enero de 2017, 17:53:03 »
hola, una consulta, ya he podido guardar datos en la memoria de programa del pic 18f452, pero al momento de reescribirlo con otros datos o mejor dicho hacer una actualizacion de datos, no se guardan bien!

a que se debera esto?

saludos

¿Algun codigo simple estas probando?
Te pido algo simple que probaste para saber si no es algun problema de programacion, cuando me refiero a simple, es solo probar que se grabo correctamente el dato y listo. Y por otro lado, estamos hablando de en fisico o en una simulacion?

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #24 en: 05 de Enero de 2017, 18:28:05 »
si aqui esta:
#include <18f452.h>

#fuses hs,nowdt,noprotect,nowrt,nocpb,nowrtb,nocpd,noebtr,noebtrb
#use delay(clock=20M)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)

#define CK_FLASH_END       (getenv("PROGRAM_MEMORY")-1)     
#define CK_FLASH_PAGE_SIZE (getenv("FLASH_ERASE_SIZE")/2)
#define CK_NUM_PAGES (CK_FLASH_END/CK_FLASH_PAGE_SIZE)
 
#define CK_USER_PAGE (CK_FLASH_PAGE_SIZE*(CK_NUM_PAGES-1))
 
#org 28680,CK_FLASH_END {}


void main(){
   int16 i;
   int16 j;
   unsigned int8 read_data[56];
   unsigned int8 read_data2[56];
   
   for(i=0;i<56;i++){
      read_data =i;
      read_Data2 =i+1;
   }



   //aqui grabo los datos
   write_program_memory(28680,read_data,56);
   read_program_memory(28680,read_data,56);
   
   //aqui borro los datos y grabo otra vez los datos
   erase_program_eeprom(28680);
   write_program_memory(28680,read_data2,56);
   read_program_memory(28680,read_data2,56);
   
   delay_ms(10);
   
   for(i=0;i<56;i++)
      printf("%u\r\n",read_data2);
}


pasa lo siguiente, guardo los datos en una posicion y graba correctamente.
el problema viene cuando quiero guardar otros datos en la misma posicion, lo borro con la funcion erase_program_eeprom(), y lo vuelvo a grabar , pero ocurre que ya no graba sino que todo el bloque de memoria reservado se pone a 255.
es en simulacion, en proteus, ahi pude observar el estado de la memoria de programa


« Última modificación: 05 de Enero de 2017, 18:35:09 por micronet3 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #25 en: 05 de Enero de 2017, 18:40:34 »
Si hiciste todo el calculo anterior (Para usar la ultima pagina de la FLASH)... es decir todo esto:

Código: C
  1. #define CK_FLASH_END       (getenv("PROGRAM_MEMORY")-1)      
  2. #define CK_FLASH_PAGE_SIZE (getenv("FLASH_ERASE_SIZE")/2)
  3. #define CK_NUM_PAGES (CK_FLASH_END/CK_FLASH_PAGE_SIZE)
  4.  
  5. #define CK_USER_PAGE (CK_FLASH_PAGE_SIZE*(CK_NUM_PAGES-1))

Para encontrar que direccion de memoria seria donde deberias guardar. Por que luego haces esto:

Código: C
  1. #org 28680,CK_FLASH_END {}

Es decir, por que pondrias un valor fijo... Probaste usando :

Código: C
  1. #org CK_USER_PAGE,CK_FLASH_END {}

Y luego en los write y read

Código: C
  1. xxxxx_program_memory(CK_USER_PAGE,read_data,56);

De todas formas pienso que deberia funcionar.. O tal ves la direccion que le estas dando, al grabar supera la pagina, y como no fue borrado anteriormente te trae problemas.
« Última modificación: 05 de Enero de 2017, 18:49:28 por KILLERJC »

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #26 en: 05 de Enero de 2017, 19:58:18 »
En dos horas regreso a mi búnker y pruebo lo que me sugieres
Gracias!

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #27 en: 05 de Enero de 2017, 23:51:05 »
Saludos KILLER, mira hice lo que me sugeristes y asi no graba nada, al momento de la lectura muestra 255, mmm parece que por ahi viene el problema!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #28 en: 07 de Enero de 2017, 07:44:03 »
Bueno, lo unico que veo es que no se esta borrando antes de escribir la primera vez


   //aqui grabo los datos
   write_program_memory(28680,read_data,56);
   read_program_memory(28680,read_data,56);
   

El cual funcionaria luego de grabarse, pero no luego del primer run del programa.
La verdad no se por que no funciona, no se si lo estas probando en fisico o en simulacion.
Tampoco veo un loop infinito, asi que se puede haber ejecutado muchas veces y qquemado la Flash.
La unica que me queda es que me pases el .hex, asi la paso a ASM y ahi reviso que esta haciendo.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:¿¿¿ write_program_memory() mas complejo de lo que parece ??? *SOLUCIONADO*
« Respuesta #29 en: 09 de Enero de 2017, 19:20:21 »
nome funciona todavia killeric, este proyecto lo estoy dejando por ahora porque se mepresento una urgencia en el trabajo, pero lovoy a retomar y les comentare


 

anything