Autor Tema: eeprom data write. 16f877  (Leído 1992 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado cheswik

  • PIC10
  • *
  • Mensajes: 14
eeprom data write. 16f877
« en: 05 de Junio de 2007, 07:23:10 »
Hola de nuevo

He visto en el datasheet cómo escribir en la eeprom. He hecho un programa que escriba en todas las direcciones, pero a la hora de simularlo en enl MPLAB solo escribe en la 0x00 y luego el programa se queda chequeando indefinidamente el bit wr:

   BTFSC EECON1,WR           ;1 --> ESCRITURA EN PROCESO
   GOTO $-1

¿Será debido a que el tiempo de escritura es muy grande? Si es asi..., cómo puedo simularlo
La estadística es la ciencia según la cual si una persona come dos pollos y otra ninguno, se deduce que cada una se ha comido un pollo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: eeprom data write. 16f877
« Respuesta #1 en: 05 de Junio de 2007, 10:58:41 »
checkwik el simulador tomará 4 mseg para 'grabar' el dato. 

Ahora bien, si ese tiempo te parece inadecuado, debieras buscar otro medio de almacenamiento.

Si el simulador tarda más que 4 mseg... el problema pudiera ser de tu código.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: eeprom data write. 16f877
« Respuesta #2 en: 05 de Junio de 2007, 14:42:12 »
amigo para yo simular en mplab   desabilite uno de los bits de los registros que manejan  la eeprom.

BCF   EECON1,EEPGD   ;ACCESO A LA MEMORIA DE PROGRAMA
BSF   EECON1,RD   ;INICIA EL PROCESO DE LECTURA.

BCF   EECON1,EEPGD   ;ACCESO A LA MEMORIA DE PROGRAMA
BSF   EECON1,WREN   ;HABILITO ESCRITURA DE EEPROM.

BSF   EECON1,WR   ;SE LE DA ORDEN A LA ESCRITURA.

el problema es que no recuerdo cual.

yo simulaba y la eeprom se cargaba y funcionaba correctamente ;el problema fue el momento de probar en fisico el programa no me daba. habia de habilitar de nuevo el bit que habia desabilitado.

amigo la ayuda prestada es muy confusa ya que no recuerdo el bit;provare hoy para ver.
pero a mi me funcionó perfecto.

disculpas por el enrredo.

saludos y gracias





ESCRIBIR
   BCF   STATUS,6   ;BANCO 0
   BCF   STATUS,5
   MOVF   ADDR_L,W
   BSF   STATUS,6   ;BANCO 2 SE METE EEADR LA DIRECCION
   MOVWF   EEADR      ;A LA QUE SE BA A ACCEDER.
   BCF   STATUS,6   ;BANCO CERO
   MOVF   MINUTO,W   ;SE METE EN EEDATA EL DATO A
   BSF   STATUS,6   
   MOVWF   EEDATA      ;ESCRIBIR
   BSF   STATUS,5   ;BANCO 3   
   BCF   EECON1,EEPGD   ;ACCESO A LA MEMORIA DE PROGRAMA
   BSF   EECON1,WREN   ;HABILITO ESCRITURA DE EEPROM.
   MOVLW   55H      
   MOVWF   EECON2
   MOVLW   0AAH
   MOVWF   EECON2
   BSF   EECON1,WR   ;SE LE DA ORDEN A LA ESCRITURA.
   MOVLW   B'11000000'   ;HABILITO INTERRUPCIONES.
   MOVWF   INTCON
   BCF   STATUS,6   ;BANCO 0   
   BCF   STATUS,5
RET   BTFSS   PIR2,EEIF   ;¿ESCRITURA LISTA?  SI, SALTE.
   GOTO   RET      ;NO GOTO RET
   BCF   PIR2,EEIF   ;BORRAR BIT DE PREGUTA.
   BSF   STATUS,5
   BSF   STATUS,6
   BCF   EECON1,WREN   
   BCF   STATUS,6   ;BANCO 0
   BCF   STATUS,5
   RETURN

LEER     
   BCF   STATUS,6   ;BANCO 0
   BCF   STATUS,5
   MOVF   ADDR_L,W   ;ACCEDER A LA POSICION DE LA EEPROM
   BSF   STATUS,6   ;BANCO 2
   MOVWF   EEADR      
   BSF   STATUS,5   ;BANCO 3
   BCF   EECON1,EEPGD   ;ACCESO A LA MEMORIA DE PROGRAMA
   BSF   EECON1,RD   ;INICIA EL PROCESO DE LECTURA.
   BCF   STATUS,5   ;BANCO 2
   MOVF   EEDATA,W   ;EXPLORO EL CONTENIDO DE EEPROM
   BCF   STATUS,6   ;BANCO0
   MOVWF   MINUTO      ;..........MINUTO=EEPROM
   RETURN

Desconectado cheswik

  • PIC10
  • *
  • Mensajes: 14
Re: eeprom data write. 16f877
« Respuesta #3 en: 06 de Junio de 2007, 06:35:51 »
Gracias Maunix y Microcom, el problema estaba en mi código. Usaba un registro del banco 0 como direccion (dir equ 0x23) para actualizar el registro eeadr y olvidaba cambiarme al banco 0.

Un saludo.
La estadística es la ciencia según la cual si una persona come dos pollos y otra ninguno, se deduce que cada una se ha comido un pollo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: eeprom data write. 16f877
« Respuesta #4 en: 06 de Junio de 2007, 07:13:07 »
Gracias Maunix y Microcom, el problema estaba en mi código. Usaba un registro del banco 0 como direccion (dir equ 0x23) para actualizar el registro eeadr y olvidaba cambiarme al banco 0.

Un saludo.

Bueno, me alegro que lo hayas podido resolver. 
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: eeprom data write. 16f877
« Respuesta #5 en: 07 de Junio de 2007, 16:22:02 »
cheswik TODO BIEN :-/

saludos