roboforum.ru

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


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

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

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

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

CS это простой GPIO, нет необходимости их выделять в командах SPI.
SPI обмен преобразовать в I2C-подобный достаточно просто, достаточно писать рез-т обмена в буфер.

Вообще самый простой протокол:

< S 20 01 S 21 01 P
> 70
< S 60 FF 01 02 03 S 61 03 P
> 01 02 03


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

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

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

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

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

Сообщение Digit » 18 мар 2009, 00:31

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

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

Сообщение =DeaD= » 18 мар 2009, 09:43

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

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

Сообщение blindman » 29 мар 2009, 15:00

А может все-таки признать, что внутренние устройства МК, устройства поключенные к SPI и I2C-устройства - разные вещи, управляются по-разному, и не стоит все их пихать в одну кучу?
Проект [[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= » 29 мар 2009, 16:12

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

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

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

Ну пока что рушить нечего - ничего действительно универсального предложено не было.
Проект [[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: Обсуждение протокола шлюз-контроллера

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

Дописал парcер команд.
Основывался на userial, но выкинул все лишнее

Комманды:

S<aa><data>[S<aa><data>]P — I2C
R<aa><rr>[<ll>] — register read
W<aa><rr><data> — register write
C<freq> — set I2C speed
X — clear
V — get version
#<any-data> — comment


Код: Выделить всёРазвернуть
vovan@vovan-laptop:~/src/i2c-gate$ ./i2c-gate.elf
s 20 01 s 21 01 p                               
# I2C write address: 0x20                       
# I2C write byte: 0x01                           
# I2C read address: 0x21                         
# I2C read byte 1: 0xFF                         
SAASAFFP                                         
r2001                                           
# I2C write address: 0x20                       
# I2C write byte: 0x01                           
# I2C read address: 0x21
# I2C read byte 1: 0xFF
SAASAFFP
w200102
# I2C write address: 0x20
# I2C write byte: 0x01
# I2C write byte: 0x02
SAAAP
s20 80 \f\i\l\e\n\a\m\e \. \w\a\v p
# I2C write address: 0x20
# I2C write byte: 0x80
# I2C write byte: 0x66
# I2C write byte: 0x69
# I2C write byte: 0x6C
# I2C write byte: 0x65
# I2C write byte: 0x6E
# I2C write byte: 0x61
# I2C write byte: 0x6D
# I2C write byte: 0x65
# I2C write byte: 0x2E
# I2C write byte: 0x77
# I2C write byte: 0x61
# I2C write byte: 0x76
SAAAAAAAAAAAAAAP
s20 \
p
# I2C write address: 0x20
# I2C write byte: 0x0A
SAAP
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение =DeaD= » 17 апр 2009, 21:33

А интерфейсы можно объявить по которым этот парсер будет работать с i2c реальным или с локальными устройствами?

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

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

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

Пока такой команды нет, но добавить не сложно.
Выбор канала тоже можно сделать, там сейчас заглушки вместо реальной работы с I2C, чтоб отлаживать на пк.

Добавлено спустя 5 минут 50 секунд:
Я только сомневаюсь в выводе i2c запростов.
сейчас используется вариант из userial (только без I в начале)
но из него нельзя определить какая операция проводилась (чтение/запись)
Думаю заменить Ack адреса на R/W в ответе.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

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

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

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

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

Этот модуль реализует только шлюз usart-to-i2c.
Обработка локальных запросов — задача другого модуля, и поскольку вызов его аналогичен запросу и2с то и изменять для слейва не потребуется.

Вот как я себе представляю структуру:
structure.png


Добавлено спустя 3 часа 1 минуту 7 секунд:
Код: Выделить всёРазвернуть
vovan@vovan-laptop:~/src/i2c-gate$ ./i2c-gate.elf
laa
# i2c_set_localhost(0xaa)
LAA
raa0102
# i2c_master_start(0xaa, 0) -> localhost
# i2c_master_txc(0x01) -> localhost
# i2c_master_start(0xab, 1) -> localhost
# i2c_master_rxc(0xff, 1) -> localhost
# i2c_master_rxc(0xff, 0) -> localhost
SWASRFFFFP
l20
# i2c_set_localhost(0x20)
L20
waa0102
# i2c_master_start(0xaa, 0) -> real
# i2c_master_txc(0x01) -> real
# i2c_master_txc(0x02) -> real
SWAAP
s200102s2101saa01p
# i2c_master_start(0x20, 0) -> localhost
# i2c_master_txc(0x01) -> localhost
# i2c_master_txc(0x02) -> localhost
# i2c_master_start(0x21, 1) -> localhost
# i2c_master_rxc(0xff, 0) -> localhost
# i2c_master_start(0xaa, 0) -> real
# i2c_master_txc(0x01) -> real
SWAASRFFSWAP
Вложения
structure.uxf.gz
http://www.umlet.com
(953 байт) Скачиваний: 13
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

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

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

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

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

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

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

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

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

Пред.След.

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

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

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