TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: chars en 17 de Diciembre de 2021, 00:25:54
-
Hola, buenas noches. Disculpen la molestia pero tengo una duda en cuanto a la comunicacion i2c.
Lo que pasa es que estoy desarrollando un circuito donde se tiene 4 pics para leer cada uno un sensor DHT11, y un general el cual realiza el muestreo de cada uno de estos para realizar un control difuso. La cuestion es que debo muestrear cada uno, sin embargo, si configuro el uC general como maestro, si me da la oportunidad de enviar un comando, sin embago, por teoria, el esclavo no podria reenviar una respuesta (osea los 4 pics de los sensores).
Lo que llegue a pensar es porque no convertir al general como un esclavo y los demas como maestros.
Es posible realizar esto? o ustedes que me recomiendan?
Saludos.
-
Puedes hacer que tu PIC central sea un esclavo y los demás escriban el dato en él
-
Todo depende de que tan lejos estén los PICs y que necesidad tengas de que las 4 medidas sean al mismo tiempo, pero si estan sobre la misma placa, un SPI con todos, donde el maestro sea el general y a lo sumo un pin mas para indicar el inicio de lectura (3 pines), Solo lees 4 veces que son los 4 modulos, y tenes todas las lecturas del mismo instante y listo.
-
Hola, buenas noches. Disculpen la molestia pero tengo una duda en cuanto a la comunicacion i2c.
Lo que pasa es que estoy desarrollando un circuito donde se tiene 4 pics para leer cada uno un sensor DHT11, y un general el cual realiza el muestreo de cada uno de estos para realizar un control difuso. La cuestion es que debo muestrear cada uno, sin embargo, si configuro el uC general como maestro, si me da la oportunidad de enviar un comando, sin embago, por teoria, el esclavo no podria reenviar una respuesta (osea los 4 pics de los sensores).
Lo que llegue a pensar es porque no convertir al general como un esclavo y los demas como maestros.
Es posible realizar esto? o ustedes que me recomiendan?
Saludos.
Yo lo que comprendo es que tu deseas enviar la información desde un esclavo al maestro tan pronto como obtienes datos del sensor. Pero el problema es que sólo cuando el maestro pide información al esclavo, sólo ahí podrías enviar tu información. ¿Estoy en lo correcto?
Si es así, deberías hacer un Polling o sondeo desde el maestro a los esclavos. Es decir el maestro pregunta al esclavo 1 los datos que tiene, luego pasa el segundo, luego al tercero, etc., y así hasta completar todos los esclavos para empezar de nuevo. Esa sería la manera.
¿Me imagino que los microcontroladores esclavos hacen algo más que solo leer la información de su sensor? Porque si no es así, podrías tener un solo microcontrolador que lea la información de los 4 sensores sin necesidad de otros pics.
-
Lo primero que pensé es que con un micro se podían leer todos los sensores, pero he mirado el DHT11 y no tiene pines de configuración de dirección, por lo que no podrían montarse los 4 en el mismo bus.
-
Lo primero que pensé es que con un micro se podían leer todos los sensores, pero he mirado el DHT11 y no tiene pines de configuración de dirección, por lo que no podrían montarse los 4 en el mismo bus.
Obviamente no se puede conectar todos al mismo bus de datos ya que como indicas no poseen algo para direccionarlos o algo para deshabilitarlos (chip select). Pero si tienes 4 terminales o pines disponibles del MCU, podrías leer la información de cada uno de manera independiente.
-
Sí, si tienes disponibles más líneas en el micro principal, y suficiente cable para montar todo el circuito (desconocemos la distancia total) sería lo más fácil.
-
Buenas
Yo lo que suelo utilizar es un SWITCH de bus I2C de forma que en cada rama del bus puede disponer de las mismas direcciones sin problema, podéis revisar por ejemplo el "TCA9546A" o otros similares.
El cambio de bus se efectúa por en mismo bus y si es necesario puede disponer de una interrupción cuando alguno de los participantes envía información por su bus, esto ultimo no suele ser necesario a no ser que tengáis múltiples maestros en diferentes buses.