roboforum.ru

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


Обсуждение протокола шлюз-контроллера

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

Re: Обсуждение протокола шлюз-контроллера

Сообщение Сергей » 13 мар 2009, 22:00

юзайте CAN :)
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 13 мар 2009, 22:46

blindman писал(а):при адресации встроенного контроллера передаём адрес, регистр и данные
при адресации подчиненного - адрес, регистр и данные

Не понял, а это тогда что имелось в виду:
blindman писал(а):Адресация в протоколе - двухбайтная. Если старший байт == 0, адресуется устройство на шине I2C, иначе - внутренний ресурс контроллера. В последнем случае старший байт адреса задает I2C адрес контроллера, младший - внутренний адрес ресурса

Или уже не актуально? А то иначе получается, что формат передачи адреса и регистра для локального или подчиненного контроллера отличается, что не есть унификация?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение Digit » 14 мар 2009, 02:17

...хммм... что-то не нашел законченного документа, хотя мне казалось, что он был. :cry: Правда я за это время несколько компов сменил...
Вот, в ПДФах мои размышления на тему протоколов и модульности.
Проектирование модульной системы.pdf

Файл "Проектирование модульной системы" посвежее. Я его планировал потом дополнить дельными мыслями из более раннего айла, который тоже публикую. Вот он:
I2C - мой протокол - v 0.3.pdf

Гляньте - может что полезное для вас найдете.

ЗЫ
Кстати, прошу заметить, что RoboBUS мной использовался еще в 2006 году. И он не имеет никакого отношения к робобасу, который развивается сейчас на форуме. :)

ЗЗЫ
Еще раз извиняюсь, что выдаю плохоструктурированную инфу вместо полноценного документа. :oops:

Добавлено спустя 22 минуты 8 секунд:
Про адресацию.
Чтоб все было совместимо с и2с я надумал такую штуку (не помню уже, описано это в файликах или нет).
Вначале немного "терминологии".
Интеллектуальное устройство (ИУ) - устройство на шине и2с, которое может быть и мастером и слейвом, имеет на борту контроллер или ПЛИСbye какую-то и реализует протокол РобоБАС (в моем понимании).
НеИнтеллектуальное устройство (НИУ) - стандартное устройство и2с, типа памяти или прочего. Те же Девантехи - это НИУ.

Итак, и2с позволяет законным образом определить ИУ следующими путями:
1. широковещательное сообщение (адрес "0").
всякие МС памяти и т.п. нулевой адрес просто проигнорируют. вообще, не помню НИУ, которые отрабатывали бы броадкасты. Ну да не важно. Мы шлем броадкаст и следом байт команды, которая обозначает "ответь мне". Даже если НИУ будет отрабатывать такой броадкаст, то по стандарту и2с оно после адреса "0" получит адрес регистра и ничего страшного не произойдет. А ИУ будет в курсе, что после адреса "0" оно получило команду, в ответ на которую оно должно что-то (например, инфу о себе) заслать в шину в режиме слэйв-передатчик. Если ИУ много на шине, то они стандартными механизмами арбитража разрулят сами и все отчитаются на запрос.
Вот так и можно определить, что за устройство на шине и есть ли ИУ. И при этом стандарт не нарушим. Правда можно посбивать текущие регистры в НИУ... Ну и не очень изящно в целом - много всего гонять по шине.
2. второй вариант разруливать - это использовать зарезервированные адреса.
По стандарту и2с при 10-байтной адресации есть некоторые значения первого передаваемого байта (если надо - могу сказать, какие - лень счас в даташит лезть), которые обозначают, что общение идет по какому-то другому протоколу. Например, SMBus. Так вот, некоторые из этих значений обозначают конкретные шины, а некоторые - зарезервированы для последующего использования. Так вот можно оборзеть и прихватить такой "зарезервированный" диапазон. Тогда с НИУ можно общаться по стандартному и2с, а с ИУ - как по стандартному и2с, так и по "продвинутому". Одно ИУ может пинговать другое устройство по "продвинутому" протоколу. Если оно отвечает - значит оно ИУ и мы можем запрашивать у него инфу в рамках нашего протокола. А если не отвечает - значит мы с ним как с НИУ поговорим и все.

Ну вот как-то так. :)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Обсуждение протокола шлюз-контроллера

Сообщение avr123.nm.ru » 14 мар 2009, 03:00

Digit писал(а): I2C - мой протокол

Ну и ну ! :D
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 14 мар 2009, 03:02

2Digit: А можешь сформулировать, какие задачи ты решал своим новым протоколом, которые не были решены в штатном i2c? Автодетект подключенных к шине устройств?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение blindman » 14 мар 2009, 05:08

=DeaD= писал(а):Не понял, а это тогда что имелось в виду:
blindman писал(а):Адресация в протоколе - двухбайтная. Если старший байт == 0, адресуется устройство на шине I2C, иначе - внутренний ресурс контроллера. В последнем случае старший байт адреса задает I2C адрес контроллера, младший - внутренний адрес ресурса

Или уже не актуально? А то иначе получается, что формат передачи адреса и регистра для локального или подчиненного контроллера отличается, что не есть унификация?

Под устройством на шине I2C имеется в виду то, что Digit называет неинтеллектуальным устройством.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 14 мар 2009, 11:53

