Страница 1 из 1
USART по одному проводу
Добавлено: Чт июл 01, 2010 16:13:59
orin
Добрый день, Уважаемые коллеги-форумчане.
Столкнулся с одной проблемой - микроконтроллер должен обмениваться с внешним устройством по одной линии данных. Протокол обмена совместим с USART. Только линия - одна. Софтовая реализация протокола обмена данными работает, но на больших скоростях накапливаются ошибки временных задержек и работать становится сложно - ни на что другое не хватает времени. Возникает резонная мысль - а не совместить ли USART на одну линию через какой-либо блок переключателей и отдать на управление аппаратуре протокол обмена данными, а самому пользоваться прерываниями и снимать с регистров готовые данные. Схему подобную когда-то видел, но теперь найти не могу -(
Подскажите пожалуйста ссылочкой или советом, как это сделать.
Заранее благодарен, с Уважением, Дмитрий.
Re: USART по одному проводу
Добавлено: Чт июл 01, 2010 17:46:10
ARV
а в чем проблема? линии RX-TX соедините и пользуйтесь аппаратным USART. просто при собственной передаче будете еще раз принимать свои же данные, вот и все. ну и конечно, надо как-то синхронизировать ведущего-ведомого, чтобы сразу оба на передачу не стали работать...
Re: USART по одному проводу
Добавлено: Чт июл 01, 2010 20:35:03
orin
Спасибо за ответ.
Прием своих же данных...в принципе это не так страшно -)
Просто надо фильтровать протокол приема/передачи.
То есть не надо дополнительно на ключах делать "регулятор"?
Re: USART по одному проводу
Добавлено: Чт июл 01, 2010 21:50:29
ARV
если вы уверены, что оба передатчика не станут одновременно передавать - никаких ключей не нужно.
фильтра тоже никакого не надо - пока не закончите свою передачу, просто не разрешайте приемник USART, а когда соберетесь принимать - запретите передатчик.
Re: USART по одному проводу
Добавлено: Чт июл 01, 2010 22:56:22
>TEHb<
А Tx разве переходит в z состояние по окончании передачи? Не порвутся ли передатчики, стремясь каждый удержать свой уровень? Я бы поставил на выход транзисторный ключ ("открытый коллектор"), а линию подтянул бы резистором. Должно получится нечто похожее на 1-wire интерфейс. Я это говорю не просто так, а потомучто мне так кажется. На самом теле где-то тоже встречал схемку, но она скорее показывала принцип - вместо конкретных транзисторов квадратики логических элементов.
Re: USART по одному проводу
Добавлено: Чт июл 01, 2010 23:00:34
orin
Уважаемый >TEHb<, мы видимо говорим об одной и той же схеме. я, конечно, тестировал УСАРТ, подключая его "по кольцу", но тут два разных устройства...никто схемкой не поделится? я, как это сказать, чайник в общем -)
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 07:39:06
ARV
>TEHb< писал(а):А Tx разве переходит в z состояние по окончании передачи? Не порвутся ли передатчики, стремясь каждый удержать свой уровень?
см. выше - я советовал ОТКЛЮЧАТЬ передатчик после своей передачи. при отключенном передатчике пин становится портом ввода-вывода, а его можно настроить и на Z-состояние. если это делать не охота - простейшая диодно-резисторная развязка поможет.
да, если второе устройство есть комп, в котором нельзя отключать передатчик, диодная развязка будет необходима
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 08:30:32
orin
Всем спасибо за участие! Второе устройство - не компьютер. И там только одна ножка для ввода/вывода - так что в третье состояние она не уходит. Либо ожидание приема, либо передача данных.
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 08:32:31
kolobok0
orin писал(а):...подключая его "по кольцу", но тут два разных устройства...никто схемкой не поделится?...
не знаю как по кольцу, а вот звездой энное кол-во можно.
всё очень просто. берём элементы ИЛИ-НЕ. кол-во их = кол-ву линий. А кол-во входов = кол-ву линий минус одын. на входах-выходах паука преобразователи уровней (если требуется RS232 юзать. если юарт - то можно и без этого), далее каждый сигнал TX соеденяем с каждым элементом ИЛИ-НЕ кроме своего. Выхода с ИЛИ-НЕ подключаем к RX.
получется, что все слышат кроме своего.
осталось на программном уровне разрулить одновременную передачу и сеть готова.
Автор схемы Кирилюк Александр. год 1990 где то. девайс превосходно соеденял энное кол-во компов для перекачки через пи.ерНортон.
удачи вам
(круглый)
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 09:16:36
orin
Кстати отличная идея kolobok0, спасибо. Думаю скорости работы этой логики хватит, чтобы обеспечить четкое переключение при передачи 128кбс-512 кбс.
Вот подумал - получилось решение на логике.
1. шесть логических элементов НЕ - К155ЛН1, КМ155ЛН1 (SN7404N, SN7404J).
2. четыре логических элемента 2И - К155ЛИ1, КМ155ЛИ1 (SN7408N, SN7408J).
Задержки перевключения: до 22 нс.
Схема прилагается.
Через инвертор получается переключение направления передачи (Direction). Элементы И будут блокирующими.
Приемник и передатчик в не активном режиме можно и не отключать наверное, так как при блокировке ключами там будет либо сплошной 0 (то есть отсутствие фазы страт-бита) либо вообще отсутствие выхода сигнала на TX.
Оцените?
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 18:23:24
ARV
из пушки по воробьям!
берете кремниевый диод катодом на вывод TX, анодом к линии связи. линию связи подаете на RX и резистором подтягиваете к питанию. вот и все - и никаких других компонентов. говорил же: диодная развязка....
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 20:01:30
kolobok0
orin писал(а):...Схема прилагается....
добрался до компа с софтом

немного пришлось сжать картинку.
схема для четырёх каналов. с лева выхода (TX от uart-ов) с права их входа
ну это для пущей ясности
(круглый)
Re: USART по одному проводу
Добавлено: Пт июл 02, 2010 22:47:34
orin
Это уже сетка получается -)
Я сетку между МК делал когда-то на SPI по кольцу...