Технический форум по робототехнике.
=DeaD= » 16 фев 2010, 14:54
Это как раз сейчас уже делает Vooon вынося отдельно HAL уровень - т.е. отделяет драйвера устройств от обертки под i2c протокол. См. картинку выше.
По поводу расширений - да, именно поэтому мы и говорим, что каждый драйвер сможет регистрировать свою часть парсера для своих команд.
Michael_K » 16 фев 2010, 15:21
Угу, я так и понял.

=DeaD= » 16 фев 2010, 16:57
Скорректированная структура ORFA
По предложению Vooon'а устраняем мастер и слейв прошивку, сливаем воедино.
Вводим понятие ORFA-адаптера HAL-драйвера. Делаем специфические парсеры в каждом ORFA-адаптере.
- Вложения
-
ORFA-struct.pdf
- (49.77 КиБ) Скачиваний: 13
-
ORFA-master-struct.zip
- (23.25 КиБ) Скачиваний: 0
kbnn » 09 мар 2010, 08:58
Где можно побольше узнать об синтаксисе ORFA, какие в ней есть драйвера и как ими пользоваться. Т.е. синтаксис драйверов. Как должны выглядеть команды?
=DeaD= » 09 мар 2010, 10:31
Вот тут Vooon инструкцию к ORFA начинал писать:
viewtopic.php?p=151341#p151341Еще можно глянуть примеры в инструкциях к модулям:
OR-AVR-M32-D -
mediawiki/images/d/da/OR-AVR-M32-D-UG.pdfOR-AVR-M128-S -
mediawiki/images/4/45/OR-AVR-M128-S.pdf
kbnn » 09 мар 2010, 19:53
Объясните пожалуйста:
OR-AVR-M128-S.pdf
страница 16
третья строка таблицы.
Пример* Установить порт A0 контроллера в логический вход и прочитать его значение:
<S40 06 00 S40 02 S41 01 P
>SWAASWASR01P
S40 06 00 - Это понятно но вроде не А0 а весть PORTA установили в "логический вход". правильно?
S41 01 - Не понятно что значит 41, почему 41? И, вот, мы значение прочитали, а куда?
Прошу прощения за ламерство.
=DeaD= » 09 мар 2010, 20:11
S40 это запросы на запись к устройству 40, S41 - запросы на чтение (особенности адресации запросов протокола I2C).
<S40 06 00 S40 02 S41 01 P
>SWAASWASR01P
Да, тут весь порт ставим на чтение и читаем байт с этого порта.
Прочитанный байт видно в ответе:
>SWAASWASR01P
kbnn » 09 мар 2010, 20:21
Спасибо.
Следующий вопрос.
Страница 17 (следующая)
1.Настройки АЦП (используются младшие 3 бита):
●биты 0..1:
00 - External reference
01 - AVCC
10,11 - Internal reference
●бит 2 - режим точности АЦП:
0 - 8-битный;
1 - 11-битный; это ошибка?
2.Маска включаемых в АЦП каналов (8 бит - соотв. 8 линиям порта А);
Второй регистр для чтения результатов - из него читаются 8 байт, если режим 8-битный или 16 байт, если режим 16-битный. Можно читать меньше, тогда будем знать состояние первых нескольких линий.
=DeaD= » 09 мар 2010, 20:23
там вроде как раз 11-битный, просто перепутали

16 бит это просто два байта, потому как полбайта нельзя вернуть.
Vooon » 09 мар 2010, 23:11
Нет, это все же ошибка! Режим 10 бит, а не 11 (таких просто нет

).
А вот читать нужно два байта (16 бит) т.к. минимальный размер данных — байт (октет).
=DeaD= » 09 мар 2010, 23:36
Понял, внёс исправления в инструкции, расположены там же. Исправил блок про драйвер АЦП и про драйвер портов в части примера ввода инфы с порта А (а не А0 как было).
kbnn » 10 мар 2010, 14:56
Спасибо за помощь.
Вот еще вопрос.
страница 17 (Драйвера АЦП)
Пример 2*. Читаем 0-3 каналы АЦП.
<S 40 0D S 41 04 P
>SWASRFFD7D7D6P
S40 0D - отправим в устройство 0x40 номер регистра 0D, после чего S 41 04 – прочитаем теперь из устройства четыре байта значений из АЦП, P - конец запроса. Ответ: SW - начали запись в устройство, A - подтверждения записи 1 байта в устройство, SR<aa><bb><cc><dd> - возвращенные значения на входах АЦП, P - конец ответа.
А откуда видно что мы читаем 0-3 каналы?
=DeaD= » 10 мар 2010, 15:10
Потому что читаем всегда первые 0..N-1 каналов при запросе S 40 0D S 41 <N> P, если режим 8-битный, или первые 0..N-1 каналов при запросе S 40 0D S 41 <2*N> P, если режим 10битный
kbnn » 10 мар 2010, 17:04
Что то не понимаю.
Вот, например, делаем АЦП - анализатор напряжения.
Подаем на PORTA0 напряжение с батареек.
Пишем S40 0C 03 00 P
Это мы включили.
А что бы прочитать нужно написать
S41 0C 09 P
Так? Мы получим в ответ 8 бит?
=DeaD= » 10 мар 2010, 17:13
Неее... надо сделать
S 40 0D S 41 01 P, где
S 40 0D - отправить в устройство 40 номер регистра 0D с которым хотим работать
S 41 01 - запросить (+01) из устройства 40 (итого 40+01=41) нужные нам 01 байт
P - приступить к выполнению.