Alt.F4 0 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Добрый день. Хочу посадить два устройства на одну линию TXD и завести на RXD AVR. Передачу данных будут проводить одновременно. Можно ли будет "услышать" обоих по очереди, если скорости взять допустим 9600 и 57600? Или все-таки будет мусор в регистре чтения UART и надо чтобы устройства писали по одному? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 11 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Если посылки будут накладываться, не различить никак. Если один RxD, надо еще знать, на какой скорости будет очередная посылка, и заранее переключаться. Вариант - запараллелить 2 порта, настроенные на разные скорости. И сбрасывать флаги ошибок. Но постоянные ошибки могут привести к частичной потере данных в моменты переключения скоростей. В общем, неправильно это... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 23 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Разрешается ситуация по другому. Просто опрашиваем эти устройства по очереди - делаем из master slave ами. И никаких конфликтов не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Вам нужно определиться: или Передачу данных будут проводить одновременно. или Можно ли будет "услышать" обоих по очереди Так как данные на приемном конце существуют только в момент передачи, то возможна либо передача одновременно (и, соответственно прием одновременно), или передача по очереди (и, соответственно прием по очереди). При одновременной передаче эта задача не решается в общем случае (может быть решена с кучей дополнительных условий для конкретного частного случая), при последовательной передаче- придется немного постараться, но совершенно ничего сложного нет. Но, разумеется, никакой аппаратный UART с этой кашей не справится, все ручками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 1 мая, 2011 Опубликовано 1 мая, 2011 (изменено) · Жалоба Я хотел использовать МК с 2-мя UART'ами, но из-за неверных параметров на сайте Атмела, я купил AVR с один UART'ом. Об этом "кидалове" я писал здесь. Теперь приходиться выкручиваться. надо еще знать, на какой скорости будет очередная посылка, и заранее переключатьсяДа, это известно. Разрешается ситуация по другому. Просто опрашиваем эти устройства по очереди - делаем из master slave ами. И никаких конфликтов не будет.У меня 1 МК и два устройства, которые "тупо" шлют в уарт определенные данные, т.е. master/slave здесь не прокатит. Вам нужно определитьсяЯ имел ввиду, что читать мне нужно по очереди, но шлют устройства инфу почти без перерывов. Т.е. вопрос заключался, будут ли портиться данные если скорости использовать максимально различные (типа UART на 9600 просто не замечает 115200 и наоборот) Может попробовать коммутировать чем-нибудь? Изменено 1 мая, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 11 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Если передатчики друг друга не слышат, данные будут портиться всегда. Т.е. есть вероятность принять верный байт, но посылку из нескольких байт подряд - гораздо меньше. И есть вероятность при получении байта на другой скорости не поиметь ошибок типа frame error или overrun error и принять за свой переданный другому байт. Если в вашем распоряжении мало проводов, переходите на RS485 или его программный аналог на RS232, чтобы все слышали всех, встраивайте в посылки адресную информацию и передавайте все на одной скорости. Перед передачей проверяя занятость линии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 1 мая, 2011 Опубликовано 1 мая, 2011 (изменено) · Жалоба В моем случае будет проще переключать линию RXD МК с одного устройства на другое. Вопрос чем. Реле? Ненадежно и долго... Чуть позже: Опа. Возьму мультиплексор ADG839. Там с их включением бывают какие-либо проблемы? Спасибо. Изменено 1 мая, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diusha 0 23 мая, 2011 Опубликовано 23 мая, 2011 · Жалоба В моем случае будет проще переключать линию RXD МК с одного устройства на другое. Опа. Возьму мультиплексор ADG839. Если они одновременно не шлют, то зачем такие сложности? Достаточно логического элемента "И", можно даже на 2-х диодах и резисторе (по кр. мере, если скорость невысокая) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sirko 0 3 июня, 2011 Опубликовано 3 июня, 2011 · Жалоба Не совсем ясно. Если ведется только прием данных, т.е. без запросов, значит рано или поздно настанет момент одновременного поступления данных с обоих устройств. Но т.к. одно из устройств использует скорость 9600, то организовать софтовый юарт - самое то. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rimid 0 10 июня, 2011 Опубликовано 10 июня, 2011 · Жалоба а может второй UART сделать программным способом? AVR274: Single-wire Software UART on tinyAVR and megaAVR devices AVR304: Half Duplex Interrupt Driven Software UART on tinyAVR and megaAVR devices AVR307: Half Duplex UART Using the USI Module on tinyAVR and megaAVR devices Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться