Autor Tema: Lectura y escritura de eeprom 24lc256  (Leído 13718 veces)

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

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Lectura y escritura de eeprom 24lc256
« en: 01 de Octubre de 2006, 23:45:38 »
Hola Amigos:

Les posteo un codigo de PBP extraido de los ejemplos que trae el PBP, lo adapte para probarlo con un circuito que estoy realizando en el proteus, la rutina consiste en escribir las primeras 16 posiciones de la memoria y luego leerlas utilizando los comandos i2cwrite y i2cread, sucede que al simularlos no escribe y por lo tanto lee cualquier cosa. El micro es un 16f877 funcionando a 4 mhz, tanto el pin de datos como el de clock tiene una resistencia de 4,7k nu pudeo encontrar el error, el codigo es el siguiente:
   
    ' I2CREAD and I2WRITE Commands
'
' Write to the first 16 locations of an external serial EEPROM
' Read first 16 locations back and send to serial out repeatedly
' Note: for EEPROMS with byte-sized address

Include "modedefs.bas"          ' Include serial modes

             


DPIN    var     PORTD.6                 ' I2C data pin
CPIN    var     PORTD.7                 ' I2C clock pin
N0      var     byte
N1      var     byte
 

        For N0 = 0 To 15                ' Loop 16 times
                I2CWRITE DPIN,CPIN,$A0,N0,[N0]  ' Write each location's address to itself
                Pause 10                ' Delay 10ms after each write
        Next N0

loop:   For N0 = 0 To 15          ' Loop 8 times
                I2CREAD DPIN,CPIN,$A0,N0,[N1]        ' Read 2 locations in a row
                serout2 PORTB.2, 84,[N1]              ' Print 2 locations
        Next N0

        serout2 PORTB.2, 84,[13]            ' Print linefeed

        Goto loop


desde ya muchas gracias :lol:

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #1 en: 01 de Octubre de 2006, 23:53:39 »
Hola:

Tienes puestas las resistencias de pull-up en SDA y SCL?

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #2 en: 02 de Octubre de 2006, 00:11:38 »
hola:

si esta aclarado arriba en el post. (4,7k)

Gracias.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #3 en: 02 de Octubre de 2006, 01:41:19 »
Hola:

Lo siento, no me di cuenta, una cosita mas, puedes pasarme el esquema para ver si puedo resolverte el problema?

el codigo parece estar bien, a ver si con el esquema me pongo a hacer un ejemplito sencillo.

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Ahi va el esquema a ver que te parece????
« Respuesta #4 en: 02 de Octubre de 2006, 15:05:31 »
Gracias por tu atencion :) :) :)
« Última modificación: 02 de Octubre de 2006, 18:29:37 por LordLafebre »

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #5 en: 02 de Octubre de 2006, 18:32:34 »
Hola:

Para la noche lo reviso cuando salga del trabajo. (Hora Ecuador GMT -5)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #6 en: 03 de Octubre de 2006, 12:10:35 »
Hola:

Pues no me va la simulación, no se a que se deba, no me funciona ni con serout2, ni seorut, ni en el lcd, intente a poner solamente un dato en una sola posicion de memoria, y leer ese dato y tampoco me funciono, lo curioso es que es algo sencillo y que en la realidad de seguro que funciona, no habia simulado antes una eeprom en proteus, si el culpable no soy yo (de que funcione) me temo que se debe a un error de Proteus  :D , o a algo que no sepa, pero como esta deberia funcionar.

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #7 en: 03 de Octubre de 2006, 20:29:58 »
Pues si es algo raro, te cuento que estuve intentando hacerlo y como proteus me permite parar la simulacion (pause) y poder ver los datos de la eeprom, observo que nada se graba, inclusive el log de la epprom me aparecen unos warnings que no los comprendo, no hay mucha informacion en la red voy a seguir insistiendo y voy a postear los resultados.

Muchas gracias

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #8 en: 04 de Octubre de 2006, 00:11:10 »
Hola:

Ahora no me confio para nada en la simulacion de proteus, y ya no me sorprende cuando veo algo raro, no lo puedes armar para comprobar su funcionamiento en la realidad?

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #9 en: 04 de Octubre de 2006, 01:52:03 »
Bueno Amigos, les comento que ami si me salio.

Parece que olvidaron que para el 24LC256, la direccion debe ser de 16 bits.

Aca esta mi codigo
Código: [Seleccionar]
DEFINE OSC 4
DEFINE I2C_SLOW 1
Include "modedefs.bas"          ' Include serial modes
             


DPIN    var     PORTD.6                 ' I2C data pin
CPIN    var     PORTD.7                 ' I2C clock pin
N0      var     WORD
N1      var     byte
 
        N1=0
        For N0 = 0 To 15                ' Loop 16 times}
                I2CWRITE DPIN,CPIN,$A0,N0,[N1]  ' Write each location's address to itself
                Pause 10                ' Delay 10ms after each write
                N1=N1+1
        Next N0

