Autor Tema: Detectar bus ocupado para evitar colisiones  (Leído 1471 veces)

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

Desconectado ricardinjo

  • PIC10
  • *
  • Mensajes: 15
Detectar bus ocupado para evitar colisiones
« en: 09 de Julio de 2022, 06:11:15 »
Buenos días compañeros!
Necesitaria saber basicamente cual el la mejor forma de saber si un bus de comunicaciones esta en uso porque tengo un micro como maestro y 8 esclavos con sus correspondientes direcciones. El caso es que estos esclavos le mandan info al maestro cuando ocurre un evento y para evitar colisiones quiero saber si durante unos microsegundos el bus cambia d estado dominante a recesivo o al revés (esto es lo que se me ha ocurrido para saber si esta ocupado el bus). Hay alguna otra forma mejor?
Gracias

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Detectar bus ocupado para evitar colisiones
« Respuesta #1 en: 09 de Julio de 2022, 10:16:29 »
Hola, bueno en mi experiencia personal. Para organizar una comunicación sin colisiones.
Es utilizar un sólo maestro, el cual está interrogando de forma cíclica a cada esclavo. Método CSRD.
Y cada esclavo, sólo responde cuándo debe.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Detectar bus ocupado para evitar colisiones
« Respuesta #2 en: 09 de Julio de 2022, 12:14:47 »
Necesitaria saber basicamente cual el la mejor forma de saber si un bus de comunicaciones esta en uso porque tengo un micro como maestro y 8 esclavos con sus correspondientes direcciones

Listo ya tenes solucionado tu tema de las colisiones.
Nadie puede usar el bus sin que el maestro lo permita. Es siempre el maestro quien inicia el traspaso de información, por eso en muchos esclavos posees una función de "leer" y "escribir".

¿Necesitas enviar datos de un esclavo al maestro?
Al tener un maestro la única forma es que el maestro le indique al esclavo que debe enviar la información.

Si lo que queres es un protocolo multi-maestro ya es otro tema.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Detectar bus ocupado para evitar colisiones
« Respuesta #3 en: 09 de Julio de 2022, 15:51:50 »
Buenos días compañeros!
Necesitaria saber basicamente cual el la mejor forma de saber si un bus de comunicaciones esta en uso porque tengo un micro como maestro y 8 esclavos con sus correspondientes direcciones. El caso es que estos esclavos le mandan info al maestro cuando ocurre un evento y para evitar colisiones quiero saber si durante unos microsegundos el bus cambia d estado dominante a recesivo o al revés (esto es lo que se me ha ocurrido para saber si esta ocupado el bus). Hay alguna otra forma mejor?
Gracias

Tal cual los otros te han respondido, el maestro es quien decide con que esclavo entablar intercambio de información.

Lo que quería indicar, según tu pregunta, es que cuando los esclavos detectan un evento como tu mencionas, simplemente deben guardar esa información (se una bandera o varios bytes de datos) a la espera de que el maestro le pregunte si ha ocurrido el evento.

Una cuestión importante sería que tan rápido atiende a cada uno de los esclavos el microcontrolador maestro, si tu sistema no es crítico, tal vez no sea muy importante esa la latencia.
« Última modificación: 09 de Julio de 2022, 15:54:34 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32


 

anything