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

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

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

Сообщение Vooon » 18 апр 2009, 18:32

Нет, КА вполне честный:
В CET_COMMAND получаем 'C', переходим в состояние PARSE_CONFIG, выходим.
В PARSE_CONFIG вызывается другой КА (get_cmd_byte()) по его завершению выходим.

bool get_cmd_byte(char, *data, *error)
На первый вход читает старшую часть байта, и помещает его в *data, переключает состояние на прием второй части, возвращает 0.
Во второй вход читает младшую часть, побитное или результата с *data, результат помещается обратно в *data,
возвращает 1.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение =DeaD= » 18 апр 2009, 23:08

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

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

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

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

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

Сообщение Vooon » 19 апр 2009, 19:01

Буфер. В оригинальном девайсе собираются CDC пакеты для USB
И читает также пакет в буфер.

У меня входной буфер исключен, т.к. в нем нет необходимости.
А выплевывать удобней в буфер, в случае ошибки легко отменить вывод сбросив внутреннее состояние буфера.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение Vooon » 27 апр 2009, 20:39

Сильно дебажная версия нового шлюза http://hg.vehq.ru/i2c-parser/
Выкладываю для проверки работы I2C.
Вложения
i2c-gate.hex
(21 КиБ) Скачиваний: 277
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение =DeaD= » 27 апр 2009, 23:11

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

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение blindman » 28 апр 2009, 04:47

Все таки нафигачили кучу команд избыточных ?
Проект [[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: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение Vooon » 28 апр 2009, 05:21

Весь список команд:

S<adr><data>[S<adr><data>[S...]]P
R<adr><reg>[<len>]
W<adr><reg><data>
C<freq>
L<adr>
V
# comment


При чем R/W только для удобства, парсер перегоняет в формат идентичный командам:

R —> S<adr+w><reg>S<adr+r><len>P
W —> S<adr+w><reg><data>P


Эту часть парсера можно легко отключить.

L — для установки адреса внутреннего ведомого;
С — для настройки частоты тактирования, по умолчанию 100 кГц.

V — показать версию прошивки
# — просто удобно, тем более что кода занимает не много, обрабатывается полностью парсером.

Добавлено спустя 15 минут 53 секунды:
Деиствие запись/чтение зависит от последнего бита адреса (как и в i2c)

Условно обозначу запись/чтение
<adr+w> в бинарном виде: xxxxxxx0
<adr+r> — xxxxxxx1

<adr>, <reg> и <len> записывается последовательностью из двух символов в шестнадцатеричной системе
до и после может быть любое число пробелов

<data> записывается аналогично адресу, есть альтернативный вариант: \<любой-символ>

Запись:
S<adr+w><data>

Чтение:
S<adr+r><len>

Для команды R <len> по умолчанию равен 1.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение =DeaD= » 28 апр 2009, 09:22

blindman писал(а):Все таки нафигачили кучу команд избыточных ?

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

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение blindman » 28 апр 2009, 10:20

Я предлагал 2 - запись и чтение. L, C, V - избыточны. Под них резервируем регистры, и используем чтение/запись
Проект [[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: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение =DeaD= » 28 апр 2009, 12:10

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

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение Vooon » 29 апр 2009, 05:45

Забыл указать команду X — сбросить шину, посути выполняет S 00 P.

Считаю что переносить С в регистр нельзя: иначе мы лишаемся возможности отделить програмный модуль Serial-to-I2C чтобы использовать его отдельно (например в малом модуле serial->i2c на какой-нибудь мелкой меге/тиньке) без использования части модуля ведомого. L в таком модуле может отсутствовать.

V удобна для проверки порта (есть кто? И если есть, то какой версии протокол?)
Можно сказать эквивалент AT
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение =DeaD= » 29 апр 2009, 08:36

На самом деле, как мне кажется, можно применить и тот и другой подходы. (можно оставить LCVX команды и сделать L необязательной, а можно сделать L обязательной и CVX сделать через i2c регистры). Всё это по причине того, что конвертер uart<->i2c это вообще говоря штука обособленная и пока мне не ясно почему оно обязательно должно быть через i2c-регистры :pardon:

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

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение Vooon » 29 апр 2009, 15:58

L и сейчас посылать не обязательно, адрес по умолчанию 0xAA
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сообщение =DeaD= » 29 апр 2009, 16:41

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

Пред.След.

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

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

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