Связь по I2C

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Связь по I2C

Сообщение zzontt »

Есть Атмега64(мастер) и 3 Атмеги8 (слеивы), могу ли я полноценно управлять 3мя слейвами по этой шине. К трем 8м мегам будут подключены матрицы светодиодов на сдвиговых регистрах. Скажите как мне управлять этими матрицами по этой шине, какова должна быть логика работы? Как просто управлять сдвиговыми регистрами я знаю, я не понимаю как это делать передавая команды с одного МК по I2C на другой МК.
Не бейте за глупости, я только учусь)
Реклама
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Связь по I2C

Сообщение igor-x »

конечно можно связать по i2c любые устройства , поддерживающие стандарт .
поищите - гдето в своих сообщениях в этом форуме я приводил ссылку на библиотеку i2c ,
очень хорошая библиотека - поддерживает все режимы i2c мастер, слейв, мультимастер.
Реклама
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Связь по I2C

Сообщение igor-x »

только учтите что i2c это внутриприборный интерфейс и на расстояния больше 2 метров работать не будет .

если на сайте не нашли ссылку, то поищите в интернете по автору Author: Pascal Stang.
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

igor-x писал(а):конечно можно связать по i2c любые устройства , поддерживающие стандарт .
поищите - гдето в своих сообщениях в этом форуме я приводил ссылку на библиотеку i2c ,
очень хорошая библиотека - поддерживает все режимы i2c мастер, слейв, мультимастер.
Нет не в библиотеке дело, я знаю как передавать данные по шине, я не очень понимаю что надо передавать что бы устройство на другом конце выполнило то что я от него хочу, меня интересует логика общения с другой микросхемой.
Грубо говоря как будет выглядить передача такой команды:
Миросхема с адресом таким то, выстави 1 на 5 ножке порта А, если на 2 ножке порта B есть высокий уровень, иначе выстави 0 на 3 ножке порта С.
Последний раз редактировалось zzontt Чт мар 28, 2013 10:09:36, всего редактировалось 1 раз.
Не бейте за глупости, я только учусь)
Реклама
Эиком - электронные компоненты и радиодетали
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

igor-x писал(а):только учтите что i2c это внутриприборный интерфейс и на расстояния больше 2 метров работать не будет .

если на сайте не нашли ссылку, то поищите в интернете по автору Author: Pascal Stang.
А вот это плохо, очень плохо что на два метра максимум, у меня задача примерно каждые 5-10 метров на шину повесить много управляемых устройств, что можно тогда в альтернативе использовать?
Не бейте за глупости, я только учусь)
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Связь по I2C

Сообщение ChipKiller »

у меня задача примерно каждые 5-10 метров на шину повесить много управляемых устройств, что можно тогда в альтернативе использовать?
.. старый добрый ModBus. http://ru.wikipedia.org/wiki/Modbus
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Связь по I2C

Сообщение ibiza11 »

на длинные линии я рекомендую Вам интерфейс RS485/422 (в Вашем случае оба подойдут)
протокол - самое простое UART.
мастер отправляет посылку в режиме 9-битного UART с адресом необходимого слейва. В этот момент все слейвы ждут свой адрес в режиме 9-битного UART.
Если мастер отправил адрес слейва, который находится сейчас на шине, то слейв и мастер переходят в режим 8-бит UART и мастер передает необходимые команды и данные слейву.
например мастер отправляет 5 байт:
1) код команды - 1 байт
2) данные команды - 2-5 байты
слейв должен знать, что состав посылки состоит из 5 байт, принимает все байты в буфер, а после окончания приема анализирует всю посылку от мастера.
например анализирует команду в 1 байте, в зависимости от его значения делает то, что нужно с данными из 2-5 байтов посылки.
вроде элементарно.

можно и ModBus, если хочется)
Ставим плюсы: )
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

ibiza11 писал(а):на длинные линии я рекомендую Вам интерфейс RS485/422 (в Вашем случае оба подойдут)
протокол - самое простое UART.
мастер отправляет посылку в режиме 9-битного UART с адресом необходимого слейва. В этот момент все слейвы ждут свой адрес в режиме 9-битного UART.
Если мастер отправил адрес слейва, который находится сейчас на шине, то слейв и мастер переходят в режим 8-бит UART и мастер передает необходимые команды и данные слейву.
например мастер отправляет 5 байт:
1) код команды - 1 байт
2) данные команды - 2-5 байты
слейв должен знать, что состав посылки состоит из 5 байт, принимает все байты в буфер, а после окончания приема анализирует всю посылку от мастера.
например анализирует команду в 1 байте, в зависимости от его значения делает то, что нужно с данными из 2-5 байтов посылки.
вроде элементарно.

можно и ModBus, если хочется)
Ох, разбираться с этим все, куча времени уйдет ну что же будем разбираться)
Не бейте за глупости, я только учусь)
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Связь по I2C

Сообщение Jack_A »

ibiza11 писал(а): протокол - самое простое UART. ..

можно и ModBus, если хочется)
Тут, мне кажется, путаница теплого с мягким. UART определяет физическую организацию интерфейса (уровни, число бит инф. и стоповых, скорость передачи etc ). А ModBus -- логическую организацию ( ASCII mode -- RTU mode ), адреса , команды , CS/CRC и пр.
В дюжине сваянных мной систем UART работал по протоколу Modbus ( слегка модифицированному ) . :) Среда передачи -- токовая петля или InfraRed .
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

Jack_A писал(а):
ibiza11 писал(а): протокол - самое простое UART. ..

можно и ModBus, если хочется)
Тут, мне кажется, путаница теплого с мягким. UART определяет физическую организацию интерфейса (уровни, число бит инф. и стоповых, скорость передачи etc ). А ModBus -- логическую организацию ( ASCII mode -- RTU mode ), адреса , команды , CS/CRC и пр.
В дюжине сваянных мной систем UART работал по протоколу Modbus ( слегка модифицированному ) . :) Среда передачи -- токовая петля или InfraRed .
А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
Не бейте за глупости, я только учусь)
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Связь по I2C

Сообщение igor-x »

А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
не забывайте упомянуть вашу предидущую тему. чтоб было понятно всем что реч идет о длине шины сотни метров.
http://radiokot.ru/forum/viewtopic.php?f=24&t=87405
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

igor-x писал(а):
А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
не забывайте упомянуть вашу предидущую тему. чтоб было понятно всем что реч идет о длине шины сотни метров.
http://radiokot.ru/forum/viewtopic.php?f=24&t=87405
Ну это да, устройства на этой шине будут висеть примерно каждые 10 метров.

Да шина будет достаточно длинная, поэтому я пока что и в поиске оптимального решения, ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
Не бейте за глупости, я только учусь)
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Связь по I2C

Сообщение igor-x »

ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
вам эти решения уже по кругу третий раз рассказывают - берете за основу шину RS485 , пишете протокол обмена со своими устройствами.
все.
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

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

Просто прочитав все выше тут, и в теме которую я поднимал до этого http://radiokot.ru/forum/viewtopic.php? ... 9#p1629219 мне кажется это оптимальным вариантом.
Не бейте за глупости, я только учусь)
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

И еще насчет логики работы МК связанных например UARTом. Правильно ли я понимаю, что управляющий контролер отправляет команду, а в принимающем должны быть прошиты варианты реакций на приходящие команды. Тобишь если управляемый контролер принял символ A, то он должен выполнить набор команд зашитых в него изначально соответствующих приходу символу А? или я все же неправильно понимаю принцип управления?
Не бейте за глупости, я только учусь)
zzontt
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт дек 13, 2012 19:31:00
Откуда: Санкт-Петербург
Контактная информация:

Re: Связь по I2C

Сообщение zzontt »

igor-x писал(а):
ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
вам эти решения уже по кругу третий раз рассказывают - берете за основу шину RS485 , пишете протокол обмена со своими устройствами.
все.
Да это я уже понял, этот вариант и буду разрабатывать.
Не бейте за глупости, я только учусь)
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Связь по I2C

Сообщение ibiza11 »

Jack_A писал(а): Тут, мне кажется, путаница теплого с мягким.
Добрый день. В моем сообщении нет ни слова о том, что ModBus и UART это протоколы одного и того же уровня инкапсуляции. Если прочтете мое сообщение полностью, то найдете там описание протокола уровнем выше физического, основанном на данных, передающихся по UART. Именно этот безымянный (кустарный) протокол "верхнего" уровня я и имел в виду, говоря "можно и ModBus". Т.е. или тот, что я описал или ModBus. Думаю теперь должно быть понятно.
Ставим плюсы: )
Ответить

Вернуться в «Периферия»