Autor Tema: Dudas haciendo mi propio clonador de memorias EEPROM  (Leído 3660 veces)

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

Desconectado esperanzachat

  • PIC10
  • *
  • Mensajes: 39
Dudas haciendo mi propio clonador de memorias EEPROM
« en: 19 de Abril de 2019, 16:28:03 »
Hola a  todos, estoy tratando de emular a la gente que mas sabe en este foro, es por ello que quiero hacer mi propia version del clonador:
http://www.todopic.com.ar/foros/index.php?topic=45621.0
Mi duda viendo el circuito, es como puede tener dos puertos i2c en un mismo micro?, alguien me puede desasmar en eso?. Gracias de antemano.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #1 en: 19 de Abril de 2019, 16:33:50 »
Citar
como puede tener dos puertos i2c en un mismo micro?

2 opciones:

La primera es tener uno por software, y otro por hardware.

La segunda es encontrar un micro con 2 por hardware.

No doy la opcion de 2 por software, porque ya los micros tienen 1.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #2 en: 19 de Abril de 2019, 16:56:49 »
Que tal esperanzachat,

En realidad lo que estoy usando es puertos I2C por software, eso es algo que me permite hacer el PIC Basic Pro de una manera muy simple, además de que el microcontrolador que estoy usando no contiene puertos I2C por hardware. Si miras el código fuente te darás cuenta de eso muy fácilmente. Si tienes preguntas no dudes en hacerlas.

elreypic.
« Última modificación: 19 de Abril de 2019, 17:06:34 por elreypic2 »

Desconectado esperanzachat

  • PIC10
  • *
  • Mensajes: 39
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #3 en: 22 de Abril de 2019, 23:09:11 »
Agradezco las respuestas. Yo pensaba usar un pic barato como un pic16f628a  o similar, usaria i2c por software y mi idea era hacer lo siguiente:
1-poner las direcciones a0,a1,a2 a masa.
2-Para hacer la lectura de la memoria original, deshabilitar la alimentacion de la memoria destino y hacer la lectura de un dato de la memoria original.
3-Para grabar la memoria destino, deshabilitar la alimentacion de la memoria origen y hacer la grabacion
4-continuar asi hasta hacer la copia de la memoria.
Esa es la propuesta que se me ocurre es desde las colinas de mi ignorancia.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 561
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #4 en: 23 de Abril de 2019, 07:25:33 »
Hola, las direcciones A0, A1 y A2, sirve para designar una dirección a 8 posibles memorias en éste caso, en la misma línea I2C.
Luego por software direccionas la que deseas.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #5 en: 23 de Abril de 2019, 10:56:08 »
Agradezco las respuestas. Yo pensaba usar un pic barato como un pic16f628a  o similar, usaria i2c por software y mi idea era hacer lo siguiente:
1-poner las direcciones a0,a1,a2 a masa.
2-Para hacer la lectura de la memoria original, deshabilitar la alimentacion de la memoria destino y hacer la lectura de un dato de la memoria original.
3-Para grabar la memoria destino, deshabilitar la alimentacion de la memoria origen y hacer la grabacion
4-continuar asi hasta hacer la copia de la memoria.
Esa es la propuesta que se me ocurre es desde las colinas de mi ignorancia.

Si quitas vdd a una memoria conectada a una línea I2c, va a pasar que el voltaje pullup se va a intentar drenar por los diodos de protección a vdd provocando problemas en la línea.

 A parte, esa memoria podría quedar con uno o los dos puertos scl/sda puesto a tierra. Su funcionamiento sería impredecible e inestable.

  Usa las direcciones A2,A1,A0 que para eso están y encima te ahorras el segundo puerto I2c.

  Con un solo puerto I2c puedes conectar 8 memorias como estas y hacer todas las operaciones que quieras de forma secuencias. Es decir, puedes leer un dato en la memoria 3 y luego grabarlo en la memoria 8 desde y hacia las direcciones de memoria que quieras.

Desconectado esperanzachat

  • PIC10
  • *
  • Mensajes: 39
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #6 en: 23 de Abril de 2019, 13:31:16 »
Entiendo que los pines A0,A1 y A2 sirven para direccionar las memorias, pero que pasa por ejemplo en el caso del las memorias 24C00/24C01 donde esos pines no existen o faltan algunos?

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 561
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #7 en: 23 de Abril de 2019, 15:52:20 »
Para esos casos, cómo habrás visto en programadores de memorias y demás, NO existe un único zócalo.
Sólo tienes que avisarle al programa que gestione la grabación o lectura, sobre que dispositivo tiene conectado.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #8 en: 24 de Abril de 2019, 10:26:10 »
Entiendo que los pines A0,A1 y A2 sirven para direccionar las memorias, pero que pasa por ejemplo en el caso del las memorias 24C00/24C01 donde esos pines no existen o faltan algunos?

Para este caso puedes resolverlo mediante varias opciones.

1) Usar un swith analógico para desconectar el bus I2C de una memoria y la otra.
2) Controlando la alimentación de las memorias, así mientras trabajas con una la otra está desactivada (pueden existir algunos problemas, serian cuestion de probar). Yo no he encontrado una hoja de datos que diga que los pines de SCL y SDA contengan algún diodo hacia VDD, pero si es el caso, entonces esta opción quedaría descartada.
3) Usar un 2-Channel I2C bus multiplexer como el PCA9540B. Esta sería una opción muy elegante. Ya que conesta opción puedes multiplexar dos buses I2C, de esta manera en un bus tienes la memoria fuente y en el otro bus tienes la memoria destino. ES como crear dos buses I2C por hardware. Echale una mirada.

