mirror of
https://github.com/eddyem/canon-lens.git
synced 2025-12-06 10:35:15 +03:00
Some fixes
This commit is contained in:
parent
063cacbbf4
commit
514f084d91
0
00-logs/conv
Executable file → Normal file
0
00-logs/conv
Executable file → Normal file
0
00-logs/find_cmd
Executable file → Normal file
0
00-logs/find_cmd
Executable file → Normal file
0
00-logs/find_cmd_with_answ
Executable file → Normal file
0
00-logs/find_cmd_with_answ
Executable file → Normal file
0
00-logs/get_all_cmds
Executable file → Normal file
0
00-logs/get_all_cmds
Executable file → Normal file
0
00-logs/proc_historgram
Executable file → Normal file
0
00-logs/proc_historgram
Executable file → Normal file
0
02-TEST/run
Executable file → Normal file
0
02-TEST/run
Executable file → Normal file
0
03-focusing/run
Executable file → Normal file
0
03-focusing/run
Executable file → Normal file
BIN
opisanie.pdf
BIN
opisanie.pdf
Binary file not shown.
40
opisanie.tex
40
opisanie.tex
@ -7,7 +7,9 @@
|
|||||||
\begin{document}
|
\begin{document}
|
||||||
\maketitle
|
\maketitle
|
||||||
\section{Методика <<взлома>>}
|
\section{Методика <<взлома>>}
|
||||||
Для работы со SPI--интерфейсом объектива использовался микроконтроллер PIC16F873a,
|
Для работы со SPI--интерфейсом объектива использовался микроконтроллер PIC16F873a\footnote{На основе
|
||||||
|
STM32F103 разработано устройство управления:
|
||||||
|
\url{https://github.com/eddyem/stm32samples/tree/master/F1:F103/Canon_managing_device}.},
|
||||||
подключенный к персональному компьютера через интерфейс~RS--232.
|
подключенный к персональному компьютера через интерфейс~RS--232.
|
||||||
Так как кварцевый резонатор контроллера имел частоту~$f_{osc}=4\,$МГц, пришлось ограничиться
|
Так как кварцевый резонатор контроллера имел частоту~$f_{osc}=4\,$МГц, пришлось ограничиться
|
||||||
довольно медленной скоростью~--- 19.2\,кбит/с.
|
довольно медленной скоростью~--- 19.2\,кбит/с.
|
||||||
@ -73,8 +75,8 @@ SPI--
|
|||||||
для изменения фокусного расстояния на нужную величину после команд~{\bf5} или~{\bf6}
|
для изменения фокусного расстояния на нужную величину после команд~{\bf5} или~{\bf6}
|
||||||
можно отсылать нулевые посылки.
|
можно отсылать нулевые посылки.
|
||||||
|
|
||||||
Кроме этой команды есть следующие информационные команды, чье предназначение
|
Кроме этой, есть следующие информационные команды (предназначение многих
|
||||||
пока не расшифровано (для EF~200, EF~85 см. в сводной таблице):
|
пока не расшифровано):
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[31] имеет двухбайтный ответ, оба байта содержали комбинации из единицы и тройки.
|
\item[31] имеет двухбайтный ответ, оба байта содержали комбинации из единицы и тройки.
|
||||||
\item[79] имеет трехбайтный ответ, являющийся комбинацией единиц и нулей.
|
\item[79] имеет трехбайтный ответ, являющийся комбинацией единиц и нулей.
|
||||||
@ -96,23 +98,30 @@ SPI--
|
|||||||
\subsection{Небольшое дополнение}
|
\subsection{Небольшое дополнение}
|
||||||
команды (EF~85):
|
команды (EF~85):
|
||||||
|
|
||||||
10 --- {\bf инициализация}, без этой команды EF85 не работает.
|
10~--- {\bf инициализация}, без этой команды EF85 не работает; для EF200 и EF400 эта команда~--- поллинг состояния
|
||||||
|
(во время движения элементов объектива возвращаются 0xff, как только движение прекращается~--- 0xaa).
|
||||||
|
|
||||||
194 --- узнать расстояние фокусировки (в метрах). Ответ --- четыре байта, первые два --- текущее расстояние,
|
194~--- узнать расстояние фокусировки (в метрах). Ответ~--- четыре байта, первые два~--- текущее,
|
||||||
вторые два --- предыдущее положение. В паре чисел первое умножаем на 2.5\,м и складываем со вторым (в
|
вторые два~--- предыдущее положение. В паре чисел первое умножаем на 250 и складываем со вторым (в
|
||||||
сантиметрах).
|
сантиметрах).
|
||||||
|
|
||||||
192 --- узнать угловое положение лимба (от некоторого условного нуля). Ответ --- два байта (short int,
|
192~--- узнать угловое положение лимба (от некоторого условного нуля). Ответ --- два байта (short int,
|
||||||
старший байт первый).
|
старший байт первый).
|
||||||
|
|
||||||
Управление диафрагмой: два байта число 18 (собственно команда) и байт --- на сколько изменить
|
Управление диафрагмой~--- два байта: число 18 (собственно команда) и байт~--- на сколько изменить
|
||||||
текущее состояние диафрагмы (signed char) положительное число для закрытия, отрицательное -- открыть.
|
текущее состояние диафрагмы (signed char) положительное число для закрытия, отрицательное~-- открыть.
|
||||||
|
|
||||||
|
|
||||||
При небольшом изменении состояния диафрагмы каждая команда 2 или 3 повторяет это изменение.
|
При небольшом изменении состояния диафрагмы каждая команда 2 или 3 повторяет это изменение.
|
||||||
Плюс объектив входит в режим пошаговой подстройки фокусировки. Выход из этого режима --- команда 8
|
Плюс объектив входит в режим пошаговой подстройки фокусировки. Выход из этого режима --- команда 8
|
||||||
(или ее эквиваленты 11, 27, 43, 75).
|
(или ее эквиваленты 11, 27, 43, 75).
|
||||||
|
|
||||||
|
Так как объектив отвечает, начиная со второго байта посылки по SPI, каждую команду необходимо дополнять нулем,
|
||||||
|
либо после нее сразу вызывать поллинг (0x0a, 0x00; вплоть до получения ответа xx, 0xaa, где xx~-- либо 0, либо
|
||||||
|
последний байт с предыдущего запроса). Команды, не связанные с выполнением какого-либо движения (особенно
|
||||||
|
геттеры), не требуют поллинга. Для вызова геттера 16-битного беззнакового параметра вызывать: cmd, 0, 0, 0; ответом
|
||||||
|
будет 0, cmd, H, L: cmd~-- команда, HL~-- данные. Сеттер 16-битного беззнакового: cmd, H, L, 0. Любой другой запрос
|
||||||
|
n~байт данных должен иметь длину n+1~байт: команда плюс n~нулей.
|
||||||
|
|
||||||
|
|
||||||
\section{Сводный перечень команд для EF~85}
|
\section{Сводный перечень команд для EF~85}
|
||||||
Расшифровка обозначений столбцов:
|
Расшифровка обозначений столбцов:
|
||||||
@ -274,7 +283,8 @@ SPI--
|
|||||||
125 & 1 & 125 & \\
|
125 & 1 & 125 & \\
|
||||||
126 & 1 & 126 & \\
|
126 & 1 & 126 & \\
|
||||||
127 & 1 & 127 & \\
|
127 & 1 & 127 & \\
|
||||||
128 & 6 & 129, 239, 0, 85, 0, 85 & модель объектива ?\\
|
128 & 6 & 129, 239, 0, 85, 0, 85 & характеристики объектива: первые два байта~-- модель, вторые два~-- минимальное
|
||||||
|
фокусное расстояние, третьи два~-- максимальное фокусное расстояния (разные для объективов с трансфокатором)\\
|
||||||
129 & 1 & 129 & \\
|
129 & 1 & 129 & \\
|
||||||
130 & 1 & 130 & \\
|
130 & 1 & 130 & \\
|
||||||
131 & 1 & 131 & \\
|
131 & 1 & 131 & \\
|
||||||
@ -290,9 +300,9 @@ SPI--
|
|||||||
141 & 1 & 141 & \\
|
141 & 1 & 141 & \\
|
||||||
142 & 1 & 142 & \\
|
142 & 1 & 142 & \\
|
||||||
143 & 1 & 143 & \\
|
143 & 1 & 143 & \\
|
||||||
\bf 144 & 2 & 0/32, $X$ & старший бит $X$ --- значение переключателя <<AF/MF>> (нулю
|
\bf 144 & 2 & $X$, $Y$ & 16-битное беззнаковое (старший байт --~$X$), флаги ручного управления: бит~13 установлен в 1
|
||||||
соответствует AF); у EF200 первый байт 0 или 32 (если крутить кольцо управления F), второй
|
во время активности (вращение лимба фокусировки) и 5с после ее прекращения; бит~7~-- флаг MF; бит~4~-- лимб в
|
||||||
байт см. во второй таблице \\
|
одном из крайних положений; бит~2~-- лимб вращается \\
|
||||||
145 & 1 & 145 & \\
|
145 & 1 & 145 & \\
|
||||||
146 & 1 & 146 & \\
|
146 & 1 & 146 & \\
|
||||||
147 & 1 & 147 & \\
|
147 & 1 & 147 & \\
|
||||||
@ -308,7 +318,7 @@ SPI--
|
|||||||
157 & 1 & 157 & \\
|
157 & 1 & 157 & \\
|
||||||
158 & 1 & 158 & \\
|
158 & 1 & 158 & \\
|
||||||
159 & 1 & 159 & \\
|
159 & 1 & 159 & \\
|
||||||
160 & 2 & 0, 85 & фокусное расстояние объектива\\
|
160 & 2 & 0, 85 & текущее фокусное расстояние объектива\\
|
||||||
161 & 1 & 161 & \\
|
161 & 1 & 161 & \\
|
||||||
162 & 1 & 162 & \\
|
162 & 1 & 162 & \\
|
||||||
163 & 1 & 163 & \\
|
163 & 1 & 163 & \\
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user