Difference between revisions of "10331.Ru"
(описание API МК) |
(описание 10331 + фото) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | API команд | + | == Developer version of 10331 == |
+ | |||
+ | [[Image:10331_dev.jpg|thumb|Developer version of 10331 board.]] | ||
+ | |||
+ | В текущей версии аппаратной части есть два серьезных бага каждый из которых делает плату полностью не рабочей. Первый, DC1 4-ю ножку надо или отключить от земли или подключить ее через конденсатор. Второй, неправильное включение драйверов U3, U4, U5, часть выходов идет на вход МК и подает туда 12В. МК на тестовой плате не сгорел, хотя по даташиту максимальное напряжение Vcc+0.5в (3.3+0.5=3.8), МК выжил и работает нормально. | ||
+ | |||
+ | == API команд == | ||
LB_READ_HW - Читаем аппаратную версию платы объектива | LB_READ_HW - Читаем аппаратную версию платы объектива | ||
− | передача - 0x01 | + | |
− | прием - два байта версии аппаратной части | + | передача - 0x01 |
+ | прием - два байта версии аппаратной части | ||
+ | |||
LB_READ_FW - Читаем версию микропрограммы платы объектива | LB_READ_FW - Читаем версию микропрограммы платы объектива | ||
− | передача - 0x02 | + | |
− | прием - два байта версии микропрограммы | + | передача - 0x02 |
+ | прием - два байта версии микропрограммы | ||
+ | |||
LB_SYNC - Проверка синхронизации с платой объектива | LB_SYNC - Проверка синхронизации с платой объектива | ||
− | передача - 0x55 | + | |
− | прием - 0xAA, 0xAA есть синхронизация, данные передаются верно | + | передача - 0x55 |
+ | прием - 0xAA, 0xAA есть синхронизация, данные передаются/принимаются верно | ||
+ | |||
LB_IRIS_HIGH_SLOW - IRIS Open маленький шаг, для точной подстройки | LB_IRIS_HIGH_SLOW - IRIS Open маленький шаг, для точной подстройки | ||
− | передача - 0xC0 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_IRIS_HIGH_MEDIUM - IRIS Open средний шаг | LB_IRIS_HIGH_MEDIUM - IRIS Open средний шаг | ||
− | передача - 0xC3 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_IRIS_HIGH_FAST - IRIS Open большой шаг | LB_IRIS_HIGH_FAST - IRIS Open большой шаг | ||
− | передача - 0xC6 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_HIGH_SLOW - FOCUS Near маленький шаг, для точной подстройки | LB_FOCUS_HIGH_SLOW - FOCUS Near маленький шаг, для точной подстройки | ||
− | передача - 0xC1 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_HIGH_MEDIUM - FOCUS Near средний шаг | LB_FOCUS_HIGH_MEDIUM - FOCUS Near средний шаг | ||
− | передача - 0xC4 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_HIGH_FAST - FOCUS Near большой шаг | LB_FOCUS_HIGH_FAST - FOCUS Near большой шаг | ||
− | передача - 0xC7 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_HIGH_SLOW - ZOOM Tele маленький шаг, для точной подстройки | LB_ZOOM_HIGH_SLOW - ZOOM Tele маленький шаг, для точной подстройки | ||
− | передача - 0xC2 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_HIGH_MEDIUM - ZOOM Tele средний шаг | LB_ZOOM_HIGH_MEDIUM - ZOOM Tele средний шаг | ||
− | передача - 0xC5 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_HIGH_FAST - ZOOM Tele большой шаг | LB_ZOOM_HIGH_FAST - ZOOM Tele большой шаг | ||
− | передача - 0xC8 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xC8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_IRIS_DOWN_SLOW - IRIS Close маленький шаг, для точной подстройки | LB_IRIS_DOWN_SLOW - IRIS Close маленький шаг, для точной подстройки | ||
− | передача - 0xD0 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_IRIS_DOWN_MEDIUM - IRIS Close средний шаг | LB_IRIS_DOWN_MEDIUM - IRIS Close средний шаг | ||
− | передача - 0xD3 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_IRIS_DOWN_FAST - IRIS Close большой шаг | LB_IRIS_DOWN_FAST - IRIS Close большой шаг | ||
− | передача - 0xD6 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_DOWN_SLOW - FOCUS Far маленький шаг, для точной подстройки | LB_FOCUS_DOWN_SLOW - FOCUS Far маленький шаг, для точной подстройки | ||
− | передача - 0xD1 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_DOWN_MEDIUM - FOCUS Far средний шаг | LB_FOCUS_DOWN_MEDIUM - FOCUS Far средний шаг | ||
− | передача - 0xD4 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_FOCUS_DOWN_FAST - FOCUS Far большой шаг | LB_FOCUS_DOWN_FAST - FOCUS Far большой шаг | ||
− | передача - 0xD7 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_DOWN_SLOW - ZOOM Wide маленький шаг, для точной подстройки | LB_ZOOM_DOWN_SLOW - ZOOM Wide маленький шаг, для точной подстройки | ||
− | передача - 0xD2 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_DOWN_MEDIUM - ZOOM Wide средний шаг | LB_ZOOM_DOWN_MEDIUM - ZOOM Wide средний шаг | ||
− | передача - 0xD5 0xXX (коэффициент заполнения перида) | + | |
− | прием - нет | + | передача - 0xD5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | |||
LB_ZOOM_DOWN_FAST - ZOOM Wide большой шаг | LB_ZOOM_DOWN_FAST - ZOOM Wide большой шаг | ||
− | |||
− | |||
− | Маленькие хитрости. | + | передача - 0xD8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) |
+ | прием - нет | ||
+ | ---- | ||
+ | |||
+ | == Работа программ с платой объектива == | ||
+ | |||
+ | Работа с платой объектива происходит через устройство /dev/lb, модуль lbcommod.c встроен в ядро. | ||
+ | |||
+ | |||
+ | В программу надо включить файл от модуля. | ||
+ | |||
+ | #include <asm/lbcommod.h> | ||
+ | |||
+ | |||
+ | открытие устройства /dev/lb | ||
+ | |||
+ | if ((devfd = open("/dev/lb", O_RDWR))<0) return -1; | ||
+ | printf ("open /dev/lb success \n"); | ||
+ | |||
+ | |||
+ | Два байта команды упаковываются для передачи в модуль следующим образом: | ||
+ | |||
+ | wr_req=high_byte; | ||
+ | wr_req=wr_req<<8; | ||
+ | wr_req+=low_byte; | ||
+ | |||
+ | |||
+ | исполнение команды: | ||
+ | |||
+ | rd_answer=ioctl(devfd,test_commnd&0xFF,wr_req&0xFFFF); | ||
+ | |||
+ | |||
+ | результат возвращаемый в rd_answer распаковывается так: | ||
+ | |||
+ | low_byte=rd_answer&0xFF; | ||
+ | rd_answer=rd_answer>>8; | ||
+ | high_byte=rd_answer&0xFF; | ||
+ | |||
+ | ---- | ||
+ | |||
+ | == Маленькие хитрости. == | ||
При программировании платы объектива с камеры, из-за конструктивных особенностей платы объектива, будет происходить вращение моторов объектива IRIS, FOCUS, ZOOM одновременно. IRIS->Close, FOCUS->Far, ZOOM->Wide. | При программировании платы объектива с камеры, из-за конструктивных особенностей платы объектива, будет происходить вращение моторов объектива IRIS, FOCUS, ZOOM одновременно. IRIS->Close, FOCUS->Far, ZOOM->Wide. |
Latest revision as of 19:09, 15 February 2006
Contents
Developer version of 10331
В текущей версии аппаратной части есть два серьезных бага каждый из которых делает плату полностью не рабочей. Первый, DC1 4-ю ножку надо или отключить от земли или подключить ее через конденсатор. Второй, неправильное включение драйверов U3, U4, U5, часть выходов идет на вход МК и подает туда 12В. МК на тестовой плате не сгорел, хотя по даташиту максимальное напряжение Vcc+0.5в (3.3+0.5=3.8), МК выжил и работает нормально.
API команд
LB_READ_HW - Читаем аппаратную версию платы объектива
передача - 0x01 прием - два байта версии аппаратной части
LB_READ_FW - Читаем версию микропрограммы платы объектива
передача - 0x02 прием - два байта версии микропрограммы
LB_SYNC - Проверка синхронизации с платой объектива
передача - 0x55 прием - 0xAA, 0xAA есть синхронизация, данные передаются/принимаются верно
LB_IRIS_HIGH_SLOW - IRIS Open маленький шаг, для точной подстройки
передача - 0xC0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_IRIS_HIGH_MEDIUM - IRIS Open средний шаг
передача - 0xC3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_IRIS_HIGH_FAST - IRIS Open большой шаг
передача - 0xC6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_HIGH_SLOW - FOCUS Near маленький шаг, для точной подстройки
передача - 0xC1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_HIGH_MEDIUM - FOCUS Near средний шаг
передача - 0xC4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_HIGH_FAST - FOCUS Near большой шаг
передача - 0xC7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_HIGH_SLOW - ZOOM Tele маленький шаг, для точной подстройки
передача - 0xC2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_HIGH_MEDIUM - ZOOM Tele средний шаг
передача - 0xC5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_HIGH_FAST - ZOOM Tele большой шаг
передача - 0xC8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_IRIS_DOWN_SLOW - IRIS Close маленький шаг, для точной подстройки
передача - 0xD0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_IRIS_DOWN_MEDIUM - IRIS Close средний шаг
передача - 0xD3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_IRIS_DOWN_FAST - IRIS Close большой шаг
передача - 0xD6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_DOWN_SLOW - FOCUS Far маленький шаг, для точной подстройки
передача - 0xD1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_DOWN_MEDIUM - FOCUS Far средний шаг
передача - 0xD4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_FOCUS_DOWN_FAST - FOCUS Far большой шаг
передача - 0xD7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_DOWN_SLOW - ZOOM Wide маленький шаг, для точной подстройки
передача - 0xD2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_DOWN_MEDIUM - ZOOM Wide средний шаг
передача - 0xD5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
LB_ZOOM_DOWN_FAST - ZOOM Wide большой шаг
передача - 0xD8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов) прием - нет
Работа программ с платой объектива
Работа с платой объектива происходит через устройство /dev/lb, модуль lbcommod.c встроен в ядро.
В программу надо включить файл от модуля.
#include <asm/lbcommod.h>
открытие устройства /dev/lb
if ((devfd = open("/dev/lb", O_RDWR))<0) return -1; printf ("open /dev/lb success \n");
Два байта команды упаковываются для передачи в модуль следующим образом:
wr_req=high_byte; wr_req=wr_req<<8; wr_req+=low_byte;
исполнение команды:
rd_answer=ioctl(devfd,test_commnd&0xFF,wr_req&0xFFFF);
результат возвращаемый в rd_answer распаковывается так:
low_byte=rd_answer&0xFF; rd_answer=rd_answer>>8; high_byte=rd_answer&0xFF;
Маленькие хитрости.
При программировании платы объектива с камеры, из-за конструктивных особенностей платы объектива, будет происходить вращение моторов объектива IRIS, FOCUS, ZOOM одновременно. IRIS->Close, FOCUS->Far, ZOOM->Wide.