From 4979163d6f0a24dfb9fcd99bf26238450f19607f Mon Sep 17 00:00:00 2001 From: eddyem Date: Tue, 4 Aug 2015 16:57:01 +0300 Subject: [PATCH] documentation --- .../main.tex | 22 ++++-- with_opencm3/init_on_power.c | 67 +++++++++++++++++++ with_opencm3/init_on_power.h | 42 ++++++++++++ 3 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 with_opencm3/init_on_power.c create mode 100644 with_opencm3/init_on_power.h diff --git a/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex b/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex index d1474fb..d855dd6 100644 --- a/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex +++ b/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex @@ -370,7 +370,7 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal %\item[n] \item[o] открыть затвор; \item[p] отобразить значение основного ($+12\,$В) напряжения питания в сотых долях Вольта; -%\item[q] +\item[q] отобразить состояние начальной инициализации линейных трансляторов; \item[r] повторная инициализация затвора в случае ошибки (обрыв провода, короткое замыкание и т.п.); \item[s (служ)] отображение значений по восьми каналам внешнего АЦП; \item[t] отображение текущего состояния затвора (открыт\slash закрыт); @@ -379,7 +379,7 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal %\item[w] \item[x (число)] установить период шаговых двигателей приводов турелей в заданное число микросекунд; %\item[y] -%\item[z] +\item[z] принудительная инициализация линейных трансляторов (установка в нуль); \item[0..4 (число)] вращать шаговый двигатель с указанным номером на заданное число шагов (положительное значение числа шагов соответствует вращению в условном положительном направлении, отрицательное~--- в условном отрицательном). @@ -492,6 +492,14 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal системой управления в случае снижения пиковой просадки напряжения ниже 9\,В при получении команды движения или ниже 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{[ s ]} (служ)] отображение значений по восьми каналам внешнего АЦП; ответ зависит от @@ -520,11 +528,13 @@ He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Anal флаг \textbf{состояние} описывает реальное состояние геркона затвора и имеет значение \textbf{opened}, если затвор открыт, либо \textbf{closed}, если затвор закрыт; \item[\hbox{[ x период ]}] установить период шаговых двигателей приводов турелей в заданное число -микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в диапазоне -\verb'uint16_t'; + микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в диапазоне + \verb'uint16_t'; +\item[\hbox{[ z ]}] принудительная инициализация линейных трансляторов (установка в нуль); +состояние процедуры можно узнать по запросу \textbf{[ q ]}; \item[\hbox{[ 0..4 шаги ]}] вращать шаговый двигатель с указанным номером на заданное число шагов - (положительное значение числа шагов соответствует вращению в условном положительном направлении, - отрицательное~--- в условном отрицательном); ответом является эхо команды. +(положительное значение числа шагов соответствует вращению в условном положительном направлении, +отрицательное~--- в условном отрицательном); ответом является эхо команды. \end{description} Команды \textbf{J}, \textbf{K} и \textbf{L} (движение турелей) и \textbf{0..4} (движение двигателей на заданное количество шагов) не возвращают эха введенной команды в случае, если diff --git a/with_opencm3/init_on_power.c b/with_opencm3/init_on_power.c new file mode 100644 index 0000000..e8f2d76 --- /dev/null +++ b/with_opencm3/init_on_power.c @@ -0,0 +1,67 @@ +/* + * init_on_power.c + * + * Copyright 2015 Edward V. Emelianov + * + * 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'); +} diff --git a/with_opencm3/init_on_power.h b/with_opencm3/init_on_power.h new file mode 100644 index 0000000..e3a55a8 --- /dev/null +++ b/with_opencm3/init_on_power.h @@ -0,0 +1,42 @@ +/* + * init_on_power.h + * + * Copyright 2015 Edward V. Emelianov + * + * 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__