Технический форум по робототехнике.
KiCom » 18 июл 2006, 19:04
Как можно организовать связь? Напрашиваетьс несколько вариантов: USART, SPI ... Собственно что лучше?
avr123.nm.ru » 18 июл 2006, 19:21
Cмотря что свободно. Апноут на эту тему есть у AVR. pic16f628.narod.ru/01.htm
-= Александр =- » 18 июл 2006, 22:04
Проще всего UART. Если нужно организовывать шину (мастер и много слейвов) - I2C или SPI, но там все уже не так просто...
SfS » 19 июл 2006, 06:56
KiCom писал(а):Как можно организовать связь? Напрашиваетьс несколько вариантов: USART, SPI ... Собственно что лучше?
Ты не полностью обрисовал проблему.
Тут может быть несколько вариантов:
1. Если тебе нужна большая скорость (до мегабит) - то SPI. НО! Только на коротких линиях (порядка не более десятков см).
2. Если тебе нужна дальность связи в метры, то UART. НО! Скорость получишь не более сотен килобит.
3. Если тебе пофиг на скорость, то лучше UART - прощеподключать (всего три провода - Rx, Tx и Общий), тогда как SPI - четыре провода (MOSI, MISO, SCK и Общий).
Опять же UART на дальние расстояния надо делать с преобразователем 5B<->+-12B, тогда как на коротких можно соединять и без преобразователя - сразу по 5Вольтам.
Так что выбирай
KiCom » 19 июл 2006, 06:58
Да неверно остановлюсь на UART по крайней мере уже с ним работал. Я так понимаю это последоватьтельный интерфейс. Например есть три МК соеденить надо так: Rx_1-Tx_2 Rx_2-Tx-3 Rx_3-Tx_1
SfS » 19 июл 2006, 07:01
KiCom писал(а):Да неверно остаовлюсь на UART по крайней мере уже с ним работал. Я так понимаю это последоватьтельный интерфейс Например есть три МК соеденить надо так: Rx_1-Tx_2 Rx_2-Tx-3 Rx_3-Tx_1
Последовательно чтоли ? Тода ты не сможешь передать напрямую от 3го к 1му данные.
У тебя система "мастер-слейв" или все равноправные ?
KiCom » 19 июл 2006, 07:05
Нет все равноправные, тоесть нужно соединять все МК паралельно? Если я использую UART.
SfS » 19 июл 2006, 07:08
KiCom писал(а):Нет все равноправные, тоесть нужно соединять все МК паралельно? Если я использую UART.
Если все равноправные, то UART не подойдет - он не для того предназначен (конечно можно и с ним извратится, могу схемку кинуть попозже).
Тебе нужна шина. Например I2C. Но тогда одновременно по шине могут общаться не более 2х контроллеров.
Я сейчас исчезну на часок-другой, потом тебе схемку кину как из UARTа шину сделать.
SfS » 19 июл 2006, 09:27
Вот схема шины на UART по 5вольтам. Как видим все входы Rx микроконтроллеров соединяются вместе, а выходы Tx - через транзисторы, чтобы исключить сквозные токи и выгорания UARTов.
Все слышат всех, в один момент может передавать только один.
Правда в этом случае возникает проблема коллизий (как быть если передаать хотят одновременно два устройства?). Тут решений может бытиь тоже несколько, например таймауты, как в ethernet или динамический мастер шины...
- Вложения
-
- bus.png (4.01 КиБ) Просмотров: 3331
KiCom » 19 июл 2006, 09:47
Отлично, спасибо.
avr123.nm.ru » 19 июл 2006, 10:04
все RXD соединить а TXD подсоединить к RXD через резистор. Их сопротивление должно быть более (колич. UART * 500) Ом.
Чем меньше скорость тем больше могут быть резисторы.
======
и все же: почему не воспользоваться апноутом ???
SfS » 19 июл 2006, 10:25
avr123.nm.ru писал(а):и все же: почему не воспользоваться апноутом ???
Потому что нету этого аппноута у меня. Логично ? Ну еще потому что этот вариант проверен и работает на куче устройств...
Змей-Горыныч » 27 июл 2006, 09:32
USART всё ж не для этого. Как раз для таких систем, где куча устройств общается друг с другом, умные люди и придумали специальные шины/протоколы. По-моему I2C здесь самый правильный вариант. Конечно по первости трудности с пониманием и программированием, но насколько проще аппаратно реализовавать. Всего два проводка - и цепляй столько устройств, сколько захочешь(ну, до 128-ми :D )! А если ещё контроллер с аппаратным модулем I2C (TWI в AVR) - совсем праздник. Надо что-то передать всем сразу - на то есть общие вызовы в протоколе.
SfS » 28 июл 2006, 07:21
А воощето есть еще шинный интерфейс RS485.
Вешаешь преобразователь ADM485 на UART и одну ногу - на переключатель прием-передача...
И все работает.