Autor Tema: Wr en EEPROM y reset  (Leído 1732 veces)

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

Desconectado latch

  • PIC10
  • *
  • Mensajes: 5
Wr en EEPROM y reset
« en: 05 de Octubre de 2005, 16:42:00 »
Hola gente, q tal, estoy realizando un proyecto (en ASM) en donde se deben contar pulsos por RB1, guardar en EEPROM e ir mostrando la cantidad en un LCD. Utilizo registros por cada cifra (es decir, al llegar a d"10" un registro se debe resetear, sumar el siguiente registro y volver a empezar, y asi con todos). Hasta aca todo bien, como no puedo perder la cuenta de los pulsos que se cuentan, en cada pulso los voy guardando, pero cuando hay un reset o una desconexión de la alimentación, se graba cualquier cosa (por lo general un dato mayor a 10) y se pierde la cuenta que se tenia. Como puedo solucionar el problema?Estoy usando el 16F876A.
Espero que se entienda. Desde ya gracias.

latch-Fumador

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
RE: Wr en EEPROM y reset
« Respuesta #1 en: 06 de Octubre de 2005, 02:32:00 »
Hola latch.

No entiendo muy bien lo que quieres hacer pero... para grabar/leer cualquier dato en la eeprom del pic puedes utilizar estas funciones. Doy fé que funcionan perfectamente.

#############################################

EE_Write

bsf STATUS,RP0         ;Selecciona banco 3
bsf STATUS,RP1         ;Selecciona banco 3
bcf EECON1,EEPGD                   ; acceso a la memoria FLASH "1" o a la EEPROM "0"
bsf EECON1,WREN         ;Permiso de escritura
bcf INTCON,GIE         ;Prohibimos acceso a las interrupciones
;---------------------------------------------------------------------------
movlw   b"01010101"
movwf   EECON2
movlw   b"10101010"
movwf   EECON2         ;Secuencia establecida por Microchip
bsf     EECON1,WR         ;Orden de escritura
;---------------------------------------------------------------------------
           
bsf INTCON,GIE

bcf     EECON1,WREN                  ;Se prohibe la escritura
            
bcf     STATUS,RP1         ;Selección banco 0
bcf     STATUS,RP0         ;Selección banco 0

wait   btfss   PIR2,EEIF
   goto wait
   bcf PIR2,EEIF         

   return

#############################################

;EE_Read: Leer un byte de la EEPROM. Se supone al registro EEADR cargado con la direc-
;ción a leer. En EEDATA aparecerá el dato leído.

EE_Read         
bsf     STATUS,RP0         ; Selecciona banco 3
bsf     STATUS,RP1         ; Selecciona banco 3
bcf     EECON1,EEPGD      ; Para acceder a la memoria de DATOS
bsf     EECON1,RD         ; Orden de lectura
bcf     STATUS,RP0         ; Selecciona banco 2
bsf     STATUS,RP1         ; Selecciona banco 2
movf   EEDATA,W         ; W=EEDATA

return

#############################################

Como se utilizan???

Si queremos guardar el número 235 en la dirección 3 de la eeprom pondremos:

bsf    STATUS,RP1   ; BANCO 2
bcf    STATUS,RP0

movlw   0x03      ; Dirección 3 de la EEPROM
movwf   EEADR      

movlw   .235                         ; Guardamos el número .235
movwf   EEDATA
call   EE_Write


Justo despues del "call" tendrás en la la direccion 3 de la eeprom el 235.

Ahora aunque apagemos el pic y lo encendamos ese dato no se borrará.

Como leemos ese dato desde la eeprom???

bsf STATUS,RP1      ; BANCO 2
bcf STATUS,RP0

movlw 0x03      ; Miramos en la posicion 0x03
movwf EEADR

call EE_Read

bcf STATUS,RP1      ; Banco 0
bcf STATUS,RP0

movwf NUMERO_EEPROM

En este punto lo que tendremos guardado en "NUMERO_EEPROM" será el valor de la dirección 3 de la eeprom (el 235 que, por ejemplo, habíamos guardado antes).

Espero que te sirva de algo.

Un saludo desde Alicante.

Desconectado latch

  • PIC10
  • *
  • Mensajes: 5
RE: Wr en EEPROM y reset
« Respuesta #2 en: 06 de Octubre de 2005, 10:28:00 »
No ese no es mi problema,  leo y grabo bien la eeprom, el problema es que continuamente se van guardando datos (para no perder la cuenta), y si hay un reset o falla de alimentación se graba cualquier cosa (o sea se pierde la cuenta).
Como protejo los datos de la eeprom ante un reset o como saber por cual iba antes de que se grabe mal? Esa es mi pregunta.
Igual te agradezco la ayuda.

latch.-Fumador