roboforum.ru

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


Новый протокол под ORFA

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

Re: Новый протокол под ORFA

Сообщение Michael_K » 01 окт 2010, 13:10

По поводу I2C - ясно.

1. Из вики - mediawiki/images/4/4a/Orfa-manual.pdf
2. да там перлы на каждом шагу... Типичная фраза (орфография и пунктуация сохранена):
Процедура чтения регистра: сначала нужно записать адрес регистра, а за тем прочитать N байт. Пример чтение из регистра 0x20 3 байта на устройстве 0x10 – S 10 20 S 11 03 P
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Новый протокол под ORFA

Сообщение =DeaD= » 01 окт 2010, 14:00

Ясно, я могу полностью отвечать только за инструкцию к нашим модулям, там могу всё сделать красиво :)

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

Re: Новый протокол под ORFA

Сообщение Michael_K » 01 окт 2010, 14:05

Понятно. Я то полез в общую, потому что пытался вообще понять, используется ли для I2C какой-то "специфический" протокол, или можно как попало разговаривать, не вмешиваясь в фирмварь.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Новый протокол под ORFA

Сообщение Grem » 01 окт 2010, 18:06

Michael_K писал(а):Или тот же вопрос с другой стороны - допустим, я хочу сделать I2C датчик. Что мне нужно знать, чтобы ОРФЕ было хорошо?

Тоже интересен ответ на данный вопрос :)
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.
Аватара пользователя
Grem
 
Сообщения: 1530
Зарегистрирован: 16 май 2009, 12:50
Откуда: Россия
прог. языки: Java, C

Re: Новый протокол под ORFA

Сообщение =DeaD= » 01 окт 2010, 21:19

Вообще орфе пофиг, делайте обычную поддержку i2c-протокола, только очень длинные запросы не делайте и всё.

Т.е. ORFA может делать сколь угодно длинные запросы с множественными рестартами и переключением между read\write режимами. Всё ограничено только буфером команды внутри ORFA, сейчас он вроде 65 символов, можно увеличить.

Добавлено спустя 2 часа 53 минуты 32 секунды:
Какие команды сделать для GPIO и АЦП?

Вот накидал эскиз:

АЦП:
AS=(Int|AVCC|Ext) - определить источник опорного напряжения
AP=(8|10) - выбрать нужную точность 8 или 10 бит
AM=(0|1)*8 - определить какие каналы АЦП включены (7..0)
AR(0..7) - прочитать значение канала АЦП 0..7 если он включен

GPIO:
GD(A..F)=(0|1)*8 - побитовая маска направления ввода-вывода порта A..F
GO(A..F)=(0|1)*8 - байт который надо вывести в порт A..F
GI(A..F) - прочитать байт из порта A..F

BD(A..F)(0..7)=(In|Out) - установить режим линии порта
BO(A..F)(0..7)=(0|1) - вывести бит в порт
BI(A..F)(0..7) - прочитать бит из порта

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

Re: Новый протокол под ORFA

Сообщение Grem » 01 окт 2010, 21:36

Это, например, #AP 0А ?
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.
Аватара пользователя
Grem
 
Сообщения: 1530
Зарегистрирован: 16 май 2009, 12:50
Откуда: Россия
прог. языки: Java, C

Re: Новый протокол под ORFA

Сообщение =DeaD= » 01 окт 2010, 21:44

Нет :) это, например:

AS=AVCC //опорное - AVCC
AP=8 //8 бит
AM=00000001 //включить АЦП на 0 линии
AR0 //прочитать 0 линию АЦП

BDA0=Out //выставить линию PORTA.0 как выход
BOA0=1 //выставить линию PORTA.0 которая выход в высокий уровень (1)

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

Re: Новый протокол под ORFA

Сообщение Grem » 01 окт 2010, 21:52

Конечно понятнее будет, чем S 40 0D S 41 04 P, но мне старый вариант парсера ИзбыORFA по нраву.
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.
Аватара пользователя
Grem
 
Сообщения: 1530
Зарегистрирован: 16 май 2009, 12:50
Откуда: Россия
прог. языки: Java, C

Re: Новый протокол под ORFA

Сообщение =DeaD= » 01 окт 2010, 21:58

Ладно, вариант 2, он же сокращенный через @ и еще через @ что происходит:

PinModeA0=In @ PMA0I @ выставляем порт A линию 0 в режим цифрового входа
PinModeA0=Out @ PMA0O @ выставляем порт A линию 0 в режим цифрового выхода
PinModeF0=ADC @ PMF0A @ выставляем порт F линию 0 в режим АЦП
PinGetA0 @ PGA0 @ читаем значение на линии 0 порта A
PinSetA0=1 @ PSA01 @ пишем значение в линию 0 порта A (если она настроена как вход - 1 включает подтяжку)
PinAdcRef=(Int|Ext|AVCC) @ PR(I|E|A) @ выставить источник опорного напряжения для АЦП - внутренний, питание, внешний
PinAdcBits=(8|10) @ PB(8|A) @ выбрать режим работы АЦП - 8 или 10 бит
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Новый протокол под ORFA

Сообщение Grem » 01 окт 2010, 22:08

Вот этот уже на порядок лучше.
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.
Аватара пользователя
Grem
 
Сообщения: 1530
Зарегистрирован: 16 май 2009, 12:50
Откуда: Россия
прог. языки: Java, C

Re: Новый протокол под ORFA

Сообщение =DeaD= » 01 окт 2010, 22:26

Вот так тогда еще более улучшено и с группен-командами для дальнейшей реализации:

PinModeA0=In @ PMA0I @ выставляем порт A линию 0 в режим цифрового входа
PinModeA0=Out @ PMA0O @ выставляем порт A линию 0 в режим цифрового выхода
PinModeF0=ADC @ PMF0A @ выставляем порт F линию 0 в режим АЦП
PinGetA0 @ PGA0 @ читаем значение на линии 0 порта A
PinSetA0=1 @ PSA01 @ пишем значение в линию 0 порта A (если она настроена как вход - 1 включает подтяжку)

AdcRef=(Int|Ext|AVCC) @ AR(I|E|A) @ выставить источник опорного напряжения для АЦП - внутренний, питание, внешний
AdcBits=(8|10) @ AB(8|A) @ выбрать режим работы АЦП - 8 или 10 бит

PortModeF=I*O*AIOA @ OMF=I*O*AIOA @ выставляем режим работы порта F - биты 2,7 вход, биты 1,5 выход, биты 0,3 вход ацп, биты 4,6 без изменения
PortSetF=0011**01 @ OSF=0011**01 @ выставить у порта F линии 0,4,5 в высокий уровень, линии 1, 6 и 7 в низкий уровень, линии 2 и 3 оставить без изменения
PortGetF @ OGF @ получить побитовые значения со входа порта F
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Новый протокол под ORFA

Сообщение =DeaD= » 05 окт 2010, 00:19

Пишу сейчас парсер, ответы будут типа:

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

Re: Новый протокол под ORFA

Сообщение Michael_K » 05 окт 2010, 00:42

Если уж вот настолько от железа абстрагироваться:
PortModeF=I*O*AIOA @ OMF=I*O*AIOA @ выставляем режим работы порта F - биты 2,7 вход, биты 1,5 выход, биты 0,3 вход ацп, биты 4,6 без изменения

...то какой смысл вообще говорить о каких-то "портах", буковках каких-то.
Сделайте один большой порт.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Новый протокол под ORFA

Сообщение =DeaD= » 05 окт 2010, 00:44

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

Re: Новый протокол под ORFA

Сообщение Vooon » 05 окт 2010, 01:05

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

Пред.След.

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

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

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