Espero haberte podido ayudar con tus dudas.

elreypic.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #9 en: 24 de Abril de 2019, 14:46:42 »
Entiendo que los pines A0,A1 y A2 sirven para direccionar las memorias, pero que pasa por ejemplo en el caso del las memorias 24C00/24C01 donde esos pines no existen o faltan algunos?

Para este caso puedes resolverlo mediante varias opciones.

1) Usar un swith analógico para desconectar el bus I2C de una memoria y la otra.
2) Controlando la alimentación de las memorias, así mientras trabajas con una la otra está desactivada (pueden existir algunos problemas, serian cuestion de probar). Yo no he encontrado una hoja de datos que diga que los pines de SCL y SDA contengan algún diodo hacia VDD, pero si es el caso, entonces esta opción quedaría descartada.
3) Usar un 2-Channel I2C bus multiplexer como el PCA9540B. Esta sería una opción muy elegante. Ya que conesta opción puedes multiplexar dos buses I2C, de esta manera en un bus tienes la memoria fuente y en el otro bus tienes la memoria destino. ES como crear dos buses I2C por hardware. Echale una mirada.

Espero haberte podido ayudar con tus dudas.

elreypic.

En datasheet de equivalentes en Atmel de estas memorias, decía que el nivel máximo de voltaje pullup no podía ser > vdd + 0,3. 

  De todas formas no es buena idea tener un ic conectado a una línea I2c operativa sin alimentacion.
« Última modificación: 24 de Abril de 2019, 15:44:05 por remi04 »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #10 en: 30 de Abril de 2019, 11:33:24 »
Agradezco las respuestas. Yo pensaba usar un pic barato como un pic16f628a  o similar, usaria i2c por software y mi idea era hacer lo siguiente:
1-poner las direcciones a0,a1,a2 a masa.
2-Para hacer la lectura de la memoria original, deshabilitar la alimentacion de la memoria destino y hacer la lectura de un dato de la memoria original.
3-Para grabar la memoria destino, deshabilitar la alimentacion de la memoria origen y hacer la grabacion
4-continuar asi hasta hacer la copia de la memoria.
Esa es la propuesta que se me ocurre es desde las colinas de mi ignorancia.

Que tal esperanzachar,

Te comento que basado en la idea que tienes, pude realizar una pequeña prueba habilitando y deshabilitando la alimentación de las memoria fuente-destino tal como lo mencionas en tu idea. Te comento que logré con éxito el funcionamiento del copiado de la memoria 24C512. Por lo que puedo llegar a la conclusión de que es posible llevar a cabo tu idea.

También puse manos a la obra y realicé una segunda preuba usando switches analogicos, específicamente el 74HC4066, para así seleccionar una memoria u otra sobre el bus I2C, de esta manera solo usas un solo bus en lugar de dos como lo hace el proyecto original.

Si puedo hoy por la noche probaré todas las memorias en la versión de habilitado y deshabilitado de la alimentación en las memorias.

Ya te comentaré los resultados y una vez estando listo colgaré el esquemático y el código fuente. He utilizado un compilador Basic para realizar las pruebas muy rápidamente (Great Cow Basic, que es gratuito), pero obviamente se puede realizar en cualquier lenguaje como C u otros.

Saludos,

elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #11 en: 01 de Mayo de 2019, 13:50:29 »
He confirmado la operación del clonador de memorias habilitando la alimentación de forma individual, tal como sugiere esperanzachat en su idea. Es decir he modificado el firmware para dicha operación y lo realiza sin ningun problema. Ya he probado todas las memorias dese la 24C00 hasta la AT24CM01.
Hoy por la noche cuelgo los esquemáticos y los códigos fuente.

elreypic.

Desconectado esperanzachat

  • PIC10
  • *
  • Mensajes: 39
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #12 en: 01 de Mayo de 2019, 19:31:41 »
Gracias, espero los esquemas.Saludos

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #13 en: 02 de Mayo de 2019, 09:59:28 »
Pues lo prometido es deuda.

Este es el esquemático del EEPROM cloner controlando la alimentación de cada memoria para realizar su copiado:

 

* EEPROM cloner 1p2.JPG
(173.17 kB, 1090x806 - visto 375 veces)


En el archivo adjunto se encuentra el código fuente para GCB (Great Cow Basic).

Como se podrán dar cuenta, estoy usando un PIC16F648A, ya que no me fue posible reducir el código para que cupiera en un PIC16F628A.

elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Dudas haciendo mi propio clonador de memorias EEPROM
« Respuesta #14 en: 02 de Mayo de 2019, 10:09:08 »
En este otro esquemático uso switches analógicos (74HC4066) para habilitar el bus I2C de una y otra memoria.
 

* EEPROM cloner 1p1.JPG
(158.51 kB, 1241x633 - visto 344 veces)


Nuevamente en el archivo adjunto se encuentra el código fuente en GCB.

Espero que esto sea de utilidad.

elreypic.


 

anything