...хммм... что-то не нашел законченного документа, хотя мне казалось, что он был.
![Crying or Very sad :cry:](http://roboforum.ru/images/smilies/cray.gif)
Правда я за это время несколько компов сменил...
Вот, в ПДФах мои размышления на тему протоколов и модульности.
Проектирование модульной системы.pdf
Файл "Проектирование модульной системы" посвежее. Я его планировал потом дополнить дельными мыслями из более раннего айла, который тоже публикую. Вот он:
I2C - мой протокол - v 0.3.pdf
Гляньте - может что полезное для вас найдете.
ЗЫ
Кстати, прошу заметить, что RoboBUS мной использовался еще в 2006 году. И он не имеет никакого отношения к робобасу, который развивается сейчас на форуме.
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
ЗЗЫ
Еще раз извиняюсь, что выдаю плохоструктурированную инфу вместо полноценного документа.
Добавлено спустя 22 минуты 8 секунд:Про адресацию.
Чтоб все было совместимо с и2с я надумал такую штуку (не помню уже, описано это в файликах или нет).
Вначале немного "терминологии".
Интеллектуальное устройство (ИУ) - устройство на шине и2с, которое может быть и мастером и слейвом, имеет на борту контроллер или ПЛИСbye какую-то и реализует протокол РобоБАС (в моем понимании).
НеИнтеллектуальное устройство (НИУ) - стандартное устройство и2с, типа памяти или прочего. Те же Девантехи - это НИУ.
Итак, и2с позволяет законным образом определить ИУ следующими путями:
1. широковещательное сообщение (адрес "0").
всякие МС памяти и т.п. нулевой адрес просто проигнорируют. вообще, не помню НИУ, которые отрабатывали бы броадкасты. Ну да не важно. Мы шлем броадкаст и следом байт команды, которая обозначает "ответь мне". Даже если НИУ будет отрабатывать такой броадкаст, то по стандарту и2с оно после адреса "0" получит адрес регистра и ничего страшного не произойдет. А ИУ будет в курсе, что после адреса "0" оно получило команду, в ответ на которую оно должно что-то (например, инфу о себе) заслать в шину в режиме слэйв-передатчик. Если ИУ много на шине, то они стандартными механизмами арбитража разрулят сами и все отчитаются на запрос.
Вот так и можно определить, что за устройство на шине и есть ли ИУ. И при этом стандарт не нарушим. Правда можно посбивать текущие регистры в НИУ... Ну и не очень изящно в целом - много всего гонять по шине.
2. второй вариант разруливать - это использовать зарезервированные адреса.
По стандарту и2с при 10-байтной адресации есть некоторые значения первого передаваемого байта (если надо - могу сказать, какие - лень счас в даташит лезть), которые обозначают, что общение идет по какому-то другому протоколу. Например, SMBus. Так вот, некоторые из этих значений обозначают конкретные шины, а некоторые - зарезервированы для последующего использования. Так вот можно оборзеть и прихватить такой "зарезервированный" диапазон. Тогда с НИУ можно общаться по стандартному и2с, а с ИУ - как по стандартному и2с, так и по "продвинутому". Одно ИУ может пинговать другое устройство по "продвинутому" протоколу. Если оно отвечает - значит оно ИУ и мы можем запрашивать у него инфу в рамках нашего протокола. А если не отвечает - значит мы с ним как с НИУ поговорим и все.
Ну вот как-то так.
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)