roboforum.ru

Технический форум по робототехнике.

1xAtmega(master) + 16xAtmega(slave) i2c

1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 17 сен 2010, 17:15

Всем здравствуйте.

Да, я знаю, что поднимаю тему, которой посвящено очень много информации в интернете, но, тем не менее, я уже 2 недели гуглю этот вопрос и так до конца и не нашёл решения.


Есть мастер МК, он связан с компьютером по USART. Есть 16 других МК, которые весят на одной линии (TWI, он же i2c) с главным, и которые считывают с датчиков некие параметры и отсылают на главный МК их, ПЛЮС(!!!) сами могут принимать от главного некие сведения и выводить их на светодиодную шкалу.


Посоветуйте, пожалуйста, реализацию i2c, которая в полной мере описывает данную ситуацию, плюс, если можно, банальный пример (можно псевдокодом) как осуществить двунаправленную передачу между главной МК и слэйвами.


Спасибо %)

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Radist » 17 сен 2010, 18:51

Нифига не понял в чем проблема. На www.gaw.ru есть переведенные атмеловские апликухи. И как работать мастером и как работать слэйвом.

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 17 сен 2010, 19:25

Читал-с.

Возникает вопрос, а как работать одновременно и мастером и слэйвом?)))

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Radist » 17 сен 2010, 21:43

Краем уха что-то слышал про мульмастеровый режим, про арбитраж. Но вам этого и не надо, насколько я понял. Все общение идет через мастера. Один мастер всегда мастер, остальные всегда слейвы. Они могут опрашивать свои датчики и зажигать светодиоды, но мастеру информацию будут пересылать только по запросу.

ЗЫ. А почему нужно именно и2ц? Он же по длине не очень длинный. Или все слейвы сидят рядышком? Может есть смысл поставить один мощный камень?

Добавлено спустя 1 минуту 57 секунд:
Или слейвы с датчиками тоже связаны по и2ц? Тогда нафиг они нужны? Проясните архитектуру системы.

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 17 сен 2010, 22:00

Архитектура такова:

Есть общая шина, инфу с которой собирает мастер и посылает на комп. На эту шину повешены блоки (блок, к примеру, из 4 потенциометров и 2х кнопок, с которых считывается информация, и 10 светодиодов, на которые выводится информация).

Критерий - гибкость платформы (можно подключить 1 блок, 10 блоков, 16 (впринципе, максимум) блоков, каждый из которых взаимозаменяем)

девайс шириной примерно 600мм, расстояние не велико.


Сначала думал действительно поставить какую-нить 1280 и просто опрашивать последовательно каждый блок, но потом от идеи отказался в связи с условием гибкости и простоты системы (каждый блок должен быть легко вынимаемым)


Слейвы, по сути дела, представляют из себя некий i2c IO Expander с небольшой внутренней логикой



По ходу дела созрел вопрос. Когда устройство в режиме слейва - оно само послать ничего не может, может только ответить на запрос?

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Radist » 17 сен 2010, 22:22

Мастер тот, кто делает клоки. Посылать запросы может только мастер.

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 17 сен 2010, 22:54

Печально)

а нет аналогичных шин, только у которых нету такой замороченности на мастер\слэйв, а просто есть линия передачи информации между МК?)

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Radist » 18 сен 2010, 15:16

Да почему печально? Все будет работать. Каждый блок - это слейв. Он работает по запросу. По шине приходит команда записи - это вывод на светодиоды. По шине приходит команда чтения - это чтение заранее полученной информации от датчиков. Я так и не получил ответа на вопрос: датчики опрашиваются по и2ц? Ну а если и2ц уже разонравился, то можно посмотреть в сторону RS485 и 1- Wire.

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 18 сен 2010, 15:31

Нет, атмега-слэйв и будет из себя представлять некий "датчик":) Шина и2с только для связи МК между собой

просто я, как, изначально, программист, очень странно смотрю на необходимость опрашивать каждый из слэйвов постоянно, имхо лучше было бы сделать, чтобы слэйвы слали данные, если они этого захотят, на мастер

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Michael_K » 18 сен 2010, 15:47

А если два одновременно захотят? шина-то одна...

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

aSt » 18 сен 2010, 16:02

Принцип "кто первый встал, того и тапки"

эх, ладно, для начала - сделаю опрос каждого слэйва в постоянном цикле, а там уже посмотрим

Re: 1xAtmega(master) + 16xAtmega(slave) i2c

Radist » 18 сен 2010, 21:36

Я же уже писал про мультимастер и арбитраж. Это ключевые слова, пихаете их в гугль и просвещаетесь. Для затравки ссылка
http://www.support17.com/component/cont ... ?task=view


cron
Rambler\'s Top100 Mail.ru counter