TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cheswik 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
-
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.
-
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
-
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.
-
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.
-
cheswik TODO BIEN :-/
saludos