ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1038533 Топик полностью
Cкpипaч, пророк (21.09.2020 18:46, просмотров: 155) ответил AlexBi на Как ловить коллизию? При передаче коллизию не увидеть. При приеме могут быть какие-то шумы, которые исказят результат, их нельзя считать коллизией. Остается только наличие сигнала в паузе, т.е. когда его не должно быть. Но тут опять шум может исказить результат. Какой-то не очень простой велосипед получается.
Коллизия это превышение предельной длины паузы между пакетами. Пауза возникает либо по достижению конца "цепочки", либо когда у приемника не сошлось CRC пакета (и он не передает тогда, когда его очередь). Оба случая обрабатываются одинаково. 

Все ждут паузу случайной длинны. Но те, кто в этом цикле успел передать, паузу большую на константу, чтобы гарантированно дать возможность вклинится новичкам.


Если победителей оказалось два, у них не сойдется CRC и "тур голосования" будет повторен.

Если не жадничать на диапазонах задержки, такое не будет происходить слишком часто.


Было бы хорошо, если ваш UART умеет показывать приход первого байта пакета.

Тогда выявление победителя "тура голосования" было бы сильно проще.

Иначе нужен отдельный специальный однобайтовый пакет "я - победил".

И, наверное, шаг пауз кратный двум байтам, для гарантии.

... но не любой ценой.