documentation

This commit is contained in:
eddyem 2015-08-04 16:57:01 +03:00
parent f88cbaafd5
commit 4979163d6f
3 changed files with 125 additions and 6 deletions

View File

@ -370,7 +370,7 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal
%\item[n] %\item[n]
\item[o] открыть затвор; \item[o] открыть затвор;
\item[p] отобразить значение основного ($+12\,$В) напряжения питания в сотых долях Вольта; \item[p] отобразить значение основного ($+12\,$В) напряжения питания в сотых долях Вольта;
%\item[q] \item[q] отобразить состояние начальной инициализации линейных трансляторов;
\item[r] повторная инициализация затвора в случае ошибки (обрыв провода, короткое замыкание и т.п.); \item[r] повторная инициализация затвора в случае ошибки (обрыв провода, короткое замыкание и т.п.);
\item[s (служ)] отображение значений по восьми каналам внешнего АЦП; \item[s (служ)] отображение значений по восьми каналам внешнего АЦП;
\item[t] отображение текущего состояния затвора (открыт\slash закрыт); \item[t] отображение текущего состояния затвора (открыт\slash закрыт);
@ -379,7 +379,7 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal
%\item[w] %\item[w]
\item[x (число)] установить период шаговых двигателей приводов турелей в заданное число микросекунд; \item[x (число)] установить период шаговых двигателей приводов турелей в заданное число микросекунд;
%\item[y] %\item[y]
%\item[z] \item[z] принудительная инициализация линейных трансляторов (установка в нуль);
\item[0..4 (число)] вращать шаговый двигатель с указанным номером на заданное число шагов \item[0..4 (число)] вращать шаговый двигатель с указанным номером на заданное число шагов
(положительное значение числа шагов соответствует вращению в условном положительном направлении, (положительное значение числа шагов соответствует вращению в условном положительном направлении,
отрицательное~--- в условном отрицательном). отрицательное~--- в условном отрицательном).
@ -492,6 +492,14 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal
системой управления в случае снижения пиковой просадки напряжения ниже 9\,В при получении команды системой управления в случае снижения пиковой просадки напряжения ниже 9\,В при получении команды
движения или ниже 7.5\,В при работе шаговых двигателей (в этом случае также генерируется команда движения или ниже 7.5\,В при работе шаговых двигателей (в этом случае также генерируется команда
останова всех активных двигателей); останова всех активных двигателей);
\item[\hbox{[ q ]}] запрос состояния процедуры инициализации линейных трансляторов; ответ имеет
форму \textbf{[ q статус ]}, где \textbf{статус}:
\begin{description}
\item[started] начальное состояние, подготовка к установке нуля транслятора фокуса;
\item[focus] движение транслятора фокуса в нуль;
\item[sin] движение транслятора синусного механизма в нуль;
\item[ready] инициализация окончена;
\end{description}
\item[\hbox{[ r ]}] повторная инициализация затвора в случае ошибки (обрыв провода, короткое \item[\hbox{[ r ]}] повторная инициализация затвора в случае ошибки (обрыв провода, короткое
замыкание и т.п.); ответом является эхо команды; замыкание и т.п.); ответом является эхо команды;
\item[\hbox{[ s ]} (служ)] отображение значений по восьми каналам внешнего АЦП; ответ зависит от \item[\hbox{[ s ]} (служ)] отображение значений по восьми каналам внешнего АЦП; ответ зависит от
@ -522,6 +530,8 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal
\item[\hbox{[ x период ]}] установить период шаговых двигателей приводов турелей в заданное число \item[\hbox{[ x период ]}] установить период шаговых двигателей приводов турелей в заданное число
микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в диапазоне микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в диапазоне
\verb'uint16_t'; \verb'uint16_t';
\item[\hbox{[ z ]}] принудительная инициализация линейных трансляторов (установка в нуль);
состояние процедуры можно узнать по запросу \textbf{[ q ]};
\item[\hbox{[ 0..4 шаги ]}] вращать шаговый двигатель с указанным номером на заданное число шагов \item[\hbox{[ 0..4 шаги ]}] вращать шаговый двигатель с указанным номером на заданное число шагов
(положительное значение числа шагов соответствует вращению в условном положительном направлении, (положительное значение числа шагов соответствует вращению в условном положительном направлении,
отрицательное~--- в условном отрицательном); ответом является эхо команды. отрицательное~--- в условном отрицательном); ответом является эхо команды.

View File

@ -0,0 +1,67 @@
/*
* init_on_power.c
*
* Copyright 2015 Edward V. Emelianov <eddy@sao.ru, edward.emelianoff@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#include "main.h"
#include "init_on_power.h"
#include "stepper_motors.h"
started_ini stini_status = INI_START;
void init_on_poweron_proc(){
switch (stini_status){
case INI_START:
move_motor(4, -4500); // move focus to zero
stini_status = INI_FOCUS_PROC;
break;
case INI_FOCUS_PROC:
if(Motor_active[4]) return; // focus is still moving
move_motor(3, -55000); // move sinus mechanism to zero
stini_status = INI_SIN_PROC;
break;
case INI_SIN_PROC:
if(Motor_active[3]) return;
stini_status = INI_READY;
break;
case INI_READY:
default:
return;
}
}
void print_init_status(){
MSG("ini status: ", "[ " STR_INIT_STATUS " ");
switch (stini_status){
case INI_START:
LP("started");
break;
case INI_FOCUS_PROC:
LP("focus");
break;
case INI_SIN_PROC:
LP("sin");
break;
case INI_READY:
default:
LP("ready");
}
if(mode == LINE_MODE) LP(" ]");
lastsendfun('\n');
}

View File

@ -0,0 +1,42 @@
/*
* init_on_power.h
*
* Copyright 2015 Edward V. Emelianov <eddy@sao.ru, edward.emelianoff@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#pragma once
#ifndef __INIT_ON_POWER_H__
#define __INIT_ON_POWER_H__
#include "user_proto.h"
// states of system-on-poweron initialisation
typedef enum{
INI_START
,INI_FOCUS_PROC
,INI_SIN_PROC
,INI_READY
} started_ini;
extern started_ini stini_status;
void init_on_poweron_proc();
void print_init_status();
#define forced_init() do{stini_status = INI_START;}while(0)
#endif // __INIT_ON_POWER_H__