Вс июн 06, 2021 19:20:18
Вс июн 06, 2021 20:22:19
Пн июн 07, 2021 00:11:14
Пн июн 07, 2021 09:17:02
Пн июн 07, 2021 10:07:22
Ср июн 09, 2021 16:14:11
Чт июн 10, 2021 19:41:54
GoldenAndy писал(а):По коллизиям все просто.
В процессе приема все устройства знают, что шина занята, ибо пакет принимают все.
В процессе передачи перед прижатием линии к 0 МК контролирует наличие 1 на линии. После передачи очередного бита и отпускания линии МК так же контролирует - а поднялась ли линия в 1.
И в случае, если вдруг 2 устройства одновременно проверили наличие 1 на линии и начинают передавать что то - то в какой то момент наступит ситуация, что кто то линию отпустил, а она осталась прижата к 0. Обычно это происходит на этапе передачи адреса - у кого он больше, тот и единичку (3Т) держит дольше.
Тогда тот, кто отпустил, понимает, что он уже не один и затыкается до окончания передачи пакета.
При этом, поскольку приемник независим от передатчика - он так же принимает и свою посылку, и знает, когда завершится передача пакета. И потом повторит свою попытку через случайный период задержки после завершения пакета.
Сб июн 12, 2021 15:52:16
Вы начинаете путать понятия.roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
Ключевое слово "одновременно"))
Если два слейва начнут одновременно передавать пакеты, то будет ошибка в программе мастера.
тогда это хреново сделанный мастер. Или мультиприём делать (даже та же Атмега328 умеет прерывания по изменению уровня на каждом пине), или какой то дуплексный протокол, когда кто то обращается к центральному контроллеру и, пока контроллер не ответит, что готов слушать, ждет. Как контроллер ответил - этот кто то начинает слать данные.roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
Сб июн 12, 2021 18:23:30
GoldenAndy писал(а):Вы начинаете путать понятия.
GoldenAndy писал(а):вы накопали где то всяких примеров обмена по определённым протоколам и используете их.
GoldenAndy писал(а):не хотите делать что то свое.
GoldenAndy писал(а):(даже та же Атмега328 умеет прерывания по изменению уровня на каждом пине
GoldenAndy писал(а):или какой то дуплексный протокол
GoldenAndy писал(а):Каждый луч - Rx и Tx. 2 линии. Подтянуты к питанию.
TX--->RX
RX<---TX
GoldenAndy писал(а):Инициатор прижимает свой ТХ к земле и ждет. Как получатель увидел на своем RX низкий уровень и готов его слушать - начинает отправлять тактовые импульсы по своему ТХ.
GoldenAndy писал(а):Как только получатель получил всё, он прекращает тактирование линии.
GoldenAndy писал(а):Соответственно, ваш центральный контроллер сидит как паук и смотрит на эти все линии и ждет, пока кто то не попросит.
GoldenAndy писал(а):Хотя эта задача должна решаться без участия главного контроллера, на сценариях поведения.
тогда это хреново сделанный мастер.roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
Сб июн 12, 2021 19:54:51
Сб июн 12, 2021 21:14:23
Вс июн 13, 2021 09:49:51
Вс июн 13, 2021 13:40:56
Вс июн 13, 2021 18:42:27
Вс июн 13, 2021 19:33:48
Вс июн 13, 2021 23:06:47
GoldenAndy писал(а):Далось вам это шифрование.
Вс июн 13, 2021 23:13:42
Вс июн 13, 2021 23:25:50
GoldenAndy писал(а):Просто с внешней синхрой телодвижений в коде меньше.
Пн июн 14, 2021 01:01:00
Пн июн 14, 2021 12:39:25