MiniBot-SerControl — различия между версиями
Vooon (обсуждение | вклад) м |
Vooon (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== MiniBot SerControl == | == MiniBot SerControl == | ||
Это порт микропрограммы [[Шлюз-контроллер GATE-A8D8M2|GATE-A8D8M2]] на аппаратную платформу [[:Категория:МиниБот|МиниБота]]. | Это порт микропрограммы [[Шлюз-контроллер GATE-A8D8M2|GATE-A8D8M2]] на аппаратную платформу [[:Категория:МиниБот|МиниБота]]. | ||
+ | Формат обмена и базовые комманды совпадают. | ||
=== Возможности === | === Возможности === | ||
− | * [[w:I2C|I2C]] Шина<ref name=" | + | * [[w:I2C|I2C]] Шина<ref name="not-impl">Пока не поддерживается.</ref> |
<!-- * [[w:SPI|SPI]] Шина<ref name="spi">Пока не поддерживается.</ref> --> | <!-- * [[w:SPI|SPI]] Шина<ref name="spi">Пока не поддерживается.</ref> --> | ||
* Очередь команд управления моторами с [[ru:ПИД|ПИД]] регулированием по встроенным энкодерам. | * Очередь команд управления моторами с [[ru:ПИД|ПИД]] регулированием по встроенным энкодерам. | ||
* Прямое управление моторами<ref name="direct-mot">В этом режиме ПИД-регулятор отключается</ref> | * Прямое управление моторами<ref name="direct-mot">В этом режиме ПИД-регулятор отключается</ref> | ||
− | * Опрос датчиков линии<ref name=" | + | * Опрос датчиков линии<ref name="not-impl">Пока не поддерживается.</ref> |
− | * Опрос бамперов<ref name=" | + | * Опрос бамперов<ref name="not-impl">Пока не поддерживается.</ref> |
− | * Получение RC5 посылок пультов<ref name=" | + | * Получение RC5 посылок пультов<ref name="not-impl">Пока не поддерживается.</ref> |
− | === | + | === Отличия === |
+ | * Отличаются коды/описания ошибок | ||
+ | * Внешний кварц на 14,7456 МГц (необходимо припаять) | ||
+ | * Скорость обмена по USART 115200 бод | ||
+ | * Единица времени не 1/50, а 1/56 секунды | ||
+ | * В одном пакете управления двигателем можно передать 12 комманд (13 если не отправлять <code>'\n'</code>) | ||
+ | * Очередь комманд хранит до 20-и комманд (можно расширить изменив '''MOT_MAX_QSIZE''') | ||
+ | * В случае, если пришедшие комманды не влезли в очередь будет сообщено начиная с какой комманды не влезло. (<code>X10MotQueueOvf %d</code>) | ||
+ | * <div>Если номер ошибки больше X09, то вернется два сообщения об ошибке: | ||
+ | |||
+ | X{no}{descr} | ||
+ | X09ReqProc | ||
+ | |||
+ | </div> | ||
+ | |||
+ | == Комманды == | ||
+ | Комманды передаются в текстовом режиме. | ||
+ | Формат посылки: <code>Q{adr}{req}[{by}]*</code> | ||
+ | Каждый байт передаетя в шеснадцатеричной записи. | ||
+ | Если в ответе возвращается параметр больше чем один байт, то сначала идут младшие байты (Little Endian) | ||
+ | |||
+ | Принимаемые и возвращаемые типы: | ||
+ | * '''uint8''' - беззнаковне целое 8 бит <code>00h..FFh</code> | ||
+ | * '''int8''' - знаковое целое 8 бит <code>-128(80h)..0(0h)..127(7Fh)</code> | ||
+ | * '''uint16''' - беззнаковое целое 16 бит <code>0000h..FFFFh</code> | ||
+ | * '''int32''' - знаковое целое 32 бита <code>80000000h..0h..7FFFFFFFh</code> | ||
+ | |||
+ | {| class="standard" | ||
+ | ! Команда | ||
+ | ! Формат | ||
+ | ! Входные параметры | ||
+ | |- | ||
+ | | Отправить по i2c несколько байт и получить несколько байт в ответ | ||
+ | | <code>Q{adr}{req}({by})+</code> | ||
+ | | | ||
+ | * '''adr''' - '''uint8''' - адрес 00h..7Fh устройства на шине i2c | ||
+ | * '''req''' - '''uint8''' - сколько байт получить от устройства | ||
+ | * '''by''' - '''uint8''' - байты которые нужно передать устройству | ||
+ | |- | ||
+ | | Установить направление вращения двигателя | ||
+ | | <code>QFF00{mot}{dir}</code> | ||
+ | | | ||
+ | * '''mot''' - '''uint8''' - двигатель, 10h - ЛЕВЫЙ, 12h - ПРАВЫЙ | ||
+ | * '''dir''' - '''uint8''' - направление вращения, 01h - ВПЕРЕД, 02h - НАЗАД, СТОП не поддерживается. | ||
+ | |- | ||
+ | | Установить скорость вращения двигателя | ||
+ | | <code>QFF00{mot}{pwm}</code> | ||
+ | | | ||
+ | * '''mot''' - '''uint8''' - двигатель, 11h - ЛЕВЫЙ, 13h - ПРАВЫЙ | ||
+ | * '''pwm''' - '''uint8''' - скорость, в точности соответствует скважности выдаваемого на двигатели ШИМ-сигнала. | ||
+ | |- | ||
+ | | Управление очередью команд для шасси | ||
+ | | <code>QFF0014[{tim}{ls}{rs}{lf}{rf}]*</code> | ||
+ | | | ||
+ | * '''tim''' - '''uint8''' - время выполнения команды в '''tim * 1/56''' секунды | ||
+ | * '''ls''' - '''int8''' - начальная скорость левого колеса; | ||
+ | * '''rs''' - '''int8''' - начальная скорость правого колеса; | ||
+ | * '''lf''' - '''int8''' - конечная скорость левого колеса; | ||
+ | * '''rf''' - '''int8''' - конечная скорость правого колеса; | ||
+ | |||
+ | Способ задания скорости с направлением - 0x00 - стоим, 0x01..0x7F - малый..полный вперед, 0xFF..0x80 - малый..полный назад. | ||
+ | |||
+ | Максимально можно отправить одновременно 12 команд. | ||
+ | |||
+ | Если нужно сбросить очередь команд - отправляем просто <code>QFF0014</code> без команд. | ||
+ | |} | ||
== См. также == | == См. также == |
Версия 05:57, 3 октября 2008
MiniBot SerControl
Это порт микропрограммы GATE-A8D8M2 на аппаратную платформу МиниБота. Формат обмена и базовые комманды совпадают.
Возможности
- I2C Шина[1]
- Очередь команд управления моторами с регулированием по встроенным энкодерам.
- Прямое управление моторами[2]
- Опрос датчиков линии[1]
- Опрос бамперов[1]
- Получение RC5 посылок пультов[1]
Отличия
- Отличаются коды/описания ошибок
- Внешний кварц на 14,7456 МГц (необходимо припаять)
- Скорость обмена по USART 115200 бод
- Единица времени не 1/50, а 1/56 секунды
- В одном пакете управления двигателем можно передать 12 комманд (13 если не отправлять
'\n'
) - Очередь комманд хранит до 20-и комманд (можно расширить изменив MOT_MAX_QSIZE)
- В случае, если пришедшие комманды не влезли в очередь будет сообщено начиная с какой комманды не влезло. (
X10MotQueueOvf %d
) - Если номер ошибки больше X09, то вернется два сообщения об ошибке:
X{no}{descr} X09ReqProc
Комманды
Комманды передаются в текстовом режиме.
Формат посылки: Q{adr}{req}[{by}]*
Каждый байт передаетя в шеснадцатеричной записи.
Если в ответе возвращается параметр больше чем один байт, то сначала идут младшие байты (Little Endian)
Принимаемые и возвращаемые типы:
- uint8 - беззнаковне целое 8 бит
00h..FFh
- int8 - знаковое целое 8 бит
-128(80h)..0(0h)..127(7Fh)
- uint16 - беззнаковое целое 16 бит
0000h..FFFFh
- int32 - знаковое целое 32 бита
80000000h..0h..7FFFFFFFh
Команда | Формат | Входные параметры |
---|---|---|
Отправить по i2c несколько байт и получить несколько байт в ответ | Q{adr}{req}({by})+
|
|
Установить направление вращения двигателя | QFF00{mot}{dir}
|
|
Установить скорость вращения двигателя | QFF00{mot}{pwm}
|
|
Управление очередью команд для шасси | QFF0014[{tim}{ls}{rs}{lf}{rf}]*
|
Способ задания скорости с направлением - 0x00 - стоим, 0x01..0x7F - малый..полный вперед, 0xFF..0x80 - малый..полный назад. Максимально можно отправить одновременно 12 команд. Если нужно сбросить очередь команд - отправляем просто |