uControl
Octubre 31, 2014, 06:01:05 *
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  

La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Páginas: [1] 2 3   Ir Abajo
  Imprimir  
Autor Tema: Problema de lectura I2C EEPROM 24C04  (Leído 18895 veces)
0 Usuarios y 1 Visitante están viendo este tema.
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« : Febrero 19, 2010, 08:27:05 »

Tengo un problema en el pic simulator ide para leer una memoria eeprom externa por I2C, en este caso una 24C04, los datos se escriben porque si la leo con el programador veo los datos que el pic le tiene que grabar, antes habiendole puesto todos en 888888888 y así toda la memoria. Pero no lo lee.
Subo una foto del diagrama hecho en PAINT!!!! me voy a pique
Y mi codigo fuente que con el simulador de EEprom del PSI funciona, pero no en la realidad. PIC16F877A 4Mhz

Código:
Define CONF_WORD = 0x3f39


Define LCD_BITS = 4  'indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = PORTB  'el bus de datos sera el puerto A
Define LCD_DBIT = 0  'el bus de datos seran los 4 bit menos significativos del puerto A
Define LCD_RSREG = PORTB  'el bit de control RS sera del puerto B
Define LCD_RSBIT = 4  'se usara el RB7 como RS
Define LCD_EREG = PORTB  'el bit de control E sera del puerto B
Define LCD_EBIT = 5  'se usara el RB6 como E
Dim addr As Word
Dim data As Byte
Symbol sda = PORTC.4
Symbol scl = PORTC.3
I2CPrepare sda, scl 'con o sin esta linea pasa lo mismo solo escribe y no lee.
Lcdinit 3
WaitMs 1000
For addr = 0 To 31
Lcdcmdout LcdClear
data = 255 - addr
I2CWrite sda, scl, 0xa0, addr, data
Lcdout "Write To EEPROM"
Lcdcmdout LcdLine2Home
Lcdout "(", #addr, ") = ", #data
WaitMs 500
Next addr
For addr = 0 To 31
Lcdcmdout LcdClear
I2CRead sda, scl, 0xa0, addr, data
Lcdout "Read From EEPROM"
Lcdcmdout LcdLine2Home
Lcdout "(", #addr, ") = ", #data
WaitMs 500
Next addr
WaitMs 1000
Lcdcmdout LcdClear
Lcdout "Fin del Programa"
End     
 
En línea
Felixls
Moderador
PIC24F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 3037



WWW
« Respuesta #1 : Febrero 19, 2010, 08:43:21 »

Me parece que tienes que poner SCL y SDA como entradas con sus resp. (TRIS).

En cuanto al diagrama te propongo que sigas algún tutorial que hay en la web y uses KiCad o Eagle o algún otro gratuito, te va a hacer la vida más fácil a la larga

EDIT.

Noto además, que en el diagrama no están conectadas las líneas 32 y 31, tal vez fue un olvido de tu parte dibujandolo.
« Última modificación: Febrero 19, 2010, 11:02:23 por Felixls » En línea
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #2 : Febrero 19, 2010, 11:02:52 »

Gracias pero me sigue sin funcionar Huh? Huh? Huh? Huh? Huh?
puse como me dijiste Trisc.3 = 1 y Trisc.4 = 1 pero nada, sigue igual. Y en cuanto a mi "diagrama" aveces los hago en paint ya que sino me lleva más tiempo, suelo utilizar el PCB Wizard 3. Ningún programa que encontré en internet me funcionó para leer. Ese codigo, el que tengo es el mismo que trae en el Basic Compiler Reference Manual con el PSI, y no funciona, es raro. Muchas gracias y agradecería mucho una solucion:duda
En línea
HJ
Moderador
dsPIC
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5453



« Respuesta #3 : Febrero 19, 2010, 11:36:44 »

Hola, Al micro lo debes alimentar por los dos pines 11 y 32 a +% en tu caso y a masa los pines 12 y 31.

Tenes bien definido el cristal?

Saludos
En línea

"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #4 : Febrero 20, 2010, 09:26:05 »

¿? ¿Pero cual es la diverencia entre los +y- de un lado y del otro? Yo lo tengo como lo dibuje porque pense que podia faltar alimentacion ahí pero con el tester medi y tenia 5V ¿Hay que conectar lo de los dos lados?. Si, el cristal está todo bien porque el lcd inicializa y hace todo bien, XT a 4Mhz. Muchas Gracias. Pero ahora pruebo le de darle alimentacion al otro lado.
En línea
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #5 : Febrero 20, 2010, 09:36:09 »

Sigue igual que antes, conecte los dos vdd a +5V y los dos vss a GND. Sugun lo que busque tiene 2 vdd y 2 vss porque al consumir tanto un pin solo no soportaría.
« Última modificación: Febrero 20, 2010, 09:41:44 por sigfriwai » En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10634



WWW
« Respuesta #6 : Febrero 20, 2010, 11:40:15 »

Sigue igual que antes, conecte los dos vdd a +5V y los dos vss a GND. Sugun lo que busque tiene 2 vdd y 2 vss porque al consumir tanto un pin solo no soportaría.

Eso es falso....la seccion de un pin del pic sebe sopartar varias veces lo que consume el nucleo y todos los puertos del PIC juntos Grin. ¿Donde encontraste ese dato?

Tiene que haber otra explicación, quizas relacionada con el ruido electrico o algo por el estilo.
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
Felixls
Moderador
PIC24F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 3037



WWW
« Respuesta #7 : Febrero 20, 2010, 11:49:20 »

A ver... cuando dices que no lee, que significa? se queda colgado en la línea I2CRead? lee y muestra en el lcd 00?

No veo tampoco los condensadores de desacoplo. En cuanto a la memoria es una atmel o st? tienes a mano el datasheet? como está implementado físicamente? en pcb? si es en pcb revisaste las pistas?

P.D.: Trata de describir siempre lo más que puedas el problema y el contexto de ejecución, así tu problema no nos parece un acertijo  Wink
« Última modificación: Febrero 20, 2010, 11:54:12 por Felixls » En línea
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #8 : Febrero 20, 2010, 12:39:28 »

Al decir que no lee me refiero a que en el LCD dice: 0 .
El dato ese de los dos pines de alimentacion lo encontré en "foros de electronica".
La memoria dice: "ATMLU906" y en la segunda linea: "04B" pero yo la compre en internet como una 24C04.
El datasheet es este: http://www.alldatasheet.com/view.jsp?Searchword=24C04 porque el de: "ATMLU906" no lo pude encontrar.
¿cuales o donde deben ir los capacitores de desacoplo?
« Última modificación: Febrero 20, 2010, 02:14:44 por sigfriwai » En línea
el_vpi
Moderador
PIC18F
******
Desconectado Desconectado

Mensajes: 1258



« Respuesta #9 : Febrero 20, 2010, 01:04:41 »

lo recomendable es poner algun ceramico de .01 entre Vcc y GND en cada integrado cerca de las patas de alimentacion.
Lo de los numeros en la memoria no me convence, deberia decir en algun lado 24c04.
SCL debe estar siempre como salida (vos generas el clock) y despues SDA como in o out dependiendo lo que estes haciendo.

Suerte, Daniel,
En línea
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #10 : Febrero 20, 2010, 02:13:48 »

lo recomendable es poner algun ceramico de .01 entre Vcc y GND en cada integrado cerca de las patas de alimentacion.
Lo de los numeros en la memoria no me convence, deberia decir en algun lado 24c04.
SCL debe estar siempre como salida (vos generas el clock) y despues SDA como in o out dependiendo lo que estes haciendo.

Suerte, Daniel,

Puse los capacitores al pic y a la memoria y puse antes de leer el tris como entrada y para grabar como salida y scl como salida pero sigue igual.
En línea
Ivan
Amigo de uControl
PIC16F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 553



« Respuesta #11 : Febrero 22, 2010, 12:01:24 »

me parece que el problema es en el comando que envias (A0) en el segundo bloque, tenes que enviar A1 para la lectura. Aca esta un poco mas explicado, ademas explica de la lectura secuencial y la directaa.

http://www.mikropic.com/forum/index.php?topic=133.0
« Última modificación: Febrero 22, 2010, 12:04:03 por Ivan » En línea

¿Qué es un circuito?
Es un lugar donde hay elefantuitos, caballuitos, payasuitos...
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #12 : Febrero 22, 2010, 12:47:18 »

Lo probé con A1 para leer pero tampoco funciona.
En línea
sigfriwai
PIC10F
*
Desconectado Desconectado

Mensajes: 31


« Respuesta #13 : Febrero 22, 2010, 04:25:07 »

Lo que me parece raro es que no dice "ATMEL", dice "ATMLU" ¿es lo mismo?
En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10634



WWW
« Respuesta #14 : Febrero 22, 2010, 04:54:49 »

Lo de los numeros en la memoria no me convence, deberia decir en algun lado 24c04.

Todas las que han pasado por mis manotas decian ATMEL ...Pero "ATMLU906" parece ser -segun estos chinos- una 24C256.....


* Pantallazo.png (21.02 KB - descargado 6732 veces.)
« Última modificación: Febrero 22, 2010, 04:56:35 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
Páginas: [1] 2 3   Ir Arriba
  Imprimir  
 
Ir a:  

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