Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

¿y ahora como grabo la eeprom?

Iniciado por YO, Octubre 21, 2015, 12:11:40 PM

Tema anterior - Siguiente tema

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

YO

Hola Amigos!
Me encuentro con algo que no se como manejarlo, desde siempre, cada vez que tenía que cargar datos en la eeprom del Pic lo hacía desde el ICprog, antes de grabar el micro cargaba los datos en la misma pantalla del IC y luego se grababa todo, programa y eeprom juntos de una sola vez.
Desde que tengo el programador nuevo no tengo esa opción, pensé que lo podía hacer desde el MPLab y comencé a buscar por donde.
Encontré que haciendo el camino view -> EEPROM, entraba en la pantalla de información de la misma y que le podía cargar datos. Pensé que ya tenía solucionado el tema, pero esos datos ni los puedo guardar ni cargar en el Pic.
Nunca antes lo había hecho desde el MPLab.  dudo:
Se agradecen datos orientativos que me puedan tirar para lograr el estúpido objetivo de grabar mi Pic, o para decirlo de otra manera, el estúpido agradece vuestra ayuda  >:[[
Sin saber que era imposible El fue y lo hizo

HJ

#1
Hola YO, podes agregarlo los datos en la eeprom dentro del mismo programa, como menciono en el siguiente artículo que escribí en otro Foro
enlace

Cualquier duda pegunte nomas...

Saludos

YO

Gracias HJ !!
Ya lo encontrè, ahora a traducir e insertarlo en Jal
Lo voy a implementar y despuès te comento   ok! ok!
Sin saber que era imposible El fue y lo hizo

YO

No, definitivamente no es lo que busco, porque los datos los tengo que poner en la EEPROM al momento de programar el Pic, así cuando arranca el programa, toma los datos guardados previamente y los utiliza.
Ej.:
En un uso anterior seteo algunos valores y los guardo en eeprom, desconecto el dispositivo.
En un uso posterior, inicialmente descargo los valores previamente seteados y los utilizo o modifico.

Si al comenzar el programa cargo la eeprom con un valor determinado, tendría que hacer una rutina de comparaciones entre lo ya guardado (en una dirección diferente) y lo que acabo de grabar. Entonces si lo ya grabado es 0x0000, tomo el valor que acabo de grabar y lo utilizo, de lo contrario, uso el de la otra dirección ya grabada.

Es solo un poco de código que en Jal se hace muy facil, pero es menos espacio de memoria, y si lo puedo hacer desde el MPLab o del grabador como lo hacía antes, ya soluciono el tema.

Lo que no entiendo, es que el MPLab me deja entrar en la ventana de la eeprom y cambiarle los datos, pero no se como los puedo compilar para grabarlos junto con la memoria de programa.
Sin saber que era imposible El fue y lo hizo

David Met

Se hace con la opción PRAGMA EEDATA.

Lamentablemente no logro entenderla pero me parece que es así:

PRAGMA EEDATA 0x20, 0x15, 0xFF

La grabación comienza desde la posición 0 de la EEPROM. El manual de JALv2 dice:

CitarFormat:
PRAGMA EEDATA expr;[','expr;1...]
Places data into the EEPROM (defined with PRAGMA EEPROM..). The first time this statement is
executed, the data are placed into location 0 of the EEPROM. Each time after the data are placed in
consecutive locations.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Gracias David ésto es útil pero no es lo que necesito, pues sigue estando dentro del programa y no antes de quemarlo en el pic.

Investigando descubrí que mi grabador tiene dos opciones de grabar, lo puede hacer directamente vinculandolo al proyecto (es lo que hago) o puede utilizar el software del pikit 2 y desde alli si se puede programar la eeprom.

Gracias a todos!
Sin saber que era imposible El fue y lo hizo

HJ

Hola YO.

No se si entendí tu problema, pero suelo hacer lo siguiente:

1)Priemer procedimiento.
En el código tengo la programación de fábrica, por así llamarlo, en forma de codigo.
El programa, lo primero que hace es leer una posición determinada de la eeprom y ver si su contenido e uno esperado, por ejemplo en la posición 0x00 tengo guardado el valor 0xA5, entonces, al leer esa posición si el contenido es 0xA5 el programa se ejecuta normalmente, pero si no lo es, grabo en la eeprom los datos necesarios para qui el programa funcione, incluido el 0xA5 en la posición 0x00.
Este código funciona solamente la primera vez que utilizo el programa en ese micro, si tengo que hacer modificaciones o cambiar la programación de la eeprom por defeco, varío el valor ese de testeo, me refiero al 0xA5 del ejemplo, por otro.

Este procedimiento lo utilizo cuando por circunstancias propias del programa se requiere volver a "Programación de fábrica" en tiempo de ejecución, es decir que el código a guardar en la eeprom debe estar si o si dentro del programa... O si la memoria a grabar es externa al microcontrolador.

2)Segundo procedimiento
Es solo para la EEPROM interna del microcontrolador.
En el código del programa tengo la directiva "de" con los valores requeridos en la eeprom
Cuando grabo el programa, me aseguro que este desactivada la opción de "Preservar contenido de la EEPROM" a fin de que se escriba la EEPROM con el contenido de la ventana del MPLAB
Esa ventana "EEPROM" se va ha llenar automáticamente cuando compilo el programa, y los datos con los que se carga los saca de la directiva "de" que incluimos en el código.

Cabe aclarar que la directiva "de" no utiliza memoria de programa si la dirección a la que apunta es de la eeprom (0x2100 en  los PIC1X, menos el PIC19 que está en la 0xF000, o los PIC18 que la EEPROM se encuentra en 0xF00000.

Si necesito modificar el código del programa sin alterar los datos ya guardados en la EEPROM durante un funcionamiento anterior , simplemente activo la casilla de verificación para que se preserven los datos de la EEPROM durante la nueva grabación.

El "uso" y "alcance" de esta casilla de verificación para preservar o no los datos de la EEPROM interna durante la grabación va ha variar un poco dependiendo de que "programador" estés utilizando.
Incluso, dependiendo del micro utilizado, puedes proteger parte de la memoria de programa durante la grabación, esto es lo que utilizan la mayoría del los bootloader.

Saludos
HJ

HJ

Cita de: YO en Octubre 22, 2015, 04:55:06 PM
Gracias David ésto es útil pero no es lo que necesito, pues sigue estando dentro del programa y no antes de quemarlo en el pic.

Investigando descubrí que mi grabador tiene dos opciones de grabar, lo puede hacer directamente vinculandolo al proyecto (es lo que hago) o puede utilizar el software del pikit 2 y desde alli si se puede programar la eeprom.

Gracias a todos!
fíjate entonces el segundo procedimiento que menciono.

Cabe aclarar que si no deseas utilizar la directiva "de", puedes cargarlos a mano en la ventana "EEPROM", uno por uno.
Compilar el programa, asegurándote de no tener activa da preservación del contenido de la EEPROM y listo, ya puede grabar desde el mismo MPLAB, por lo menos así de fácil es con el ASM.
Por supuesto que si cierras el MPLAB y no has utilizado la directiva "de" entonces tendrás que volver a cargar a mano los datos que necesitas en la eeprom.

Saludos

HJ

Como para agregar algo mas con respecto a la directiva "de" dir{e que se utiliza mucho para crear tablas de salto dentro de la mima memoria de programa, consumiendo muy poco espacio, sobretodo en los PIC18 donde la memoria de programa es de 16 bits y los datos de 8 bits, con la directiva "de" puedes poner dos datos de una tabla en una sola posición de la memoria de programa, mientras que si utilizas la instrucción  retlw (valor) solamente puedes poner un solo dato por posición de memoria de programa utilizado.

Saludos
HJ

P.D: Aguante el ASM carajo!!!!....

YO

Hola HJ

Al principio del hilo puse:

CitarEncontré que haciendo el camino view -> EEPROM, entraba en la pantalla de información de la misma y que le podía cargar datos. Pensé que ya tenía solucionado el tema, pero esos datos ni los puedo guardar ni cargar en el Pic.

Después de leer ésto......:

CitarCabe aclarar que si no deseas utilizar la directiva "de", puedes cargarlos a mano en la ventana "EEPROM", uno por uno.
Compilar el programa, asegurándote de no tener activa da preservación del contenido de la EEPROM y listo, ya puede grabar desde el mismo MPLAB, por lo menos así de fácil es con el ASM.
Por supuesto que si cierras el MPLAB y no has utilizado la directiva "de" entonces tendrás que volver a cargar a mano los datos que necesitas en la eeprom.

.........me queda claro que iba por buen camino, me queda claro porqué no queda guardado cuando cierro el mplab, y me queda claro que lo que cargo a mano, no se graba en el 18f4620 después de compilar sin errores.

Seguramente es como decís vos, un tema entre el compilador el programador y el que programa  >:[|
Sin saber que era imposible El fue y lo hizo

HJ

#10
Hola YO, hay una manera de guardar y luego recuperar los datos desde la ventana de la EEPROM.
Debes seleccionar el doble cero "00" que hay bajo la palabra Address, esto es fundamental para que el archivo sea completo, sino te lo toma desde donde te pares con el ratón, luego haces clic derecho y seleccionas importar o exportar a un archivo.
Lo del 00 es muy importante tanto al exportar como al importar.



Saludos
HJ

HJ

#11
Cita de: YO en Octubre 23, 2015, 08:14:12 AM
y me queda claro que lo que cargo a mano, no se graba en el 18f4620 después de compilar sin errores.

Debería grabarse en el PIC por mas que lo cargues a mano.
Asegúrate de seleccionar correctamente lo de preservar los datos de la EEPROM, en tu caso NO QUIERES PRESERVAR los datos que ya tiene grabados en le EEPROM interna del micro... y eso se selecciona como muestro en las imágenes con dos de los programadores que utilizo mas ha menudo, el del PICkit2 y el del ICD3,el del PICkit3 no lo muestro porque es exactamente idéntico al del ICD3





En otro programadores, como el MPLAB PM3 las ventanas son muy diferentes, pero las opciones son siempre las mismas.

Saludos
HJ

YO

Que buenos datos HJ
Te lo agradezco mucho
¿como llegaste a la ventana del pickit 2 ? ¿tenes cargado algún programa que venga con el programador o lo sacas del mplab.?
porque parece que yo no tengo ningún programa para entrar al pickit2 y configurar algo.
Sin saber que era imposible El fue y lo hizo

HJ

#13
Cita de: YO en Octubre 23, 2015, 04:33:46 PM
¿como llegaste a la ventana del pickit 2 ? ¿tenes cargado algún programa que venga con el programador o lo sacas del mplab.?
porque parece que yo no tengo ningún programa para entrar al pickit2 y configurar algo.
No, esas ventanas son desde dentro del mismo MPLAB.
Accedes desde la barra del Menú:Programmer\Setting,,,

Saludos
HJ