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

 
 
 
Reply to this topicStart new topic
> Мультиплексирование UART, как сделать?
qwerty
сообщение Oct 4 2007, 11:24
Сообщение #1


Участник
*

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



Возникла такая задача. Есть atmega16, и ей нужно общаться с несколькими устройствами посредством UART на разных скоростях (поочередно). Можно ли для этого как-то мультиплексировать сигналы rxd и txd, и какой мультиплексор лучше использовать?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 11:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Вообще-то для общего случая UART для соединения точка-точка. Если все устройства расположены на одной плате и кормятся от одного питания, то можно объединить TXD и RXD у всех в один сигнал, но функцию пина TXD включать только на момент передачи. В остальное время TXD должен быть отключен, а устройства обязаны "слушать" линию через RXD. Естественно при такой конфигурации нужен какой-то протокол связи с адресацией устройств.
Go to the top of the page
 
+Quote Post
qwerty
сообщение Oct 4 2007, 11:35
Сообщение #3


Участник
*

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



Цитата(rezident @ Oct 4 2007, 04:31) *
Вообще-то для общего случая UART для соединения точка-точка. Если все устройства расположены на одной плате и кормятся от одного питания, то можно объединить TXD и RXD у всех в один сигнал, но функцию пина TXD включать только на момент передачи. В остальное время TXD должен быть отключен, а устройства обязаны "слушать" линию через RXD. Естественно при такой конфигурации нужен какой-то протокол связи с адресацией устройств.


Все устройства на одной плате, но скорость общения с каждым разная! Разве можно их объединить в одну шину?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 11:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(qwerty @ Oct 4 2007, 19:35) *
Все устройства на одной плате, но скорость общения с каждым разная! Разве можно их объединить в одну шину?
Если устройства "интеллектуальные" , то их можно попробовать привести к одной, наименьшей и поддерживаемой скорости. После того, как нужной устройство услышало "свой" адрес, мастер и устройство переходят на максимальную требуемую скорость


--------------------
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 11:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(qwerty @ Oct 4 2007, 17:35) *
Все устройства на одной плате, но скорость общения с каждым разная! Разве можно их объединить в одну шину?

Пурква да не па? laughing.gif Устройство (слейв) будет отвечать только в том случае, если им правильно (без ошибок) принять весь пакет запроса и адрес в запросе совпадает с собственным сетевым адресом именно этого устройства.
P.S. только конечно же это для случая, когда слейвы тоже на МК сделаны и в них можно реализовать поддержку какого-нибудь сетевого протокола.
Go to the top of the page
 
+Quote Post
tyro
сообщение Oct 4 2007, 11:47
Сообщение #6


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(qwerty @ Oct 4 2007, 14:35) *
Все устройства на одной плате, но скорость общения с каждым разная! Разве можно их объединить в одну шину?

Можно, если только одно устройство ведущее, а остальные ведомые.


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
qwerty
сообщение Oct 4 2007, 11:51
Сообщение #7


Участник
*

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



Цитата(prottoss @ Oct 4 2007, 04:42) *
Если устройства "интеллектуальные" , то их можно попробовать привести к одной, наименьшей и поддерживаемой скорости. После того, как нужной устройство услышало "свой" адрес, мастер и устройство переходят на максимальную требуемую скорость


Если бы так можно было сделать, я бы так и сделал. smile.gif
Проблема в том, что скорости слейвов менять не получится. Надо их развести физически...
Go to the top of the page
 
+Quote Post
wodya
сообщение Oct 4 2007, 11:57
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 27-03-07
Пользователь №: 26 549



Я использовал механическое реле, но у меня RS переключался один раз в начале работы.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 4 2007, 12:00
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(qwerty @ Oct 4 2007, 15:24) *
Возникла такая задача. Есть atmega16, и ей нужно общаться с несколькими устройствами посредством UART на разных скоростях (поочередно). Можно ли для этого как-то мультиплексировать сигналы rxd и txd, и какой мультиплексор лучше использовать?

Посмотрите описание интерфейса LIN. Это очень похоже на Ваш случай. Если хотите, то у меня на сайте есть статьи про микроконтроллеры НЕК, там есть описание этого интерфейса...
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
qwerty
сообщение Oct 4 2007, 12:16
Сообщение #10


Участник
*

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



Цитата(rezident @ Oct 4 2007, 04:46) *
P.S. только конечно же это для случая, когда слейвы тоже на МК сделаны и в них можно реализовать поддержку какого-нибудь сетевого протокола.



ну в моем случае слейвы - это atmega8, gsm-модем, и rs-232 :-)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 12:19
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(qwerty @ Oct 4 2007, 19:51) *
Если бы так можно было сделать, я бы так и сделал. smile.gif
Проблема в том, что скорости слейвов менять не получится. Надо их развести физически...
Может быть тогда есть возможность выделить отдельные линии для выбора мастером нужного устройства


--------------------
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 12:22
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(qwerty @ Oct 4 2007, 18:16) *
ну в моем случае слейвы - это atmega8, gsm-модем, и rs-232 :-)

Ну в таком случае и 74HC4052 думаю подойдет smile.gif Только pull-up на выходах сигналов RXD мультиплексора не забудьте.
Go to the top of the page
 
+Quote Post
qwerty
сообщение Oct 4 2007, 12:34
Сообщение #13


Участник
*

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



Цитата(rezident @ Oct 4 2007, 05:22) *
Ну в таком случае и 74HC4052 думаю подойдет smile.gif Только pull-up на выходах сигналов RXD мультиплексора не забудьте.


Спасибо! Я думаю, это как раз то, что надо! beer.gif
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Oct 5 2007, 14:59
Сообщение #14


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(qwerty @ Oct 4 2007, 16:34) *
Спасибо! Я думаю, это как раз то, что надо! beer.gif


Можно сделать по принципу шины, без всяких спец. переключений. Устройства должны сами диспетчиризировать направление передачи и адресацию. Физически достаточно поставить пару штук элементов 2и-не (если без преобразователя на 12в). Смысл прост до безобразия - выхода коммутируются так, что бы исключить прослушку себя же. Получаем логически - шинную топологию. Физически это будет выглядеть как наращиваемая звезда. Схема разработана Кирилюком Александром в 1991 году где то. ТЦ "Ритм"...

удачи Вам
(круглый)
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 5 2007, 17:40
Сообщение #15


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Если вы хотите сделать, чтобы с компьютера иметь возможность общаться и с m8 и с модемом и m8 c модемом, можно сделать так. По тх rx PC соединить с rx tx модема и атмеги соответственно. Только на атмегу пускать через 4053. После подачи питания или программно или вручную 4053 коммутирует PC на m8. Если m8 должна работать с модемом, или она или джампером менять адрес дабы перевернуть сигналы. Только надо по TX поставить диоды и подтянуть ноги уартов.
Go to the top of the page
 
+Quote Post

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

 


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


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