si el master indica con quien se quiere comunicar.
¿Quien es el que detecta la direcion o discrimina la direcion,..es el propio esclavo?
Si fuera el bus SPI, que tiene un pin de ChipSelect o CS, que obliga al esclavo a atender, diria que no, porque el direccionamiento es por hardware.
En el caso del I2C, el maestro envia la direccion del esclavo que debe responder a los comandos (lectura o escritura) y el esclavo (en realidad todos los esclavos que estan en el bus) comparan esa direccion con la suya propia, y responde el que corresponde a esa direccion solamente.
Una cosa que nunca revisamos de tu codigo es eso, que direccion tienen tus esclavos y cuales son las que consulta el maestro !!
Hola
esa info esta en la libreria milib.c
en esta defini las funciones de escritura y de lectura del i2c y justo en su cabecera las direciones para los dispositivos
del esclavo o esclavos y la del master.
Pero si es asi como dices y creo que dices bien, ya que es lo razonable..
¿por que s2 ve el dato del bus si no va para el,
solo deberia de ver la direcion no el dato.
ahora que nombras el spi.. el cs o selecionador de chip, cada esclavo tiene 4 cables y el master otros tantos, pero como selecionan el esclavo .. un cable para cada esclavo ¿ eso es un derroche en pines?
porcierto ..mirando el code del amigo veo que lee con un 1 no con un 0 como recomiendan muchos post por ahi.
cual es la explicacion
i2c_read(1);¿Hay alguna diferencia entre leer con 1 o leer con 0 ?¿o entre no poner nada?
AngelGris tengo una curiosidad con respectoa tu code, es por software o por hardware?
estoy intentado comparar el tuyo con el mio..
SSPIF == 1) // interrupcion SSPequivale a la funcion:
i2c_isr_state(); o i2c_poll()yo no uso i2c_poll() ya que no fuerzo a hardware el i2c
en mi code seleciona el B0 y B1 que son pines de hardware pero en el code no fuerzo ni hardware , ni software
sigo analizando tu codigo....