blindman писал(а):Под устройством на шине I2C имеется в виду то, что Digit называет неинтеллектуальным устройством.

Короче ты хочешь принять стандарт расширяющий I2C, которому будут удовлетворять все наши модули?
А оно надо? Какую задачу мы решаем? Давай сначала её сформулируем и обсудим надо ли её решать? :)

Добавлено спустя 35 секунд:
А то я не знаю вопросы на ваши ответы :D
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение Duhas » 14 мар 2009, 12:37

как я вижу.. ваша задача - с одного устройства управлять множеством других... этот "стандарт" как раз ее и решает...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Обсуждение протокола шлюз-контроллера

Сообщение Digit » 14 мар 2009, 14:07

avr123.nm.ru писал(а):
Digit писал(а): I2C - мой протокол

Ну и ну ! :D

:D Ну да, если отрывать от контекста, то забавно звучит.

=DeaD= писал(а):2Digit: А можешь сформулировать, какие задачи ты решал своим новым протоколом, которые не были решены в штатном i2c? Автодетект подключенных к шине устройств?

Я хотел сделать расширение для и2с, полностью совместимое (ну или максимально совместимое) со стандартом и2с и отвечающее задачам робототехники. Причем хотел сделать нечто вроде Robotis (о котором там где-то в файле написано). Что-то вроде плаг-эн-плэя тоже думал, но это не было задачей, а скорее получилось само собой.
Переделать и2с не собирался. Как раз наоборот - сделать такой протокол, чтоб стандартными возможностями и2с было удобно работать с различными модулями.
Почему подумал в сторону расширения протокола. Хотел сделать определение типов подключенных ИУ, т.к. интересна задача самообучения. На мембране как-то пробегала статейка про робота, который сам учился передвигаться... Вот хотелось копнуть в этом направлении.
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 14 мар 2009, 15:38

Duhas писал(а):как я вижу.. ваша задача - с одного устройства управлять множеством других... этот "стандарт" как раз ее и решает...

Эту задачу решает голый I2C :)

Добавлено спустя 6 минут 16 секунд:
Digit писал(а):Хотел сделать определение типов подключенных ИУ, т.к. интересна задача самообучения. На мембране как-то пробегала статейка про робота, который сам учился передвигаться... Вот хотелось копнуть в этом направлении.

Хм, в принципе понятно, но тогда получается, что ИУ как раз надо делать всякие сервоприводы, сонары и т.п. А головные контроллеры как раз редко будут новые появляться... Хотя задачу определения подключенных устройств и тем более плаг энд плэй я бы сейчас не ставил на первое место, хотя некий стандарт на запрос типа девайся по его адресу я бы тоже предусмотрел. При чем желательно посмотреть как сделано это во всяких сонарах, компасах и акселерометрах и OpenServo, может быть проще присоединиться к уже имеющимся стандартам...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение Duhas » 14 мар 2009, 15:53

Dead, создается ощущение, что после переезда думать стало сложнее.. i2c решит проблему управления устройством висящим на SPI на накотором устройстве подключенным к ПК произвольным транспортом?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 14 мар 2009, 16:19

Duhas писал(а):i2c решит проблему управления устройством висящим на SPI на накотором устройстве подключенным к ПК произвольным транспортом?

Погоди, а ты про что писал? Тут уже всё смешалось - и предложения Vooon'a и blindman'a, а теперь еще и Digit подключился, я думал ты про протокол Digit'a говоришь, который тут последний обсуждался? :)

Если более широко - да, одна из основных задач нового протокола - управлять через шлюз устройствами подключенными по I2C, SPI к головному контроллеру и периферией головного контроллера. С периферией более менее ясно - она должна управляться так, как будто бы она была подключена к дочернему контроллеру соединенному с головным по i2c протоколу. Как завернуть SPI - получается только вопрос и какими командами работать с дочерними i2c устройствами, так?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение blindman » 14 мар 2009, 16:55

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

Ни один из предложенных здесь вариантов (признаю - в том числе и мой) не позволяют обмениваться с I2C или SPI в рамках общей концепции, без объявления их некими "особенными" устройствами. Это может быть необходимость слать адрес I2C в блоке данных, или особый способ адресации, или специальная команда для SPI - но в любом случае это отход от общей концепции, или вообще отсутствие таковой.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение протокола шлюз-контроллера

Сообщение =DeaD= » 14 мар 2009, 20:01

Хм, кстати, SPI-интерфейс предлагаю объявить пораженным в правах и его юзать только для реальных SPI-устройств :)
А интерфейс I2C объявить приоритетным и считать локальные девайсы работающими по I2C :)
Таким образом мы хотя-бы сведём к 2 стандартные протоколы.

А еще можно попробовать SPI и I2C обрабатывать одним набором команд, но тут я уже пасую перед тем как SPI устроен, вроде в нём параллельно в обе стороны данные передаются, я прав?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение протокола шлюз-контроллера

Сообщение Duhas » 14 мар 2009, 20:31

да... в нем 1 минус.. адресация железная.. с помощью чип селекта )) кстати с вариантом blindmana мона разрулить и спи...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Пред.След.

Вернуться в Open Robotics

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Mail.ru counter