antosh 0 8 мая, 2011 Опубликовано 8 мая, 2011 · Жалоба Нужен совет. Хочу создать сеть из нескольких AVR по USART. Кто нибудь сделал такое. На рисунке нарисовал примерную схему. Все будет управляться от компа, скажем хочу включить какую то ножку на AVR2, как должен выставлять адреса. С одним AVR-ом практика есть, а вот с несколькими... увы не могу разобраться. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smalcom 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба RS-485 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 38 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Это будет суперкомпьютер на AVR! :) Вообще-то, если задача сводится ТОЛЬКО к передаче управляющей команды от PC к AVRкам, а обратную информацию от AVRок в PC принимать не планируется, то допустимо все входы RX UART AVRок присоединить к одному и тому выходу TX UART PC, предварительно сделав этот сигнал более мощным. Тогда все они окажутся как бы повешенными на одну шину, с которой будут читать команды от PC (понятно, что линии передачи TX AVRок соединять между собой нельзя). Остальное дело программирования - сделать так, чтобы каждая AVRка знала свой номер и выполняла тольку ту команду, которая адресована ней, а на чужие внимания не обращала. Можно пойти и по альтернативному пути, хотя он более юмористический - соединить AVRка поездом, как вагончики. При этом TX UART PC поступает на RX UART 1-ой AVRки, ее TX соединяется с RX UART 2-ой AVRки, и т.д. Тогда алгоритм будет такой - если команда не тебе, то передай ее дальше. В последнем случае можно замкнуть КОЛЬЦО - выход последней AVRки в поезде присоединить к RX UART PC. В такой системе PC сможет получать и ответы от AVRок. При этом каждая AVRка, желающая ответить на поступившую команду (например, подтвердить ее выполнение), пускает по кольцу одностороннего движения информационную посылку, имеющую формат команды, только адресованную 0-му номеру, т.е. PC. Здесь PC может также легко проверить целостность состава, если пошлет по кругу команду ... самой себе, т.е. адресованную нулевому номеру или слишком большому номеру, которого к составе нет - тогда команда должна будет вернуться назад, как эхо, не найдя адресата. В системе, когда каждая AVRка, выполнившая команду, дает по кругу подтвержение о выполнении, целостность кольца подтверждается автоматически. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaslovVG 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Почитайте про про алгоритмическую структуру интерфейсов I2C, CAN, ETHERHET, как организуют запросы. Или используте подход MASTER SLAVE и передачу пакетов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Это будет суперкомпьютер на AVR! :) ======= Можно пойти и по альтернативному пути, хотя он более юмористический - соединить AVRка поездом, как вагончики. ======= Что в нем особо юмористического? для тестов поезд уже применял на шине RS485 :) Поезд был логический, конец передачи модуля был командой для старта следующего. Сейчас как вариант рассматриваю именно поезд. Имею, измерительные блоки гальванически развязаны через ADUM1201. Варианты: 1) входа блоков вместе, выхода через логику "И". 2) паровоз, достоинства паровоза, достижима большая плотность данных при той же скорости. блоки могут самостоятельно начинать передачу. Нумерация блоков не проблема, на нее отдельная команда блок читает номер увеличивает и передает следующему. основной блок в итоге знает длину цепи. еще одно достоинство, не придется переразводить существующие платы. другие варианты в данной задаче не рассматриваю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Действительно, ничего юмористического. Вот есть у нас блочки, живущие на RS-485 кучкой или на RS-232 по одному. Соответственно все пакеты уже под сеть заточены, с адресацией, ответами и т.п. В один прекрасный момент приходит заказчик с чемоданчиком сами понимаете чего и говорит "хочу такие же N-штук, но у меня только RS-232". Ну ладно, цепляем "паровозиком", в прерывание приёма байта по UART добавляем команду отправки его же по UART и всё. Все блочки, включая и управляющее устройство, пакеты адресованные не ему откидывают по умолчанию. Надёжность такого решения чисто теоретически ниже, но на практике устройства, блокирующие правильную шину встречались, а порванный паровозик ещё нет. Хотя и применяли его считанные разы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба === В один прекрасный момент приходит заказчик с чемоданчиком сами понимаете чего и говорит "хочу такие же N-штук, но у меня только RS-232". Ну ладно, цепляем "паровозиком", в прерывание приёма байта по UART добавляем команду отправки его же по UART и всё. === чуть сложнее, сделаю это на уровне пакетов а не байт. пакет не мой транслируем на передачу. прямая трансляция не позволит использовать автонумерацию, и не только ее. а по надежности, - все блоки внутри одного ящика. это внутренний интерфейс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 60 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба ... Тогда все они окажутся как бы повешенными на одну шину, с которой будут читать команды от PC (понятно, что линии передачи TX AVRок соединять между собой нельзя). TXы AVRов надо соединять через диоды. а по-хорошему, как уже сказали - шина 485, совсем хоршо если с физическим уровнем от CAN чтобы направлением передачи не греть голову. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhevak 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Вагончики... паровозики... кольцо... -- а если я скажу "Token Ring", то камни в кого полетят: в меня или в Ксению? Идея, конечно забавная. Так сказать кольцо без маркера доступа. Работать, разумеется, будет, но как мне кажется, это не самый лучший вариант решения. Там же куча потенциальных проблем. К стати, а где топик-стартер? Или ему все равно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба Там же куча потенциальных проблем. К стати, а где топик-стартер? Или ему все равно? Мне надо настроить блоки, и получать с них данные по мере поступления. блоки,- низкоскоростные АЦП 1...10SPS. Возможно что то типа маркера сделаю, пока не вся железная часть готова. Пакет опроса, "маркер-контейнер", в хвост которому каждый блок дописывает свои новые данные, или ставит метку пусто. При работе без маркера, у блока, должна быть очередь сообщений. С программной стороны для такой работы уже все в наличии. С пакетом - контейнером, блок должен принять и передать достаточно большой пакет данных. Дальше для экономии памяти, в длинной цепочке, напрашивается вариант контейнера с диапазоном адресов. Во всех случаях рассчитываем на худший вариант, у всех есть данные. С такой задачей опрашивать каждый блок отдельно, неинтересно. PS. и где проблемы, особенно куча? за камнями обращаться в личку. Девушкам цветы дарят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tklim 0 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба А в чем проблема использовать RS-232, параллельно соединив все ведомые девайсы ? Тем более, у мегаАВР есть такая штука как Multi-processor Communication Mode. По порядку опрашиваем какждый адрес, необходимый контроллер при ответе включает USART TX и отдает данные, потом выключает TX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 38 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба А в чем проблема использовать RS-232, параллельно соединив все ведомые девайсы ? Тем более, у мегаАВР есть такая штука как Multi-processor Communication Mode. По порядку опрашиваем какждый адрес, необходимый контроллер при ответе включает USART TX и отдает данные, потом выключает TX. Параллельно соединять RS-232 нельзя! На выходе этого интерфейса (линия TX) может быть или +10 или -10 вольт (вольтаж приблизительный), но отсутствует возможность отключится от линии. Поэтому если один из паралельно подключенных RS-232 начнет что-то передавать, а параллельно ему подключеный останется молчать, то будет коза :) - напряжения разной полярности на выходе попадут на одну и ту же линию. Свой USART микропроцессор еще может отключить (т.е. перевести соотвествующие порты в высокоимпендансное состояние), но с RS-232 этот фокус не пройдет. Хотя... Автор топика не говорил, что у него RS-232, а только USART, а это значит, что идея Клима может быть использована. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 60 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба Параллельно соединять RS-232 нельзя! На выходе этого интерфейса (линия TX) может быть или +10 или -10 вольт (вольтаж приблизительный), но отсутствует возможность отключится от линии. Поэтому если один из паралельно подключенных RS-232 начнет что-то передавать, а параллельно ему подключеный останется молчать, то будет коза :) - напряжения разной полярности на выходе попадут на одну и ту же линию. вот поэтому их и надо параллелить через диоды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhevak 0 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба Параллельно соединять RS-232 нельзя! Да чё нельзя-то сразу? -- Можно! Пусть соединяет :) (подмигиваю Ксю левым глазом). Сказано жеж "и где проблемы, особенно куча?" Только я правда не совсем догоняю, топикстатртер -- это antosh? Или antosh и e-serg -- это одно и то же лицо? Хотя... Автор топика не говорил, что у него RS-232, а только USART, а это значит, что идея Клима может быть использована. Э-э! Не-не! У топикстартера на рисунке указано -- RS232. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба А растояния какие между AVR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться