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

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

=DeaD= » 01 окт 2010, 14:00

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

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

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

Michael_K » 01 окт 2010, 14:05

Понятно. Я то полез в общую, потому что пытался вообще понять, используется ли для I2C какой-то "специфический" протокол, или можно как попало разговаривать, не вмешиваясь в фирмварь.

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

Grem » 01 окт 2010, 18:06

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

Тоже интересен ответ на данный вопрос :)

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) - прочитать бит из порта

Кто что скажет?

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

Grem » 01 окт 2010, 21:36

Это, например, #AP 0А ?

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

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

Grem » 01 окт 2010, 21:52

Конечно понятнее будет, чем S 40 0D S 41 04 P, но мне старый вариант парсера ИзбыORFA по нраву.

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 бит

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

Grem » 01 окт 2010, 22:08

Вот этот уже на порядок лучше.

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

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

=DeaD= » 05 окт 2010, 00:19

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

AdcRef:AVCC
AdcBits:8
ModeF0:ADC
F0:2.43
A0:0

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 без изменения

...то какой смысл вообще говорить о каких-то "портах", буковках каких-то.
Сделайте один большой порт.

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

=DeaD= » 05 окт 2010, 00:44

Спокойствие, только спокойствие. Это вообще пока опция которую может и не будем делать.

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

Vooon » 05 окт 2010, 01:05

Вообще идея не плоха.
Сделать как в ардуине.


cron
Rambler\'s Top100 Mail.ru counter