Hola a todos, aunque soy nuevo usuario hace bastante tiempo que he venido resolviendo dudas a traves de los mensajes de los foros que he leido; por dicha razón decidí registrarme y colaborar en lo que pueda. Sin embargo empiezo por comentar un problema que tengo:
Actualmente intento programar un Pic que basicamente debe monitorear, controlar y registrar T° y HR en un galpón, el sistema debe "saber" la fecha y la hora para determinar en que dia de produccion se tienen los pollos y de acuerdo a este dato debe controlar unos ventiladores y unos calefactores;.............. además debe (y es la parte donde en este momento tengo un problema) cada quince minutos almacenar fecha, hora, valor de T° y valor de HR que deben ser guardados en un PC, sin embargo y dado que el PC no estará conectado siempre la idea es que mientras el PC se encuentra conectado los datos se almacenan directamente en el, y cuando no lo esté, los datos se almacenaran en el Pic para que cuando el Pc sea encendido pasen al disco duro.
En mis calculos debo almacenar los datos en la memoria FLASH (por que la EEPROM no me alcanza), a modo de prueba he escrito unos datos en unas direcciones y cuando voy a leer en una de esas direcciones el Pic me muestra la direccion mas no el dato guardado en ella. La verdad es que es la primera vez que uso la opción de almacenar en memoria y no se en que estoy fallando asi es que agradecería mucho su colaboración,
..............y desde luego en lo que yo pueda ayudar aqui estaré.
Anexo el codigo correspondiente a la parte de lectura y escritura en Flash, esta en asm porque con el lenguaje C no es que me vaya muy bien
;--------------------------- LECTURA DE UN DATO EN FLASH ------------------------------;
LEER_FLASH bsf STATUS,RP1 ; Selección del Banco 2
bcf STATUS,RP0
movf DIRECCION_H_L,W ; Se introduce en EEADRH la parte alta de la dirección
movwf EEADRH ; a leer
movf DIRECCION_L_L,W ; Se introduce en EEADRH la parte baja de la dirección
movwf EEADR ; a leer
bsf STATUS,RP0 ; Selección del Banco 3
bsf EECON1,EEPGD ; Se selecciona el acceso a la memoria FLASH
bsf EECON1,RD ; Se da la orden de leer.
nop ; Se tarda 3 ciclos en tener el dato por lo que cualquier
nop ; instruccion es ignorada
nop
bcf STATUS,RP0 ; Se pasa al banco 2
movf EEDATA,W ; Se lee el dato, solo los 8 bits de menor peso ya que los
movwf DATO_LEIDO ; datos son de 1 Byte, por eso no se usa EEDATAH
return