Autor Tema: Duda sobre I2C  (Leído 4504 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Duda sobre I2C
« en: 28 de Marzo de 2007, 00:35:24 »
Estoy algo liado... estoy queriendo hacer una aplicacion que guarda unos datos en una memoria externa (24LC08B) mediante I2C... pero mirando en la pagina de microchip hay muy pocos PICs de 18 o menos pines que soportan I2C (en concreto, los de la familia PIC12 no lo soporta ninguno), aunque al parecer esta ampliamente difundido. Esto me hace plantearme que tal vez no sea necesario que el PIC tenga "hardware" I2C incorporado, y se pueda generar por software como se puede hacer PWM sin tener canales PWM...
Entonces, puedo usar protocolo I2C con cualquier PIC?
El CSS trae ya unas librerias para manejar por I2C la memoria externa que yo quiero, con esto es suficiente para poder hacer uso de ella? O tendre que usar solo PICs que tengan I2C incorporado?
Gracias!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Duda sobre I2C
« Respuesta #1 en: 28 de Marzo de 2007, 09:26:29 »
EL CCS permite trabajar con el I2C por software para cualquier PIC, independiente de si tiene el I2C por hardware, no debes tener ningún problema con esto.

saludos.
Pereira - Colombia

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #2 en: 28 de Marzo de 2007, 11:05:20 »
Iupiiiiii!!!!!!!!
que feliz soy  :mrgreen:
gracias dhmejia!
me pondre a trabajar ahora mismo en ello!
lo que no encuentro es un driver para la mem 241025, que es la unica que tengo ahora para probar... tendre que pedir mas pequeñas a microchip.
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #3 en: 01 de Mayo de 2007, 22:22:45 »
ya aprendi a trabajar con mem eeprom por i2c...
pase de un 12f683 a un 16f88, que tiene mas pines
con el 12f estaba haciendo que un potenciometro moviera un servo y guardara los movimientos en una eeprom para despues reproducirlos. salte al 16f88 porque quieria hacerlo con 2 servos, pero ahora que lo probe no funciona como deberia... simulado en proteus va MUY lento, y en la practica peor.
yo creo que se debe a que la eeprom es muy lenta ya que tiene que leer y escribir los datos de los 2 potenciometros datos cada muy poco tiempo, y la memoria al ser de 1024kb tarda mas...
estare en lo correcto? es la memoria?
segun el datasheet de las eeprom, para leer no hace falta enviarle la direccion constantemente a la eeprom, ya que esta tiene un contador interno que se autoincrementa cada vez... tal vez eso ahorraria tiempo, ya que cada direccion son 16bits que se tienen que enviar... y para escribir podria hacer "page write" en vez de "byte write"... pero tampoco se muy bien como funciona  :z)
estuve mirando de pasar a una mem  con bus mas rapido, pero incluso las SPI que tienen bus de 3mhz, porque todas tienen un tiempo de escritura de 5ms...
tal vez sea mejor volver al 12f, y hacer 2 iguales, uno para cada servo... de esa manera se que funcionara, aunque perdere en simplicidad, espacio y economia  :8}
que opinais?
salu2
« Última modificación: 01 de Mayo de 2007, 23:40:27 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Duda sobre I2C
« Respuesta #4 en: 02 de Mayo de 2007, 06:06:52 »
Marttyn, hay algo que me despista de tu mensaje.

Te aseguro que los movimientos de la mano sobre el potenciómetro son bastante más lentos que la memoria eeprom. Supongo que tal y como tienes diseñado el programa estás convirtiendo la memoria en un cuello de botella cuando no debería ser así.
¿Si haces la lectura/escritura en intervalos más lentos no funciona bien?

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #5 en: 02 de Mayo de 2007, 07:53:04 »
pues no me lo habia planteado, escribo cada 50ms... :roll:
intentare y ya os cuento...
aun asi, yo estaba grabando en la eeprom al mismo tiempo ue enviaba el pulso PWM al servo, estos pulsos son siempre menores a 2.5ms, y si demoraba 5ms en escribir en la eeprom, tal vez fuera esto lo que demorara de mas en bajar el pulso PWM :z)
voy a probar escribir en la eeprom despues de bajar el pulso PWM
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda sobre I2C
« Respuesta #6 en: 02 de Mayo de 2007, 09:28:10 »
pues no me lo habia planteado, escribo cada 50ms... :roll:
intentare y ya os cuento...
aun asi, yo estaba grabando en la eeprom al mismo tiempo ue enviaba el pulso PWM al servo, estos pulsos son siempre menores a 2.5ms, y si demoraba 5ms en escribir en la eeprom, tal vez fuera esto lo que demorara de mas en bajar el pulso PWM :z)
voy a probar escribir en la eeprom despues de bajar el pulso PWM
salu2

