Leer el programa de un PIC, Duda con la EEPROM....

Hola Amigos,

Tengo una duda acerca de la EEPROM.

Tengo un programa para un PIC que realiza prodedimientos y guarda los resultados en la EEPROM. Hasta ahi todo ok.
Mi pregunta es: cuando lea el programa del PIC (obviamente sin el CODE PROTECT), los datos grabados en la eeprom durante su uso, tambien seran leidos? y si ese programa leido lo vuelvo a quemar a otro pic, los datos de la eeprom seran grabados tambien del otro pic?

Por favor, alguien que haya experimentado esto quiteme esa duda.

Muchas Gracias


Andrew.
 
se pueden leer y copiarlos a otro pic.
hay pic que te permiten seleccionar la proteccion del codigo del area de programa o de la eeprom, o las dos.
 
cuando lees el pic desde un programador utilizando un soft como por ejemplo el winpic800 hay 2 ventanas donde en 1 aparece el programa del pic y en la otra ventana aparece el contenido de la eeprom. el programa te la opción de guardar el programa del pic que ya incluye los datos de la eeprom
 
Uso PIC16F84 y el soft es WINPIC800.

Pero, bueno, mi pregunsta era generica... el caso para todos lo pic y todos los grabadores...

Mi idea es la siguente:

Hacer un progama cono cualquier programador lo hace, luego adiconalmente hacer un pequeno sub-programita o rutina que corra solo una unica vez cuando se encienda el pic, las otras veces que se vuelva a encender el pic ya no se ejecute este programita y corra el programa incial. Para hacer esto estoy pensando usar la eeprom para guardar datos de inicializacion del programita. Ahora el inconveniente que veo es que si se hace un copy de pic a pic del programa, este copy llevara consigo los datos de la eeprom y cuando se encienda el pic copiado (el clonado) este ya no ejecutara el sub_programa o rutina que en un primer momento de encendido deberia ejecutarse, esto a causa de que el copy llevo consigo los datos de la eeprom.

Bueno espero no haber dado tanta vuelta a la explicaion y se haya podido comprender algo... :)

Espero comentarios y sugerencias...

Muchas Gracias.


Andrew.
 
janvama, lo más práctico que puedes hacer es utilizar un PIC como muestra de clonación, es decir, utilizar un PIC no operativo para clonar a otros. Los más básicos solo traen protección para la memoria Flash y no para la EEPROM. La otra sería que en el WINPIC borraras los datos de la EEPROM antes de grabarla en otro PIC.
Saludos
 
Hola Meta,

Creo entender, pero una consulta: Es verdad que no es posible trabajar con el sector de memoria 2000h y 3FFFh por el usuario? y si es asi, como podria cargar datos indirectamente en la 2007h?
quizas es tonteria mi pregunta, pero la verdad que me suena interesante. Si te es posible dame una mano.

Gracias.

Andrew.
 
Al menos en el 16F84A, supongamos que usas ese.

Pones ORG 2007.

Después DE que significa DATA EEPROM (La EEPROM interna). Al final debes poner "Hola", 0x00 que significa el final del DE.

DE "Esto es una prueba", 0x00
 
Janvama,
Lo que propone Meta no está mal del todo. Lo que lamentablemente sucedería es el mismo problema que te has planteado desde el principio, ya que si trataras de clonar un PIC que ha modificado su EEPROM a otro PIC virgen, la rutina jamas corriera porque la sentencia que necesitas para grabar los primeros datos en la EEPROM detectaría siempre que ya ha sido realizada.
Haz un poco de lógica y te darás cuenta que lo que digo es correcto. Una opción sería la de modificar un valor de la Flash interna, pero si el PIC no te lo permite no hay de otra más que borrar manualmente los datos de la EEPROM desde el WINPIC.
Saludos
 
Hola Ericklarva,

Veo que me sigues con lo que trato de hacer, que bueno. Con respecto a lo que dice Meta, me parece que hay algo interesante que se puede realizar solo que esta complicado entender, pero es posible.... estoy en eso.
Ahora con respecto a modificar algo de la Flash, bueno eso seria facil pero para hacer eso tendria que ejecutarde algo en el programa y generarse un valor en la flash... esto lleva aque volvemos al punto de que si hacemos el copy del programa a otro pic virgen entonces va a suceder lo mismo y volvemos al problema inicial... no se si comprendi lo que dijiste o a que tipo de modificacion de la flash te referias?

seguire inetntando...


Saludos,

Andrew.
 
Código:
;************************************ EEPROM_04.asm **********************************
;
;	====================================================================
;	  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS".
;	  E. Palacios, F. Remiro y L. López.		[url]www.pic16f84a.com[/url]
; 	  Editorial Ra-Ma.  [url]www.ra-ma.es[/url]
;	====================================================================
;
; Programa para grabar una frase en la EEPROM.

; ZONA DE DATOS **********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

	CBLOCK   0x0C
	ENDC

	ORG	0x2100				; Corresponde a la dirección 0 de la zona EEPROM
							; de datos.
	DE	"Programa EEPROM_04.asm. Version 2.5. 15-08-2003", 0x00


; ZONA DE CÓDIGOS ********************************************************************

	ORG 	0
Inicio
	sleep
	goto	Inicio
	
	END

;	====================================================================
;	  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS".
;	  E. Palacios, F. Remiro y L. López.		[url]www.pic16f84a.com[/url]
; 	  Editorial Ra-Ma.  [url]www.ra-ma.es[/url]
;	====================================================================
 
:LOL: tienes razón janvama, error de interpretación. Sigo insistiendo en que lo mejor es editar los valores desde el WINPIC o en su caso clonar siempre con un PIC para este fin.
Pensando en otra cosa, sabes que igual se puede hacer, editar una sentencia con un PIN exterior del PIC.
Es decir, que para borrar la EEPROM cortocircuites un PIN específico y corras un subprograma que lo haga.
Sería una buena opción, no te parece?
Saludos
 
Bien, ahora que volvi de viaje podre hacer algunas pruebas con las ideas prestadas.... Tambien es buena idea de hacerlo por una interaccion externa asi como dice Ericklarva.... bueno estare intentando.

Gracias,

Andrew
 
Atrás
Arriba