Autor Tema: consulta sobre memoria 24c64  (Leído 3540 veces)

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

Desconectado angel_blasfemo

  • PIC10
  • *
  • Mensajes: 9
consulta sobre memoria 24c64
« en: 05 de Julio de 2005, 00:52:00 »
hola a todos.....

mi pregunta es la siguiente......estoy ocupando una memoria i2c 24c64   y ocupando el driver del CCS(4265.C) para hacer un data logger, y se que esta almacena hasta 64kbits........ahora si almaceno en ella datos producto de la conversion de 8 bits, puedo almacenar hasta 8000 muestras(64000/8)......pero.......guarde un dato en la direccion de memoria numero "9000" y luego la visualize, lo hice para probar intencionalmente que me daria un error¡¡¡¡¡................eso si.......declare la direccion de memoria como un long int.

1.-es un error del compilador? o luego de copar su capacidad(8000 muestras) se sobreescribe asi misma?.......cualquier explicacion me podria servir.....gracias

2.- ahora si quiero conectar otra memoria igual al bus........que tendria que hacer para leerla y no confundir a la otra?

gracias¡¡¡¡¡

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: consulta sobre memoria 24c64
« Respuesta #1 en: 05 de Julio de 2005, 04:50:00 »
No se mucho, aun no toque el bus i2c practicamente (tengo la memoria en la entrenadora muerta de risa jeje, y creo que va siendo hora de aprenderlo).

Creo que en el bus i2c cada dispositivo tiene una dirección hacia la cual dirigirte.

Te importaria explicarme por encima, para que es esa librería que dices que usaste?
Si juegas contra el mejor, pierdes como los demás.

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
RE: consulta sobre memoria 24c64
« Respuesta #2 en: 05 de Julio de 2005, 04:51:00 »
Hola, 64kbits/8 = 8192, con lo cual las direcciones de memoria para esta van desde 0 hasta 8191, cualquier valor por encima que le pongas te va a dar error puesto que no existe dicha dirección de memoria. La memoria nunca cuando te pases del 8191 va a comenzar a escribit otra vez desde el principio, siempre tienes que decirle tu la posición donde quieres que escriba o lea.

Para tener 2 o mas memorias conectadas en el mismo bus tienes que asinarle una direccion de dispositivo a cada una, las memorias estas llevan tres pines con los que se configura la direccion, le puedes poner a una la direccion 0 y a otra la 1 y asi pueden compartir el bus. Tu solamente le al leer o escribir le dices en numero que le has asignado a la memoria de la que quieres hacerlo y listo.

Un saludo.

Desconectado angel_blasfemo

  • PIC10
  • *
  • Mensajes: 9
RE: consulta sobre memoria 24c64
« Respuesta #3 en: 05 de Julio de 2005, 12:33:00 »
gracias por las respuestas..........radon......el driver que ocupo es el 2464.c del ccs y lo unico que hace es "facilitar" la comunicacion con la  gama de memorias externas 24Cxx

para escribir en ella solamente indico la direccion y el valor a guardar en esa esa direccion con el comando:

write_ext_eeprom(a, d);  Write the byte d to the address a  

y si quiero leerla:

d = read_ext_eeprom(a);   Read the byte d from the address a..........muy sensillo, pero.....

si ocupo este driver del CCS...donde puedo configurar la segunda memoria de los comandos anteriores?.tengo ke realizar una configuracion por hardware tambien?

me podrias dar un ejemplo omix..........y 64000kbits / 8 bits = 8000 muestras de 8 bits.........de donde salio el 8192 ..kisas hago mal el calculo........gracias

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: consulta sobre memoria 24c64
« Respuesta #4 en: 05 de Julio de 2005, 12:47:00 »
Sencillo:
Un Kilobite es igual a 1024 bits.

