uControl
Junio 19, 2013, 06:11:53 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2 3   Ir Abajo
  Imprimir  
Autor Tema: EEPROM 24C256 en JALv2  (Leído 3182 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« : Junio 06, 2011, 03:23:35 »

Hola!
Estoy intentando usar esta memoria en un proyecto con JALv2, y no estoy logrando guardar/recuperar un triste byte  Cry

La memoria está conectada con A0 y A1 a GND, por lo que su dirección (creo) es 0XA0.

Mi código es el siguiente:

Intento guardar 256 bytes de la siguiente manera:

Código:
       for 255 using i loop
            ee_24lc256_write(0xA0, 1,datos [i])
        end loop

y recuperarlos asi:

Código:
       for 255 using i loop
            ee_24lc256_read(0xA0, 1,datos [i])
        end loop

Las rutinas que llamo para leer y escribir son las de JAL, que pongo aqui:

Código:
--------------------------------------------------------------------------------
-- Read data from 24LC256 at input address
--------------------------------------------------------------------------------
procedure ee_24lc256_read(byte in ic_address, word in mem_address, byte out data) is
   var byte ack_ok
   var byte address_low
   var byte address_high
  
   -- split the memory address into 2 bytes
   var byte address_bytes[2] at mem_address
   address_high  = address_bytes[1]
   address_low = address_bytes[0]
  
   i2c_start()                                    -- send start bit
   ack_ok = i2c_transmit_byte(ic_address)         -- transmit data & wait for ack
   ack_ok = i2c_transmit_byte(address_high)       -- transmit data & wait for ack
   ack_ok = i2c_transmit_byte(address_low)        -- transmit data & wait for ack
  
   i2c_start()                                    -- send start bit
   ack_ok = i2c_transmit_byte(ic_address + 1)     -- transmit data & wait for ack
   data = i2c_receive_byte(0)                     -- nack (no ack)
   i2c_stop()                                     -- send stop bit
end procedure

--------------------------------------------------------------------------------
-- Write data to 24LC256 at input address
--------------------------------------------------------------------------------
procedure ee_24lc256_write(byte in ic_address, word in mem_address, byte in data) is
   var byte ack_ok
  
   var byte address_low
   var byte address_high
  
   -- split the memory address into 2 bytes
   var byte address_bytes[2] at mem_address
   address_high  = address_bytes[1]
   address_low = address_bytes[0]
  
   i2c_start()                              -- send start bit
   ack_ok = i2c_transmit_byte(ic_address)    -- transmit data & wait for ack
   ack_ok = i2c_transmit_byte(address_high) -- transmit data & wait for ack
   ack_ok = i2c_transmit_byte(address_low)  -- transmit data & wait for ack
   ack_ok = i2c_transmit_byte(data)         -- transmit data & wait for ack
   i2c_stop()                               -- send stop bit
  
   _usec_delay(5_000)                      -- datasheet says writes take 5ms
end procedure

¿Que corno estoy haciendo mal?  cabezaso a la pared


EDITO: Asi defino los pines y demas....Uso un PIC18F4550 Wink

Código:
-- Pines i2c (EEPROM)
alias i2c_scl is pin_b1
alias i2c_sda is pin_b0
alias i2c_scl_direction is pin_b1_direction
alias i2c_sda_direction is pin_b0_direction
const word _i2c_bus_speed = 1 -- 100 kHz
var byte i2c_tx_buffer [10]
var byte i2c_rx_buffer [10]

include i2c_software           
i2c_initialize()                    -
include i2c_level1

« Última modificación: Junio 06, 2011, 03:29:42 por Ariel » En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #1 : Junio 06, 2011, 04:23:30 »

¿El pin A2 también lo tenes conectado a masa?

¿Pusiste las R de pull up en SDA y SCL?  duda

Yo mucho de Jal no entiendo pero parece estar bien el código.

En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
HJ
Administrator
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5127



« Respuesta #2 : Junio 06, 2011, 04:38:53 »

¿El pin A2 también lo tenes conectado a masa?
Las 24C256 , no tienen el pin A2.

Que nivel le estas poniendo al pin de protección de escritura, ojo que para poderla escribir tiene que estar a cero, si está a 1 no se puede escribir. Por lo menos así son las Atmel.


¿Pusiste las R de pull up en SDA y SCL?  duda
Este detalle es importante.

Saludos
HJ
En línea
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #3 : Junio 06, 2011, 04:45:45 »

Estoy mirando el datasheet de Fairchild y dice que si tiene pin A2 y el de Atmel dice que NC, ¿En que quedamos?  Huh?
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
HJ
Administrator
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5127



« Respuesta #4 : Junio 06, 2011, 04:47:02 »

Estoy mirando el datasheet de Fairchild y dice que si tiene pin A2 y el de Atmel dice que NC, ¿En que quedamos?  Huh?
Que yo sepa no tienen, ya que "A2" es parte de la selección interna de los bancos de memoria.

Saludos.
En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« Respuesta #5 : Junio 06, 2011, 04:49:18 »

Hola!

A2 esta a GND internamente, o sea, no problem con eso: la dir sigue siendo 1010 0000, o 0xA0.

WP lo tengo a GND, por que la hoja de datos coincide con vos HJ....Wink

Y las dos pullups son de 4.7KB.

Tiene que haber alguna "sutileza" en la configuracion del puerto B, me parece.

Electricamente esta todo ok, estuve midiendo con el tester entre los pines de los chips y esta todo ok....o sea que ni siquiera me queda la esperanza de que sea una mala soldadura  cabezaso a la pared


Gracias!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
HJ
Administrator
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5127



« Respuesta #6 : Junio 06, 2011, 04:55:27 »

El puerto RB tiene la famosas resistencias de pull-up.

¿Estas tratando de escribir por byte o por página? ojo que las páginas son de 64 bytes.

Si se me ocurre otra cosa la agrego.

Saludos
En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« Respuesta #7 : Junio 06, 2011, 04:57:53 »

Estoy mandando de a un byte....será eso? Huh?

Es para la super Altair 8800....intento guardar el contenido de la memoria en la EEPROM (tengo espacio para 128 "programas" guardados) y luego recuperalos. Pero siempre recupero 256 ceros Sad

Ahi voy a ver el tema de las pullups....
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #8 : Junio 06, 2011, 05:00:45 »

Acordate de configurar las entradas, B0 y B1, como digitales desde ANSEL, creo que se hace, no se si hay algún otro bit en algún ADCON

Estoy mirando el datasheet de Fairchild y dice que si tiene pin A2 y el de Atmel dice que NC, ¿En que quedamos?  Huh?
Que yo sepa no tienen, ya que "A2" es parte de la selección interna de los bancos de memoria.

Saludos.

Eso no tiene sentido, con 16bit de dirección podes direccionar hasta 64K(0xFFFF)x8=512Kbit, es decir, recién en la memoria de 1Mbit ocurre eso, yo uso la 512Kbit y tengo apareadas 8 y ninguna se interfiere con la otra.



En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« Respuesta #9 : Junio 06, 2011, 05:03:12 »

Es lo que dice la hoja de datos.....es una 24LC256. Son 32KB. Usando A0 y A1 podes tener 4x32KB = 128KB en total....
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #10 : Junio 06, 2011, 05:07:28 »

Es lo que dice la hoja de datos.....es una 24LC256. Son 32KB. Usando A0 y A1 podes tener 4x32KB = 128KB en total....


Ok, yo no discuto lo del pin A2, ya vi que en la hoja de Fairchild dice  una cosa y en la de Atmel otra, de hecho así lo aclare en un post anterior; lo que le estoy comentando es sobre el hecho de usar el bit A2 para direccionar los bancos internos, eso esta claro que se maneja igual, tanto en Farchild como en Atmel.
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
HJ
Administrator
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5127



« Respuesta #11 : Junio 06, 2011, 05:10:01 »

Eso no tiene sentido, con 16bit de dirección podes direccionar hasta 64K(0xFFFF)x8=512Kbit, es decir, recién en la memoria de 1Mbit ocurre eso, yo uso la 512Kbit y tengo apareadas 8 y ninguna se interfiere con la otra.
La verdad no se como. Pero bueno, puedo estar equivocado ya que en el movil no puedo leer pdf y consultar la hoja de datos.
Estoy escribiendo de memoria.

Saludos
En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« Respuesta #12 : Junio 06, 2011, 05:17:06 »

Si, puede que los dos fabricantes difieran en eso. Pero.....si no me equivoco, mi código debería escribir y leer de la misma página, aunque no tenga mucha idea de cual es...por que en ambas operaciones pongo la misma dirección.
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
HJ
Administrator
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5127



« Respuesta #13 : Junio 06, 2011, 05:21:18 »

Ariel, un par de dudillas...
¿has probado esas rutinas en otro circuito?
¿estás seguro de que andan?
¿A que velocidad de estás tratando leer y escribir?¿esa velocidad es soportada por la memoria?


saludos
En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10284



WWW
« Respuesta #14 : Junio 06, 2011, 05:28:28 »

Hola HJ!

No, es mi primera vez con JAL y I2C.....y encima no tengo otro circuito a mano que sepa que anda para probar. Es mas..............es el unico maldito chip EEPROM que tengo en toda la casa Tongue

El tema de la velocidad es un buen dato....voy a ver como hacer para bajarla al 10% de eso o asi. Wink
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Páginas: [1] 2 3   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.095 segundos con 29 consultas. (Pretty URLs adds 0.012s, 3q)
loggkey