реклама на сайте
подробности

 
 
> Объединение двух TXD в UART, Реально ли "услышать" обоих, если скорости будут разные?
Alt.F4
сообщение May 1 2011, 09:16
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Добрый день.
Хочу посадить два устройства на одну линию TXD и завести на RXD AVR. Передачу данных будут проводить одновременно.
Можно ли будет "услышать" обоих по очереди, если скорости взять допустим 9600 и 57600?
Или все-таки будет мусор в регистре чтения UART и надо чтобы устройства писали по одному?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
V_G
сообщение May 1 2011, 09:24
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Если посылки будут накладываться, не различить никак. Если один RxD, надо еще знать, на какой скорости будет очередная посылка, и заранее переключаться.
Вариант - запараллелить 2 порта, настроенные на разные скорости. И сбрасывать флаги ошибок. Но постоянные ошибки могут привести к частичной потере данных в моменты переключения скоростей.
В общем, неправильно это...
Go to the top of the page
 
+Quote Post
firstvald
сообщение May 1 2011, 09:51
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 580
Регистрация: 3-06-08
Пользователь №: 38 041



Разрешается ситуация по другому. Просто опрашиваем эти устройства по очереди - делаем из master slave ами. И никаких конфликтов не будет.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 1 2011, 09:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Вам нужно определиться:
или
Цитата(Alt.F4 @ May 1 2011, 12:16) *
Передачу данных будут проводить одновременно.

или
Цитата(Alt.F4 @ May 1 2011, 12:16) *
Можно ли будет "услышать" обоих по очереди

Так как данные на приемном конце существуют только в момент передачи, то возможна либо передача одновременно (и, соответственно прием одновременно), или передача по очереди (и, соответственно прием по очереди).
При одновременной передаче эта задача не решается в общем случае (может быть решена с кучей дополнительных условий для конкретного частного случая), при последовательной передаче- придется немного постараться, но совершенно ничего сложного нет. Но, разумеется, никакой аппаратный UART с этой кашей не справится, все ручками.
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение May 1 2011, 09:57
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Я хотел использовать МК с 2-мя UART'ами, но из-за неверных параметров на сайте Атмела, я купил AVR с один UART'ом.
Об этом "кидалове" я писал здесь. Теперь приходиться выкручиваться.
Цитата
надо еще знать, на какой скорости будет очередная посылка, и заранее переключаться
Да, это известно.
Цитата
Разрешается ситуация по другому. Просто опрашиваем эти устройства по очереди - делаем из master slave ами. И никаких конфликтов не будет.
У меня 1 МК и два устройства, которые "тупо" шлют в уарт определенные данные, т.е. master/slave здесь не прокатит.
Цитата
Вам нужно определиться
Я имел ввиду, что читать мне нужно по очереди, но шлют устройства инфу почти без перерывов. Т.е. вопрос заключался, будут ли портиться данные если скорости использовать максимально различные (типа UART на 9600 просто не замечает 115200 и наоборот)
Может попробовать коммутировать чем-нибудь?

Сообщение отредактировал Alt.F4 - May 1 2011, 10:11
Go to the top of the page
 
+Quote Post
V_G
сообщение May 1 2011, 10:31
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Если передатчики друг друга не слышат, данные будут портиться всегда. Т.е. есть вероятность принять верный байт, но посылку из нескольких байт подряд - гораздо меньше. И есть вероятность при получении байта на другой скорости не поиметь ошибок типа frame error или overrun error и принять за свой переданный другому байт.
Если в вашем распоряжении мало проводов, переходите на RS485 или его программный аналог на RS232, чтобы все слышали всех, встраивайте в посылки адресную информацию и передавайте все на одной скорости. Перед передачей проверяя занятость линии.
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение May 1 2011, 10:58
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



В моем случае будет проще переключать линию RXD МК с одного устройства на другое.
Вопрос чем. Реле? Ненадежно и долго...

Чуть позже:
Опа. Возьму мультиплексор ADG839.
Там с их включением бывают какие-либо проблемы?
Спасибо.

Сообщение отредактировал Alt.F4 - May 1 2011, 13:19
Go to the top of the page
 
+Quote Post
Diusha
сообщение May 23 2011, 04:56
Сообщение #8


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(Alt.F4 @ May 1 2011, 13:58) *
В моем случае будет проще переключать линию RXD МК с одного устройства на другое.

Опа. Возьму мультиплексор ADG839.

Если они одновременно не шлют, то зачем такие сложности? Достаточно логического элемента "И", можно даже на 2-х диодах и резисторе (по кр. мере, если скорость невысокая)
Go to the top of the page
 
+Quote Post
Sirko
сообщение Jun 3 2011, 20:00
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795



Не совсем ясно. Если ведется только прием данных, т.е. без запросов, значит рано или поздно настанет момент одновременного поступления данных с обоих устройств. Но т.к. одно из устройств использует скорость 9600, то организовать софтовый юарт - самое то.
Go to the top of the page
 
+Quote Post
Rimid
сообщение Jun 10 2011, 17:21
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 23-06-06
Из: Харьков
Пользователь №: 18 322



а может второй 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016