SoloCodigo
Programación Específica => Microcontroladores => Programación en C => Mensaje iniciado por: carmasanto en Lunes 13 de Febrero de 2006, 00:38
-
hola a todos, tengo un problema para escribir y leer la memoria 24lc08.
estoy utilizando la libreria #use i2c(master, sda, scl), y las funciones i/o con el bus i2c que son i2c write(), i2c read(), i2c start, i2c stop, se supone que con esto se debe entablar una comunicacion con la memoria eeprom, pero no hace nada, no hay transmision, no se genera el start ni el stop, si me pudieran ayudar con un ejemplo del codigo de la comunicacion entre el pic y la memoria 24lc08 se los agradeceria. adjunto el programa para que sea revisado
gracias por la atencion prestada.
-
le instalaste las resistencias externas de pullup a las señales I2C.
-
carmasanto... a mi tambien me pasaba lo mismo pero con la eeprom 24LC256
de 32kb...y demore semanas en esa esptupidez, y todo para al final darme
cuenta q era una de las benditas resistencias q mensiona lalo, una de ellas
estaba a tierra, y en realidad debia estar era tirada a 5 voltios.
amigo, segun lo q me paso, te cuento q esas 2 tontas resistencias al parecer son
muy importantes en el bus I2C.
EN CONCLUSION, DEBERIAS REVISAR TODO EL CIRCUITICO.
-
Hola muchachos! Bien, sin las resistencias, el bus I2C no funciona :(
La linea SDA es drenador abierto (similar a colector abierto), ya que sino no podría ser bidireccional. Por esta línea se transmiten y/o reciben datos de un dispositivo a otro. Por ello es que debemos fijar externamente un nivel mediante una R (10K) a VCC.
En los micros que poseen modulo I2C y soportan el modo multimaestro, la linea SCL tambien es drenador abierto; en estos casos SCL tambien es bidireccional. Es decir que deben llevar la R a VCC.
Bien, resumiendo: siempre conectar una R entre SDA y VCC, y SCL y VCC :)
Con 10K está bien (a mi me funciona!)
Saludos a todos!
-
amigos muchas gracias, todos acertaron con la solucion del problema, ya me funciono el programa.
gracias nuevamente. :hola: