Страница 1 из 1
Связь по I2C
Добавлено: Чт мар 28, 2013 09:20:47
zzontt
Есть Атмега64(мастер) и 3 Атмеги8 (слеивы), могу ли я полноценно управлять 3мя слейвами по этой шине. К трем 8м мегам будут подключены матрицы светодиодов на сдвиговых регистрах. Скажите как мне управлять этими матрицами по этой шине, какова должна быть логика работы? Как просто управлять сдвиговыми регистрами я знаю, я не понимаю как это делать передавая команды с одного МК по I2C на другой МК.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 09:51:30
igor-x
конечно можно связать по i2c любые устройства , поддерживающие стандарт .
поищите - гдето в своих сообщениях в этом форуме я приводил ссылку на библиотеку i2c ,
очень хорошая библиотека - поддерживает все режимы i2c мастер, слейв, мультимастер.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 09:56:59
igor-x
только учтите что i2c это внутриприборный интерфейс и на расстояния больше 2 метров работать не будет .
если на сайте не нашли ссылку, то поищите в интернете по автору Author: Pascal Stang.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 10:05:30
zzontt
igor-x писал(а):конечно можно связать по i2c любые устройства , поддерживающие стандарт .
поищите - гдето в своих сообщениях в этом форуме я приводил ссылку на библиотеку i2c ,
очень хорошая библиотека - поддерживает все режимы i2c мастер, слейв, мультимастер.
Нет не в библиотеке дело, я знаю как передавать данные по шине, я не очень понимаю что надо передавать что бы устройство на другом конце выполнило то что я от него хочу, меня интересует логика общения с другой микросхемой.
Грубо говоря как будет выглядить передача такой команды:
Миросхема с адресом таким то, выстави 1 на 5 ножке порта А, если на 2 ножке порта B есть высокий уровень, иначе выстави 0 на 3 ножке порта С.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 10:07:19
zzontt
igor-x писал(а):только учтите что i2c это внутриприборный интерфейс и на расстояния больше 2 метров работать не будет .
если на сайте не нашли ссылку, то поищите в интернете по автору Author: Pascal Stang.
А вот это плохо, очень плохо что на два метра максимум, у меня задача примерно каждые 5-10 метров на шину повесить много управляемых устройств, что можно тогда в альтернативе использовать?
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 10:14:18
ChipKiller
у меня задача примерно каждые 5-10 метров на шину повесить много управляемых устройств, что можно тогда в альтернативе использовать?
.. старый добрый ModBus.
http://ru.wikipedia.org/wiki/Modbus
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 10:19:05
ibiza11
на длинные линии я рекомендую Вам интерфейс RS485/422 (в Вашем случае оба подойдут)
протокол - самое простое UART.
мастер отправляет посылку в режиме 9-битного UART с адресом необходимого слейва. В этот момент все слейвы ждут свой адрес в режиме 9-битного UART.
Если мастер отправил адрес слейва, который находится сейчас на шине, то слейв и мастер переходят в режим 8-бит UART и мастер передает необходимые команды и данные слейву.
например мастер отправляет 5 байт:
1) код команды - 1 байт
2) данные команды - 2-5 байты
слейв должен знать, что состав посылки состоит из 5 байт, принимает все байты в буфер, а после окончания приема анализирует всю посылку от мастера.
например анализирует команду в 1 байте, в зависимости от его значения делает то, что нужно с данными из 2-5 байтов посылки.
вроде элементарно.
можно и ModBus, если хочется)
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 10:45:08
zzontt
ibiza11 писал(а):на длинные линии я рекомендую Вам интерфейс RS485/422 (в Вашем случае оба подойдут)
протокол - самое простое UART.
мастер отправляет посылку в режиме 9-битного UART с адресом необходимого слейва. В этот момент все слейвы ждут свой адрес в режиме 9-битного UART.
Если мастер отправил адрес слейва, который находится сейчас на шине, то слейв и мастер переходят в режим 8-бит UART и мастер передает необходимые команды и данные слейву.
например мастер отправляет 5 байт:
1) код команды - 1 байт
2) данные команды - 2-5 байты
слейв должен знать, что состав посылки состоит из 5 байт, принимает все байты в буфер, а после окончания приема анализирует всю посылку от мастера.
например анализирует команду в 1 байте, в зависимости от его значения делает то, что нужно с данными из 2-5 байтов посылки.
вроде элементарно.
можно и ModBus, если хочется)
Ох, разбираться с этим все, куча времени уйдет ну что же будем разбираться)
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 11:20:35
Jack_A
ibiza11 писал(а):
протокол - самое простое UART. ..
можно и ModBus, если хочется)
Тут, мне кажется, путаница теплого с мягким. UART определяет физическую организацию интерфейса (уровни, число бит инф. и стоповых, скорость передачи etc ). А ModBus -- логическую организацию ( ASCII mode -- RTU mode ), адреса , команды , CS/CRC и пр.
В дюжине сваянных мной систем UART работал по протоколу Modbus ( слегка модифицированному ) .

Среда передачи -- токовая петля или InfraRed .
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:00:07
zzontt
Jack_A писал(а):ibiza11 писал(а):
протокол - самое простое UART. ..
можно и ModBus, если хочется)
Тут, мне кажется, путаница теплого с мягким. UART определяет физическую организацию интерфейса (уровни, число бит инф. и стоповых, скорость передачи etc ). А ModBus -- логическую организацию ( ASCII mode -- RTU mode ), адреса , команды , CS/CRC и пр.
В дюжине сваянных мной систем UART работал по протоколу Modbus ( слегка модифицированному ) .

Среда передачи -- токовая петля или InfraRed .
А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:10:27
igor-x
А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
не забывайте упомянуть вашу предидущую тему. чтоб было понятно всем что реч идет о длине шины сотни метров.
http://radiokot.ru/forum/viewtopic.php?f=24&t=87405
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:19:03
zzontt
igor-x писал(а):А можно тоже самое только для новичков, просто я не очень понял про что вы. как правильнее всего соединить несколько МК на растояниях порядка 10 метров?
не забывайте упомянуть вашу предидущую тему. чтоб было понятно всем что реч идет о длине шины сотни метров.
http://radiokot.ru/forum/viewtopic.php?f=24&t=87405
Ну это да, устройства на этой шине будут висеть примерно каждые 10 метров.
Да шина будет достаточно длинная, поэтому я пока что и в поиске оптимального решения, ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:24:56
igor-x
ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
вам эти решения уже по кругу третий раз рассказывают - берете за основу шину RS485 , пишете протокол обмена со своими устройствами.
все.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:27:23
zzontt
Правильно я понимаю что RS485, это UART? который есть либо аппаратно во многих МК, либо пишется программно, что не должно поставить проблем связи по этому протоколу между МК?
И на этой основе можно строить длинные линии?
Просто прочитав все выше тут, и в теме которую я поднимал до этого
http://radiokot.ru/forum/viewtopic.php? ... 9#p1629219 мне кажется это оптимальным вариантом.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:41:29
zzontt
И еще насчет логики работы МК связанных например UARTом. Правильно ли я понимаю, что управляющий контролер отправляет команду, а в принимающем должны быть прошиты варианты реакций на приходящие команды. Тобишь если управляемый контролер принял символ A, то он должен выполнить набор команд зашитых в него изначально соответствующих приходу символу А? или я все же неправильно понимаю принцип управления?
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 12:50:05
zzontt
igor-x писал(а):ибо не очень мне пока что ясно с какой стороны подойти к решению данной задачи.
вам эти решения уже по кругу третий раз рассказывают - берете за основу шину RS485 , пишете протокол обмена со своими устройствами.
все.
Да это я уже понял, этот вариант и буду разрабатывать.
Re: Связь по I2C
Добавлено: Чт мар 28, 2013 13:06:06
ibiza11
Jack_A писал(а): Тут, мне кажется, путаница теплого с мягким.
Добрый день. В моем сообщении нет ни слова о том, что ModBus и UART это протоколы одного и того же уровня инкапсуляции. Если прочтете мое сообщение полностью, то найдете там описание протокола уровнем выше физического, основанном на данных, передающихся по UART. Именно этот безымянный (кустарный) протокол "верхнего" уровня я и имел в виду, говоря "можно и ModBus". Т.е. или тот, что я описал или ModBus. Думаю теперь должно быть понятно.