Autor Tema: No logro que el pic escriba en la eeprom  (Leído 4378 veces)

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

Desconectado Æneas

  • PIC10
  • *
  • Mensajes: 6
No logro que el pic escriba en la eeprom
« en: 15 de Diciembre de 2010, 16:39:42 »
Hola.. estoy trabajando en un programa y quiero que guarde ciertos datos en la eeprom cuando se corta la alimentación pero como jamás usé la eeprom hice un código sencillo a modo de prueba, el cual cito a continuación:

Código: [Seleccionar]
btfss Porta, 0x3
goto Meli
clrf PortB
bsf Status, Rp0
clrf EEAdr ;Dirección = 0
movlw 0x1
movwf EEData ;Dato a escribir = 1
bsf EECon1, WrEn ;Habilita Escritura de la EEprom

bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-

btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.

incf EEData ;Dirección = 1
incf EEAdr ;Dato a escribir = 2

bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-

btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.

incf EEData
incf EEAdr

bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-

btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.

incf EEData
incf EEAdr

bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-

btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.

bcf EECon1, WrEn ;Deshabilita escritura de la EEprom
bcf Status, Rp0 ;Vuelve al banco 0
bsf IntCon, GIE ;Habilita interrupciones generales.

Meli
(resto del código..)

La idea es que antes de comenzar a grabar apague el puerto B (el cual va a unos displays 7 segmentos), grabe los datos 1, 2, 3 y 4 en las direcciones 0 a 3 y vuelva a encender el puerto B.. y de esa manera ver el parpadeo en los displays y darme una idea del tiempo que tarda en grabar los cuatro datos en la eeprom.

El tema es que no veo absolutamente ningún parpadeo y luego de ejecutar el código vuelvo a llevar el pic al programador y al leer la memoria eeprom están todas las posiciones a 'FF', por lo que evidentemente no se grabó nada.
El código no tiene nada de innovador, lo copié de la hoja de datos del pic.

Quisiera que alguien con más experiencia me dé alguna sugerencia de por qué puede no estar funcionando..
Desde ya les agradezco cualquier aporte..
« Última modificación: 15 de Diciembre de 2010, 19:13:29 por Æneas »

Desconectado erwrow

  • PIC10
  • *
  • Mensajes: 7
Re: No logro que el pic escriba en la eeprom
« Respuesta #1 en: 31 de Diciembre de 2010, 11:01:08 »
puede ser porque no le diste tiempo a que arrancara bien todo, ya me paso una vez, proba dándole un retardo de 5ms al principio del programa

saludos

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: No logro que el pic escriba en la eeprom
« Respuesta #2 en: 19 de Enero de 2011, 19:15:21 »
Hola yo estoy tratando de hacer lo mismo con un PIC16f628a. Esoy tratando de escribir "HOLA" en las primeras porciones de la EEPROM. Este es el programa principal, con el logre escribir la H en la posicion 00h, espero te sirva:
Código: [Seleccionar]
programa
call RETARDO4MS
call RETARDO4MS
call RETARDO4MS
escribir
        bsf STATUS, RP0 ;Bank 1
movlw 00H
movwf EEADR;cargo direccion a escribir
movlw 48h
movwf EEDATA; cargo dato a escribir
        bcf STATUS, RP0 ; Bank 0
        call WhiteEEPROM
return
fin
end
Donde WhiteEEPROM es la rutina de escritura del datasheet
« Última modificación: 20 de Enero de 2011, 20:56:16 por soymoe »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: No logro que el pic escriba en la eeprom
« Respuesta #3 en: 19 de Enero de 2011, 19:36:48 »
  /Eneas, tenés mal la secuencia de escritura.

  Vos hiciste...

Código: ASM
  1. bcf     IntCon, GIE                     ;-
  2. movlw   0x55                            ; |
  3. movwf   EECon2                          ; | Código mágico
  4. movlw   0xAA                            ; |    
  5. bsf     EECon1, Wr                      ;-

  Pero deberías hacer

Código: ASM
  1. movlw 0x55
  2. movwf eecon2
  3. movlw 0xAA
  4. movwf eecon2
  5. bsf eecon1,wr

  En tu código nunca copias el valor 0xAA al registro eecon2
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Lionel

  • PIC10
  • *
  • Mensajes: 8
Re: No logro que el pic escriba en la eeprom
« Respuesta #4 en: 19 de Octubre de 2012, 21:46:09 »
Hola Gente..

Estoy teniendo problemas en el MPLAB v7.51 con este codigo:

Código: ASM
  1. EEPROMWRITE
  2. MOVFW   EEPROMADDRESS
  3.         BSF     STATUS,RP0
  4.         MOVWF   EEADR
  5.         BCF     STATUS,RP0
  6.         MOVFW   EEPROMDATA
  7.         BSF     STATUS,RP0
  8.         MOVWF   EEDATA
  9.        
  10.         BSF     EECON1,WREN     ; Habilito escritura en EEPROM.
  11.  
  12.         BCF     INTCON,GIE      ; Deshabilito Interrupciones.
  13.         BTFSC   INTCON,GIE      ; Verifico esten Deshabilitadas.
  14.         GOTO    $-2
  15.  
  16.         MOVLW   0x55    ; Escribo la Secuencia para Escritura.
  17.         MOVWF   EECON2
  18.         MOVLW   0xAA   
  19.         MOVWF   EECON2
  20.         BSF     EECON1,WR       ; Escribo el Dato.
  21.         BTFSC   EECON1,WR       ; Verifico haya terminado.
  22.         GOTO    $-1
  23.         BSF     INTCON,GIE      ; Vuelvo a Habilitar las Interrupciones.       
  24.         BCF     STATUS,RP0
  25.         RETFIE

probandolo en el MPLAB el programa queda dando vueltas verificando si se escribio el dato en la EEPROM.. Lo curioso que veo es que en la ventana File Registers en el registro EECON2 no se escribe nada. Sera ese el problema..

Perdon por haberme colado en este hilo, preferi seguirlo y no abrir otro..

Saludos..
« Última modificación: 19 de Octubre de 2012, 21:54:55 por Lionel »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: No logro que el pic escriba en la eeprom
« Respuesta #5 en: 20 de Octubre de 2012, 17:13:53 »
Lo mas probable es que la simulacion no este funcionando, prueba grabando el PIC en la realidad.

Desconectado Lionel

  • PIC10
  • *
  • Mensajes: 8
Re: No logro que el pic escriba en la eeprom
« Respuesta #6 en: 21 de Octubre de 2012, 01:56:41 »
Hola Soymoe..

Gracias por tu respuesta..

Estuviste en lo cierto, programe el PIC y en la realidad funciona de diez..

Saludos..


 

anything