modify firmware (fix some bugs)

This commit is contained in:
eddyem
2019-02-05 11:52:00 +03:00
parent 3963252d68
commit a4144090c2
18 changed files with 358 additions and 405 deletions

Binary file not shown.

View File

@@ -12,7 +12,7 @@
\nocolon
\def\Z{Цейсс--1000\xspace}
\title{Многорежимный фотометр--поляриметр (MMPP) телескопа \Z. Техническая документация.}
\author{Емельянов~Э.В. \and Фатхуллин~Т.А.}
\author{Емельянов~Э.В. \and Москвитин~А.С.\and Фатхуллин~Т.А.}
\graphicspath{{./imgs/}}
\begin{document}
\maketitle
@@ -20,7 +20,6 @@
\section{Описание прибора}
MMPP (Multi-Mode Photometer-Polarimeter) "--- многорежимный фотометр-поляриметр телескопа \Z
предназначен для проведения фотометрических и поляриметрических исследований. Прибор оснащен двумя турелями
USB-HSFW (Edmund Optics) с пятью позициями для 50-мм фильтров, анализатором линейной поляризации и
@@ -673,11 +672,11 @@ PF1 & PUPD &
посылок экстренного останова, сброса и т.п.).
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
валидна, контроллер возвращает строку <<ALL OK>>. Если команда не распознана, возвращается маркер ошибки
валидна, контроллер возвращает строку <<ALLOK>>. Если команда не распознана, возвращается маркер ошибки
<<BADCMD>>. В случае же ошибок в аргументах команды возвращается маркер ошибки <<ERR>>. Если команда
возвращает какую-либо информацию, она следует сразу за маркером <<ALL OK>>. Данные, занимающие более одной
возвращает какую-либо информацию, она следует сразу за маркером <<ALLOK>>. Данные, занимающие более одной
строки текста, завершаются маркером <<DATAEND>>. Если команда лишь требует выполнения определенного действия,
маркер <<ALL OK>> возвращается после установления возможности выполнения данного действия. В силу синхронного
маркер <<ALLOK>> возвращается после установления возможности выполнения данного действия. В силу синхронного
характера интерфейса связи, команды, требующие длительного времени на исполнение (например, перемещение
объекта) не выводят в случае ошибки или достижения заданного положения никаких данных, процесс их исполнения
необходимо контролировать периодическим запросом состояния модуля.
@@ -716,21 +715,24 @@ PF1 & PUPD &
\item[\itm{C}] получение текущих значений параметров конфигурации, например,
\begin{verbatim}
CONFSZ=36
DEVID=0
V12NUM=1
V12DEN=10
I12NUM=1
I12DEN=1
DEVID=2
V12NUM=605
V12DEN=94
I12NUM=3
I12DEN=4
V33NUM=1
V33DEN=1
ESWTHR=150
MOT0SPD=60
MOT1SPD=60
USARTSPD=115200
ESWTHR=500
MOT0SPD=3
MOT1SPD=2
MAXSTEPS0=50000
MAXSTEPS1=50000
USARTSPD=9600
INTPULLUP=1
REVERSE0=0
REVERSE1=0
MAXSTEPS0=0
MAXSTEPS1=0
REVERSE1=1
USTEPS=16
ACCDECSTEPS=50
DATAEND
\end{verbatim}
@@ -745,12 +747,12 @@ DATAEND
\end{description}
например,
\begin{verbatim}
ADC[0]=4095
ADC[1]=2340
ADC[2]=4095
ADC[3]=4087
ADC[4]=1665
ADC[5]=1532
ADC[0]=189
ADC[1]=2317
ADC[2]=4088
ADC[3]=4090
ADC[4]=1703
ADC[5]=1525
DATAEND
\end{verbatim}
@@ -837,25 +839,32 @@ ESW11=HALL
проведенных изменений и их проверки.
\begin{description}\def\itm#1{\rlap{#1}\phantom{M\#num}}
\item[\itm{A num}] установка количества шагов (\verb'ACCDECSTEPS'), в течение которого движение будет
производиться с ускорением (на старте) или замедлением (на финише); в случае, если требуется
переместить двигатель на меньшее количество шагов, движение будет производиться с минимальной
скоростью (равной произведению \verb'MOTxSPD' на значение макроса \verb'LOWEST_SPEED_DIV');
\item[\itm{C\#num}] изменение значения текущей скорости двигателя с номером \textbf{\#} на \textbf{num}
(данное изменение действует лишь до окончания движения двигателя);
\item[\itm{Dxnum}] установка знаменателя (\textbf{d}enominator) величины \textbf{x} (D, I или M~-- в
соответствии с геттером значения измерений АЦП) в \textbf{num};
\item[\itm{Exnum}] установка числителя (num\textbf{e}rator) (аналогично \textbf{Dxnum});
\item[\itm{I num}] изменение значения идентификатора (целое число) контроллера;
\item[\itm{M\#num}] установка максимального диапазона (\textbf{num} от~1 до~65535) шагового двигателя
\textbf{\#};
\item[\itm{P num}] включение (\textbf{num} равно нулю) или отключение (\textbf{num} отсутствует или любое,
кроме нуля) внутренней подтяжки на UART Tx;
\item[\itm{R\#num}] реверсивное движение двигателя \textbf{\#} (\textbf{num} равное нулю отключает реверс),
в режиме реверса меняется только направление вращения двигателя, но не обрабатываемые концевики;
\item[\itm{S\#num}] изменение значения максимальной скорости двигателя с номером \textbf{\#} на \textbf{num}
(максимальная скорость устанавливается после окончания движения с ускорением и не зависит от
текущей скорости, \textbf{C\#num});
\item[\itm{T num}] изменение пороговых величин (\textbf{num} в ADU) для градации состояний концевика
двигателя~0 (0..num~-- датчик Холла, 2048-num..2048+num~-- пользовательская кнопка,
\item[\itm{Dvnum}] установка знаменателя (\textbf{d}enominator, \verb'xxxDEN') величины \textbf{v} (D, I или
M~-- в соответствии с геттером значения измерений АЦП) в \textbf{num};
\item[\itm{Evnum}] установка числителя (num\textbf{e}rator, \verb'xxxNUM') (аналогично \textbf{Dvnum});
\item[\itm{I num}] изменение значения идентификатора (\verb'DEVID', целое число) контроллера;
\item[\itm{M\#num}] установка максимального диапазона (\verb'MAXSTEPS#', \textbf{num} от~1 до~65535) шагового
двигателя \textbf{\#};
\item[\itm{P num}] (\verb'INTPULLUP') включение (\textbf{num} равно нулю) или отключение (\textbf{num}
отсутствует или любое, кроме нуля) внутренней подтяжки на UART Tx;
\item[\itm{R\#num}] (\verb'REVERSE#') реверсивное движение двигателя \textbf{\#} (\textbf{num} равное нулю
отключает реверс), в режиме реверса меняется только направление вращения двигателя, но не
обрабатываемые концевики;
\item[\itm{S\#num}] изменение значения максимальной скорости (\verb'MOT#SPD') двигателя с номером
\textbf{\#} на \textbf{num} (максимальная скорость устанавливается после окончания движения с
ускорением и не зависит от текущей скорости, \textbf{C\#num});
\item[\itm{T num}] изменение пороговых величин (\verb'ESWTHR', \textbf{num} в ADU) для градации состояний
концевика двигателя~0 (0..num~-- датчик Холла, 2048-num..2048+num~-- пользовательская кнопка,
4096-num..4095~-- свободное состояние);
\item[\itm{U num}] изменение скорости UART.
\item[\itm{U num}] изменение скорости UART (\verb'USARTSPD');
\item[\itm{u num}] установка количества микрошагов (\verb'USTEPS') в одном шаге; это число должно быть
степенью двойки (до~32 включительно).
\end{description}
\paragraph{Сеттеры скорости двигателей.}
@@ -925,10 +934,12 @@ MOT0SPD=3
MOT1SPD=5
MAXSTEPS0=50000
MAXSTEPS1=50000
USARTSPD=9600
INTPULLUP=1
USARTSPD=115200
REVERSE0=1
REVERSE1=0
USTEPS=16
ACCDECSTEPS=50
DATAEND
MMPP_control -a 2GC
@@ -947,10 +958,12 @@ MOT0SPD=3
MOT1SPD=2
MAXSTEPS0=50000
MAXSTEPS1=50000
USARTSPD=9600
INTPULLUP=1
USARTSPD=115200
REVERSE0=0
REVERSE1=1
USTEPS=16
ACCDECSTEPS=50
DATAEND
\end{lstlisting}
@@ -959,11 +972,13 @@ DATAEND
изменение уровня на концевиках двигателя~0, \verb'MOTxSPD' (предельные скорости соответствующих двигателей),
\verb'MAXSTEPSx' (максимальное количество шагов данного двигателя), \verb'INTPULLUP' (при отсутствии внешней
подтяжки шины~Tx контроллеров отключенная подтяжка приведет к неработоспособности), \verb'USARTSPD' (скорость
шины UART) и \verb'REVERSEx' (направление вращения двигателя).
шины UART), \verb'REVERSEx' (направление вращения двигателя) и \verb'ACCDECSTEPS' (количество шагов для
ускорения\slash замедления движения).
\paragraph{Значения предельных токов DRV8825.} \label{MotCurrents}
Предельные токи определяются по уровню напряжения на подстроечных резисторах DRV8825.
\TODO[ТОКИ!]
Анализатор поляризации: M0 (подвижка) 0.5\,В, M1 (ротатор) 3.1\,В.
Фазовая пластина: M0 (подвижка) 0.9\,В, M1 (ротатор) 0.25\,В.
\comment[ФОТО!]{добавить табличку со значениями напряжений + фотографию, как настраивать}
\end{document}