loop:   For N0 = 0 To 15          ' Loop 8 times
                I2CREAD DPIN,CPIN,$A0,N0,[N1]        ' Read 2 locations in a row
                serout2 PORTB.2, 84,[N1]              ' Print 2 locations
        Next N0

        serout2 PORTB.2, 84,[13]            ' Print linefeed

        Goto loop

Adjunto el Codigo Fuente y Simulacion en Proteus.

Saludos

Yoel Ocmin

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #10 en: 04 de Octubre de 2006, 09:00:56 »
Muy bien Sr. Yoel_Ocmin yo no lo hubiera resuelto tan facilmente, pero que bueno que entre todos podamos resolver estos pequeños grandes inconvenientes con la ayuda de los *maestros * como ud.

La verdad que le estoy muy agradecido.

Ahora tengo una duda en el manual de PBP dice que la instruccion DEFINE I2C_SLOW 1 solo debe usarse para circuitos que usen cristales de 8 MHZ o mas, supongo que es algo que esta mal en el mismo manual porque aqui lo usó y funciona perfectamente con  4 MHZ.

Otras cosa, es la primera vez que intento simular este tipo de dispositivos con proteus y entre cada simulacion se debe ejecutar en al menu debug el comando, *reset persistent model data* pues sino queda la memoria con los datos de la simulacion anterior, lo comento para que sirva de referencia para futuras consultas de otros colegas.

Saludos a todos

Muchas gracias

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #11 en: 04 de Octubre de 2006, 10:56:49 »
Parece que olvidaron que para el 24LC256, la direccion debe ser de 16 bits.

Hola:

Pequeño detalle que se me escapó :mrgreen:

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #12 en: 04 de Octubre de 2006, 17:36:19 »
Muy bien Sr. Yoel_Ocmin yo no lo hubiera resuelto tan facilmente, pero que bueno que entre todos podamos resolver estos pequeños grandes inconvenientes con la ayuda de los *maestros * como ud.

La verdad que le estoy muy agradecido.

Ahora tengo una duda en el manual de PBP dice que la instruccion DEFINE I2C_SLOW 1 solo debe usarse para circuitos que usen cristales de 8 MHZ o mas, supongo que es algo que esta mal en el mismo manual porque aqui lo usó y funciona perfectamente con  4 MHZ.

Otras cosa, es la primera vez que intento simular este tipo de dispositivos con proteus y entre cada simulacion se debe ejecutar en al menu debug el comando, *reset persistent model data* pues sino queda la memoria con los datos de la simulacion anterior, lo comento para que sirva de referencia para futuras consultas de otros colegas.

Saludos a todos

Muchas gracias

Bueno Amigos, no me digan maestro que me lo voy a creer  :mrgreen:

Solo observe ese detalle, y procedi a comentarlo. Eso no me hace maestro, sino solo alguien que sabia algo antes que ustedes.

Otro detalle.

En el ckto que puse, Solo he verificado que los datos se almacenen, viendo la memoria interna del 24LC256.

Pero al leer los datos para mostrarlos usando:

loop:   For N0 = 0 To 15          ' Loop 8 times
                I2CREAD DPIN,CPIN,$A0,N0,[N1]   'Leemos el dato No, y lo guardamos en N1
                serout2 PORTB.2, 84,[N1]              'Mostramos serialmente el dato leido.
        Next N0

Pero, no lo he podido conseguir, he cambiado algo del codigo, para poder almacenar los datos en la memoria. y tampoco los puedo apreciar.
En este momento no tengo los cambios ya que los hize por la noche... Espero estar equivocado, y por razones del sueño... haber errado en algo....

Saludos

Yoel Ocmin

Desconectado cdlopez

  • PIC10
  • *
  • Mensajes: 39
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #13 en: 06 de Octubre de 2006, 00:06:21 »
Tampoco yo puedo leer en la pantalla de la terminal de proteus el dato leido, solo veo algunos simbolos extraños en la pantalla, supongo que estara el problema en la representacion de los datos en formto Hexa

voy a seguir probando.

Saludos

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Lectura y escritura de eeprom 24lc256
« Respuesta #14 en: 06 de Octubre de 2006, 10:53:14 »
Tal parece que es un fallo de Proteus.

Lo pude comprobar, con el ejemplo del libro Pic16f84A

http://personales.ya.com/cepalacios/Proteus.htm#Proteus_Capitulo_22

Pueden ver que no lee, o en todo caso siempre que lee lo hace con 0x7F

Veremos si se puede solucionar esto.

bytes.

Yoel


 

anything