Autor Tema: Direcciones de esclavos en i2c  (Leído 3518 veces)

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

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
Direcciones de esclavos en i2c
« en: 23 de Octubre de 2004, 04:37:00 »

    Hola a todos. Volvemos a la carga. Flash
   
    Para manejo del bus i2c hace falta, lo primero, la dirección del esclavo. Ésta se puede cambiar o modificar de alguna forma o tiene que venir en el datasheet??

    Gracias. Un saludo.
                       Rubén.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Direcciones de esclavos en i2c
« Respuesta #1 en: 23 de Octubre de 2004, 04:50:00 »
Todo eso viene en el data... Tendrá una parte fija y quizás luego una parte configurable por hard.
Osea, imagina que el byte fuera algo así... 1-0-1-0-A3-A2-A1-R/W
Osea, 1010 es fijo y distinto normalmente en cada tipo de componente, luego los tres siguientes bit son de dirección del dispositivo en cuestión (hay casos en que esto también es fijo), y los pones por hard, osea, son pines que colocas a masa o vcc. Por si usas más de un componente de esos, memorias I2C por ejemplo. Luego R/W indica si quieres escribir o leer.
Saludos desde Huelva (ESPAÑA)

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Direcciones de esclavos en i2c
« Respuesta #2 en: 23 de Octubre de 2004, 04:54:00 »
Por cierto, a cual te refieres? Si se puede preguntar...
Saludos desde Huelva (ESPAÑA)

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Direcciones de esclavos en i2c
« Respuesta #3 en: 23 de Octubre de 2004, 05:03:00 »

    Claro que se puede preguntar!! Y responder! Sonrisa
    Antes de nada, muchas gracias por el interés que ponéis en responder. Estoy realmente asombrado. A mí también me gustaría tener esa capacidad de solucionar problemas, pero no no tengo la suficiente base, aún. loco

    Bien, la respuesta es lo que me suponía. Ahora tengo que aplicarlo a un sensor que estoy utilizando: http://www.superrobotica.com/S320112.htm.
 
    El caso es que especifica que viene una dirección por defecto (0xE0) y que se puede disponer de otras 15 y se puede cambiar, pero cómo??

   Gracias de nuevo. Un saludo.
                        Rubén.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Direcciones de esclavos en i2c
« Respuesta #4 en: 23 de Octubre de 2004, 06:09:00 »
Pues ahí mismo lo pone, sólo hay que escribir en la dirección 0xE0 esto:
0xA0, 0xAA, 0xA5, 0xF2
siendo 0xF2 la nueva dirección.

Osea...
Codigo:

   i2c_start();
   i2c_write(0xE0); Dirección
   i2c_write(0xA0);
   i2c_write(0xAA);
   i2c_write(0xA5);
   i2c_write(0xF2); Nueva dirección a partir de ahora
   i2c_stop();



Esto es lo que me dá a entender ese texto. Pero primero domina el cacharro y luego te metes en eso de cambiar y demás.
Y recuerda lo que pone... para cambiar de dirección, sólo un módulo conectado al bus!!!
En cuanto a lo de la velocidad del bus que preguntas en el otro tema... O preguntas al que te lo vendió o al fabricante si estos te indican quién es. O le metes 100khz para estar seguro.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Direcciones de esclavos en i2c
« Respuesta #5 en: 24 de Octubre de 2004, 09:28:00 »

    Puf ... Muchas gracias. Sonrisa
    Un saludo.
           Rubén.

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: Direcciones de esclavos en i2c
« Respuesta #6 en: 25 de Octubre de 2004, 15:07:00 »
Ya que andamos en este topic ...

Comentas cucaracha de que eso viene en el data (cambiar la direccion del esclavo) por ejemplo, al manejar una memoria serial de esclavo, tengo que utilizar el codigo del datasheet de la memoria? (ya tienen alguna direccion esclava por default o algo  asi)??

Me imagino que tu respuesta anterior es solo para el caso del sensor de rferrero

