Difference between revisions of "10331.Ru"

From ElphelWiki
Jump to: navigation, search
(добавление описания работы с платой объектива)
m (Работа программ с платой объектива)
Line 157: Line 157:
  
  
#include <asm/lbcommod.h>
+
  #include <asm/lbcommod.h>
  
  
Line 163: Line 163:
  
  
if ((devfd = open("/dev/lb", O_RDWR))<0) return -1;
+
  if ((devfd = open("/dev/lb", O_RDWR))<0) return -1;
      printf ("open /dev/lb success \n");
+
  printf ("open /dev/lb success \n");
  
  
 
Два байта команды упаковываются для передачи в модуль следующим образом:
 
Два байта команды упаковываются для передачи в модуль следующим образом:
  
wr_req=high_byte;
+
  wr_req=high_byte;
  
  
wr_req=wr_req<<8;
+
  wr_req=wr_req<<8;
  
  
wr_req+=low_byte;
+
  wr_req+=low_byte;
  
  
Line 181: Line 181:
  
  
rd_answer=ioctl(devfd,test_commnd&0xFF,wr_req&0xFFFF);
+
  rd_answer=ioctl(devfd,test_commnd&0xFF,wr_req&0xFFFF);
  
  
Line 187: Line 187:
  
  
low_byte=rd_answer&0xFF;
+
  low_byte=rd_answer&0xFF;
  
  
rd_answer=rd_answer>>8;
+
  rd_answer=rd_answer>>8;
  
  
high_byte=rd_answer&0xFF;
+
  high_byte=rd_answer&0xFF;
 +
 
 
----
 
----
  

Revision as of 17:05, 8 February 2006

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.