Difference between revisions of "10331.Ru"

From ElphelWiki
Jump to: navigation, search
m
(описание 10331 + фото)
 
(6 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
+
  передача - 0x55
 
+
  прием - 0xAA, 0xAA есть синхронизация, данные передаются/принимаются верно
прием - 0xAA, 0xAA есть синхронизация, данные передаются верно
 
  
  
 
LB_IRIS_HIGH_SLOW - IRIS Open маленький шаг, для точной подстройки
 
LB_IRIS_HIGH_SLOW - IRIS Open маленький шаг, для точной подстройки
  
передача - 0xC0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xC0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
+
  прием - нет
прием - нет
 
  
  
 
LB_IRIS_HIGH_MEDIUM - IRIS Open средний шаг
 
LB_IRIS_HIGH_MEDIUM - IRIS Open средний шаг
  
передача - 0xC3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xC3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
прием - нет
 
  
 +
LB_IRIS_HIGH_FAST - IRIS Open большой шаг
  
LB_IRIS_HIGH_FAST - IRIS Open большой шаг
+
  передача - 0xC6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
передача - 0xC6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
  
прием - нет
+
LB_FOCUS_HIGH_SLOW - FOCUS Near маленький шаг, для точной подстройки
  
 +
  передача - 0xC1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
LB_FOCUS_HIGH_SLOW - FOCUS Near маленький шаг, для точной подстройки
 
  
передача - 0xC1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
LB_FOCUS_HIGH_MEDIUM - FOCUS Near средний шаг
  
прием - нет
+
  передача - 0xC4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
  
LB_FOCUS_HIGH_MEDIUM - FOCUS Near средний шаг
+
LB_FOCUS_HIGH_FAST - FOCUS Near большой шаг
  
передача - 0xC4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xC7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
прием - нет
 
  
 +
LB_ZOOM_HIGH_SLOW - ZOOM Tele маленький шаг, для точной подстройки
  
LB_FOCUS_HIGH_FAST - FOCUS Near большой шаг
+
  передача - 0xC2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
передача - 0xC7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
  
прием - нет
+
LB_ZOOM_HIGH_MEDIUM - ZOOM Tele средний шаг
  
 +
  передача - 0xC5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
LB_ZOOM_HIGH_SLOW - ZOOM Tele маленький шаг, для точной подстройки
 
  
передача - 0xC2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
LB_ZOOM_HIGH_FAST - ZOOM Tele большой шаг
  
прием - нет
+
  передача - 0xC8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
  
LB_ZOOM_HIGH_MEDIUM - ZOOM Tele средний шаг
+
LB_IRIS_DOWN_SLOW - IRIS Close маленький шаг, для точной подстройки
  
передача - 0xC5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xD0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
прием - нет
 
  
 +
LB_IRIS_DOWN_MEDIUM - IRIS Close средний шаг
  
LB_ZOOM_HIGH_FAST - ZOOM Tele большой шаг
+
  передача - 0xD3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
передача - 0xC8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
  
прием - нет
+
LB_IRIS_DOWN_FAST - IRIS Close большой шаг
  
 +
  передача - 0xD6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
LB_IRIS_DOWN_SLOW - IRIS Close маленький шаг, для точной подстройки
 
  
передача - 0xD0 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
LB_FOCUS_DOWN_SLOW - FOCUS Far маленький шаг, для точной подстройки
  
прием - нет
+
  передача - 0xD1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
  
LB_IRIS_DOWN_MEDIUM - IRIS Close средний шаг
+
LB_FOCUS_DOWN_MEDIUM - FOCUS Far средний шаг
  
передача - 0xD3 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xD4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
прием - нет
 
  
 +
LB_FOCUS_DOWN_FAST - FOCUS Far большой шаг
  
LB_IRIS_DOWN_FAST - IRIS Close большой шаг
+
  передача - 0xD7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
передача - 0xD6 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
  
прием - нет
+
LB_ZOOM_DOWN_SLOW - ZOOM Wide маленький шаг, для точной подстройки
  
 +
  передача - 0xD2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
LB_FOCUS_DOWN_SLOW - FOCUS Far маленький шаг, для точной подстройки
 
  
передача - 0xD1 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
LB_ZOOM_DOWN_MEDIUM - ZOOM Wide средний шаг
  
прием - нет
+
  передача - 0xD5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
  
  
LB_FOCUS_DOWN_MEDIUM - FOCUS Far средний шаг
+
LB_ZOOM_DOWN_FAST - ZOOM Wide большой шаг
  
передача - 0xD4 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  передача - 0xD8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 +
  прием - нет
 +
----
  
прием - нет
+
== Работа программ с платой объектива ==
  
 +
Работа с платой объектива происходит через устройство /dev/lb, модуль lbcommod.c встроен в ядро.
  
LB_FOCUS_DOWN_FAST - FOCUS Far большой шаг
 
  
передача - 0xD7 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
В программу надо включить файл от модуля.
  
прием - нет
+
  #include <asm/lbcommod.h>
  
  
LB_ZOOM_DOWN_SLOW - ZOOM Wide маленький шаг, для точной подстройки
+
открытие устройства /dev/lb
  
передача - 0xD2 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
  if ((devfd = open("/dev/lb", O_RDWR))<0) return -1;
 +
  printf ("open /dev/lb success \n");
  
прием - нет
 
  
 +
Два байта команды упаковываются для передачи в модуль следующим образом:
  
LB_ZOOM_DOWN_MEDIUM - ZOOM Wide средний шаг
+
  wr_req=high_byte;
 +
  wr_req=wr_req<<8;
 +
  wr_req+=low_byte;
  
передача - 0xD5 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
 
  
прием - нет
+
исполнение команды:
  
 +
  rd_answer=ioctl(devfd,test_commnd&0xFF,wr_req&0xFFFF);
  
LB_ZOOM_DOWN_FAST - ZOOM Wide большой шаг
 
  
передача - 0xD8 0xXX (коэффициент заполнения перида) 0xXX (количество периодов)
+
результат возвращаемый в 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 18:09, 15 February 2006

Developer version of 10331

Developer version of 10331 board.

В текущей версии аппаратной части есть два серьезных бага каждый из которых делает плату полностью не рабочей. Первый, 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.