TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: MAXI en 27 de Noviembre de 2009, 21:55:27
-
Hola muchachos:
tengo problemas con la lectura y escritura de la eeprom :shock:
el codigo que utilizo es el sig:
;===========================================================================
; ESCRIBE FALLA
;===========================================================================
escrfalla ;graba con1 y 2 en eeprom
movwf DDATO
movlw 0x00
call ESCRIBE
return
;===========================================================================
; COMPRUEBA FALLAS EN EEPROM
;===========================================================================
leefalla movlw 0x00 ;lee si hubo fallas
call LeerEE
return
;===========================================================================
; LECTURA DE EEPROM
;===========================================================================
LeerEE
bsf STATUS,RP1 ;; LEE E2
bcf STATUS,RP0
movwf EEADR ;DIR DE MEMORIA
bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,RD
nop
nop
bcf STATUS,RP0
movf EEDATA,W
bcf STATUS,RP1
movwf DDATO ;DATO
return
;===========================================================================
; ESCRITURA DE EEPROM
;===========================================================================
ESCRIBE
bcf STATUS,RP0
bsf STATUS,RP1 ;;
movwf EEADR
movf DDATO,W
;
movwf EEDATA
bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,WREN
movlw 0x55
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR
Etiqueta2 btfsc EECON1,1
goto Etiqueta2
bcf EECON1,WREN
bcf STATUS,RP1
bcf STATUS,RP0
return
Agradeceria un ayuda, porque ya me supero.... :5]
Se que el tema de la eeprom esta tratado en varios hilos, pero no vi del pic16f870.
Si alguno ya vio alguin hilo igual a este, agradeceria me lo posteen.
saludos
-
Gente, estoy como los locos, me pregunto y me contesto solo. jajaja. Ya encontre el problema, estaba en el codigo estaba pisando la dirección de escritura con otro dato. :mrgreen:
Pido disculpas, por suerte ya lo encontre.
Saludos
-
Hola Maxi, tengo entendido que ya solucionaste tu problema de escritura en la memory data. Podrás ayudarme con el mío ??? Tengo la rutina de escritura para el 16f870, sin embargo se queda pegado en el loop_1. Mi rutira es la siguiente:
write_data bsf STATUS,RP1
bsf STATUS, RP0 ;cambiamos a banco1
movf address,W
movwf EEADR
movf data,W
movwf EEDATA
bcf EECON1,EEPGD ;habilita acceso a memoria de DATOS
bsf EECON1, WREN ;permite ciclo de escritura
movlw 0x55 ;inicio de secuencia de seguridad
movwf EECON2
movlw 0xAA
movwf EECON2 ;fin secuencia de seguridad
bsf EECON1,WR ;Inicia ciclo de escritura
loop_1 btfsc EECON1,WR ;espera por finalizar
goto loop_1 ;la escritura
bcf STATUS,RP0 ;regresamos al banco0
bcf EECON1,WREN ;Inhibe escritura en la EEPROM
return
de antemano gracias por tu ayuda
krostby
-
krostby:
Tengo que pedirte ,mil disculpas por no responderte, hace un monton de tiempo que no entro al foro, por cuestiones laborales. Pudiste solucionar tu problema?. En la linea :
loop_1 btfsc EECON1,WR ;espera por finalizar
goto loop_1 ;la escritura
utiliza un 1 en vez de WR y prueba.
Mil disculpas por no contestar antes