ATmega128, на один UART подключить 2 устройства

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 10
Зарегистрирован: Вс мар 04, 2012 21:33:01

Сообщение mzaliznyak »

Добрый день!
На один УАРТ меги128 (второй УАРТ уже занят) необходимо подцепить два устройства. Решил сделать вариант поочередного подключения двух MAX232 к линиям RX, TX контроллера:
на вход четырехканального коммутатора сигналов HC4066 подключил Rx и Tx пины контроллера, выходы HC4066 соответственно на два 232 MAXа. Схема работает, но с одним глючком: после переключения MAX232 с одного на другой, тот MAX который отключил шлет дополнительный байт "мусора".
Подтяжки 1 кОм к входам MAX232 не решают проблему, я бы даже сказал они не влияют никак...
Какие есть мысли, коллеги? :)
Реклама
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Что показывает осциллограф, подключенный на этот самый вход "отключаемого MAX232"?
Есть уверенность, что переключение MAX232 производится в момент неактивности UART? Т.е. в момент "сейчас ничего не передаётся".
mzaliznyak писал(а):Подтяжки 1 кОм к входам MAX232 не решают проблему, я бы даже сказал они не влияют никак...
Подтягивающий резистор подключен куда - к земле или к питанию?
Реклама
Родился
Сообщения: 10
Зарегистрирован: Вс мар 04, 2012 21:33:01

Сообщение mzaliznyak »

подтяжки пробовал и к питанию и к земле. Если к питанию никаних изменений, если к земле после каждого байта на комп приходит 0x00.
Относительно уверенности, тестовый алгоритм такой:
1. выбрал один MAX
2, выгрузил тест байт в UDR0
3. жду установки бита UDRE (UCSR0A)
4. + делаю задержку 1 сек.

5. выбрал другой MAX, повторяю 2-4 шаги

Осциллографом посмотреть смогу позже.
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

mzaliznyak писал(а):Если к питанию никаних изменений, если к земле после каждого байта на комп приходит 0x00.
Ага, приход 0x00 - это правильное поведение. На выходе TX всё время держится "1", падающий фронт - начало передачи.

Продолжим фантазировать...
Надо определить виновника. Имхо один из:
- сам UART
- мультиплексор
- MAX232

В момент переключения на приём в контроллер ничего не "набегает"?
Чисто для опыта - можешь переключать ТОЛЬКО выход TX из контроллера, а RX оставить на одной линии, а то и для идеала - отключить от всех MAX232 и потдянуть к питанию.
На момент переключения выключать UART.

Попробовать другой мультиплексор!
Кстати! Что говорит даташит о времени перехода выхода в Z-состояние и времени восстановления из оного?
И зачем там вообще элементы с Z-состоянием, когда можно всё это сделать на обычной логике.
Да, хотелось бы взглянуть на схему всего этого дела.

Не конфигурировать UART, а ножку TX сконфичить как выход и установить там "1".
Затем попробовать переключать линии - будет приходить мусор?

Вариант с осциллом был бы идеальным. Ладно - есть возможность подцепить на входе MAX232 хотя бы другой контроллер с UART? Подслушать TTL-уровни сигнала.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 10
Зарегистрирован: Вс мар 04, 2012 21:33:01

Сообщение mzaliznyak »

Что говорит даташит о времени перехода выхода в Z-состояние и времени восстановления из оного?
Очень сильный вопрос, спасибо!!! :)
Дело оказалось именно во времени переключения коммутатора. После того, как в алгоритм добавил задержу около 0,2 с после смены MAXa, мусор исчез.
Кстати, без резисторных подтяжек к +5В тоже работает стабильно, думаю, тех внутренних 400 кОм, которые тянут к питанию линии в MAX232 вполне достаточно.
Сейчас буду основной алгоритм пилить...

Относительно вопроса:
И зачем там вообще элементы с Z-состоянием, когда можно всё это сделать на обычной логике.
Как бы смешно не было: она просто была в моей шкатулке :) Ну а выбрал ее из-за рекламы в пдф-ке:
"The CD4066 is a quad bilateral switch intended for the transmission or multiplexing of analog or digital signals."

Кроме того, У HC4066 напряжение питания 3 В-15 В. При повышении питани все выгорит, а она буде переключать :))
Реклама
orinoko

Сообщение orinoko »

А если использовать преобразователь SPI-to-UART? Есть микросхемы такие.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Видимо вопрос цены. Преобразователь SPI-UART довольно дорогие. А тут mzaliznyak обошёлся тем, что было под рукой.
Родился
Сообщения: 10
Зарегистрирован: Вс мар 04, 2012 21:33:01

Сообщение mzaliznyak »

Друзья! Важно, внутренние подтяжки 400кОм в MAX232 не справляются с помехами, когда пины передатчика висят в воздухе. Подтянул к +5В 4,7 кОМ
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

[uquote="mas123",url="/forum/viewtopic.php?p=2252807#p2252807"][quote="mzaliznyak"]И зачем там вообще элементы с Z-состоянием, когда можно всё это сделать на обычной логике.[/uquote]подскажите какие. в идеале нудно коммутировать 4 UART? желательно чтобы микросхема управлялась двоичным кодом (2 линии)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

561КП1 (CD4052A)
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

а почему они все аналоговые? и как они понимают где вход а где выход?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

RusikOk писал(а):...как они понимают где вход а где выход?
Приблизительно, как механический выключатель "понимает где вход и где выход". :)))
/уровни входных сигналов не должны выходить за границы питания 561КП1/
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

я уже почитал. там используется особенность полевых транзисторов
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Сообщение alex_ »

[uquote="RusikOk",url="/forum/viewtopic.php?p=3452653#p3452653"]в идеале нудно коммутировать 4 UART[/uquote]
А как насчёт посмотреть в сторону интерфейса rs485? используется всего 2 провода(но лучше 3) и можно устройств на эти два провода вешать кучу, микросхема при этом например max485 стоит не дорого и является переходником интерфейса UART-RS485. Из минусов: программное разделение устройств(надо мудрить с протоколом общения). Или можно использовать разрешающие входы данной микросхемы проключая её в необходимую вам сторону
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

на одном из каналов будет 485 на всякий случай но мне нужна шина eBUS плюс на этот же юарт еще нужно поцепить esp8266 и еще пару устройств
Контактная информация:
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Тогда может быть взять камешек посерьезнее? Тот же STM32F103RCT6 при тех же 64 ногах имеет на борту 3 USART'а плюс 2 UART'а, итого пять. Да еще и 256K Flash, 48K SRAM и кучу всякого вкусного. Оно, конечно, подороже будет, чем 128-я Мега, но некритично, процентов на 20-40.

Добавлено after 7 minutes 23 seconds:
Да, оно, правда, трехвольтовое, так, что придется ставить MAX3232, но это мелочи... :)
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

я не ТС у меня и так стмка только навешал я на нее дальше некуда. переделывать все нет желания потому изобретаю костыли
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

RusikOk писал(а):...потому изобретаю костыли
Не такой уж это и "костыль" с мультиплексором.
В частности, такое же решение мне попадалось в Inmarsat-овских "буях" (которые стоят на кораблях и передают координаты судна)...
/это к вопросу о надёжности (в т.ч., по климатике) таких решений/
Единственное о чём надо помнить: "замкнутый ключ" мультиплексора может, в худшем случае, иметь сопротивление порядка 200 Ом ("со всеми вытекающими" по схемотехнике, трассировке и монтажу)...
Для вашего применения, так же, подойдёт 74HC4052.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Albert_V писал(а):Не такой уж это и "костыль" с мультиплексором.
Угу. Если обмен будет идти строго под контролем МК. Конкретно - в случае, когда никто из абонентов, подключенных к этому USART'у через мультиплексор, ни при каком случае не будет ничего передавать в сторону МК по собственной инициативе - только и строго в ответ на запрос от МК. Тогда все просто: переключился на выбранного абонента, послал ему запрос-команду-данные, что там надо по протоколу, дождался ответа, завершил сеанс связи с этим абонентом, можно переключаться на другого. А вот если кому-то из абонентов может вдруг понадобиться передать что-то по собственной инициативе, тогда все намного сложнее - или городить отдельную схему приёма, опять же, отдельного сигнала "требую обслуживания" с запоминанием номера абонента, потребовавшего это, или переходить к 485, и тогда не нужны мультиплексоры, а разбирательство "с кем из абонентов работать" выносится на уровень протокола.
Albert_V писал(а):Для вашего применения, так же, подойдёт 74HC4052.
Угу, и это намного лучше, чем простая CD4052, поскольку у 74HC быстродействие намного выше, чем у CD40, особенно при низких напряжениях питания.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев

Сообщение RusikOk »

не ну ставить 2-3 формирователя 485 интерфейса на одной плате это как по мне перебор костылей будет
Контактная информация:
Ответить

Вернуться в «AVR»