ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
1038638 Топик полностью
argus98 (21.09.2020 21:26, просмотров: 161) ответил AlexBi на Мультимастер на RS-485, есть ли какие-то стандартные решения? Известно, что это шина не для таких решений. Но так же известно, что если очень хочется, то это реализуют. Без изменения аппаратной части. Надо изобретать свой велосипед, или может уже есть какие стандартные решения этого вопроса?
Стандартных не знаю. Делается примерно так: 

а) приемник постоянно включен, т.е. он принимает, кроме чужих, ещё и свою передачу

б) организуется постоянный контроль (независимо от UART) ноги RХ приёмника на 0 и переход ^\_. (Можно прерыванием, можно по опросу, но чаще, чем длительность одного бита).

в) генерируются два случайных числа R1, R2 (если есть ID, то из ID, если ADC - из ADC, итп)

г) после всех инициализаций, если RX=1, запускаем задержку R1. Если RX = 0 (во время счёта задержки тоже) - ждём до момента RX=1 и делаем задержку заново

д) по окончании задержки, если RX продолжает =1, передаём байт R2

е) смотрим, что приняли.

Если принятый R2 <> переданный R2 - т.е. коллизия (или помеха). Запускаем процесс заново со сменой R1 и R2.

Если принятый R2 == переданный R2 - коллизии скорее всего нет, но для верности запускаем процесс повторно со сменой R2 уже без задержки. Если успешно - то я Мастер. Иначе - начинаем всё сначала..

Примечание - R1 должно быть > длительности 2 байтов с дискретой не менее длительности бита. Тогда большинство девайсов от голосования отказываются

Как-то так...