Por cierto, se puede hacer un pic que domine los modos master-esclavo?? (algo asi como un servidor mirror)

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Direcciones de esclavos en i2c
« Respuesta #7 en: 25 de Octubre de 2004, 16:29:00 »
 
    Hola. Pues creo que para memorias también vienen prefijadas las direcciones a la hora de llamarlas con el protocolo i2c. No siempre son fijos los 8 bits. Puede haber 5 fijos y otros 3 que los elija uno. Así puedes conectar otros 2^3 dispositivos.
   
    Para poner un pic como maestro se mete una dirección en un registro. Lo que tú comentas no sé si sería posible. Supongo que sí, pocas cosas hay que no se puedan hacer con un pic!!! Muchas risas
   
    Un saludo.
          Rubén.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Direcciones de esclavos en i2c
« Respuesta #8 en: 25 de Octubre de 2004, 16:59:00 »
Si, en memorias I2C es como indico arriba. Hay una parte fija, y luego una que corresponde a la dirección del dipositivo. La dirección se fija colocando los pines correspondientes a distintos niveles. Si tienes por ejemplo 3 memorias, pues puedes poner una a 000, otra a 001 y otra a 010 por ejemplo. Luego, a la hora de acceder a ellas, en la dirección tienes que referir a cada una para su acceso. La que se corresponda con su dirección será la única que atienda el comando.
En el data como comento viene todo.
Lo otro la verdad que no te entiendo...

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: Direcciones de esclavos en i2c
« Respuesta #9 en: 27 de Octubre de 2004, 20:32:00 »
Pues creo que es cierto porque estoy viendo el datasheet del ds1307 y literalmente dice:

"The adress byte contains the 7 bit ds1307/ds1308 address, which is 1101000, followed by the *direction bit (R/W) which, for a write, is a 0"

Y si mis clases de ingles no me traicionan:

Primero escribo esos 7 bits de menor peso (1101000) y despues le digo si leo o escribo.

Por lo tanto las direcciones 11010000 y 11010001 ya las tendria destinadas exclusivamente para el ds1307 verdad? Giño

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Direcciones de esclavos en i2c
« Respuesta #10 en: 27 de Octubre de 2004, 22:35:00 »
Si y no.... a ver como me explico!, cuca se refiere a otra cosa.. como bien dice, según se coloquen ciertos pines de los dispositivos que ya vienen preparados para asignar una direccion i2c mediante hardware se le puede cambiar la dirección al dispositivo, es decir, si pone esos pines a masa o a alimentación, o mediante una combinación de ambos, el dsipositivo tiene diferente direccion, sin embargo tú has puesto como ejemplo un dispositvo (ds1307) que solo tiene una dirección fisica de i2c y que ya viene asignada.


Lo que quiero decir es que el ds1307 no tiene ningún pin que poniendolo a masa o a alimentación, pueda hacer que cambie la dirección (1101000X), esa dirección es única y solo puedes cambiar mediante soft el último bit según quieras escribir o leer el dispositivo.

Fijate en el datasheet del ds1307 como no viene ningún pin preparado para asignar una dirección al dispsotivo, sin embargo, si miras otro dispositivo i2c probablemente veas una serie de pines dedicados a este fin.


Saludos.

PD: Al final no se si he aclarado o empeorado las cosas, por favor si no se entiende comentarlo....que intentaré explicarme de otra forma.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Direcciones de esclavos en i2c
« Respuesta #11 en: 28 de Octubre de 2004, 03:16:00 »
Exacto... en ese modelo en concreto no puedes variar la dirección... Y en cierto modo es lógico. Para que quieres más de un dispositivo de esos en un diseño. Con un reloj te basta... Por eso no tiene esa opción.
Si embargo, las memorias por ejemplo sí la tienen, ya que de estas si puede ser interesante usar varias en un mismo diseño. Sensores de temperatura también por ejemplo.

Y si... ese último bit, el LSB, indica al dispositivo si se quiere acceder a él para leer o escribir.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: Direcciones de esclavos en i2c
« Respuesta #12 en: 30 de Octubre de 2004, 08:21:00 »
Entendido !! Fumador

Gracias por sacarme de estas dudillas  Sonrisa Gigante