Por ende 1024 * 64 / 8 = 8192 , que no son mas ni menos que 8 K de 8 bits cada uno.FlashFlashFlash
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
RE: consulta sobre memoria 24c64
« Respuesta #5 en: 05 de Julio de 2005, 14:09:00 »
Hola, respecto a los calculos de los 8192 bytes ya te ha respondido MGLSOFT. En cuanto a la configuracion para poder leer mas de una eeprom, lo primero que tienes que hacer es configurar los pines A0, A1, A2 de la eeprom con el numero de dispositivo que quieres asignarle, es decir, si quieres que sea el dispositivo 0 tendrias que poner los tres pines a 0, si quieres poner otro valor pues solo tendrias que poner unos pines 0 y otros a 1 segun el valor que quieras darle.

Luego en el codigo para leer de una u otra memoria lo que tienes que hacer es usar las rutinas de i2c, para leer y escribir en la memoria, ya que seguramente la libreria de la eeprom que estas usando este preparada para funcionar solamente con la direccion de dispositivo 0 y por lo tanto no podras hacerlo con ella, aunque tambien puedes modificarla para que te lo permita. Aunque hacerlo a "pelo" con las rutinas para i2c tampoco es complicado solo es cuestion de leerse el datasheet de la memoria para saber como tienes que hacerlo.

Un saludo.
 

Desconectado angel_blasfemo

  • PIC10
  • *
  • Mensajes: 9
RE: consulta sobre memoria 24c64
« Respuesta #6 en: 05 de Julio de 2005, 22:32:00 »
gracias por la ayuda y aclaracion de conceptos MGLSOFT y OMIX........
chao

Desconectado betito_mmf

  • PIC10
  • *
  • Mensajes: 13
Re: consulta sobre memoria 24c64
« Respuesta #7 en: 22 de Mayo de 2006, 18:10:59 »
hola amigos  :)  otra consulta .

Bueno leyendo el data sheet de la EEPROM 24C64
ALTA CONFIABILIDAD
- 1 millon de ciclos de escritura
- Retencion de datos: 100 años

RANDOM READ - Lectura de datos de una dirección aleatoria. En este modo de lectura se leen los datos de una posición que yo quiera “Imitando” un ciclo de escritura para indicar cuál es la posición de memoria que deseo leer. Primero el master establece la condición de Start, luego envía el código de habilitación con el bit menos significativo  en “0” (lo que indica que ahora el master va a escribir la dirección de la que quiere leer sus datos) y luego envío el byte con la dirección que deseo leer. Hecho esto, se establece una nueva condición de START y se vuelve a enviar el mismo código de habilitación que antes pero ahora con el bit menos significativo en “1” porque “voy a leer” los datos de la posición que ya indiqué desde el master, acto seguido, la memoria “libera” el contenido de la posición de memoria indicada (por el bus SDA se pueden leer los datos) lo que se confirma con la  condición NO ACK. El ciclo termina con la condición Stop, tal como se puede ver en la figura:



La pregunta es; ya que en este tipo de lectura se leen los datos imitando un ciclo de escritura para indicar la posicion que deseo leer, entonces este caso esta incluido dentro de los 1 millon de ciclos de escritura o solo es un comando que en realidad no escribe nada, es un pequeña duda que tengo porque pienso trabajar con esta EEprom para relizar un panel publicitario , y necesito almacenar los mensajes en dicha eeprom para posteriormente visualizarlos.

 :-) GRACIAS 
« Última modificación: 24 de Mayo de 2006, 20:04:25 por betito_mmf »
:-) :-) :-)  HOY SERE MEJOR QUE AYER  :mrgreen:

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: consulta sobre memoria 24c64
« Respuesta #8 en: 22 de Mayo de 2006, 18:28:21 »
Es un ciclo de lectura y no cuenta para la cantidad de ciclos de escritura.  Es 'similar' al de escritura lo cual no significa que sea un ciclo de escritura.

Lo que le falta es el dato a 'escribir'.  Mandas el address del i2c y el address dentro de la memoria pero en ningun momento escribes nada "físicamente" hablando.

Saludos
- 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)


 

anything