neiro писал(а):Мне просто видится менее громозко в прерывании по приёму байта просто принятые байты складывать в буферок.
В чём тут можно запариться? 4 строки кода ))...
не надо не Аков не Наков..и прочей ерунды..
Правильно тебе заметили - в этом коде ничего не сказано про то, как объединены Tx выходы слейвов. Если тупо в кучу - надо Tx Enable щелкать у слейвов, чтобы передатчик в каждый момент был один, и все равно в случае программных ошибок рискуем попалить порты (поясняю - это произойдет тогда, когда один слейв выдаст на выход 0, а второй - 1). Для любителей 485 напомню, что у его драйвера есть еще ножка DIR, под которую надо занять еще одну ногу контроллера и ее надо довести по плате до 485 драйвера. И которой тоже надо управлять чтоб конфликтов не было. Вот это все и названо тут преимуществами I2C перед уартом - там много чего аппаратно сделано.
Справедливости ради замечу, что слейвовые Tx можно объединить через диоды Шоттки, подтянуть к + питания - и проблема выгорания портов уйдет. А вот проблема протокола с предотвращением коллизий - останется.