Some fixes

This commit is contained in:
Edward Emelianov 2023-03-17 15:27:12 +03:00
parent 063cacbbf4
commit 514f084d91
9 changed files with 26 additions and 16 deletions

0
00-logs/conv Executable file → Normal file
View File

0
00-logs/find_cmd Executable file → Normal file
View File

0
00-logs/find_cmd_with_answ Executable file → Normal file
View File

0
00-logs/get_all_cmds Executable file → Normal file
View File

0
00-logs/proc_historgram Executable file → Normal file
View File

0
02-TEST/run Executable file → Normal file
View File

0
03-focusing/run Executable file → Normal file
View File

Binary file not shown.

View File

@ -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 & \\
@ -421,7 +431,7 @@ SPI--
только те команды, которые использовал фотоаппарат\footnote{В расшифровке команд также только те команды, которые использовал фотоаппарат\footnote{В расшифровке команд также
использовались данные из использовались данные из
\url{https://pickandplace.wordpress.com/2011/10/05/canon-ef-s-protocol-and-electronic-follow-focus/} \url{https://pickandplace.wordpress.com/2011/10/05/canon-ef-s-protocol-and-electronic-follow-focus/}
и \url{http://www.rwpbb.ru/test/canonautosonyl.html}}. и \url{http://www.rwpbb.ru/test/canonautosonyl.html}}.
\begin{longtable}[c]{||c|c||c|c| p{0.5\textwidth}||} \begin{longtable}[c]{||c|c||c|c| p{0.5\textwidth}||}
\caption{Сводка команд EF~200}\\ \caption{Сводка команд EF~200}\\
\hline\hline \hline\hline