Mira, también puedes 'mandar a grabar' un dato en eeprom y luego seguir con tu programa.  Paso continuado puedes verificar si la grabación ya terminó (hay un flag para eso) , si terminó mandas a grabar el siguiente byte y sino sigues con tus tareas.

Eso te permite que la grabación de eeprom no te demore para nada la ejecución de tu programa.

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #7 en: 02 de Mayo de 2007, 09:36:54 »
si, me suena de que hay un flag para eso... o es una interrupcion?
pero como podria implementar? no podria usar el driver eeprom de ccs, no? porque supongo que este driver espera a que se termine de grabar para seguir con la siguinte linea de ejecucion... o no?
al escribir, el driver hace esto:

while(status==1){
  i2c_start();
  status=i2c_write(ControlByte);
}

que supongo que sera lo mismo que esperar a la interrupcion de fin de escritura...
la verdad que soy muy novato en esto de los pic y todavia no se como me meto en semejantes quilombos! deberia quedarme prendiendo y apagando led  :mrgreen:
« Última modificación: 02 de Mayo de 2007, 10:06:41 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Duda sobre I2C
« Respuesta #8 en: 08 de Mayo de 2007, 17:14:10 »
EL CCS permite trabajar con el I2C por software para cualquier PIC, independiente de si tiene el I2C por hardware, no debes tener ningún problema con esto.

saludos.

hola,

que quiere decir que sea I2C por hardware o por software?

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Duda sobre I2C
« Respuesta #9 en: 08 de Mayo de 2007, 19:22:46 »
Algunos pic tiene módulos para comunicación I2C listos para usar (ejemplo PIC16f873), algunos no lo traen y si se requiere este tipo de comunicación hay que implementarla por programa (por software), en este caso se debe conocer muy bien el protocolo pues se deben tener en cuenta todas las condiciones que implica la comunicación (tiempos, condiciones de inicio, parada, bit de ack, etc).

Cuando se trabaja con el compilador CCS este trae las librerías listas para usar, independiente de si el pic tiene o no módulo I2C. Si el pic tiene el módulo y se seleccionan los pines correctos (los que se especifican en el datasheet para I2C) el compilador hace uso del módulo I2C del micro.  Si se seleccionan pines diferentes a los especificos del I2C o si el pic no tiene este módulo, el compilador genera el código necesario para implementar la comunicación.  Esto para el que escribe el programa es indiferente (en el caso de usar este compilador) y solo se nota la diferencia en el tamaño del código, que debe ser más grande en el caso de implementar el I2C por software.

Espero haber sido claro.

saludos,
Pereira - Colombia

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Duda sobre I2C
« Respuesta #10 en: 08 de Mayo de 2007, 19:51:03 »
me parece muy claro!!

gracias dhmejia...

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda sobre I2C
« Respuesta #11 en: 09 de Mayo de 2007, 09:23:51 »
si, me suena de que hay un flag para eso... o es una interrupcion?

Las memorias cuando están ocupadas no devuelven el ACK.  :) :)

Tan simple como eso.  8)
- 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)

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #12 en: 09 de Mayo de 2007, 22:39:19 »
creo que tambien hay una interrupcion que salta al finalizar de escribir la eeprom... no?
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda sobre I2C
« Respuesta #13 en: 09 de Mayo de 2007, 23:04:19 »
creo que tambien hay una interrupcion que salta al finalizar de escribir la eeprom... no?

es que se está hablando de una eeprom i2c, osea, externa al pic  :)
- 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)

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Duda sobre I2C
« Respuesta #14 en: 09 de Mayo de 2007, 23:11:29 »
ah... no tenia idea... pense que servia para i2c  :oops:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.