diff --git a/Doc/Doxyfile b/Doc/Doxyfile
index 6d0c197..71d218b 100644
--- a/Doc/Doxyfile
+++ b/Doc/Doxyfile
@@ -558,7 +558,7 @@ EXTRACT_PACKAGE = NO
# included in the documentation.
# The default value is: NO.
-EXTRACT_STATIC = NO
+EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO,
diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html
index 1481365..180ffa8 100644
--- a/Doc/html/annotated.html
+++ b/Doc/html/annotated.html
@@ -102,19 +102,22 @@ $(function(){initNavTree('annotated.html','',''); });
Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
-Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
-
-
+
+
diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5
new file mode 100644
index 0000000..63165ab
--- /dev/null
+++ b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.md5
@@ -0,0 +1 @@
+ec124a446898cfdeeba090736e9d2802
\ No newline at end of file
diff --git a/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png
new file mode 100644
index 0000000..835cdf4
Binary files /dev/null and b/Doc/html/group___g_e_n___o_p_t_i_m_i_z_e_r.png differ
diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html
index 10024d9..8d0f5e3 100644
--- a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html
+++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html
@@ -118,8 +118,8 @@ $(function(){initNavTree('group___l_i_b_s___c_o_n_f_i_g.html','',''); });
Macros
#define local_time ()
Локальное время
-#define INCLUDE_EVOLVE_OPTIMIZER
- Подключить библиотеку для оптимизации параметров
+#define INCLUDE_GEN_OPTIMIZER
+ Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB
Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB
@@ -152,25 +152,25 @@ Macros
Локальное время
-Definition at line 80 of file mylibs_config.h .
+Definition at line 97 of file mylibs_config.h .
-
-◆ INCLUDE_EVOLVE_OPTIMIZER
+
+◆ INCLUDE_GEN_OPTIMIZER
- #define INCLUDE_EVOLVE_OPTIMIZER
+ #define INCLUDE_GEN_OPTIMIZER
@@ -188,7 +188,7 @@ Macros
Подключить библиотеку с typedef с битовыми полями
-Definition at line 83 of file mylibs_config.h .
+Definition at line 100 of file mylibs_config.h .
@@ -206,7 +206,7 @@ Macros
Подключить библиотеку с трекерами
-Definition at line 84 of file mylibs_config.h .
+Definition at line 101 of file mylibs_config.h .
@@ -224,7 +224,7 @@ Macros
Подключить библиотеку с трейсами
-Definition at line 85 of file mylibs_config.h .
+Definition at line 102 of file mylibs_config.h .
@@ -242,7 +242,7 @@ Macros
Подключить библиотеку с периферией
-Definition at line 86 of file mylibs_config.h .
+Definition at line 103 of file mylibs_config.h .
@@ -260,7 +260,7 @@ Macros
Использовать FreeRTOS задержку, вместо HAL.
-Definition at line 87 of file mylibs_config.h .
+Definition at line 104 of file mylibs_config.h .
diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js
index e82ae27..8ccdb19 100644
--- a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js
+++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.js
@@ -1,7 +1,7 @@
var group___l_i_b_s___c_o_n_f_i_g =
[
[ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ],
- [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ],
+ [ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", null ],
[ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ],
[ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ],
[ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ],
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html
index 04d29e3..c6b87bc 100644
--- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html
+++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html
@@ -109,7 +109,7 @@ $(function(){initNavTree('group___m_y_l_i_b_s___c_o_n_f_i_g.html','',''); });
-
+
@@ -121,8 +121,8 @@ $(function(){initNavTree('group___m_y_l_i_b_s___c_o_n_f_i_g.html','',''); });
Topics
Trace configs
Конфигурация трекеров и трассировки
- Evolve configs
- Конфигурация однослойного персептрона и алгоритма обучения
+ Genetic configs
+ Конфигурация генетического алгоритма обучения
Libraries configs
Подключение различных модулей библиотеки
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js
index 06b8a2b..13cea99 100644
--- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js
+++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.js
@@ -1,6 +1,6 @@
var group___m_y_l_i_b_s___c_o_n_f_i_g =
[
[ "Trace configs", "group___t_r_a_c_e___c_o_n_f_i_g.html", "group___t_r_a_c_e___c_o_n_f_i_g" ],
- [ "Evolve configs", "group___e_v_o_l_v_e___c_o_n_f_i_g.html", "group___e_v_o_l_v_e___c_o_n_f_i_g" ],
+ [ "Genetic configs", "group___g_e_n___c_o_n_f_i_g.html", "group___g_e_n___c_o_n_f_i_g" ],
[ "Libraries configs", "group___l_i_b_s___c_o_n_f_i_g.html", "group___l_i_b_s___c_o_n_f_i_g" ]
];
\ No newline at end of file
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map
index d5531ea..2e2b4bc 100644
--- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map
+++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.map
@@ -1,5 +1,5 @@
-
+
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
index 3f02def..34ea56a 100644
--- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
+++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
@@ -1 +1 @@
-e39777f4e691429c305a230cb7233db5
\ No newline at end of file
+d391fab11da478dd495954b9be42bbb6
\ No newline at end of file
diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png
index d0783d6..70f9a08 100644
Binary files a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png and b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.png differ
diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html
index 093beb8..8a215c8 100644
--- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html
+++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html
@@ -109,15 +109,16 @@ $(function(){initNavTree('group___m_y_l_i_b_s___d_e_f_i_n_e_s.html','',''); });
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -125,8 +126,10 @@ $(function(){initNavTree('group___m_y_l_i_b_s___d_e_f_i_n_e_s.html','',''); });
Topics
Bit access defines
Макросы и typedef'ы для работы с битами в unsigned типах.
- Evolve optimizer
- Библиотека для эволюционного подбора параметров
+ Time measurement
+ Библиотека для измерения времени/тиков между событиями
+ Genetic optimizer
+ Библиотека для эволюционного подбора параметров
Error Handler defines
Дефайны для обработки ошибок
Delays defines
diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js
index 3161a87..8d8a66d 100644
--- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js
+++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.js
@@ -1,7 +1,8 @@
var group___m_y_l_i_b_s___d_e_f_i_n_e_s =
[
[ "Bit access defines", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html", "group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s" ],
- [ "Evolve optimizer", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r" ],
+ [ "Time measurement", "group___b_e_n_c_h___t_i_m_e.html", "group___b_e_n_c_h___t_i_m_e" ],
+ [ "Genetic optimizer", "group___g_e_n___o_p_t_i_m_i_z_e_r.html", "group___g_e_n___o_p_t_i_m_i_z_e_r" ],
[ "Error Handler defines", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html", "group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s" ],
[ "Delays defines", "group___d_e_l_a_y_s___d_e_f_i_n_e_s.html", "group___d_e_l_a_y_s___d_e_f_i_n_e_s" ],
[ "Utils defines", "group___u_t_i_l_s___d_e_f_i_n_e_s.html", "group___u_t_i_l_s___d_e_f_i_n_e_s" ],
diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map
index 0281dad..863c315 100644
--- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map
+++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.map
@@ -1,11 +1,12 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
index 21a4273..01910aa 100644
--- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
+++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-e21133381fcfb6b51ca1c555273b8ce6
\ No newline at end of file
+264808d6452fadd8a8ce8eeb10b2b251
\ No newline at end of file
diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png
index 742664d..022886b 100644
Binary files a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png and b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.png differ
diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html
index 4f37553..5dbf3f2 100644
--- a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html
+++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html
@@ -125,6 +125,12 @@ Functions
Проверка и вывод последнего HardFault-трейса из Flash.
__STATIC_FORCEINLINE void HF_HandleFault (void)
Обработчик HardFault.
+
Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash.
@@ -226,6 +232,79 @@ Functions
Definition at line 540 of file trace.h .
+
+
+
+
+◆ stack_frame
+
+
+
+◆ stack_dump
+
+
+
+
+
+
+
+
+ uint32_t stack_dump[32]
+
+
+
+
+static
+
+
+
+
+
+◆ ret_adr
+
+
+
+
+
+
+
+
+ void* ret_adr[10] = {0}
+
+
+
+
+static
+
+
+
diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html
index ca0045f..2aab441 100644
--- a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html
+++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html
@@ -195,7 +195,7 @@ Macros
Value:
-
#define local_time()
Локальное время
+
#define local_time()
Локальное время
#define my_printf(...)
Универсальный макрос для вывода трассировки
Макрос логирования с поддержкой уровней LOG_LEVEL .
diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html
index 72b22b5..bd87445 100644
--- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html
+++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html
@@ -153,7 +153,7 @@ Macros
Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.
-
Definition at line 155 of file mylibs_defs.h .
+
Definition at line 154 of file mylibs_defs.h .
@@ -188,7 +188,7 @@ Macros
Returns Результат деления, округленный вверх.
Если результат деления без остатка: он возвращается как есть Если с остатком - округляется вверх
-Definition at line 166 of file mylibs_defs.h .
+Definition at line 165 of file mylibs_defs.h .
@@ -218,7 +218,7 @@ Macros
Returns Результат с поменяными местами старшим и младшим байтом.
Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
-Definition at line 174 of file mylibs_defs.h .
+Definition at line 173 of file mylibs_defs.h .
@@ -248,7 +248,7 @@ Macros
Returns Абсолютное значение числа x.
Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
-Definition at line 182 of file mylibs_defs.h .
+Definition at line 181 of file mylibs_defs.h .
diff --git a/Doc/html/index.html b/Doc/html/index.html
index 4155f67..bdab5f7 100644
--- a/Doc/html/index.html
+++ b/Doc/html/index.html
@@ -113,7 +113,7 @@ $(function(){initNavTree('index.html','',''); });
@@ -158,7 +158,7 @@ $(function(){initNavTree('index.html','',''); });
│ │ ├── mylibs_config.h # Конфигурация библиотек
│ │ ├── mylibs_defs.h # Общие определения и макросы
│ │ ├── bit_access.h # Битовый доступ к регистрам
-│ │ ├── evolve_optimizer.h # Оптимизатор (генетический алгоритм)
+│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
│ │ ├── trackers.h # Трекеры для отладки
│ │ └── trace.h # Трассировка и логирование
│ └── src/
diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html
index 489de5b..4945489 100644
--- a/Doc/html/mainpage_8h_source.html
+++ b/Doc/html/mainpage_8h_source.html
@@ -116,7 +116,7 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
-
+
@@ -152,7 +152,7 @@ $(function(){initNavTree('mainpage_8h_source.html','',''); });
-
+
diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js
index 7938a54..c4eb5d4 100644
--- a/Doc/html/menudata.js
+++ b/Doc/html/menudata.js
@@ -35,6 +35,7 @@ var menudata={children:[
{text:"e",url:"functions.html#index_e"},
{text:"g",url:"functions.html#index_g"},
{text:"h",url:"functions.html#index_h"},
+{text:"i",url:"functions.html#index_i"},
{text:"l",url:"functions.html#index_l"},
{text:"m",url:"functions.html#index_m"},
{text:"n",url:"functions.html#index_n"},
@@ -48,6 +49,7 @@ var menudata={children:[
{text:"e",url:"functions_vars.html#index_e"},
{text:"g",url:"functions_vars.html#index_g"},
{text:"h",url:"functions_vars.html#index_h"},
+{text:"i",url:"functions_vars.html#index_i"},
{text:"l",url:"functions_vars.html#index_l"},
{text:"m",url:"functions_vars.html#index_m"},
{text:"n",url:"functions_vars.html#index_n"},
@@ -60,30 +62,31 @@ var menudata={children:[
{text:"File Members",url:"globals.html",children:[
{text:"All",url:"globals.html",children:[
{text:"a",url:"globals.html#index_a"},
-{text:"b",url:"globals.html#index_b"},
-{text:"c",url:"globals.html#index_c"},
-{text:"d",url:"globals.html#index_d"},
-{text:"e",url:"globals.html#index_e"},
-{text:"f",url:"globals.html#index_f"},
-{text:"g",url:"globals.html#index_g"},
-{text:"h",url:"globals.html#index_h"},
-{text:"i",url:"globals.html#index_i"},
-{text:"l",url:"globals.html#index_l"},
-{text:"m",url:"globals.html#index_m"},
-{text:"n",url:"globals.html#index_n"},
-{text:"p",url:"globals.html#index_p"},
-{text:"r",url:"globals.html#index_r"},
-{text:"s",url:"globals.html#index_s"},
-{text:"t",url:"globals.html#index_t"},
-{text:"u",url:"globals.html#index_u"}]},
+{text:"b",url:"globals_b.html#index_b"},
+{text:"c",url:"globals_c.html#index_c"},
+{text:"d",url:"globals_d.html#index_d"},
+{text:"e",url:"globals_e.html#index_e"},
+{text:"f",url:"globals_f.html#index_f"},
+{text:"g",url:"globals_g.html#index_g"},
+{text:"h",url:"globals_h.html#index_h"},
+{text:"i",url:"globals_i.html#index_i"},
+{text:"l",url:"globals_l.html#index_l"},
+{text:"m",url:"globals_m.html#index_m"},
+{text:"n",url:"globals_n.html#index_n"},
+{text:"p",url:"globals_p.html#index_p"},
+{text:"r",url:"globals_r.html#index_r"},
+{text:"s",url:"globals_s.html#index_s"},
+{text:"t",url:"globals_t.html#index_t"},
+{text:"u",url:"globals_u.html#index_u"}]},
{text:"Functions",url:"globals_func.html",children:[
-{text:"e",url:"globals_func.html#index_e"},
+{text:"b",url:"globals_func.html#index_b"},
{text:"g",url:"globals_func.html#index_g"},
{text:"h",url:"globals_func.html#index_h"},
{text:"r",url:"globals_func.html#index_r"},
{text:"s",url:"globals_func.html#index_s"},
{text:"t",url:"globals_func.html#index_t"},
{text:"u",url:"globals_func.html#index_u"}]},
+{text:"Variables",url:"globals_vars.html"},
{text:"Enumerations",url:"globals_enum.html"},
{text:"Enumerator",url:"globals_eval.html"},
{text:"Macros",url:"globals_defs.html",children:[
diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html
index cceab33..19f82bf 100644
--- a/Doc/html/mylibs__config_8h.html
+++ b/Doc/html/mylibs__config_8h.html
@@ -121,48 +121,50 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -202,16 +204,20 @@ Macros
Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
#define GPIO_TRACE_ENABLE
Включить GPIO трассировку
-#define ENABLE_EVOLVE_OPTIMIZATION
- Включить оптимизацию параметров
-#define EVOLVE_MAX_PARAMS 20
- Максимальное количество параметров
-#define EVOLVE_MAX_CANDIDATES 100
- Максимальное количество кандидатов для обучения
+#define GEN_OPTIMIZATION_ENABLE
+ Включить оптимизацию параметров
+#define GEN_MAX_PARAMS 20
+ Максимальное количество параметров
+#define GEN_MAX_CANDIDATES 100
+ Максимальное количество кандидатов для обучения
+#define BENCH_TIME_ENABLE
+ Включить бенч времени
+#define BENCH_TIME_MAX_CHANNELS 16
+ Максимальное количество каналов измерения
#define local_time ()
Локальное время
-#define INCLUDE_EVOLVE_OPTIMIZER
- Подключить библиотеку для оптимизации параметров
+#define INCLUDE_GEN_OPTIMIZER
+ Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB
Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB
diff --git a/Doc/html/mylibs__config_8h.js b/Doc/html/mylibs__config_8h.js
index 522ab62..9065b7a 100644
--- a/Doc/html/mylibs__config_8h.js
+++ b/Doc/html/mylibs__config_8h.js
@@ -16,11 +16,13 @@ var mylibs__config_8h =
[ "HF_FLASH_ADDR", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63", null ],
[ "HF_RAM_END", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051", null ],
[ "GPIO_TRACE_ENABLE", "group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b", null ],
- [ "ENABLE_EVOLVE_OPTIMIZATION", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47", null ],
- [ "EVOLVE_MAX_PARAMS", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee", null ],
- [ "EVOLVE_MAX_CANDIDATES", "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971", null ],
+ [ "GEN_OPTIMIZATION_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c", null ],
+ [ "GEN_MAX_PARAMS", "group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab", null ],
+ [ "GEN_MAX_CANDIDATES", "group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869", null ],
+ [ "BENCH_TIME_ENABLE", "group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9", null ],
+ [ "BENCH_TIME_MAX_CHANNELS", "group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52", null ],
[ "local_time", "group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653", null ],
- [ "INCLUDE_EVOLVE_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66", null ],
+ [ "INCLUDE_GEN_OPTIMIZER", "group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692", null ],
[ "INCLUDE_BIT_ACCESS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be", null ],
[ "INCLUDE_TRACKERS_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32", null ],
[ "INCLUDE_TRACE_LIB", "group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7", null ],
diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map
index 1d4324b..8f1d357 100644
--- a/Doc/html/mylibs__config_8h__dep__incl.map
+++ b/Doc/html/mylibs__config_8h__dep__incl.map
@@ -1,44 +1,46 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5
index 2bf2c87..8005ab1 100644
--- a/Doc/html/mylibs__config_8h__dep__incl.md5
+++ b/Doc/html/mylibs__config_8h__dep__incl.md5
@@ -1 +1 @@
-5684ae5794e6a9fd93ea5670cfcc39cf
\ No newline at end of file
+1c7c706656d0b5264849d45ac47d4507
\ No newline at end of file
diff --git a/Doc/html/mylibs__config_8h__dep__incl.png b/Doc/html/mylibs__config_8h__dep__incl.png
index eb504b4..a374176 100644
Binary files a/Doc/html/mylibs__config_8h__dep__incl.png and b/Doc/html/mylibs__config_8h__dep__incl.png differ
diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/mylibs__config_8h_source.html
index e4296be..64d652b 100644
--- a/Doc/html/mylibs__config_8h_source.html
+++ b/Doc/html/mylibs__config_8h_source.html
@@ -157,45 +157,62 @@ $(function(){initNavTree('mylibs__config_8h_source.html','',''); });
-
+
-
+
- 64 #define ENABLE_EVOLVE_OPTIMIZATION
- 65 #define EVOLVE_MAX_PARAMS 20
- 66 #define EVOLVE_MAX_CANDIDATES 100
+ 64 #define GEN_OPTIMIZATION_ENABLE
+ 65 #define GEN_MAX_PARAMS 20
+ 66 #define GEN_MAX_CANDIDATES 100
-
+
-
+
-
+
- 80 #define local_time() uwTick
-
- 82 #define INCLUDE_EVOLVE_OPTIMIZER
- 83 #define INCLUDE_BIT_ACCESS_LIB
- 84 #define INCLUDE_TRACKERS_LIB
- 85 #define INCLUDE_TRACE_LIB
- 86 #define INCLUDE_GENERAL_PERIPH_LIBS
-
-
-
-
-
-
-
-
+
+ 81 #define BENCH_TIME_ENABLE
+ 82 #define BENCH_TIME_MAX_CHANNELS 16
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ 97 #define local_time() uwTick
+
+ 99 #define INCLUDE_GEN_OPTIMIZER
+ 100 #define INCLUDE_BIT_ACCESS_LIB
+ 101 #define INCLUDE_TRACKERS_LIB
+ 102 #define INCLUDE_TRACE_LIB
+ 103 #define INCLUDE_GENERAL_PERIPH_LIBS
+ 104 #define FREERTOS_DELAY
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html
index 45402d5..5709d6b 100644
--- a/Doc/html/mylibs__defs_8h.html
+++ b/Doc/html/mylibs__defs_8h.html
@@ -123,46 +123,48 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.map b/Doc/html/mylibs__defs_8h__dep__incl.map
index 07ec6b0..f952e29 100644
--- a/Doc/html/mylibs__defs_8h__dep__incl.map
+++ b/Doc/html/mylibs__defs_8h__dep__incl.map
@@ -1,42 +1,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5
index 751fc98..27e2e55 100644
--- a/Doc/html/mylibs__defs_8h__dep__incl.md5
+++ b/Doc/html/mylibs__defs_8h__dep__incl.md5
@@ -1 +1 @@
-9c1097cc7666ffa0cae2ac5bbe1fbab9
\ No newline at end of file
+9853b50743578d4b3267175adda5a3af
\ No newline at end of file
diff --git a/Doc/html/mylibs__defs_8h__dep__incl.png b/Doc/html/mylibs__defs_8h__dep__incl.png
index 5fae33f..02c276a 100644
Binary files a/Doc/html/mylibs__defs_8h__dep__incl.png and b/Doc/html/mylibs__defs_8h__dep__incl.png differ
diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html
index 5c4e9a8..570cc52 100644
--- a/Doc/html/mylibs__defs_8h_source.html
+++ b/Doc/html/mylibs__defs_8h_source.html
@@ -239,60 +239,60 @@ $(function(){initNavTree('mylibs__defs_8h_source.html','',''); });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 155 #define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
-
-
-
-
-
-
-
-
-
-
- 166 #define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1
-
-
-
-
-
-
-
- 174 #define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
-
-
-
-
-
-
-
- 182 #define ABS(x) ( ((x) > 0)? (x) : -(x))
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 154 #define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
+
+
+
+
+
+
+
+
+
+
+ 165 #define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1
+
+
+
+
+
+
+
+ 173 #define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
+
+
+
+
+
+
+
+ 181 #define ABS(x) ( ((x) > 0)? (x) : -(x))
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html
index bf4d850..726ac42 100644
--- a/Doc/html/mylibs__include_8h.html
+++ b/Doc/html/mylibs__include_8h.html
@@ -108,7 +108,7 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
#include "bit_access.h "
#include "trackers.h "
#include "trace.h "
-#include "evolve_optimizer.h "
+#include "gen_optimizer.h "
#include "__general_flash.h"
#include "general_gpio.h "
@@ -120,16 +120,16 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
-
-
+
+
-
-
+
+
@@ -141,27 +141,232 @@ $(function(){initNavTree('mylibs__include_8h.html','',''); });
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
Заголочный файл для всех библиотек
Здесь нужно собрать библиотеки и дефайны, которые должны быть видны во всем проекте, чтобы не подключать 100 инклюдов в каждом ".c" файле
Definition in file mylibs_include.h .
-
+
+
+◆ BenchTime_Init
+
+
+
+
+
+ #define BenchTime_Init
+ (
+ void )
+
+
+
+
+
+
+◆ BenchTime_Start
+
+
+
+
+
+ #define BenchTime_Start
+ (
+ channel ,
+
+
+
+
+ ticks ,
+
+
+
+
+ tick_period )
+
+
+
+
+
+◆ BenchTime_End
+
+
+
+
+
+ #define BenchTime_End
+ (
+ channel ,
+
+
+
+
+ ticks )
+
+
+
+
+
+◆ BenchTime_GetMin
+
+
+
+
+
+ #define BenchTime_GetMin
+ (
+ channel )
+
+
+
+
+
+
+◆ BenchTime_GetMax
+
+
+
+
+
+ #define BenchTime_GetMax
+ (
+ channel )
+
+
+
+
+
+
+◆ BenchTime_GetAverage
+
+
+
+
+
+ #define BenchTime_GetAverage
+ (
+ channel )
+
+
+
+
+
+
+◆ BenchTime_GetCount
+
+
+
+
+
+ #define BenchTime_GetCount
+ (
+ channel )
+
+
+
+
+
+
+◆ BenchTime_GetLast
+
+
+
+
+
+ #define BenchTime_GetLast
+ (
+ channel )
+
+
+
+
+
+
+◆ BenchTime_ResetStats
+
+
+
+
+
+ #define BenchTime_ResetStats
+ (
+ channel )
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map
index 5e244f9..950b7db 100644
--- a/Doc/html/mylibs__include_8h__incl.map
+++ b/Doc/html/mylibs__include_8h__incl.map
@@ -2,16 +2,16 @@
-
-
+
+
-
-
+
+
@@ -23,15 +23,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5
index 9409983..ed70154 100644
--- a/Doc/html/mylibs__include_8h__incl.md5
+++ b/Doc/html/mylibs__include_8h__incl.md5
@@ -1 +1 @@
-af25a11761fc6d3531ecbff4e1cdce60
\ No newline at end of file
+8e966aa98e7249a56c45bc830a455c74
\ No newline at end of file
diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png
index 1075bc6..6caf9f1 100644
Binary files a/Doc/html/mylibs__include_8h__incl.png and b/Doc/html/mylibs__include_8h__incl.png differ
diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/mylibs__include_8h_source.html
index 898ae7b..5696b67 100644
--- a/Doc/html/mylibs__include_8h_source.html
+++ b/Doc/html/mylibs__include_8h_source.html
@@ -181,8 +181,8 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
79 #define HF_HandleFault(...)
-
82 #ifdef INCLUDE_EVOLVE_OPTIMIZER
-
+
82 #ifdef INCLUDE_GEN_OPTIMIZER
+
@@ -191,48 +191,65 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
91 int32_t candidates[0][0];
-
-
93 #define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
-
94 #define EvolveOptimizer_Step(opt, params, LossFunc)
+
+
93 #define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
+
94 #define GenOptimizer_Step(opt, params, LossFunc)
95 #define PARAM_SCALE_Q16(x, min_val, max_val) (x)
96 #define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
-
99 #ifdef INCLUDE_GENERAL_PERIPH_LIBS
+
-
101 #include "__general_flash.h"
-
-
103 #ifdef HAL_SPI_MODULE_ENABLED
-
-
-
106 #ifdef HAL_UART_MODULE_ENABLED
-
-
-
109 #ifdef HAL_TIM_MODULE_ENABLED
-
-
-
-
+
101 #ifdef INCLUDE_BENCH_TEST
+
+
+
104 #define BenchTime_Init()
+
105 #define BenchTime_Start(channel, ticks, tick_period) 0
+
106 #define BenchTime_End(channel, ticks) 0
+
107 #define BenchTime_GetMin(channel) 0
+
108 #define BenchTime_GetMax(channel) 0
+
109 #define BenchTime_GetAverage(channel) 0
+
110 #define BenchTime_GetCount(channel) 0
+
111 #define BenchTime_GetLast(channel) 0
+
112 #define BenchTime_ResetStats(channel)
+
-
+
115 #ifdef INCLUDE_GENERAL_PERIPH_LIBS
-
-
-
-
-
-
-
-
-
+
117 #include "__general_flash.h"
+
+
119 #ifdef HAL_SPI_MODULE_ENABLED
+
+
+
122 #ifdef HAL_UART_MODULE_ENABLED
+
+
+
125 #ifdef HAL_TIM_MODULE_ENABLED
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Заголовочный файл для измерения времени между событиями
Заголочный файл для дефайнов битового доступа.
-
Заголовочный файл для адаптивного подбора параметров
+
Заголовочный файл для адаптивного подбора параметров
Заголовочный файл для модуля инициализации портов и работы с ними.
Заголовочный файл для модуля инициализации SPI.
Заголовочный файл для модуля инициализации таймеров и работы с ними.
Заголовочный файл для модуля инициализации UART.
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура эволюционного оптимизатора
+
Структура эволюционного оптимизатора
Заголочный файл для работы с трассировкой.
Заголочный файл для работы с трекерами Trackers defines.
diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js
index b8175d6..bde56f6 100644
--- a/Doc/html/navtreedata.js
+++ b/Doc/html/navtreedata.js
@@ -49,8 +49,9 @@ var NAVTREE =
[ "Files", "files.html", [
[ "File List", "files.html", "files_dup" ],
[ "File Members", "globals.html", [
- [ "All", "globals.html", null ],
+ [ "All", "globals.html", "globals_dup" ],
[ "Functions", "globals_func.html", null ],
+ [ "Variables", "globals_vars.html", null ],
[ "Enumerations", "globals_enum.html", null ],
[ "Enumerator", "globals_eval.html", null ],
[ "Macros", "globals_defs.html", null ]
@@ -62,7 +63,7 @@ var NAVTREE =
var NAVTREEINDEX =
[
"____general__flash_8c_source.html",
-"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae"
+"group___u_a_r_t___i_n_i_t.html"
];
var SYNCONMSG = 'click to disable panel synchronization';
diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js
index 8854031..18c9dc7 100644
--- a/Doc/html/navtreeindex0.js
+++ b/Doc/html/navtreeindex0.js
@@ -3,19 +3,21 @@ var NAVTREEINDEX0 =
"____general__flash_8c_source.html":[3,0,1,1,0],
"____general__flash_8h_source.html":[3,0,1,0,0],
"annotated.html":[2,0],
-"bit__access_8h.html":[3,0,0,0,0],
-"bit__access_8h_source.html":[3,0,0,0,0],
+"bench__time_8h.html":[3,0,0,0,0],
+"bench__time_8h_source.html":[3,0,0,0,0],
+"bit__access_8h.html":[3,0,0,0,1],
+"bit__access_8h_source.html":[3,0,0,0,1],
"classes.html":[2,1],
"dir_2cad7b5fa94233a09111fd73c6202518.html":[3,0,1,0],
"dir_3d5e348fed410a00f9c665596ca3b887.html":[3,0,1,1],
"dir_57feeba75fefbd1a9c832b76e3bce520.html":[3,0,1],
"dir_8eb68c124db7670c3cb56141b10519ea.html":[3,0,0,0],
"dir_d4b2573a0c19afb61452cc3d00967af1.html":[3,0,0],
-"evolve__optimizer_8h.html":[3,0,0,0,1],
-"evolve__optimizer_8h_source.html":[3,0,0,0,1],
"files.html":[3,0],
"functions.html":[2,2,0],
"functions_vars.html":[2,2,1],
+"gen__optimizer_8h.html":[3,0,0,0,2],
+"gen__optimizer_8h_source.html":[3,0,0,0,2],
"general__gpio_8c.html":[3,0,1,1,1],
"general__gpio_8c_source.html":[3,0,1,1,1],
"general__gpio_8h.html":[3,0,1,0,1],
@@ -36,39 +38,70 @@ var NAVTREEINDEX0 =
"general__uart_8h.html":[3,0,1,0,4],
"general__uart_8h_source.html":[3,0,1,0,4],
"globals.html":[3,1,0],
-"globals_defs.html":[3,1,4],
-"globals_enum.html":[3,1,2],
-"globals_eval.html":[3,1,3],
+"globals.html":[3,1,0,0],
+"globals_b.html":[3,1,0,1],
+"globals_c.html":[3,1,0,2],
+"globals_d.html":[3,1,0,3],
+"globals_defs.html":[3,1,5],
+"globals_e.html":[3,1,0,4],
+"globals_enum.html":[3,1,3],
+"globals_eval.html":[3,1,4],
+"globals_f.html":[3,1,0,5],
"globals_func.html":[3,1,1],
+"globals_g.html":[3,1,0,6],
+"globals_h.html":[3,1,0,7],
+"globals_i.html":[3,1,0,8],
+"globals_l.html":[3,1,0,9],
+"globals_m.html":[3,1,0,10],
+"globals_n.html":[3,1,0,11],
+"globals_p.html":[3,1,0,12],
+"globals_r.html":[3,1,0,13],
+"globals_s.html":[3,1,0,14],
+"globals_t.html":[3,1,0,15],
+"globals_u.html":[3,1,0,16],
+"globals_vars.html":[3,1,2],
+"group___b_e_n_c_h___t_i_m_e.html":[1,0,1,1],
+"group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e":[1,0,1,1,7],
+"group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8":[1,0,1,1,8],
+"group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705":[1,0,1,1,6],
+"group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35":[1,0,1,1,11],
+"group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439":[1,0,1,1,5],
+"group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d":[1,0,1,1,12],
+"group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054":[1,0,1,1,3],
+"group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a":[1,0,1,1,9],
+"group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349":[1,0,1,1,4],
+"group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed":[1,0,1,1,10],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html":[1,0,1,0],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga47eb69ce9330a1c73fe8031240f02f0a":[1,0,1,0,7],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga57dc3bb3472a66fc92312f89d42d2396":[1,0,1,0,4],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#ga6a122b536ad99ae611c8cf01437af086":[1,0,1,0,5],
"group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html#gafaa2080168b1b6f7281e8bfabab022d1":[1,0,1,0,6],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,3],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,3,2],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,3,1],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,3,0],
-"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,3,3],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,2],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,2,2],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,2,4],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,2,1],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,2,3],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,2,5],
-"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,2,0],
-"group___e_v_o_l_v_e___c_o_n_f_i_g.html":[1,0,0,1],
-"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47":[1,0,0,1,0],
-"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971":[1,0,0,1,2],
-"group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee":[1,0,0,1,1],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html":[1,0,1,1],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6":[1,0,1,1,3],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,1,5],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21":[1,0,1,1,6],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,1,1],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc":[1,0,1,1,4],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,1,2],
-"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef":[1,0,1,1,7],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html":[1,0,1,4],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85":[1,0,1,4,2],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25":[1,0,1,4,1],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479":[1,0,1,4,0],
+"group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518":[1,0,1,4,3],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html":[1,0,1,3],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3":[1,0,1,3,2],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254":[1,0,1,3,4],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9":[1,0,1,3,1],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2":[1,0,1,3,3],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490":[1,0,1,3,5],
+"group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f":[1,0,1,3,0],
+"group___g_e_n___c_o_n_f_i_g.html":[1,0,0,1],
+"group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869":[1,0,0,1,2],
+"group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9":[1,0,0,1,3],
+"group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52":[1,0,0,1,4],
+"group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab":[1,0,0,1,1],
+"group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c":[1,0,0,1,0],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html":[1,0,1,2],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a":[1,0,1,2,6],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,2,5],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068":[1,0,1,2,3],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd":[1,0,1,2,4],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,2,1],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,2,2],
+"group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628":[1,0,1,2,7],
"group___g_p_i_o___i_n_i_t.html":[1,0,2,0,0,0],
"group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9":[1,0,2,0,0,0,4],
"group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,1],
@@ -79,9 +112,9 @@ var NAVTREEINDEX0 =
"group___l_i_b_s___c_o_n_f_i_g.html":[1,0,0,2],
"group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7":[1,0,0,2,4],
"group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281":[1,0,0,2,5],
+"group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692":[1,0,0,2,1],
"group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32":[1,0,0,2,3],
"group___l_i_b_s___c_o_n_f_i_g.html#ga57c369737d5c0cfdb7baeecba0a4b151":[1,0,0,2,6],
-"group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66":[1,0,0,2,1],
"group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653":[1,0,0,2,0],
"group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be":[1,0,0,2,2],
"group___m_y___l_i_b_s___g_p_i_o.html":[1,0,2,0],
@@ -164,7 +197,7 @@ var NAVTREEINDEX0 =
"group___t_i_m___i_n_i_t.html#ga9ae40be31d5271abe3e49f896d916d5c":[1,0,2,2,0,0,13],
"group___t_i_m___i_n_i_t.html#gaac627c0e98c9594cc41b1b46eb39e44a":[1,0,2,2,0,0,8],
"group___t_i_m___i_n_i_t.html#gaf48ef87650517652ddec039a189507ac":[1,0,2,2,0,0,12],
-"group___t_r_a_c_e.html":[1,0,1,5],
+"group___t_r_a_c_e.html":[1,0,1,6],
"group___t_r_a_c_e___c_o_n_f_i_g.html":[1,0,0,0],
"group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8":[1,0,0,0,2],
"group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05":[1,0,0,0,4],
@@ -182,72 +215,39 @@ var NAVTREEINDEX0 =
"group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313":[1,0,0,0,10],
"group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca":[1,0,0,0,11],
"group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d":[1,0,0,0,8],
-"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,5,1],
-"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,5,1,1],
-"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,5,1,0],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,5,3],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,5,3,1],
-"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,5,3,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,5,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,5,2,1],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,5,2,3],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,5,2,2],
-"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,5,2,4],
-"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,5,0],
-"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,5,0,1],
-"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,5,0,0],
-"group___t_r_a_c_k_e_r_s.html":[1,0,1,6],
-"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,6,18],
-"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,6,12],
-"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,6,9],
-"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,6,17],
-"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,6,4],
-"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,6,7],
-"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,6,10],
-"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,6,8],
-"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,6,0],
-"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,6,15],
-"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,6,14],
-"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,6,1],
-"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,6,11],
-"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,6,6],
-"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,6,19],
-"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,6,5],
-"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,6,13],
-"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,6,3],
-"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,6,2],
-"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,6,16],
-"group___u_a_r_t___i_n_i_t.html":[1,0,2,3,0],
-"group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89":[1,0,2,3,0,0],
-"group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340":[1,0,2,3,0,5],
-"group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976":[1,0,2,3,0,3],
-"group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7":[1,0,2,3,0,4],
-"group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d":[1,0,2,3,0,2],
-"group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b":[1,0,2,3,0,1],
-"group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868":[1,0,2,3,0,6],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,4],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,4,2],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,4,3],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,4,1],
-"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,4,0],
-"index.html":[],
-"index.html#features":[0,0],
-"index.html#gpio_module":[0,0,2],
-"index.html#overview":[0],
-"index.html#spi_module":[0,0,5],
-"index.html#structure":[0,1],
-"index.html#tim_module":[0,0,3],
-"index.html#trace_module":[0,0,1],
-"index.html#uart_module":[0,0,4],
-"index.html#usage_basic":[0,2],
-"index.html#utils_module":[0,0,0],
-"mainpage_8h_source.html":[3,0,2],
-"mylibs__config_8h.html":[3,0,0,0,2],
-"mylibs__config_8h_source.html":[3,0,0,0,2],
-"mylibs__defs_8h.html":[3,0,0,0,3],
-"mylibs__defs_8h_source.html":[3,0,0,0,3],
-"mylibs__include_8h.html":[3,0,0,0,4],
-"mylibs__include_8h_source.html":[3,0,0,0,4],
-"pages.html":[],
-"struct_evolve_optimizer__t.html":[1,0,1,1,0]
+"group___t_r_a_c_e___g_p_i_o.html":[1,0,1,6,1],
+"group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb":[1,0,1,6,1,1],
+"group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a":[1,0,1,6,1,0],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html":[1,0,1,6,3],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f":[1,0,1,6,3,1],
+"group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7":[1,0,1,6,3,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html":[1,0,1,6,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6":[1,0,1,6,2,1],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146":[1,0,1,6,2,3],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63":[1,0,1,6,2,2],
+"group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1":[1,0,1,6,2,4],
+"group___t_r_a_c_e___s_e_r_i_a_l.html":[1,0,1,6,0],
+"group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26":[1,0,1,6,0,1],
+"group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa":[1,0,1,6,0,0],
+"group___t_r_a_c_k_e_r_s.html":[1,0,1,7],
+"group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d":[1,0,1,7,18],
+"group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e":[1,0,1,7,12],
+"group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1":[1,0,1,7,9],
+"group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead":[1,0,1,7,17],
+"group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30":[1,0,1,7,4],
+"group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758":[1,0,1,7,7],
+"group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9":[1,0,1,7,10],
+"group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb":[1,0,1,7,8],
+"group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4":[1,0,1,7,0],
+"group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9":[1,0,1,7,15],
+"group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b":[1,0,1,7,14],
+"group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc":[1,0,1,7,1],
+"group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57":[1,0,1,7,11],
+"group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e":[1,0,1,7,6],
+"group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5":[1,0,1,7,19],
+"group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169":[1,0,1,7,5],
+"group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51":[1,0,1,7,13],
+"group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07":[1,0,1,7,3],
+"group___t_r_a_c_k_e_r_s.html#gadd7fd2c6e3a4800f1d5ddab35fd4b43e":[1,0,1,7,2],
+"group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74":[1,0,1,7,16]
};
diff --git a/Doc/html/navtreeindex1.js b/Doc/html/navtreeindex1.js
index be8ca82..7a2ccc1 100644
--- a/Doc/html/navtreeindex1.js
+++ b/Doc/html/navtreeindex1.js
@@ -1,16 +1,50 @@
var NAVTREEINDEX1 =
{
-"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,5],
-"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,1],
-"struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727":[1,0,1,1,0,7],
-"struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a":[1,0,1,1,0,10],
-"struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c":[1,0,1,1,0,0],
-"struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df":[1,0,1,1,0,8],
-"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,3],
-"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,2],
-"struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108":[1,0,1,1,0,6],
-"struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4":[1,0,1,1,0,9],
-"struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8":[1,0,1,1,0,4],
+"group___u_a_r_t___i_n_i_t.html":[1,0,2,3,0],
+"group___u_a_r_t___i_n_i_t.html#ga167269406e73327b95c3bb7b9cfe6d89":[1,0,2,3,0,0],
+"group___u_a_r_t___i_n_i_t.html#ga592c6bf4a6496d6806ba0838cdfa2340":[1,0,2,3,0,5],
+"group___u_a_r_t___i_n_i_t.html#ga6dadd967b428aade24008ec060009976":[1,0,2,3,0,3],
+"group___u_a_r_t___i_n_i_t.html#ga779530e93e7aa1f25eb13045ec42b8e7":[1,0,2,3,0,4],
+"group___u_a_r_t___i_n_i_t.html#gaacb3968508217a0d8b3f64aa0c8aa07d":[1,0,2,3,0,2],
+"group___u_a_r_t___i_n_i_t.html#gace54f148bb1d72f13bf397d096d38d1b":[1,0,2,3,0,1],
+"group___u_a_r_t___i_n_i_t.html#gafaeb8bdd4aa7fb1987505530daa90868":[1,0,2,3,0,6],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html":[1,0,1,5],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291":[1,0,1,5,2],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga996f7be338ccb40d1a2a5abc1ad61759":[1,0,1,5,3],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gabf45f2b60eedf80cf9d1dbe4302a741e":[1,0,1,5,1],
+"group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be":[1,0,1,5,0],
+"index.html":[],
+"index.html#features":[0,0],
+"index.html#gpio_module":[0,0,2],
+"index.html#overview":[0],
+"index.html#spi_module":[0,0,5],
+"index.html#structure":[0,1],
+"index.html#tim_module":[0,0,3],
+"index.html#trace_module":[0,0,1],
+"index.html#uart_module":[0,0,4],
+"index.html#usage_basic":[0,2],
+"index.html#utils_module":[0,0,0],
+"mainpage_8h_source.html":[3,0,2],
+"mylibs__config_8h.html":[3,0,0,0,3],
+"mylibs__config_8h_source.html":[3,0,0,0,3],
+"mylibs__defs_8h.html":[3,0,0,0,4],
+"mylibs__defs_8h_source.html":[3,0,0,0,4],
+"mylibs__include_8h.html":[3,0,0,0,5],
+"mylibs__include_8h_source.html":[3,0,0,0,5],
+"pages.html":[],
+"struct_bench_time__t.html":[1,0,1,1,2],
+"struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6":[1,0,1,1,2,0],
+"struct_bench_time_channel__t.html":[1,0,1,1,1],
+"struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd":[1,0,1,1,1,1],
+"struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9":[1,0,1,1,1,2],
+"struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c":[1,0,1,1,1,3],
+"struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928":[1,0,1,1,1,0],
+"struct_bench_time_stats__t.html":[1,0,1,1,0],
+"struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec":[1,0,1,1,0,2],
+"struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0":[1,0,1,1,0,4],
+"struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8":[1,0,1,1,0,0],
+"struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c":[1,0,1,1,0,1],
+"struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71":[1,0,1,1,0,3],
"struct_g_p_i_o___l_e_d_type_def.html":[1,0,2,0,2,0],
"struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978":[1,0,2,0,2,0,2],
"struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec":[1,0,2,0,2,0,4],
@@ -23,19 +57,31 @@ var NAVTREEINDEX1 =
"struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405":[1,0,2,0,1,0,2],
"struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032":[1,0,2,0,1,0,1],
"struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a":[1,0,2,0,1,0,0],
-"struct_h_f___stack_frame__t.html":[1,0,1,5,3,0],
-"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,5,3,0,6],
-"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,5,3,0,1],
-"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,5,3,0,0],
-"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,5,3,0,3],
-"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,5,3,0,2],
-"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,5,3,0,5],
-"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,5,3,0,4],
-"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,5,3,0,7],
-"struct_r_t_t___flash_header__t.html":[1,0,1,5,2,0],
-"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,5,2,0,0],
-"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,5,2,0,2],
-"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,5,2,0,1],
+"struct_gen_optimizer__t.html":[1,0,1,2,0],
+"struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc":[1,0,1,2,0,5],
+"struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df":[1,0,1,2,0,9],
+"struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9":[1,0,1,2,0,3],
+"struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73":[1,0,1,2,0,8],
+"struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c":[1,0,1,2,0,6],
+"struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9":[1,0,1,2,0,2],
+"struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192":[1,0,1,2,0,0],
+"struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1":[1,0,1,2,0,7],
+"struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12":[1,0,1,2,0,10],
+"struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c":[1,0,1,2,0,4],
+"struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5":[1,0,1,2,0,1],
+"struct_h_f___stack_frame__t.html":[1,0,1,6,3,0],
+"struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732":[1,0,1,6,3,0,6],
+"struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea":[1,0,1,6,3,0,1],
+"struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413":[1,0,1,6,3,0,0],
+"struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3":[1,0,1,6,3,0,3],
+"struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b":[1,0,1,6,3,0,2],
+"struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577":[1,0,1,6,3,0,5],
+"struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,6,3,0,4],
+"struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,6,3,0,7],
+"struct_r_t_t___flash_header__t.html":[1,0,1,6,2,0],
+"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,6,2,0,0],
+"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,6,2,0,2],
+"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,6,2,0,1],
"struct_s_p_i___settings_type_def.html":[1,0,2,1,1],
"struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820":[1,0,2,1,1,7],
"struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95":[1,0,2,1,1,4],
@@ -78,10 +124,10 @@ var NAVTREEINDEX1 =
"struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea":[1,0,2,3,1,0],
"struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f":[1,0,2,3,1,1],
"topics.html":[1],
-"trace_8h.html":[3,0,0,0,5],
-"trace_8h_source.html":[3,0,0,0,5],
-"trackers_8h.html":[3,0,0,0,6],
-"trackers_8h_source.html":[3,0,0,0,6],
+"trace_8h.html":[3,0,0,0,6],
+"trace_8h_source.html":[3,0,0,0,6],
+"trackers_8h.html":[3,0,0,0,7],
+"trackers_8h_source.html":[3,0,0,0,7],
"unionuint16___bit_type_def.html":[1,0,1,0,1],
"unionuint32___bit_type_def.html":[1,0,1,0,2],
"unionuint64___bit_type_def.html":[1,0,1,0,3],
diff --git a/Doc/html/search/all_1.js b/Doc/html/search/all_1.js
index fa8ea03..2595211 100644
--- a/Doc/html/search/all_1.js
+++ b/Doc/html/search/all_1.js
@@ -1,7 +1,22 @@
var searchData=
[
- ['bit_20access_20defines_0',['Bit access defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'']]],
- ['bit_5faccess_2eh_1',['bit_access.h',['../bit__access_8h.html',1,'']]],
- ['buffer_2',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]],
- ['byteswap16_3',['ByteSwap16',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291',1,'mylibs_defs.h']]]
+ ['bench_5ftime_2eh_0',['bench_time.h',['../bench__time_8h.html',1,'']]],
+ ['bench_5ftime_5fenable_1',['BENCH_TIME_ENABLE',['../group___g_e_n___c_o_n_f_i_g.html#ga67c3c54503b9bbd5d175ac46d37866d9',1,'mylibs_config.h']]],
+ ['bench_5ftime_5fmax_5fchannels_2',['BENCH_TIME_MAX_CHANNELS',['../group___g_e_n___c_o_n_f_i_g.html#ga74fdf777ceefa5e7d67120fbda4cde52',1,'mylibs_config.h']]],
+ ['benchtime_5fend_3',['BenchTime_End',['../group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439',1,'bench_time.h']]],
+ ['benchtime_5fgetaverage_4',['BenchTime_GetAverage',['../group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8',1,'bench_time.h']]],
+ ['benchtime_5fgetcount_5',['BenchTime_GetCount',['../group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a',1,'bench_time.h']]],
+ ['benchtime_5fgetlast_6',['BenchTime_GetLast',['../group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed',1,'bench_time.h']]],
+ ['benchtime_5fgetmax_7',['BenchTime_GetMax',['../group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e',1,'bench_time.h']]],
+ ['benchtime_5fgetmin_8',['BenchTime_GetMin',['../group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705',1,'bench_time.h']]],
+ ['benchtime_5finit_9',['BenchTime_Init',['../group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054',1,'bench_time.h']]],
+ ['benchtime_5fresetstats_10',['BenchTime_ResetStats',['../group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35',1,'bench_time.h']]],
+ ['benchtime_5fstart_11',['BenchTime_Start',['../group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349',1,'bench_time.h']]],
+ ['benchtime_5ft_12',['BenchTime_t',['../struct_bench_time__t.html',1,'']]],
+ ['benchtimechannel_5ft_13',['BenchTimeChannel_t',['../struct_bench_time_channel__t.html',1,'']]],
+ ['benchtimestats_5ft_14',['BenchTimeStats_t',['../struct_bench_time_stats__t.html',1,'']]],
+ ['bit_20access_20defines_15',['Bit access defines',['../group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html',1,'']]],
+ ['bit_5faccess_2eh_16',['bit_access.h',['../bit__access_8h.html',1,'']]],
+ ['buffer_17',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]],
+ ['byteswap16_18',['ByteSwap16',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#ga0f22e895ac7781c3d1b68fee182c4291',1,'mylibs_defs.h']]]
];
diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js
index 91de365..4476016 100644
--- a/Doc/html/search/all_10.js
+++ b/Doc/html/search/all_10.js
@@ -2,57 +2,60 @@ var searchData=
[
['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]],
['tern_5fassert_5fusertracker_1',['tern_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#ga39b6ffbc561f8caac276415e1ad32c30',1,'trackers.h']]],
- ['tim_20tools_2',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]],
- ['tim_5fbase_5fdisable_3',['TIM_Base_Disable',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5',1,'general_tim.h']]],
- ['tim_5fbase_5finit_4',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]],
- ['tim_5fbase_5fmspdeinit_5',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fbase_5fmspinit_6',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]],
- ['tim_5fdefault_7',['TIM_DEFAULT',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8',1,'general_tim.h']]],
- ['tim_5fdelay_8',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
- ['tim_5fdelay_5fnonblocking_9',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
- ['tim_5fdelay_5fstart_10',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fencoder_5finit_11',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]],
- ['tim_5fencoder_5fread_12',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]],
- ['tim_5fencoder_5freadswitch_13',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]],
- ['tim_5fencodertypedef_14',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]],
- ['tim_5fit_5fmode_15',['TIM_IT_MODE',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c',1,'general_tim.h']]],
- ['tim_5fitmodetypedef_16',['TIM_ITModeTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787',1,'general_tim.h']]],
- ['tim_5fmhztickbasetypedef_17',['TIM_MHzTickBaseTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800',1,'general_tim.h']]],
- ['tim_5foc_5fcomparator_5finit_18',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]],
- ['tim_5foutput_5fpwm_5finit_19',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]],
- ['tim_5fsettingstypedef_20',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]],
- ['tim_5ftickbase_5f100ms_21',['TIM_TickBase_100MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da',1,'general_tim.h']]],
- ['tim_5ftickbase_5f100us_22',['TIM_TickBase_100US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30',1,'general_tim.h']]],
- ['tim_5ftickbase_5f10ms_23',['TIM_TickBase_10MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa',1,'general_tim.h']]],
- ['tim_5ftickbase_5f10us_24',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]],
- ['tim_5ftickbase_5f1ms_25',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]],
- ['tim_5ftickbase_5f1us_26',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]],
- ['tools_27',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]],
- ['tools_28',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
- ['trace_29',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]],
- ['trace_20configs_30',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
- ['trace_20defines_31',['Trace defines',['../group___t_r_a_c_e.html',1,'']]],
- ['trace_20defines_32',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]],
- ['trace_2eh_33',['trace.h',['../trace_8h.html',1,'']]],
- ['trace_5fgpio_5freset_34',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]],
- ['trace_5fgpio_5fset_35',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]],
- ['trackerclear_5fall_36',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]],
- ['trackerclear_5ferr_37',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]],
- ['trackerclear_5fok_38',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]],
- ['trackerclear_5fuser_39',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]],
- ['trackerclear_5fuserall_40',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]],
- ['trackerclear_5fwarn_41',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]],
- ['trackercnt_5ferr_42',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]],
- ['trackercnt_5fok_43',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]],
- ['trackercnt_5fuser_44',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]],
- ['trackercnt_5fwarn_45',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]],
- ['trackerget_5ferr_46',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]],
- ['trackerget_5fok_47',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]],
- ['trackerget_5fuser_48',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]],
- ['trackerget_5fwarn_49',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]],
- ['trackers_20defines_50',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]],
- ['trackers_2eh_51',['trackers.h',['../trackers_8h.html',1,'']]],
- ['trackers_5fenable_52',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]],
- ['trackertypedef_53',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]],
- ['trackerwrite_5fuser_54',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]]
+ ['tick_5fperiod_2',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]],
+ ['tim_20tools_3',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]],
+ ['tim_5fbase_5fdisable_4',['TIM_Base_Disable',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5',1,'general_tim.h']]],
+ ['tim_5fbase_5finit_5',['TIM_Base_Init',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga7044214f24a9868ba7e1650b55e639ec',1,'TIM_Base_Init(TIM_SettingsTypeDef *stim): general_tim.c']]],
+ ['tim_5fbase_5fmspdeinit_6',['TIM_Base_MspDeInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ga879e3f1c919c02990736730275367115',1,'TIM_Base_MspDeInit(TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fbase_5fmspinit_7',['TIM_Base_MspInit',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaad47337be7ba2f6c0777c40d7278c931',1,'TIM_Base_MspInit(TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode): general_tim.c']]],
+ ['tim_5fdefault_8',['TIM_DEFAULT',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8',1,'general_tim.h']]],
+ ['tim_5fdelay_9',['TIM_Delay',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga88c552a133cb6e3015453cccab74c07e',1,'TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
+ ['tim_5fdelay_5fnonblocking_10',['TIM_Delay_NonBlocking',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga108637af414bff3373059273b815ce9b',1,'TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay): general_tim.c']]],
+ ['tim_5fdelay_5fstart_11',['TIM_Delay_Start',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html#ga4c0dfde4e15f677600605348b4e97834',1,'TIM_Delay_Start(TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fencoder_5finit_12',['TIM_Encoder_Init',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc',1,'TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim): general_tim.c']]],
+ ['tim_5fencoder_5fread_13',['TIM_Encoder_Read',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#gac3bc6525f88c275e47eb864e6d567501',1,'TIM_Encoder_Read(TIM_EncoderTypeDef *henc): general_tim.c']]],
+ ['tim_5fencoder_5freadswitch_14',['TIM_Encoder_ReadSwitch',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html#ga117b795017e9e3a357ddefe323412761',1,'TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc): general_tim.c']]],
+ ['tim_5fencodertypedef_15',['TIM_EncoderTypeDef',['../struct_t_i_m___encoder_type_def.html',1,'']]],
+ ['tim_5fit_5fmode_16',['TIM_IT_MODE',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaeb611874216a4661fb83366b99b9e787a89ecf1ef6d45ead2efcb7dd30396114c',1,'general_tim.h']]],
+ ['tim_5fitmodetypedef_17',['TIM_ITModeTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaeb611874216a4661fb83366b99b9e787',1,'general_tim.h']]],
+ ['tim_5fmhztickbasetypedef_18',['TIM_MHzTickBaseTypeDef',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#gaa0a51c870325217ac099881f09dd0800',1,'general_tim.h']]],
+ ['tim_5foc_5fcomparator_5finit_19',['TIM_OC_Comparator_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gae2608ca8023e9a0713af0b4fbfbc1889',1,'TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL): general_tim.c']]],
+ ['tim_5foutput_5fpwm_5finit_20',['TIM_Output_PWM_Init',['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN): general_tim.c'],['../group___m_y_l_i_b_s___t_i_m___o_c.html#gadb2f465d89f609e035867e980c3a29c6',1,'TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN): general_tim.c']]],
+ ['tim_5fsettingstypedef_21',['TIM_SettingsTypeDef',['../struct_t_i_m___settings_type_def.html',1,'']]],
+ ['tim_5ftickbase_5f100ms_22',['TIM_TickBase_100MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a18527a2d781eb4365aecd9a3184fc1da',1,'general_tim.h']]],
+ ['tim_5ftickbase_5f100us_23',['TIM_TickBase_100US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a096ef0ab67788487f69d8877c6d89b30',1,'general_tim.h']]],
+ ['tim_5ftickbase_5f10ms_24',['TIM_TickBase_10MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a7421a08abd119e71aa99eea5ab5d6daa',1,'general_tim.h']]],
+ ['tim_5ftickbase_5f10us_25',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]],
+ ['tim_5ftickbase_5f1ms_26',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]],
+ ['tim_5ftickbase_5f1us_27',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]],
+ ['time_20measurement_28',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]],
+ ['tools_29',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]],
+ ['tools_30',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
+ ['total_5fticks_31',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]],
+ ['trace_32',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]],
+ ['trace_20configs_33',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
+ ['trace_20defines_34',['Trace defines',['../group___t_r_a_c_e.html',1,'']]],
+ ['trace_20defines_35',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]],
+ ['trace_2eh_36',['trace.h',['../trace_8h.html',1,'']]],
+ ['trace_5fgpio_5freset_37',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]],
+ ['trace_5fgpio_5fset_38',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]],
+ ['trackerclear_5fall_39',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]],
+ ['trackerclear_5ferr_40',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]],
+ ['trackerclear_5fok_41',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]],
+ ['trackerclear_5fuser_42',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]],
+ ['trackerclear_5fuserall_43',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]],
+ ['trackerclear_5fwarn_44',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]],
+ ['trackercnt_5ferr_45',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]],
+ ['trackercnt_5fok_46',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]],
+ ['trackercnt_5fuser_47',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]],
+ ['trackercnt_5fwarn_48',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]],
+ ['trackerget_5ferr_49',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]],
+ ['trackerget_5fok_50',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]],
+ ['trackerget_5fuser_51',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]],
+ ['trackerget_5fwarn_52',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]],
+ ['trackers_20defines_53',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]],
+ ['trackers_2eh_54',['trackers.h',['../trackers_8h.html',1,'']]],
+ ['trackers_5fenable_55',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]],
+ ['trackertypedef_56',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]],
+ ['trackerwrite_5fuser_57',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]]
];
diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js
index 0a30887..28874f5 100644
--- a/Doc/html/search/all_2.js
+++ b/Doc/html/search/all_2.js
@@ -1,17 +1,19 @@
var searchData=
[
- ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]],
- ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',1,'EvolveOptimizer_t']]],
- ['channels_20tools_2',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
- ['check_5fnull_5fptr_5f1_3',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f2_4',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f3_5',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f4_6',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]],
- ['check_5fnull_5fptr_5f5_7',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]],
- ['clearstruct_8',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]],
- ['clk_5fgpio_5falternagefunc_9',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]],
- ['clk_5fgpiox_10',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]],
- ['clk_5fpin_11',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]],
- ['configs_12',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
- ['configs_13',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
+ ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]],
+ ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]],
+ ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]],
+ ['channels_20tools_3',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
+ ['check_5fnull_5fptr_5f1_4',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f2_5',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f3_6',['check_null_ptr_3',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga838b40542faa9aa273d18f921b21fda2',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f4_7',['check_null_ptr_4',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga590973be111afc3f9ba15e6939530254',1,'mylibs_defs.h']]],
+ ['check_5fnull_5fptr_5f5_8',['check_null_ptr_5',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gaab0aafd7a4a21ec4f338b19269f65490',1,'mylibs_defs.h']]],
+ ['clearstruct_9',['ClearStruct',['../group___u_t_i_l_s___d_e_f_i_n_e_s.html#gaf5e598848326d48e86167e5099a029be',1,'mylibs_defs.h']]],
+ ['clk_5fgpio_5falternagefunc_10',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]],
+ ['clk_5fgpiox_11',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]],
+ ['clk_5fpin_12',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]],
+ ['configs_13',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
+ ['configs_14',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]],
+ ['count_15',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]]
];
diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js
index 0884da6..7efe25f 100644
--- a/Doc/html/search/all_4.js
+++ b/Doc/html/search/all_4.js
@@ -1,19 +1,8 @@
var searchData=
[
- ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'evolve_optimizer.h']]],
- ['enable_5fevolve_5foptimization_1',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]],
- ['encoder_20tools_2',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
- ['encoder_5fdiff_3',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
- ['encoder_5fshdw_4',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]],
- ['error_20handler_20defines_5',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]],
- ['evolve_20configs_6',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]],
- ['evolve_20optimizer_7',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]],
- ['evolve_5fmax_5fcandidates_8',['EVOLVE_MAX_CANDIDATES',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971',1,'mylibs_config.h']]],
- ['evolve_5fmax_5fparams_9',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]],
- ['evolve_5fmutation_5fmax_5fpct_10',['EVOLVE_MUTATION_MAX_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc',1,'evolve_optimizer.h']]],
- ['evolve_5fmutation_5fmin_5fpct_11',['EVOLVE_MUTATION_MIN_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6',1,'evolve_optimizer.h']]],
- ['evolve_5foptimizer_2eh_12',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]],
- ['evolveoptimizer_5finit_13',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',1,'evolve_optimizer.h']]],
- ['evolveoptimizer_5fstep_14',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]],
- ['evolveoptimizer_5ft_15',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]]
+ ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'gen_optimizer.h']]],
+ ['encoder_20tools_1',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
+ ['encoder_5fdiff_2',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]],
+ ['encoder_5fshdw_3',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]],
+ ['error_20handler_20defines_4',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]]
];
diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js
index 8d7f470..81020f3 100644
--- a/Doc/html/search/all_6.js
+++ b/Doc/html/search/all_6.js
@@ -1,38 +1,49 @@
var searchData=
[
- ['gen_5findex_0',['gen_index',['../struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108',1,'EvolveOptimizer_t']]],
- ['gen_5fmut_1',['gen_mut',['../struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727',1,'EvolveOptimizer_t']]],
- ['general_20tools_2',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
- ['general_20tools_3',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]],
- ['general_5fgpio_2ec_4',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
- ['general_5fgpio_2eh_5',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
- ['general_5fspi_2ec_6',['general_spi.c',['../general__spi_8c.html',1,'']]],
- ['general_5fspi_2eh_7',['general_spi.h',['../general__spi_8h.html',1,'']]],
- ['general_5ftim_2ec_8',['general_tim.c',['../general__tim_8c.html',1,'']]],
- ['general_5ftim_2eh_9',['general_tim.h',['../general__tim_8h.html',1,'']]],
- ['general_5fuart_2ec_10',['general_uart.c',['../general__uart_8c.html',1,'']]],
- ['general_5fuart_2eh_11',['general_uart.h',['../general__uart_8h.html',1,'']]],
- ['gpio_20my_5flibs_5fgpio_12',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]],
- ['gpio_20tools_13',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]],
- ['gpio_20trace_20defines_14',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]],
- ['gpio_5fclock_5fenable_15',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
- ['gpio_5fled_5fblink_5fstart_16',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5fdynamic_5fhandle_17',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5ffading_5fstart_18',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5finit_19',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
- ['gpio_5fled_5foff_20',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fon_21',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fset_22',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
- ['gpio_5fledstatetypedef_23',['GPIO_LEDStateTypeDef',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1',1,'general_gpio.h']]],
- ['gpio_5fledtypedef_24',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
- ['gpio_5fpin_5frx_25',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]],
- ['gpio_5fpin_5fsw_26',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]],
- ['gpio_5fpin_5fti1_27',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]],
- ['gpio_5fpin_5fti2_28',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]],
- ['gpio_5fpin_5ftx_29',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]],
- ['gpio_5fread_5fswitch_30',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
- ['gpio_5fswitch_5finit_31',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]],
- ['gpio_5fswitchtypedef_32',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]],
- ['gpio_5ftrace_5fenable_33',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]],
- ['gpiox_34',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]]
+ ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]],
+ ['gen_5fmax_5fcandidates_1',['GEN_MAX_CANDIDATES',['../group___g_e_n___c_o_n_f_i_g.html#ga201cffde04ebc6540869c74bd1dae869',1,'mylibs_config.h']]],
+ ['gen_5fmax_5fparams_2',['GEN_MAX_PARAMS',['../group___g_e_n___c_o_n_f_i_g.html#ga8daf4b266a95353d580bd7946f47c0ab',1,'mylibs_config.h']]],
+ ['gen_5fmut_3',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]],
+ ['gen_5fmutation_5fmax_5fpct_4',['GEN_MUTATION_MAX_PCT',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga48dca8f0a0c9b96d02236ef76ac827fd',1,'gen_optimizer.h']]],
+ ['gen_5fmutation_5fmin_5fpct_5',['GEN_MUTATION_MIN_PCT',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga3db7bdf57549722427e1e72dcaa87068',1,'gen_optimizer.h']]],
+ ['gen_5foptimization_5fenable_6',['GEN_OPTIMIZATION_ENABLE',['../group___g_e_n___c_o_n_f_i_g.html#gae6d1db3c0b21f67cb0db2673d207b62c',1,'mylibs_config.h']]],
+ ['gen_5foptimizer_2eh_7',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]],
+ ['general_20tools_8',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
+ ['general_20tools_9',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]],
+ ['general_5fgpio_2ec_10',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
+ ['general_5fgpio_2eh_11',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
+ ['general_5fspi_2ec_12',['general_spi.c',['../general__spi_8c.html',1,'']]],
+ ['general_5fspi_2eh_13',['general_spi.h',['../general__spi_8h.html',1,'']]],
+ ['general_5ftim_2ec_14',['general_tim.c',['../general__tim_8c.html',1,'']]],
+ ['general_5ftim_2eh_15',['general_tim.h',['../general__tim_8h.html',1,'']]],
+ ['general_5fuart_2ec_16',['general_uart.c',['../general__uart_8c.html',1,'']]],
+ ['general_5fuart_2eh_17',['general_uart.h',['../general__uart_8h.html',1,'']]],
+ ['genetic_20configs_18',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]],
+ ['genetic_20optimizer_19',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]],
+ ['genoptimizer_5finit_20',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]],
+ ['genoptimizer_5fstep_21',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]],
+ ['genoptimizer_5ft_22',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]],
+ ['gpio_20my_5flibs_5fgpio_23',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]],
+ ['gpio_20tools_24',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]],
+ ['gpio_20trace_20defines_25',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]],
+ ['gpio_5fclock_5fenable_26',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
+ ['gpio_5fled_5fblink_5fstart_27',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5fdynamic_5fhandle_28',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5ffading_5fstart_29',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5finit_30',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
+ ['gpio_5fled_5foff_31',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fon_32',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fset_33',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
+ ['gpio_5fledstatetypedef_34',['GPIO_LEDStateTypeDef',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaac2b90d8b8c9579b6aa5d3bbda9b1ff1',1,'general_gpio.h']]],
+ ['gpio_5fledtypedef_35',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
+ ['gpio_5fpin_5frx_36',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]],
+ ['gpio_5fpin_5fsw_37',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]],
+ ['gpio_5fpin_5fti1_38',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]],
+ ['gpio_5fpin_5fti2_39',['GPIO_PIN_TI2',['../struct_t_i_m___encoder_type_def.html#a67ad037b92162546763fc9c425b5e3c5',1,'TIM_EncoderTypeDef']]],
+ ['gpio_5fpin_5ftx_40',['GPIO_PIN_TX',['../struct_u_a_r_t___settings_type_def.html#a5f1babfcfb436cd77f5614253c0a5bef',1,'UART_SettingsTypeDef']]],
+ ['gpio_5fread_5fswitch_41',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
+ ['gpio_5fswitch_5finit_42',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]],
+ ['gpio_5fswitchtypedef_43',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]],
+ ['gpio_5ftrace_5fenable_44',['GPIO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga4222e0e400ad81737cefcabeb03fd23b',1,'mylibs_config.h']]],
+ ['gpiox_45',['GPIOx',['../struct_t_i_m___encoder_type_def.html#ad29873fc8cdc71462e6d8744621120e9',1,'TIM_EncoderTypeDef::GPIOx'],['../struct_u_a_r_t___settings_type_def.html#af6f9910d065bae715cdb4a1024143a8f',1,'UART_SettingsTypeDef::GPIOx']]]
];
diff --git a/Doc/html/search/all_7.js b/Doc/html/search/all_7.js
index abe2462..3fb8b1e 100644
--- a/Doc/html/search/all_7.js
+++ b/Doc/html/search/all_7.js
@@ -5,15 +5,16 @@ var searchData=
['handler_20defines_2',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]],
['hardfault_20trace_20defines_3',['Hardfault trace defines',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'']]],
['hardfault_5fserial_5ftrace_4',['HARDFAULT_SERIAL_TRACE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga47f454f804b4dbc26cae079e8d8641e6',1,'mylibs_config.h']]],
- ['hf_5fcheckrecovered_5',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]],
- ['hf_5fflash_5faddr_6',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]],
- ['hf_5fhandlefault_7',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]],
- ['hf_5fram_5fend_8',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]],
- ['hf_5frtt_5ftag_5fbase_9',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]],
- ['hf_5frtt_5ftail_5fsize_10',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]],
- ['hf_5fstack_5fdump_5fwords_11',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]],
- ['hf_5fstackframe_5ft_12',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]],
- ['hspi_13',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]],
- ['htim_14',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]],
- ['huart_15',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]]
+ ['hbt_5',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]],
+ ['hf_5fcheckrecovered_6',['HF_CheckRecovered',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#ga03f8b6f3b537ee1c8e91065c60db504f',1,'trace.h']]],
+ ['hf_5fflash_5faddr_7',['HF_FLASH_ADDR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0c602733a4a359bf8c095d71cd4d0f63',1,'mylibs_config.h']]],
+ ['hf_5fhandlefault_8',['HF_HandleFault',['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html#gadd8e10e7ec3b0204f7f92062ecd452f7',1,'trace.h']]],
+ ['hf_5fram_5fend_9',['HF_RAM_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga92d0d14732edb7dfa21d483304bdb051',1,'mylibs_config.h']]],
+ ['hf_5frtt_5ftag_5fbase_10',['HF_RTT_TAG_BASE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gadc960255719c7eff4bdfaa850be9b313',1,'mylibs_config.h']]],
+ ['hf_5frtt_5ftail_5fsize_11',['HF_RTT_TAIL_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafcc7ea03d4df8f1909e580b519a7f3ca',1,'mylibs_config.h']]],
+ ['hf_5fstack_5fdump_5fwords_12',['HF_STACK_DUMP_WORDS',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gaa31234688b333a505aaa57b8ecdedf5b',1,'mylibs_config.h']]],
+ ['hf_5fstackframe_5ft_13',['HF_StackFrame_t',['../struct_h_f___stack_frame__t.html',1,'']]],
+ ['hspi_14',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]],
+ ['htim_15',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]],
+ ['huart_16',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]]
];
diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js
index 01381de..61586fa 100644
--- a/Doc/html/search/all_8.js
+++ b/Doc/html/search/all_8.js
@@ -2,9 +2,10 @@ var searchData=
[
['if_5fassert_5fusertracker_0',['if_assert_usertracker',['../group___t_r_a_c_k_e_r_s.html#gad91d8ca89074270fc040c0449e57cf07',1,'trackers.h']]],
['include_5fbit_5faccess_5flib_1',['INCLUDE_BIT_ACCESS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#gaf4ddb2a71ec0d05c2480e197cd17c0be',1,'mylibs_config.h']]],
- ['include_5fevolve_5foptimizer_2',['INCLUDE_EVOLVE_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga66560656d080d6551627a19dfb847c66',1,'mylibs_config.h']]],
+ ['include_5fgen_5foptimizer_2',['INCLUDE_GEN_OPTIMIZER',['../group___l_i_b_s___c_o_n_f_i_g.html#ga3cdc9ef47fd3ff080d38481295327692',1,'mylibs_config.h']]],
['include_5fgeneral_5fperiph_5flibs_3',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]],
['include_5ftrace_5flib_4',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]],
['include_5ftrackers_5flib_5',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]],
- ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]]
+ ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___s_p_i___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines'],['../group___u_a_r_t___i_n_i_t.html',1,'Init defines']]],
+ ['is_5frunning_7',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]]
];
diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js
index 8a2f81a..959bc31 100644
--- a/Doc/html/search/all_9.js
+++ b/Doc/html/search/all_9.js
@@ -1,22 +1,23 @@
var searchData=
[
- ['led_20tools_0',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]],
- ['led_5factivelvl_1',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
- ['led_5fis_5fblinking_2',['LED_IS_BLINKING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb',1,'general_gpio.h']]],
- ['led_5fis_5ffading_3',['LED_IS_FADING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b',1,'general_gpio.h']]],
- ['led_5fis_5foff_4',['LED_IS_OFF',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae',1,'general_gpio.h']]],
- ['led_5fis_5fon_5',['LED_IS_ON',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea',1,'general_gpio.h']]],
- ['led_5foff_6',['LED_OFF',['../group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29',1,'general_gpio.h']]],
- ['led_5fon_7',['LED_ON',['../group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25',1,'general_gpio.h']]],
- ['led_5fperiod_8',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
- ['led_5fpin_9',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
- ['led_5fport_10',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
- ['led_5fpwm_5fticks_11',['LED_PWM_TICKS',['../group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023',1,'general_gpio.h']]],
- ['libraries_20configs_12',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]],
- ['libs_13',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]],
- ['local_5ftime_14',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: mylibs_config.h'],['../group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: general_gpio.h']]],
- ['log_5flevel_15',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]],
- ['log_5fprintf_16',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]],
- ['loss_17',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]],
- ['lr_18',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
+ ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]],
+ ['led_20tools_1',['LED tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'']]],
+ ['led_5factivelvl_2',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
+ ['led_5fis_5fblinking_3',['LED_IS_BLINKING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a2445895bed5dcbedc82ea3ef02bec6fb',1,'general_gpio.h']]],
+ ['led_5fis_5ffading_4',['LED_IS_FADING',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1aa610f6df44c939aa7d45e318036fa03b',1,'general_gpio.h']]],
+ ['led_5fis_5foff_5',['LED_IS_OFF',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae',1,'general_gpio.h']]],
+ ['led_5fis_5fon_6',['LED_IS_ON',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1af6abfb9c5b95abbdb239590f2cd245ea',1,'general_gpio.h']]],
+ ['led_5foff_7',['LED_OFF',['../group___g_p_i_o___i_n_i_t.html#ga80700bb63bd56ebabbb4728aa433fd29',1,'general_gpio.h']]],
+ ['led_5fon_8',['LED_ON',['../group___g_p_i_o___i_n_i_t.html#gaf2e697ac60e05813d45ea2c9c9e79c25',1,'general_gpio.h']]],
+ ['led_5fperiod_9',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
+ ['led_5fpin_10',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
+ ['led_5fport_11',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
+ ['led_5fpwm_5fticks_12',['LED_PWM_TICKS',['../group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023',1,'general_gpio.h']]],
+ ['libraries_20configs_13',['Libraries configs',['../group___l_i_b_s___c_o_n_f_i_g.html',1,'']]],
+ ['libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]],
+ ['local_5ftime_15',['local_time',['../group___l_i_b_s___c_o_n_f_i_g.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: mylibs_config.h'],['../group___g_p_i_o___i_n_i_t.html#ga9c853b02c22f26023c34d1d404b6d653',1,'local_time: general_gpio.h']]],
+ ['log_5flevel_16',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]],
+ ['log_5fprintf_17',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]],
+ ['loss_18',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]],
+ ['lr_19',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/all_a.js b/Doc/html/search/all_a.js
index 45e0ffa..e17cff4 100644
--- a/Doc/html/search/all_a.js
+++ b/Doc/html/search/all_a.js
@@ -1,26 +1,29 @@
var searchData=
[
- ['miso_5fgpio_5falternagefunc_0',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]],
- ['miso_5fgpiox_1',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]],
- ['miso_5fpin_2',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fgpio_5falternagefunc_3',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fgpiox_4',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fpin_5',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]],
- ['msdelay_6',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]],
- ['msdelaystart_7',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]],
- ['msdelaywaitdone_8',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]],
- ['msdelaywhileactive_9',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]],
- ['mutation_5famp_10',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]],
- ['my_20libs_11',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]],
- ['my_5flibs_5fgpio_12',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]],
- ['my_5flibs_5fspi_13',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]],
- ['my_5flibs_5ftim_14',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]],
- ['my_5flibs_5fuart_15',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]],
- ['my_5fprintf_16',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]],
- ['mylibs_17',['MyLibs',['../index.html',1,'']]],
- ['mylibs_5fconfig_2eh_18',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
- ['mylibs_5fdefines_19',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]],
- ['mylibs_5fdefs_2eh_20',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
- ['mylibs_5ferror_5fhandler_21',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]],
- ['mylibs_5finclude_2eh_22',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
+ ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]],
+ ['measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]],
+ ['min_5fticks_2',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]],
+ ['miso_5fgpio_5falternagefunc_3',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]],
+ ['miso_5fgpiox_4',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]],
+ ['miso_5fpin_5',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fgpio_5falternagefunc_6',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fgpiox_7',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fpin_8',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]],
+ ['msdelay_9',['msDelay',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gabeb97579daeb622c6651ed03c4a27479',1,'mylibs_defs.h']]],
+ ['msdelaystart_10',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]],
+ ['msdelaywaitdone_11',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]],
+ ['msdelaywhileactive_12',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]],
+ ['mutation_5famp_13',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]],
+ ['my_20libs_14',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]],
+ ['my_5flibs_5fgpio_15',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]],
+ ['my_5flibs_5fspi_16',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]],
+ ['my_5flibs_5ftim_17',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]],
+ ['my_5flibs_5fuart_18',['Модуль UART <a class="el" href="group___m_y___l_i_b_s___u_a_r_t.html">UART Tools</a>',['../index.html#uart_module',1,'']]],
+ ['my_5fprintf_19',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]],
+ ['mylibs_20',['MyLibs',['../index.html',1,'']]],
+ ['mylibs_5fconfig_2eh_21',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
+ ['mylibs_5fdefines_22',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]],
+ ['mylibs_5fdefs_2eh_23',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
+ ['mylibs_5ferror_5fhandler_24',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]],
+ ['mylibs_5finclude_2eh_25',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
];
diff --git a/Doc/html/search/all_b.js b/Doc/html/search/all_b.js
index ec18e7a..ff965e9 100644
--- a/Doc/html/search/all_b.js
+++ b/Doc/html/search/all_b.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]],
- ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]],
- ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]],
+ ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]],
+ ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]],
+ ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_t']]],
['num_5fof_5fusercnts_3',['num_of_usercnts',['../group___t_r_a_c_k_e_r_s.html#ga72be24629fedb8bf70e830373d151fbc',1,'trackers.h']]]
];
diff --git a/Doc/html/search/all_c.js b/Doc/html/search/all_c.js
index fa27ef2..9094ace 100644
--- a/Doc/html/search/all_c.js
+++ b/Doc/html/search/all_c.js
@@ -1,5 +1,5 @@
var searchData=
[
['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
- ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
+ ['optimizer_1',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]]
];
diff --git a/Doc/html/search/all_d.js b/Doc/html/search/all_d.js
index 7209e2c..77e15f2 100644
--- a/Doc/html/search/all_d.js
+++ b/Doc/html/search/all_d.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['param_5fscale_0',['PARAM_SCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'evolve_optimizer.h']]],
- ['param_5funscale_1',['PARAM_UNSCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'evolve_optimizer.h']]],
+ ['param_5fscale_0',['PARAM_SCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'gen_optimizer.h']]],
+ ['param_5funscale_1',['PARAM_UNSCALE',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'gen_optimizer.h']]],
['pc_2',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
['peripheral_3',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]],
['psr_4',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]],
diff --git a/Doc/html/search/all_f.js b/Doc/html/search/all_f.js
index 103d4c4..037ff30 100644
--- a/Doc/html/search/all_f.js
+++ b/Doc/html/search/all_f.js
@@ -7,7 +7,7 @@ var searchData=
['serial_5ftrace_5fenable_4',['SERIAL_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga76936505ca200d2e61226b7ba68f27c6',1,'mylibs_config.h']]],
['size_5',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]],
['smasterconfig_6',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]],
- ['sorted_5fidx_7',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]],
+ ['sorted_5fidx_7',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]],
['spi_20my_5flibs_5fspi_8',['Модуль SPI <a class="el" href="group___m_y___l_i_b_s___s_p_i.html">SPI Tools</a>',['../index.html#spi_module',1,'']]],
['spi_20tools_9',['SPI Tools',['../group___m_y___l_i_b_s___s_p_i.html',1,'']]],
['spi_5fbase_5finit_10',['SPI_Base_Init',['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#ga0e177e3c57a8fcdc73b5602e72ec66ba',1,'SPI_Base_Init(SPI_SettingsTypeDef *sspi): general_spi.c']]],
@@ -17,21 +17,23 @@ var searchData=
['spi_5fmspinit_14',['SPI_MspInit',['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c'],['../group___m_y___l_i_b_s___s_p_i.html#gab9f13318daf02bc5b5f302ae392dccac',1,'SPI_MspInit(SPI_HandleTypeDef *hspi): general_spi.c']]],
['spi_5fsettingstypedef_15',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]],
['sslaveconfig_16',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]],
- ['stability_17',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]],
- ['state_18',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
- ['stickbaseprescaler_19',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
- ['stickbaseus_20',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
- ['stimahbfreqmhz_21',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
- ['stimfreqhz_22',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
- ['stimmode_23',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
- ['sw_24',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
- ['sw_5factivelvl_25',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
- ['sw_5ffilterdelay_26',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
- ['sw_5foff_27',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]],
- ['sw_5fon_28',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]],
- ['sw_5fpin_29',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fport_30',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fprevstate_31',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]],
- ['switch_20tools_32',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]],
- ['swo_5ftrace_5fenable_33',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]]
+ ['stability_17',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]],
+ ['start_5ftick_18',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]],
+ ['state_19',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
+ ['stats_20',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]],
+ ['stickbaseprescaler_21',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
+ ['stickbaseus_22',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
+ ['stimahbfreqmhz_23',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
+ ['stimfreqhz_24',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
+ ['stimmode_25',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
+ ['sw_26',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
+ ['sw_5factivelvl_27',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5ffilterdelay_28',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5foff_29',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]],
+ ['sw_5fon_30',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]],
+ ['sw_5fpin_31',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fport_32',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fprevstate_33',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]],
+ ['switch_20tools_34',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]],
+ ['swo_5ftrace_5fenable_35',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]]
];
diff --git a/Doc/html/search/classes_0.js b/Doc/html/search/classes_0.js
index e1df323..54d0c71 100644
--- a/Doc/html/search/classes_0.js
+++ b/Doc/html/search/classes_0.js
@@ -1,4 +1,6 @@
var searchData=
[
- ['evolveoptimizer_5ft_0',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]]
+ ['benchtime_5ft_0',['BenchTime_t',['../struct_bench_time__t.html',1,'']]],
+ ['benchtimechannel_5ft_1',['BenchTimeChannel_t',['../struct_bench_time_channel__t.html',1,'']]],
+ ['benchtimestats_5ft_2',['BenchTimeStats_t',['../struct_bench_time_stats__t.html',1,'']]]
];
diff --git a/Doc/html/search/classes_1.js b/Doc/html/search/classes_1.js
index 7f32de6..0c5d0d7 100644
--- a/Doc/html/search/classes_1.js
+++ b/Doc/html/search/classes_1.js
@@ -1,5 +1,6 @@
var searchData=
[
- ['gpio_5fledtypedef_0',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
- ['gpio_5fswitchtypedef_1',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]]
+ ['genoptimizer_5ft_0',['GenOptimizer_t',['../struct_gen_optimizer__t.html',1,'']]],
+ ['gpio_5fledtypedef_1',['GPIO_LEDTypeDef',['../struct_g_p_i_o___l_e_d_type_def.html',1,'']]],
+ ['gpio_5fswitchtypedef_2',['GPIO_SwitchTypeDef',['../struct_g_p_i_o___switch_type_def.html',1,'']]]
];
diff --git a/Doc/html/search/files_0.js b/Doc/html/search/files_0.js
index 317d2f4..ff4d1c6 100644
--- a/Doc/html/search/files_0.js
+++ b/Doc/html/search/files_0.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['bit_5faccess_2eh_0',['bit_access.h',['../bit__access_8h.html',1,'']]]
+ ['bench_5ftime_2eh_0',['bench_time.h',['../bench__time_8h.html',1,'']]],
+ ['bit_5faccess_2eh_1',['bit_access.h',['../bit__access_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_1.js b/Doc/html/search/files_1.js
index 9050e12..7a27173 100644
--- a/Doc/html/search/files_1.js
+++ b/Doc/html/search/files_1.js
@@ -1,4 +1,12 @@
var searchData=
[
- ['evolve_5foptimizer_2eh_0',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]]
+ ['gen_5foptimizer_2eh_0',['gen_optimizer.h',['../gen__optimizer_8h.html',1,'']]],
+ ['general_5fgpio_2ec_1',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
+ ['general_5fgpio_2eh_2',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
+ ['general_5fspi_2ec_3',['general_spi.c',['../general__spi_8c.html',1,'']]],
+ ['general_5fspi_2eh_4',['general_spi.h',['../general__spi_8h.html',1,'']]],
+ ['general_5ftim_2ec_5',['general_tim.c',['../general__tim_8c.html',1,'']]],
+ ['general_5ftim_2eh_6',['general_tim.h',['../general__tim_8h.html',1,'']]],
+ ['general_5fuart_2ec_7',['general_uart.c',['../general__uart_8c.html',1,'']]],
+ ['general_5fuart_2eh_8',['general_uart.h',['../general__uart_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_2.js b/Doc/html/search/files_2.js
index 045601b..3a61f58 100644
--- a/Doc/html/search/files_2.js
+++ b/Doc/html/search/files_2.js
@@ -1,11 +1,6 @@
var searchData=
[
- ['general_5fgpio_2ec_0',['general_gpio.c',['../general__gpio_8c.html',1,'']]],
- ['general_5fgpio_2eh_1',['general_gpio.h',['../general__gpio_8h.html',1,'']]],
- ['general_5fspi_2ec_2',['general_spi.c',['../general__spi_8c.html',1,'']]],
- ['general_5fspi_2eh_3',['general_spi.h',['../general__spi_8h.html',1,'']]],
- ['general_5ftim_2ec_4',['general_tim.c',['../general__tim_8c.html',1,'']]],
- ['general_5ftim_2eh_5',['general_tim.h',['../general__tim_8h.html',1,'']]],
- ['general_5fuart_2ec_6',['general_uart.c',['../general__uart_8c.html',1,'']]],
- ['general_5fuart_2eh_7',['general_uart.h',['../general__uart_8h.html',1,'']]]
+ ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
+ ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
+ ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_3.js b/Doc/html/search/files_3.js
index 3a61f58..f744967 100644
--- a/Doc/html/search/files_3.js
+++ b/Doc/html/search/files_3.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['mylibs_5fconfig_2eh_0',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]],
- ['mylibs_5fdefs_2eh_1',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]],
- ['mylibs_5finclude_2eh_2',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]]
+ ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]],
+ ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]]
];
diff --git a/Doc/html/search/files_4.js b/Doc/html/search/files_4.js
deleted file mode 100644
index f744967..0000000
--- a/Doc/html/search/files_4.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
- ['trace_2eh_0',['trace.h',['../trace_8h.html',1,'']]],
- ['trackers_2eh_1',['trackers.h',['../trackers_8h.html',1,'']]]
-];
diff --git a/Doc/html/search/functions_0.js b/Doc/html/search/functions_0.js
index 32253ba..7ef7b4f 100644
--- a/Doc/html/search/functions_0.js
+++ b/Doc/html/search/functions_0.js
@@ -1,5 +1,12 @@
var searchData=
[
- ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',1,'evolve_optimizer.h']]],
- ['evolveoptimizer_5fstep_1',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]]
+ ['benchtime_5fend_0',['BenchTime_End',['../group___b_e_n_c_h___t_i_m_e.html#ga47a69851a2089140eac00cde18a12439',1,'bench_time.h']]],
+ ['benchtime_5fgetaverage_1',['BenchTime_GetAverage',['../group___b_e_n_c_h___t_i_m_e.html#ga24e2450d5ea921074ec5d7a1e4d56ba8',1,'bench_time.h']]],
+ ['benchtime_5fgetcount_2',['BenchTime_GetCount',['../group___b_e_n_c_h___t_i_m_e.html#gabd1301ca79a30c782970f89fd147df3a',1,'bench_time.h']]],
+ ['benchtime_5fgetlast_3',['BenchTime_GetLast',['../group___b_e_n_c_h___t_i_m_e.html#gacf3a738d6423d71b238058a63558a4ed',1,'bench_time.h']]],
+ ['benchtime_5fgetmax_4',['BenchTime_GetMax',['../group___b_e_n_c_h___t_i_m_e.html#ga07e27d7b169c9fa1abd57281bb4e374e',1,'bench_time.h']]],
+ ['benchtime_5fgetmin_5',['BenchTime_GetMin',['../group___b_e_n_c_h___t_i_m_e.html#ga273d45255fe4403fc25648d60cca7705',1,'bench_time.h']]],
+ ['benchtime_5finit_6',['BenchTime_Init',['../group___b_e_n_c_h___t_i_m_e.html#gabb7a665a9603ea2e4dbc4432e8cb6054',1,'bench_time.h']]],
+ ['benchtime_5fresetstats_7',['BenchTime_ResetStats',['../group___b_e_n_c_h___t_i_m_e.html#ga31a6b2b181b92bcb15f46758f5d57f35',1,'bench_time.h']]],
+ ['benchtime_5fstart_8',['BenchTime_Start',['../group___b_e_n_c_h___t_i_m_e.html#gac65338df38129964ce3e9d9cb2fcb349',1,'bench_time.h']]]
];
diff --git a/Doc/html/search/functions_1.js b/Doc/html/search/functions_1.js
index a564d7b..3e028e5 100644
--- a/Doc/html/search/functions_1.js
+++ b/Doc/html/search/functions_1.js
@@ -1,13 +1,15 @@
var searchData=
[
- ['gpio_5fclock_5fenable_0',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
- ['gpio_5fled_5fblink_5fstart_1',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5fdynamic_5fhandle_2',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5ffading_5fstart_3',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
- ['gpio_5fled_5finit_4',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
- ['gpio_5fled_5foff_5',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fon_6',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
- ['gpio_5fled_5fset_7',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
- ['gpio_5fread_5fswitch_8',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
- ['gpio_5fswitch_5finit_9',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]]
+ ['genoptimizer_5finit_0',['GenOptimizer_Init',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#ga2db1df46b4082ad9280ef4344fdf4e8a',1,'gen_optimizer.h']]],
+ ['genoptimizer_5fstep_1',['GenOptimizer_Step',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html#gaa9a4c4f43f7beb926c85bd4817ebd628',1,'gen_optimizer.h']]],
+ ['gpio_5fclock_5fenable_2',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]],
+ ['gpio_5fled_5fblink_5fstart_3',['GPIO_LED_Blink_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaf22f44ecaf6a1932b47edc5a845b03a9',1,'GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5fdynamic_5fhandle_4',['GPIO_LED_Dynamic_Handle',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gad6e6189824406c4d472b6340c7f19bb2',1,'GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5ffading_5fstart_5',['GPIO_LED_Fading_Start',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaa00f20021781464af3dfe74aa3e59a0a',1,'GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period): general_gpio.c']]],
+ ['gpio_5fled_5finit_6',['GPIO_LED_Init',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gac936453c7a0841c0b17bcfdae4958084',1,'GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel): general_gpio.c']]],
+ ['gpio_5fled_5foff_7',['GPIO_LED_Off',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gaadda2d4f021390a4e392210a5ace5357',1,'GPIO_LED_Off(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fon_8',['GPIO_LED_On',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#ga4b9572949326b050694cd55d0a7e5f6c',1,'GPIO_LED_On(GPIO_LEDTypeDef *led): general_gpio.c']]],
+ ['gpio_5fled_5fset_9',['GPIO_LED_Set',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html#gae78b570447d55a462a679a89dbaa8ea2',1,'GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state): general_gpio.c']]],
+ ['gpio_5fread_5fswitch_10',['GPIO_Read_Switch',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#ga960b24335b2026abcad126ab8c422d70',1,'GPIO_Read_Switch(GPIO_SwitchTypeDef *sw): general_gpio.c']]],
+ ['gpio_5fswitch_5finit_11',['GPIO_Switch_Init',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html#gacafee0e68877f2b25df843356871d1f7',1,'GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel): general_gpio.c']]]
];
diff --git a/Doc/html/search/groups_2.js b/Doc/html/search/groups_2.js
index e1a626d..1f5d168 100644
--- a/Doc/html/search/groups_2.js
+++ b/Doc/html/search/groups_2.js
@@ -2,5 +2,5 @@ var searchData=
[
['channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
['configs_1',['Configs',['../group___m_y_l_i_b_s___c_o_n_f_i_g.html',1,'']]],
- ['configs_2',['configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'Evolve configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
+ ['configs_2',['configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'Genetic configs'],['../group___l_i_b_s___c_o_n_f_i_g.html',1,'Libraries configs'],['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'Trace configs']]]
];
diff --git a/Doc/html/search/groups_4.js b/Doc/html/search/groups_4.js
index ca0406b..d2fc234 100644
--- a/Doc/html/search/groups_4.js
+++ b/Doc/html/search/groups_4.js
@@ -1,7 +1,5 @@
var searchData=
[
['encoder_20tools_0',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]],
- ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]],
- ['evolve_20configs_2',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]],
- ['evolve_20optimizer_3',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
+ ['error_20handler_20defines_1',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]]
];
diff --git a/Doc/html/search/groups_6.js b/Doc/html/search/groups_6.js
index 96772f9..451771a 100644
--- a/Doc/html/search/groups_6.js
+++ b/Doc/html/search/groups_6.js
@@ -2,6 +2,8 @@ var searchData=
[
['general_20tools_0',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]],
['general_20tools_1',['General tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]],
- ['gpio_20tools_2',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]],
- ['gpio_20trace_20defines_3',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]]
+ ['genetic_20configs_2',['Genetic configs',['../group___g_e_n___c_o_n_f_i_g.html',1,'']]],
+ ['genetic_20optimizer_3',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]],
+ ['gpio_20tools_4',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]],
+ ['gpio_20trace_20defines_5',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]]
];
diff --git a/Doc/html/search/groups_a.js b/Doc/html/search/groups_a.js
index 44a62b4..b997f53 100644
--- a/Doc/html/search/groups_a.js
+++ b/Doc/html/search/groups_a.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['my_20libs_0',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]]
+ ['measurement_0',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]],
+ ['my_20libs_1',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]]
];
diff --git a/Doc/html/search/groups_b.js b/Doc/html/search/groups_b.js
index fa27ef2..9094ace 100644
--- a/Doc/html/search/groups_b.js
+++ b/Doc/html/search/groups_b.js
@@ -1,5 +1,5 @@
var searchData=
[
['oc_20channels_20tools_0',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]],
- ['optimizer_1',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]]
+ ['optimizer_1',['Genetic optimizer',['../group___g_e_n___o_p_t_i_m_i_z_e_r.html',1,'']]]
];
diff --git a/Doc/html/search/groups_f.js b/Doc/html/search/groups_f.js
index 0864006..dcdcef1 100644
--- a/Doc/html/search/groups_f.js
+++ b/Doc/html/search/groups_f.js
@@ -1,10 +1,11 @@
var searchData=
[
['tim_20tools_0',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]],
- ['tools_1',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]],
- ['tools_2',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
- ['trace_20configs_3',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
- ['trace_20defines_4',['Trace defines',['../group___t_r_a_c_e.html',1,'']]],
- ['trace_20defines_5',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]],
- ['trackers_20defines_6',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]]
+ ['time_20measurement_1',['Time measurement',['../group___b_e_n_c_h___t_i_m_e.html',1,'']]],
+ ['tools_2',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___s_p_i.html',1,'SPI Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools'],['../group___m_y___l_i_b_s___u_a_r_t.html',1,'UART Tools']]],
+ ['tools_3',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]],
+ ['trace_20configs_4',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]],
+ ['trace_20defines_5',['Trace defines',['../group___t_r_a_c_e.html',1,'']]],
+ ['trace_20defines_6',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]],
+ ['trackers_20defines_7',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]]
];
diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js
index 7f3006a..457d6e9 100644
--- a/Doc/html/search/searchdata.js
+++ b/Doc/html/search/searchdata.js
@@ -1,10 +1,10 @@
var indexSectionsWithContent =
{
0: "abcdefghilmnoprstuвимопсту",
- 1: "eghrstu",
- 2: "begmt",
- 3: "eghrstu",
- 4: "cdeghlmnprst",
+ 1: "bghrstu",
+ 2: "bgmt",
+ 3: "bghrstu",
+ 4: "cdeghilmnprst",
5: "gt",
6: "lt",
7: "abcdefghilmoprstu",
diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js
index 91d9d13..d01d6ca 100644
--- a/Doc/html/search/variables_0.js
+++ b/Doc/html/search/variables_0.js
@@ -1,8 +1,10 @@
var searchData=
[
- ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]],
- ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',1,'EvolveOptimizer_t']]],
- ['clk_5fgpio_5falternagefunc_2',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]],
- ['clk_5fgpiox_3',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]],
- ['clk_5fpin_4',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]]
+ ['cand_5findex_0',['cand_index',['../struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc',1,'GenOptimizer_t']]],
+ ['candidates_1',['candidates',['../struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df',1,'GenOptimizer_t']]],
+ ['channels_2',['channels',['../struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6',1,'BenchTime_t']]],
+ ['clk_5fgpio_5falternagefunc_3',['CLK_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#a3f3748103a0b7861f6700042fd691ba1',1,'SPI_SettingsTypeDef']]],
+ ['clk_5fgpiox_4',['CLK_GPIOx',['../struct_s_p_i___settings_type_def.html#a6a15d48eccf92959de3a086031fdc979',1,'SPI_SettingsTypeDef']]],
+ ['clk_5fpin_5',['CLK_PIN',['../struct_s_p_i___settings_type_def.html#a3bcb1ed12da3544e02e6d36493669bdc',1,'SPI_SettingsTypeDef']]],
+ ['count_6',['count',['../struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71',1,'BenchTimeStats_t']]]
];
diff --git a/Doc/html/search/variables_3.js b/Doc/html/search/variables_3.js
index 3e4add5..aff98e3 100644
--- a/Doc/html/search/variables_3.js
+++ b/Doc/html/search/variables_3.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['gen_5findex_0',['gen_index',['../struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108',1,'EvolveOptimizer_t']]],
- ['gen_5fmut_1',['gen_mut',['../struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727',1,'EvolveOptimizer_t']]],
+ ['gen_5findex_0',['gen_index',['../struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c',1,'GenOptimizer_t']]],
+ ['gen_5fmut_1',['gen_mut',['../struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1',1,'GenOptimizer_t']]],
['gpio_5fpin_5frx_2',['GPIO_PIN_RX',['../struct_u_a_r_t___settings_type_def.html#a3fba2b52788fe453348b5d92ed52ba49',1,'UART_SettingsTypeDef']]],
['gpio_5fpin_5fsw_3',['GPIO_PIN_SW',['../struct_t_i_m___encoder_type_def.html#a6973108a83d2a3ea4fc3e0e8a501af80',1,'TIM_EncoderTypeDef']]],
['gpio_5fpin_5fti1_4',['GPIO_PIN_TI1',['../struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e',1,'TIM_EncoderTypeDef']]],
diff --git a/Doc/html/search/variables_4.js b/Doc/html/search/variables_4.js
index 1d4c0a0..182e697 100644
--- a/Doc/html/search/variables_4.js
+++ b/Doc/html/search/variables_4.js
@@ -1,6 +1,7 @@
var searchData=
[
- ['hspi_0',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]],
- ['htim_1',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]],
- ['huart_2',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]]
+ ['hbt_0',['hbt',['../group___b_e_n_c_h___t_i_m_e.html#ga8e53ef7f7df233bd4e737a87bb203d9d',1,'bench_time.h']]],
+ ['hspi_1',['hspi',['../struct_s_p_i___settings_type_def.html#ad203d8b8d67e4f477d002d15b03ba422',1,'SPI_SettingsTypeDef']]],
+ ['htim_2',['htim',['../struct_t_i_m___settings_type_def.html#ada49efdbd35a8e442c3cff630d42f34c',1,'TIM_SettingsTypeDef::htim'],['../struct_t_i_m___encoder_type_def.html#adc80bd5a90444c31d84157f35c59b95c',1,'TIM_EncoderTypeDef::htim']]],
+ ['huart_3',['huart',['../struct_u_a_r_t___settings_type_def.html#accf2c9448a3ea8eb3b8c25a569276fea',1,'UART_SettingsTypeDef']]]
];
diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js
index 6a97596..3cfd1f9 100644
--- a/Doc/html/search/variables_5.js
+++ b/Doc/html/search/variables_5.js
@@ -1,9 +1,4 @@
var searchData=
[
- ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
- ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
- ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
- ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
- ['loss_4',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]],
- ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
+ ['is_5frunning_0',['is_running',['../struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9',1,'BenchTimeChannel_t']]]
];
diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js
index bd7bed0..c8e17d1 100644
--- a/Doc/html/search/variables_6.js
+++ b/Doc/html/search/variables_6.js
@@ -1,10 +1,10 @@
var searchData=
[
- ['miso_5fgpio_5falternagefunc_0',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]],
- ['miso_5fgpiox_1',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]],
- ['miso_5fpin_2',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fgpio_5falternagefunc_3',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fgpiox_4',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]],
- ['mosi_5fpin_5',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]],
- ['mutation_5famp_6',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]]
+ ['last_5fticks_0',['last_ticks',['../struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0',1,'BenchTimeStats_t']]],
+ ['led_5factivelvl_1',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]],
+ ['led_5fperiod_2',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]],
+ ['led_5fpin_3',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]],
+ ['led_5fport_4',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]],
+ ['loss_5',['loss',['../struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73',1,'GenOptimizer_t']]],
+ ['lr_6',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/variables_7.js b/Doc/html/search/variables_7.js
index 0e355de..eac5a24 100644
--- a/Doc/html/search/variables_7.js
+++ b/Doc/html/search/variables_7.js
@@ -1,6 +1,12 @@
var searchData=
[
- ['n_5fbest_0',['n_best',['../struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6',1,'EvolveOptimizer_t']]],
- ['n_5fcand_1',['n_cand',['../struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1',1,'EvolveOptimizer_t']]],
- ['n_5fparams_2',['n_params',['../struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8',1,'EvolveOptimizer_t']]]
+ ['max_5fticks_0',['max_ticks',['../struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c',1,'BenchTimeStats_t']]],
+ ['min_5fticks_1',['min_ticks',['../struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8',1,'BenchTimeStats_t']]],
+ ['miso_5fgpio_5falternagefunc_2',['MISO_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#aecd7a5c6e205335b8ed229d74cd35d14',1,'SPI_SettingsTypeDef']]],
+ ['miso_5fgpiox_3',['MISO_GPIOx',['../struct_s_p_i___settings_type_def.html#a0d55a2941854f61934487f3d209cfa95',1,'SPI_SettingsTypeDef']]],
+ ['miso_5fpin_4',['MISO_PIN',['../struct_s_p_i___settings_type_def.html#a3366c654d7ec6dd41c6a0b504dc8509a',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fgpio_5falternagefunc_5',['MOSI_GPIO_AlternageFunc',['../struct_s_p_i___settings_type_def.html#afbe75a1c36650a4a9b41fa706a4c7eab',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fgpiox_6',['MOSI_GPIOx',['../struct_s_p_i___settings_type_def.html#a0af3bdb273818ff97eb4ff3cff918820',1,'SPI_SettingsTypeDef']]],
+ ['mosi_5fpin_7',['MOSI_PIN',['../struct_s_p_i___settings_type_def.html#a961208869faf4a7369aaf4edde75f176',1,'SPI_SettingsTypeDef']]],
+ ['mutation_5famp_8',['mutation_amp',['../struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c',1,'GenOptimizer_t']]]
];
diff --git a/Doc/html/search/variables_8.js b/Doc/html/search/variables_8.js
index 7d04971..88c43fd 100644
--- a/Doc/html/search/variables_8.js
+++ b/Doc/html/search/variables_8.js
@@ -1,5 +1,6 @@
var searchData=
[
- ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
- ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]]
+ ['n_5fbest_0',['n_best',['../struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9',1,'GenOptimizer_t']]],
+ ['n_5fcand_1',['n_cand',['../struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9',1,'GenOptimizer_t']]],
+ ['n_5fparams_2',['n_params',['../struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5',1,'GenOptimizer_t']]]
];
diff --git a/Doc/html/search/variables_9.js b/Doc/html/search/variables_9.js
index 29cfada..7d04971 100644
--- a/Doc/html/search/variables_9.js
+++ b/Doc/html/search/variables_9.js
@@ -1,8 +1,5 @@
var searchData=
[
- ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]],
- ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]],
- ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]],
- ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]],
- ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]]
+ ['pc_0',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]],
+ ['psr_1',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/variables_a.js b/Doc/html/search/variables_a.js
index e291301..29cfada 100644
--- a/Doc/html/search/variables_a.js
+++ b/Doc/html/search/variables_a.js
@@ -1,23 +1,8 @@
var searchData=
[
- ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]],
- ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]],
- ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]],
- ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]],
- ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]],
- ['sorted_5fidx_5',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]],
- ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]],
- ['stability_7',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]],
- ['state_8',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
- ['stickbaseprescaler_9',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
- ['stickbaseus_10',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
- ['stimahbfreqmhz_11',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
- ['stimfreqhz_12',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
- ['stimmode_13',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
- ['sw_14',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
- ['sw_5factivelvl_15',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
- ['sw_5ffilterdelay_16',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fpin_17',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fport_18',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
- ['sw_5fprevstate_19',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]]
+ ['r0_0',['r0',['../struct_h_f___stack_frame__t.html#a4146ed28926b5f234132b7112119a413',1,'HF_StackFrame_t']]],
+ ['r1_1',['r1',['../struct_h_f___stack_frame__t.html#a286104d19185714940645a9df814ddea',1,'HF_StackFrame_t']]],
+ ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]],
+ ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]],
+ ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]]
];
diff --git a/Doc/html/search/variables_b.js b/Doc/html/search/variables_b.js
index 24558b0..928694e 100644
--- a/Doc/html/search/variables_b.js
+++ b/Doc/html/search/variables_b.js
@@ -1,4 +1,25 @@
var searchData=
[
- ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]]
+ ['sbreakdeadtimeconfig_0',['sBreakDeadTimeConfig',['../struct_t_i_m___settings_type_def.html#a961f19f0e1672715c27bc94d7871dbb7',1,'TIM_SettingsTypeDef']]],
+ ['sclocksourceconfig_1',['sClockSourceConfig',['../struct_t_i_m___settings_type_def.html#a3805f627567798c3cd1d79a0da42bea0',1,'TIM_SettingsTypeDef']]],
+ ['sconfig_2',['sConfig',['../struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5',1,'TIM_EncoderTypeDef']]],
+ ['size_3',['size',['../struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699',1,'RTT_FlashHeader_t']]],
+ ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]],
+ ['sorted_5fidx_5',['sorted_idx',['../struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12',1,'GenOptimizer_t']]],
+ ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]],
+ ['stability_7',['stability',['../struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192',1,'GenOptimizer_t']]],
+ ['start_5ftick_8',['start_tick',['../struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928',1,'BenchTimeChannel_t']]],
+ ['state_9',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]],
+ ['stats_10',['stats',['../struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c',1,'BenchTimeChannel_t']]],
+ ['stickbaseprescaler_11',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]],
+ ['stickbaseus_12',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]],
+ ['stimahbfreqmhz_13',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]],
+ ['stimfreqhz_14',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]],
+ ['stimmode_15',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]],
+ ['sw_16',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]],
+ ['sw_5factivelvl_17',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5ffilterdelay_18',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fpin_19',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fport_20',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]],
+ ['sw_5fprevstate_21',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]]
];
diff --git a/Doc/html/search/variables_c.js b/Doc/html/search/variables_c.js
new file mode 100644
index 0000000..f83ad97
--- /dev/null
+++ b/Doc/html/search/variables_c.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['tag_0',['tag',['../struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57',1,'RTT_FlashHeader_t']]],
+ ['tick_5fperiod_1',['tick_period',['../struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd',1,'BenchTimeChannel_t']]],
+ ['total_5fticks_2',['total_ticks',['../struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec',1,'BenchTimeStats_t']]]
+];
diff --git a/Doc/html/struct_bench_time__t-members.html b/Doc/html/struct_bench_time__t-members.html
new file mode 100644
index 0000000..434af22
--- /dev/null
+++ b/Doc/html/struct_bench_time__t-members.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+MyLibs: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
This is the complete list of members for BenchTime_t , including all inherited members.
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time__t.html b/Doc/html/struct_bench_time__t.html
new file mode 100644
index 0000000..440831d
--- /dev/null
+++ b/Doc/html/struct_bench_time__t.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+MyLibs: BenchTime_t Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
Основная структура менеджера измерений
+ More...
+
+
#include <bench_time.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
Основная структура менеджера измерений
+
+
Definition at line 102 of file bench_time.h .
+
+
+
◆ channels
+
+
+
The documentation for this struct was generated from the following file:
+E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time__t.js b/Doc/html/struct_bench_time__t.js
new file mode 100644
index 0000000..7f4e613
--- /dev/null
+++ b/Doc/html/struct_bench_time__t.js
@@ -0,0 +1,4 @@
+var struct_bench_time__t =
+[
+ [ "channels", "struct_bench_time__t.html#a9ae6d45c610be9d4b7628a614ccb06d6", null ]
+];
\ No newline at end of file
diff --git a/Doc/html/struct_bench_time__t__coll__graph.map b/Doc/html/struct_bench_time__t__coll__graph.map
new file mode 100644
index 0000000..5b2f5df
--- /dev/null
+++ b/Doc/html/struct_bench_time__t__coll__graph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time__t__coll__graph.md5 b/Doc/html/struct_bench_time__t__coll__graph.md5
new file mode 100644
index 0000000..cb61ea0
--- /dev/null
+++ b/Doc/html/struct_bench_time__t__coll__graph.md5
@@ -0,0 +1 @@
+38d4100ea738d751cba8e97cbba534f5
\ No newline at end of file
diff --git a/Doc/html/struct_bench_time__t__coll__graph.png b/Doc/html/struct_bench_time__t__coll__graph.png
new file mode 100644
index 0000000..3d24b09
Binary files /dev/null and b/Doc/html/struct_bench_time__t__coll__graph.png differ
diff --git a/Doc/html/struct_bench_time_channel__t-members.html b/Doc/html/struct_bench_time_channel__t-members.html
new file mode 100644
index 0000000..9995d01
--- /dev/null
+++ b/Doc/html/struct_bench_time_channel__t-members.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+MyLibs: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
This is the complete list of members for BenchTimeChannel_t , including all inherited members.
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time_channel__t.html b/Doc/html/struct_bench_time_channel__t.html
new file mode 100644
index 0000000..09d2745
--- /dev/null
+++ b/Doc/html/struct_bench_time_channel__t.html
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+MyLibs: BenchTimeChannel_t Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
Структура канала измерения
+ More...
+
+
#include <bench_time.h >
+
+
+
+
+
+
+
Структура канала измерения
+
+
Definition at line 92 of file bench_time.h .
+
+
+
◆ start_tick
+
+
+
+
+
+ uint32_t BenchTimeChannel_t::start_tick
+
+
+
+
+
Время старта в тиках
+
+
Definition at line 93 of file bench_time.h .
+
+
+
+
+
◆ tick_period
+
+
+
+
+
+ uint32_t BenchTimeChannel_t::tick_period
+
+
+
+
+
Период тиков для переполнения
+
+
Definition at line 94 of file bench_time.h .
+
+
+
+
+
◆ is_running
+
+
+
+
+
+ uint32_t BenchTimeChannel_t::is_running
+
+
+
+
+
Флаг активного измерения
+
+
Definition at line 95 of file bench_time.h .
+
+
+
+
+
◆ stats
+
+
+
+
+
Статистика измерений
+
+
Definition at line 96 of file bench_time.h .
+
+
+
+
The documentation for this struct was generated from the following file:
+E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time_channel__t.js b/Doc/html/struct_bench_time_channel__t.js
new file mode 100644
index 0000000..ec6b79e
--- /dev/null
+++ b/Doc/html/struct_bench_time_channel__t.js
@@ -0,0 +1,7 @@
+var struct_bench_time_channel__t =
+[
+ [ "start_tick", "struct_bench_time_channel__t.html#a8140fe9e3d323404651f0cfeeae53928", null ],
+ [ "tick_period", "struct_bench_time_channel__t.html#a095d93e0228641f58b8661e263bc1bcd", null ],
+ [ "is_running", "struct_bench_time_channel__t.html#a0f80bb194231df7921712d20bac603c9", null ],
+ [ "stats", "struct_bench_time_channel__t.html#a22a3913e7925aa89cc12ec1d24a6c16c", null ]
+];
\ No newline at end of file
diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.map b/Doc/html/struct_bench_time_channel__t__coll__graph.map
new file mode 100644
index 0000000..64ddd1a
--- /dev/null
+++ b/Doc/html/struct_bench_time_channel__t__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.md5 b/Doc/html/struct_bench_time_channel__t__coll__graph.md5
new file mode 100644
index 0000000..abd7684
--- /dev/null
+++ b/Doc/html/struct_bench_time_channel__t__coll__graph.md5
@@ -0,0 +1 @@
+5f298be6c8f367b71f1703e38d9f38a3
\ No newline at end of file
diff --git a/Doc/html/struct_bench_time_channel__t__coll__graph.png b/Doc/html/struct_bench_time_channel__t__coll__graph.png
new file mode 100644
index 0000000..ae2c4a6
Binary files /dev/null and b/Doc/html/struct_bench_time_channel__t__coll__graph.png differ
diff --git a/Doc/html/struct_bench_time_stats__t-members.html b/Doc/html/struct_bench_time_stats__t-members.html
new file mode 100644
index 0000000..2b179d6
--- /dev/null
+++ b/Doc/html/struct_bench_time_stats__t-members.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+MyLibs: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
This is the complete list of members for BenchTimeStats_t , including all inherited members.
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time_stats__t.html b/Doc/html/struct_bench_time_stats__t.html
new file mode 100644
index 0000000..7df43c4
--- /dev/null
+++ b/Doc/html/struct_bench_time_stats__t.html
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+MyLibs: BenchTimeStats_t Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
Структура статистики измерений
+ More...
+
+
#include <bench_time.h >
+
+
+uint32_t min_ticks
+ Минимальное время в тиках
+uint32_t max_ticks
+ Максимальное время в тиках
+uint32_t total_ticks
+ Суммарное время в тиках
+uint32_t count
+ Количество измерений
+uint32_t last_ticks
+ Последнее измеренное время
+
+
+
Структура статистики измерений
+
+
Definition at line 81 of file bench_time.h .
+
+
+
◆ min_ticks
+
+
+
+
+
+ uint32_t BenchTimeStats_t::min_ticks
+
+
+
+
+
Минимальное время в тиках
+
+
Definition at line 82 of file bench_time.h .
+
+
+
+
+
◆ max_ticks
+
+
+
+
+
+ uint32_t BenchTimeStats_t::max_ticks
+
+
+
+
+
Максимальное время в тиках
+
+
Definition at line 83 of file bench_time.h .
+
+
+
+
+
◆ total_ticks
+
+
+
+
+
+ uint32_t BenchTimeStats_t::total_ticks
+
+
+
+
+
Суммарное время в тиках
+
+
Definition at line 84 of file bench_time.h .
+
+
+
+
+
◆ count
+
+
+
+
+
+ uint32_t BenchTimeStats_t::count
+
+
+
+
+
Количество измерений
+
+
Definition at line 85 of file bench_time.h .
+
+
+
+
+
◆ last_ticks
+
+
+
+
+
+ uint32_t BenchTimeStats_t::last_ticks
+
+
+
+
+
Последнее измеренное время
+
+
Definition at line 86 of file bench_time.h .
+
+
+
+
The documentation for this struct was generated from the following file:
+E:/.WORK/STM32/STM32_ExtendedLibs/MyLibs/Inc/bench_time.h
+
+
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_bench_time_stats__t.js b/Doc/html/struct_bench_time_stats__t.js
new file mode 100644
index 0000000..20c1e62
--- /dev/null
+++ b/Doc/html/struct_bench_time_stats__t.js
@@ -0,0 +1,8 @@
+var struct_bench_time_stats__t =
+[
+ [ "min_ticks", "struct_bench_time_stats__t.html#a39b71a5d48c4a51a553a26a9fb961ac8", null ],
+ [ "max_ticks", "struct_bench_time_stats__t.html#a3da36eb65b03ba995b5905b4650ea93c", null ],
+ [ "total_ticks", "struct_bench_time_stats__t.html#a21499b0b19d1ed27f8cea069f674e8ec", null ],
+ [ "count", "struct_bench_time_stats__t.html#a5e95ef31dd0daf973894ef2f034d1f71", null ],
+ [ "last_ticks", "struct_bench_time_stats__t.html#a2c739e1db6b26ceac5db3f2c44c177a0", null ]
+];
\ No newline at end of file
diff --git a/Doc/html/struct_evolve_optimizer__t.html b/Doc/html/struct_evolve_optimizer__t.html
deleted file mode 100644
index 12ac0cd..0000000
--- a/Doc/html/struct_evolve_optimizer__t.html
+++ /dev/null
@@ -1,358 +0,0 @@
-
-
-
-
-
-
-
-MyLibs: EvolveOptimizer_t Struct Reference
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MyLibs 1.0
-
- Расширенные библиотеки для STM32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
-
-
-
-
-
Структура эволюционного оптимизатора
- More...
-
-
#include <evolve_optimizer.h >
-
-
-float stability
- Коэффициент насколько стабильная популяция (0..1)(n_cand )
-uint16_t n_params
- Количество параметров
-uint16_t n_cand
- Количество кандидатов в популяции
-uint16_t n_best
- Количество лучших, усредняемых
-float mutation_amp
- Амплитуда мутации (0..1)
-uint16_t cand_index
- Индекс кандидата для обработки
-uint16_t gen_index
- Индекс популяции
-float gen_mut
- Амплитуда мутации у текущей популяции
-float loss [100]
- Loss для каждого кандидата
-float candidates [100][20]
- Параметры кандидатов
-uint16_t sorted_idx [100]
- Индексы отсортированных кандидатов
-
-
-
Структура эволюционного оптимизатора
-
-
Definition at line 102 of file evolve_optimizer.h .
-
-
-
◆ stability
-
-
-
-
-
- float EvolveOptimizer_t::stability
-
-
-
-
-
-
◆ n_params
-
-
-
-
-
- uint16_t EvolveOptimizer_t::n_params
-
-
-
-
-
-
◆ n_cand
-
-
-
-
-
- uint16_t EvolveOptimizer_t::n_cand
-
-
-
-
-
-
◆ n_best
-
-
-
-
-
- uint16_t EvolveOptimizer_t::n_best
-
-
-
-
-
-
◆ mutation_amp
-
-
-
-
-
- float EvolveOptimizer_t::mutation_amp
-
-
-
-
-
-
◆ cand_index
-
-
-
-
-
- uint16_t EvolveOptimizer_t::cand_index
-
-
-
-
-
-
◆ gen_index
-
-
-
-
-
- uint16_t EvolveOptimizer_t::gen_index
-
-
-
-
-
-
◆ gen_mut
-
-
-
-
-
- float EvolveOptimizer_t::gen_mut
-
-
-
-
-
-
◆ loss
-
-
-
-
-
- float EvolveOptimizer_t::loss[100]
-
-
-
-
-
-
◆ candidates
-
-
-
-
-
- float EvolveOptimizer_t::candidates[100][20]
-
-
-
-
-
-
◆ sorted_idx
-
-
-
-
-
- uint16_t EvolveOptimizer_t::sorted_idx[100]
-
-
-
-
-
The documentation for this struct was generated from the following file:
-
-
-
-
-
-
-
-
diff --git a/Doc/html/struct_evolve_optimizer__t.js b/Doc/html/struct_evolve_optimizer__t.js
deleted file mode 100644
index 588d42a..0000000
--- a/Doc/html/struct_evolve_optimizer__t.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var struct_evolve_optimizer__t =
-[
- [ "stability", "struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c", null ],
- [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ],
- [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ],
- [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ],
- [ "mutation_amp", "struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8", null ],
- [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ],
- [ "gen_index", "struct_evolve_optimizer__t.html#ad0f464d7048a9ed0753b61f76f563108", null ],
- [ "gen_mut", "struct_evolve_optimizer__t.html#a3be8c0c34db8429210ff470497a56727", null ],
- [ "loss", "struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df", null ],
- [ "candidates", "struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4", null ],
- [ "sorted_idx", "struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a", null ]
-];
\ No newline at end of file
diff --git a/Doc/html/struct_evolve_optimizer__t-members.html b/Doc/html/struct_gen_optimizer__t-members.html
similarity index 61%
rename from Doc/html/struct_evolve_optimizer__t-members.html
rename to Doc/html/struct_gen_optimizer__t-members.html
index dbd3cfc..df5e548 100644
--- a/Doc/html/struct_evolve_optimizer__t-members.html
+++ b/Doc/html/struct_gen_optimizer__t-members.html
@@ -71,7 +71,7 @@ $(function() {
@@ -97,23 +97,23 @@ $(function(){initNavTree('struct_evolve_optimizer__t.html','',''); });
-
This is the complete list of members for EvolveOptimizer_t , including all inherited members.
+
This is the complete list of members for GenOptimizer_t , including all inherited members.
diff --git a/Doc/html/struct_gen_optimizer__t.html b/Doc/html/struct_gen_optimizer__t.html
new file mode 100644
index 0000000..2ef2f85
--- /dev/null
+++ b/Doc/html/struct_gen_optimizer__t.html
@@ -0,0 +1,358 @@
+
+
+
+
+
+
+
+MyLibs: GenOptimizer_t Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MyLibs 1.0
+
+ Расширенные библиотеки для STM32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+
+
+
+
+
Структура эволюционного оптимизатора
+ More...
+
+
#include <gen_optimizer.h >
+
+
+float stability
+ Коэффициент насколько стабильная популяция (0..1)(n_cand )
+uint16_t n_params
+ Количество параметров
+uint16_t n_cand
+ Количество кандидатов в популяции
+uint16_t n_best
+ Количество лучших, усредняемых
+float mutation_amp
+ Амплитуда мутации (0..1)
+uint16_t cand_index
+ Индекс текущего кандидата
+uint16_t gen_index
+ Индекс популяции
+float gen_mut
+ Амплитуда мутации у текущей популяции
+float loss [100]
+ Loss для каждого кандидата
+float candidates [100][20]
+ Параметры кандидатов
+uint16_t sorted_idx [100]
+ Индексы отсортированных кандидатов
+
+
+
Структура эволюционного оптимизатора
+
+
Definition at line 102 of file gen_optimizer.h .
+
+
+
◆ stability
+
+
+
+
+
+ float GenOptimizer_t::stability
+
+
+
+
+
+
◆ n_params
+
+
+
+
+
+ uint16_t GenOptimizer_t::n_params
+
+
+
+
+
+
◆ n_cand
+
+
+
+
+
+ uint16_t GenOptimizer_t::n_cand
+
+
+
+
+
Количество кандидатов в популяции
+
+
Definition at line 106 of file gen_optimizer.h .
+
+
+
+
+
◆ n_best
+
+
+
+
+
+ uint16_t GenOptimizer_t::n_best
+
+
+
+
+
+
◆ mutation_amp
+
+
+
+
+
+ float GenOptimizer_t::mutation_amp
+
+
+
+
+
+
◆ cand_index
+
+
+
+
+
+ uint16_t GenOptimizer_t::cand_index
+
+
+
+
+
+
◆ gen_index
+
+
+
+
+
+ uint16_t GenOptimizer_t::gen_index
+
+
+
+
+
+
◆ gen_mut
+
+
+
+
+
+ float GenOptimizer_t::gen_mut
+
+
+
+
+
Амплитуда мутации у текущей популяции
+
+
Definition at line 114 of file gen_optimizer.h .
+
+
+
+
+
◆ loss
+
+
+
+
+
+ float GenOptimizer_t::loss[100]
+
+
+
+
+
+
◆ candidates
+
+
+
+
+
+ float GenOptimizer_t::candidates[100][20]
+
+
+
+
+
+
◆ sorted_idx
+
+
+
+
+
+ uint16_t GenOptimizer_t::sorted_idx[100]
+
+
+
+
+
Индексы отсортированных кандидатов
+
+
Definition at line 118 of file gen_optimizer.h .
+
+
+
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
+
+
+
diff --git a/Doc/html/struct_gen_optimizer__t.js b/Doc/html/struct_gen_optimizer__t.js
new file mode 100644
index 0000000..1a11730
--- /dev/null
+++ b/Doc/html/struct_gen_optimizer__t.js
@@ -0,0 +1,14 @@
+var struct_gen_optimizer__t =
+[
+ [ "stability", "struct_gen_optimizer__t.html#abe0aacea949fbe93e5d4c002e37d7192", null ],
+ [ "n_params", "struct_gen_optimizer__t.html#afe598a90024a8aa628dd16f3a2b38eb5", null ],
+ [ "n_cand", "struct_gen_optimizer__t.html#a9e20d2f6f39a5147e6dbac46baca73a9", null ],
+ [ "n_best", "struct_gen_optimizer__t.html#a8201f1eede36a2c04ec7b4caac7465c9", null ],
+ [ "mutation_amp", "struct_gen_optimizer__t.html#ad4dc0e53b3ca6bf2a642dfe7a1d1f26c", null ],
+ [ "cand_index", "struct_gen_optimizer__t.html#a04a72c1a13e17581e84eaaf3d245bbfc", null ],
+ [ "gen_index", "struct_gen_optimizer__t.html#a8f226c85e9bb034cb811aa0366bb191c", null ],
+ [ "gen_mut", "struct_gen_optimizer__t.html#acfeb93ef4823e09473ddba52fae9a6b1", null ],
+ [ "loss", "struct_gen_optimizer__t.html#a8b5066935d99f2fc7ebb94cc3652fc73", null ],
+ [ "candidates", "struct_gen_optimizer__t.html#a2c9a50ea7d975b9bc22a67e453ab83df", null ],
+ [ "sorted_idx", "struct_gen_optimizer__t.html#ad37161efa27ef1390d1f7e6ee2f79b12", null ]
+];
\ No newline at end of file
diff --git a/Doc/html/topics.html b/Doc/html/topics.html
index 8fdffb3..121e67f 100644
--- a/Doc/html/topics.html
+++ b/Doc/html/topics.html
@@ -105,36 +105,37 @@ $(function(){initNavTree('topics.html','',''); });
My Libs Все используемые MyLibs библиотеки
Configs Конфигурации для библиотек MyLibs
Trace configs Конфигурация трекеров и трассировки
- Evolve configs Конфигурация однослойного персептрона и алгоритма обучения
+ Genetic configs Конфигурация генетического алгоритма обучения
Libraries configs Подключение различных модулей библиотеки
General Tools Общие макросы и typedef'ы, используемые по всему проекту
Bit access defines Макросы и typedef'ы для работы с битами в unsigned типах
- Evolve optimizer Библиотека для эволюционного подбора параметров
- Error Handler defines Дефайны для обработки ошибок
- Delays defines Макросы и определения для работы с задержками в миллисекундах
- Utils defines Общие вспомогательные макросы
- Trace defines Дефайны для работы с трассировкой
- Serial trace defines Дефайны для работы с serial трассировкой (SWO, RTT)
- GPIO trace defines Дефайны для работы с GPIO трассировкой
- Flash RTT Buffer Макросы и функции для сохранения/чтения RTT буфера в Flash
- Hardfault trace defines Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
- Trackers defines Дефайны для работы с трекерами
- Peripheral Модули для управления периферией
- GPIO Tools Функции и макросы для удобной работы с GPIO
- General tools Общие функции/макросы для работы с GPIO
- Init defines Настройка состояний кнопок и количества тиков в периоде ШИМ
- Switch tools Функции для работы с GPIO, как с кнопкой
- LED tools Функции для работы с GPIO, для управления светодиодом
- SPI Tools Функции и макросы для удобной работы с SPI
- Init defines Настройка SPI
- TIM Tools Функции и макросы для удобной работы с TIM
- General tools Функции для базовой инициализации таймеров
- Init defines Настройка таймеров
- Delay tools Функции для формирования задержек с помощью таймеров
- PWM/OC Channels tools Функции для инициализации базовых функций каналов таймера
- Encoder tools Функции для считывания энкодера
- UART Tools Функции и макросы для удобной работы с UART
- Init defines Настройка UART
+ Time measurement Библиотека для измерения времени/тиков между событиями
+ Genetic optimizer Библиотека для эволюционного подбора параметров
+ Error Handler defines Дефайны для обработки ошибок
+ Delays defines Макросы и определения для работы с задержками в миллисекундах
+ Utils defines Общие вспомогательные макросы
+ Trace defines Дефайны для работы с трассировкой
+ Serial trace defines Дефайны для работы с serial трассировкой (SWO, RTT)
+ GPIO trace defines Дефайны для работы с GPIO трассировкой
+ Flash RTT Buffer Макросы и функции для сохранения/чтения RTT буфера в Flash
+ Hardfault trace defines Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
+ Trackers defines Дефайны для работы с трекерами
+ Peripheral Модули для управления периферией
+ GPIO Tools Функции и макросы для удобной работы с GPIO
+ General tools Общие функции/макросы для работы с GPIO
+ Init defines Настройка состояний кнопок и количества тиков в периоде ШИМ
+ Switch tools Функции для работы с GPIO, как с кнопкой
+ LED tools Функции для работы с GPIO, для управления светодиодом
+ SPI Tools Функции и макросы для удобной работы с SPI
+ Init defines Настройка SPI
+ TIM Tools Функции и макросы для удобной работы с TIM
+ General tools Функции для базовой инициализации таймеров
+ Init defines Настройка таймеров
+ Delay tools Функции для формирования задержек с помощью таймеров
+ PWM/OC Channels tools Функции для инициализации базовых функций каналов таймера
+ Encoder tools Функции для считывания энкодера
+ UART Tools Функции и макросы для удобной работы с UART
+ Init defines Настройка UART
diff --git a/Doc/html/trace_8h.html b/Doc/html/trace_8h.html
index b8f5a47..7ef9cc8 100644
--- a/Doc/html/trace_8h.html
+++ b/Doc/html/trace_8h.html
@@ -171,6 +171,12 @@ Functions
Проверка и вывод последнего HardFault-трейса из Flash.
__STATIC_FORCEINLINE void HF_HandleFault (void)
Обработчик HardFault.
+
Заголочный файл для работы с трассировкой.
diff --git a/Doc/latex/annotated.tex b/Doc/latex/annotated.tex
index 7c59474..428a296 100644
--- a/Doc/latex/annotated.tex
+++ b/Doc/latex/annotated.tex
@@ -1,6 +1,9 @@
\doxysection{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
-\item\contentsline{section}{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_evolve_optimizer__t}}{}
+\item\contentsline{section}{\mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \\*Основная структура менеджера измерений }{\pageref{struct_bench_time__t}}{}
+\item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \\*Структура канала измерения }{\pageref{struct_bench_time_channel__t}}{}
+\item\contentsline{section}{\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} \\*Структура статистики измерений }{\pageref{struct_bench_time_stats__t}}{}
+\item\contentsline{section}{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \\*Структура эволюционного оптимизатора }{\pageref{struct_gen_optimizer__t}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \\*Структура светодиода }{\pageref{struct_g_p_i_o___l_e_d_type_def}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \\*Структура кнопки }{\pageref{struct_g_p_i_o___switch_type_def}}{}
\item\contentsline{section}{\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \\*Контекст стек-\/фрейма процессора при Hard\+Fault }{\pageref{struct_h_f___stack_frame__t}}{}
diff --git a/Doc/latex/bench__time_8h.tex b/Doc/latex/bench__time_8h.tex
new file mode 100644
index 0000000..db1c3db
--- /dev/null
+++ b/Doc/latex/bench__time_8h.tex
@@ -0,0 +1,61 @@
+\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/bench\+\_\+time.h File Reference}
+\hypertarget{bench__time_8h}{}\label{bench__time_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}}
+
+
+Заголовочный файл для измерения времени между событиями
+
+
+{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
+{\ttfamily \#include $<$stdint.\+h$>$}\newline
+Include dependency graph for bench\+\_\+time.\+h\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=230pt]{bench__time_8h__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура статистики измерений \end{DoxyCompactList}\item
+struct \mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура канала измерения \end{DoxyCompactList}\item
+struct \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Основная структура менеджера измерений \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{Bench\+Time\+\_\+\+Init}} (void)
+\begin{DoxyCompactList}\small\item\em Инициализация системы измерения времени \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{Bench\+Time\+\_\+\+Start}} (uint8\+\_\+t channel, uint32\+\_\+t ticks, uint32\+\_\+t tick\+\_\+period)
+\begin{DoxyCompactList}\small\item\em Начало измерения на указанном канале \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{Bench\+Time\+\_\+\+End}} (uint8\+\_\+t channel, uint32\+\_\+t ticks)
+\begin{DoxyCompactList}\small\item\em Окончание измерения на указанном канале \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{Bench\+Time\+\_\+\+Get\+Min}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение минимального времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{Bench\+Time\+\_\+\+Get\+Max}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение максимального времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{Bench\+Time\+\_\+\+Get\+Average}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение среднего времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{Bench\+Time\+\_\+\+Get\+Count}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение количества измерений \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{Bench\+Time\+\_\+\+Get\+Last}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение последнего измеренного времени \end{DoxyCompactList}\item
+static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{Bench\+Time\+\_\+\+Reset\+Stats}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Сброс статистики для канала \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+static \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}} = \{0\}
+\begin{DoxyCompactList}\small\item\em Внутренний экземпляр \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Заголовочный файл для измерения времени между событиями
+
+
+
+Definition in file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
diff --git a/Doc/latex/bench__time_8h__incl.md5 b/Doc/latex/bench__time_8h__incl.md5
new file mode 100644
index 0000000..1ed4101
--- /dev/null
+++ b/Doc/latex/bench__time_8h__incl.md5
@@ -0,0 +1 @@
+122aa7271e7507ca099dc86bd8c9c747
\ No newline at end of file
diff --git a/Doc/latex/bench__time_8h__incl.pdf b/Doc/latex/bench__time_8h__incl.pdf
new file mode 100644
index 0000000..1bd577f
Binary files /dev/null and b/Doc/latex/bench__time_8h__incl.pdf differ
diff --git a/Doc/latex/bench__time_8h_source.tex b/Doc/latex/bench__time_8h_source.tex
new file mode 100644
index 0000000..7f76067
--- /dev/null
+++ b/Doc/latex/bench__time_8h_source.tex
@@ -0,0 +1,264 @@
+\doxysection{bench\+\_\+time.\+h}
+\hypertarget{bench__time_8h_source}{}\label{bench__time_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/bench\_time.h}}
+\mbox{\hyperlink{bench__time_8h}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00001}00001\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ bench\_time.h}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ измерения\ времени\ между\ событиями}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ BENCH\_TIME\ \ \ \ Time\ measurement}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ измерения\ времени/тиков\ между\ событиями}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Многоканальные\ измерения\ (несколько\ независимых\ таймеров)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Платформонезависимый\ интерфейс}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Измерение\ в\ тиках\ или\ временных\ единицах}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Статистику\ измерений\ (мин/макс/среднее)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Настраиваемый\ размер\ тиков\ для\ каждого\ канала}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00016}00016\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_ENABLE\ -\/\ Включить\ бенч\ времени}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00019}00019\ \textcolor{comment}{-\/\ @ref\ BENCH\_TIME\_MAX\_CHANNELS\ -\/\ Максимальное\ количество\ каналов\ измерения\ (по\ умолчанию\ 8)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00020}00020\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00021}00021\ \textcolor{comment}{@par\ Пример\ использования:}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00022}00022\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00023}00023\ \textcolor{comment}{\#include\ "{}bench\_time.h"{}}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00024}00024\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00025}00025\ \textcolor{comment}{//\ Инициализация}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00026}00026\ \textcolor{comment}{BenchTime\_Init();}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00027}00027\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00028}00028\ \textcolor{comment}{//\ Измерение\ с\ SysTick}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00029}00029\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 0xFFFFFFFF);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00030}00030\ \textcolor{comment}{some\_function();}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00031}00031\ \textcolor{comment}{uint32\_t\ time\ =\ BenchTime\_End(0,\ HAL\_GetTick);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00032}00032\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00033}00033\ \textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00034}00034\ \textcolor{comment}{BenchTime\_Start(1,\ TIM2-\/>CNT,\ 0xFFFF);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00035}00035\ \textcolor{comment}{fast\_function();\ }}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00036}00036\ \textcolor{comment}{uint32\_t\ time2\ =\ BenchTime\_End(1,\ TIM2-\/>CNT);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00037}00037\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00038}00038\ \textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00039}00039\ \textcolor{comment}{BenchTime\_Start(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00040}00040\ \textcolor{comment}{critical\_function();}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00041}00041\ \textcolor{comment}{uint32\_t\ cycles\ =\ BenchTime\_End(2,\ DWT-\/>CYCCNT);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00042}00042\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00043}00043\ \textcolor{comment}{//\ Многоканальное\ измерение}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00044}00044\ \textcolor{comment}{BenchTime\_Start(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ //\ общее\ время}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00045}00045\ \textcolor{comment}{BenchTime\_Start(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 1}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00046}00046\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00047}00047\ \textcolor{comment}{//\ ...\ код\ 1}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00048}00048\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00049}00049\ \textcolor{comment}{uint32\_t\ part1\ =\ BenchTime\_End(1,\ TIM3-\/>CNT);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00050}00050\ \textcolor{comment}{BenchTime\_Start(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ //\ часть\ 2\ \ }}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00051}00051\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00052}00052\ \textcolor{comment}{//\ ...\ код\ 2}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00053}00053\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00054}00054\ \textcolor{comment}{uint32\_t\ part2\ =\ BenchTime\_End(2,\ TIM4-\/>CNT);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00055}00055\ \textcolor{comment}{uint32\_t\ total\ =\ BenchTime\_End(0,\ HAL\_GetTick);\ //\ общее\ время}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00056}00056\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00057}00057\ \textcolor{comment}{//\ Статистика}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00058}00058\ \textcolor{comment}{uint32\_t\ min\_time\ =\ BenchTime\_GetMin(0);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00059}00059\ \textcolor{comment}{uint32\_t\ max\_time\ =\ BenchTime\_GetMax(0);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00060}00060\ \textcolor{comment}{uint32\_t\ avg\_time\ =\ BenchTime\_GetAverage(0);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00061}00061\ \textcolor{comment}{uint32\_t\ count\ =\ BenchTime\_GetCount(0);}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00062}00062\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00063}00063\ \textcolor{comment}{*\ @\{\ \ }}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00064}00064\ \textcolor{comment}{*****************************************************************************/}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00065}00065\ \textcolor{preprocessor}{\#ifndef\ \_\_BENCH\_TIME\_H\_}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00066}00066\ \textcolor{preprocessor}{\#define\ \_\_BENCH\_TIME\_H\_}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00067}00067\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00068}00068\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00069}00069\ \textcolor{preprocessor}{\#include\
}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00070}00070\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00071}00071\ \textcolor{preprocessor}{\#ifdef\ BENCH\_TIME\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00072}00072\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00073}00073\ \textcolor{comment}{//\ Конфигурация\ библиотеки}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00074}00074\ \textcolor{preprocessor}{\#ifndef\ BENCH\_TIME\_MAX\_CHANNELS}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00075}00075\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ \ 8\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00076}00076\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00077}00077\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00078}00078\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00079}00079\ \textcolor{comment}{\ \ *\ @brief\ Структура\ статистики\ измерений}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00080}00080\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00081}\mbox{\hyperlink{struct_bench_time_stats__t}{00081}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00082}\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{00082}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Минимальное\ время\ в\ тиках}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00083}\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{00083}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}};\ \ \ \ \ \ \textcolor{comment}{///<\ Максимальное\ время\ в\ тиках\ \ }}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00084}\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{00084}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}};\ \ \ \ \textcolor{comment}{///<\ Суммарное\ время\ в\ тиках}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00085}\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{00085}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};\ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ измерений}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00086}\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{00086}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}};\ \ \ \ \ \textcolor{comment}{///<\ Последнее\ измеренное\ время}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00087}00087\ \}\ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}};}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00088}00088\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00089}00089\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @brief\ Структура\ канала\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00091}00091\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00092}\mbox{\hyperlink{struct_bench_time_channel__t}{00092}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00093}\mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{00093}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\_tick}};\ \ \ \ \ \textcolor{comment}{///<\ Время\ старта\ в\ тиках}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00094}\mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{00094}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\_period}};\ \ \ \ \textcolor{comment}{///<\ Период\ тиков\ для\ переполнения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00095}\mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{00095}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\_running}};\ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Флаг\ активного\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00096}\mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{00096}}\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}\ \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}};\ \ \textcolor{comment}{///<\ Статистика\ измерений}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00097}00097\ \}\ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}};}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00098}00098\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00099}00099\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Основная\ структура\ менеджера\ измерений}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00102}\mbox{\hyperlink{struct_bench_time__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00103}\mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{00103}}\ \ \ \mbox{\hyperlink{struct_bench_time_channel__t}{BenchTimeChannel\_t}}\ \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}}];\ \textcolor{comment}{///<\ Каналы\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00104}00104\ \}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}};}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00105}00105\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00106}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{00106}}\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_bench_time__t}{BenchTime\_t}}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}\ =\ \{0\};\ \textcolor{comment}{///<\ Внутренний\ экземпляр}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00107}00107\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00108}00108\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00109}00109\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ системы\ измерения\ времени}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00110}00110\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00111}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{00111}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}(\textcolor{keywordtype}{void})\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00112}00112\ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}};\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00113}00113\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].start\_tick\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00114}00114\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].tick\_period\ =\ 0xFFFFFFFF;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00115}00115\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].is\_running\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00116}00116\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.min\_ticks\ =\ 0xFFFFFFFF;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00117}00117\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.max\_ticks\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00118}00118\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.total\_ticks\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00119}00119\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.count\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00120}00120\ \ \ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[i].stats.last\_ticks\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00121}00121\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00122}00122\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00123}00123\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00124}00124\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @brief\ Начало\ измерения\ на\ указанном\ канале}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (например:\ HAL\_GetTick(),\ TIM2-\/>CNT,\ DWT-\/>CYCCNT)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ tick\_period\ Период\ тиков\ для\ переполнения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @return\ 1\ -\/\ успех,\ 0\ -\/\ ошибка}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00130}00130\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00131}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{00131}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(uint8\_t\ channel,\ uint32\_t\ ticks,\ uint32\_t\ tick\_period)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00133}00133\ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00134}00134\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00135}00135\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick\ =\ ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00136}00136\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period\ =\ tick\_period;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00137}00137\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 1;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00138}00138\ \ \ \textcolor{keywordflow}{return}\ 1;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00139}00139\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00140}00140\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00141}00141\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @brief\ Окончание\ измерения\ на\ указанном\ канале}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ channel\ Номер\ канала\ (0..BENCH\_TIME\_MAX\_CHANNELS-\/1)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ ticks\ Источник\ тиков\ (должен\ быть\ тот\ же\ что\ в\ Start)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @return\ Измеренное\ время\ в\ тиках,\ 0\ -\/\ в\ случае\ ошибки}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00147}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{00147}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(uint8\_t\ channel,\ uint32\_t\ ticks)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00148}00148\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00149}00149\ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running)\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00150}00150\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00151}00151\ \ \ uint32\_t\ end\_tick\ =\ ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00152}00152\ \ \ uint32\_t\ start\_tick\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].start\_tick;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00153}00153\ \ \ uint32\_t\ tick\_period\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].tick\_period;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00154}00154\ \ \ uint32\_t\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00155}00155\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00156}00156\ \ \ \textcolor{keywordflow}{if}\ (end\_tick\ >=\ start\_tick)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00157}00157\ \ \ \ \ elapsed\_ticks\ =\ end\_tick\ -\/\ start\_tick;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00158}00158\ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00159}00159\ \ \ \ \ elapsed\_ticks\ =\ (tick\_period\ -\/\ start\_tick)\ +\ end\_tick\ +\ 1;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00160}00160\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00161}00161\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ tick\_period)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00163}00163\ \ \ \ \ elapsed\_ticks\ =\ tick\_period;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00164}00164\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00165}00165\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00166}00166\ \ \ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].is\_running\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00167}00167\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00168}00168\ \ \ \textcolor{comment}{//\ Обновление\ статистики}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00169}00169\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00170}00170\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00171}00171\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00172}00172\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ <\ stats-\/>min\_ticks)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00173}00173\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00174}00174\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00175}00175\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00176}00176\ \ \ \textcolor{keywordflow}{if}\ (elapsed\_ticks\ >\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}})\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00177}00177\ \ \ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00178}00178\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00179}00179\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00180}00180\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ +=\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00181}00181\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}++;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00182}00182\ \ \ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00183}00183\ \ \ \textcolor{keywordflow}{return}\ elapsed\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00184}00184\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00185}00185\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00186}00186\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00187}00187\ \textcolor{comment}{\ \ *\ @brief\ Получение\ минимального\ времени\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00188}00188\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00189}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{00189}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00191}00191\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.min\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00192}00192\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00193}00193\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00194}00194\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00195}00195\ \textcolor{comment}{\ \ *\ @brief\ Получение\ максимального\ времени\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00196}00196\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00197}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{00197}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00198}00198\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00199}00199\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.max\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00200}00200\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00201}00201\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00202}00202\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00203}00203\ \textcolor{comment}{\ \ *\ @brief\ Получение\ среднего\ времени\ измерения}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00204}00204\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00205}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{00205}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00206}00206\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00207}00207\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00208}00208\ \ \ \textcolor{keywordflow}{if}\ (stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ ==\ 0)\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00209}00209\ \ \ \textcolor{keywordflow}{return}\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ /\ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}};}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00210}00210\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00211}00211\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00212}00212\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @brief\ Получение\ количества\ измерений}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00214}00214\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00215}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{00215}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00216}00216\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00217}00217\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.count;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00218}00218\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00219}00219\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00220}00220\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ @brief\ Получение\ последнего\ измеренного\ времени}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00222}00222\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00223}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{00223}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ uint32\_t\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{BenchTime\_GetLast}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00224}00224\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00225}00225\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats.last\_ticks;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00226}00226\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00227}00227\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00228}00228\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00229}00229\ \textcolor{comment}{\ \ *\ @brief\ Сброс\ статистики\ для\ канала}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00230}00230\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00231}\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{00231}}\ \textcolor{keyword}{static}\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{BenchTime\_ResetStats}}(uint8\_t\ channel)\ \{}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00232}00232\ \ \ \textcolor{keywordflow}{if}\ (channel\ >=\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\_TIME\_MAX\_CHANNELS}})\ \textcolor{keywordflow}{return};}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00233}00233\ \ \ \mbox{\hyperlink{struct_bench_time_stats__t}{BenchTimeStats\_t}}*\ stats\ =\ \&\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}}.channels[channel].stats;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00234}00234\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\_ticks}}\ =\ 0xFFFFFFFF;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00235}00235\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\_ticks}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00236}00236\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\_ticks}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00237}00237\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00238}00238\ \ \ stats-\/>\mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\_ticks}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00239}00239\ \}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00240}00240\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00241}00241\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00242}00242\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00243}00243\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00244}00244\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00245}00245\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00246}00246\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00247}00247\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00248}00248\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00249}00249\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00250}00250\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00251}00251\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00252}00252\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00253}00253\ }
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00254}00254\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_BENCH\_TIME\_H\_}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00255}00255\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00256}00256\ \textcolor{comment}{/**\ BENCH\_TIME}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00257}00257\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{bench__time_8h_source_l00258}00258\ \textcolor{comment}{\ \ */}}
+
+\end{DoxyCode}
diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf
index 9be0751..f3819bf 100644
Binary files a/Doc/latex/bit__access_8h__dep__incl.pdf and b/Doc/latex/bit__access_8h__dep__incl.pdf differ
diff --git a/Doc/latex/bit__access_8h__incl.pdf b/Doc/latex/bit__access_8h__incl.pdf
index 51efe14..ed1e926 100644
Binary files a/Doc/latex/bit__access_8h__incl.pdf and b/Doc/latex/bit__access_8h__incl.pdf differ
diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 b/Doc/latex/evolve__optimizer_8h__dep__incl.md5
deleted file mode 100644
index 8ece981..0000000
--- a/Doc/latex/evolve__optimizer_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-a0affaffafe83b1e4cf8ca3fc40e3aed
\ No newline at end of file
diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf b/Doc/latex/evolve__optimizer_8h__dep__incl.pdf
deleted file mode 100644
index 850bc9f..0000000
Binary files a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf and /dev/null differ
diff --git a/Doc/latex/evolve__optimizer_8h__incl.md5 b/Doc/latex/evolve__optimizer_8h__incl.md5
deleted file mode 100644
index 50d9e87..0000000
--- a/Doc/latex/evolve__optimizer_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-408dcb9ada023de3bfc1cdb66d4747c7
\ No newline at end of file
diff --git a/Doc/latex/evolve__optimizer_8h__incl.pdf b/Doc/latex/evolve__optimizer_8h__incl.pdf
deleted file mode 100644
index ac1c537..0000000
Binary files a/Doc/latex/evolve__optimizer_8h__incl.pdf and /dev/null differ
diff --git a/Doc/latex/evolve__optimizer_8h_source.tex b/Doc/latex/evolve__optimizer_8h_source.tex
deleted file mode 100644
index 99f6969..0000000
--- a/Doc/latex/evolve__optimizer_8h_source.tex
+++ /dev/null
@@ -1,344 +0,0 @@
-\doxysection{evolve\+\_\+optimizer.\+h}
-\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h}}
-\mbox{\hyperlink{evolve__optimizer_8h}{Go to the documentation of this file.}}
-\begin{DoxyCode}{0}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ evolve\_optimizer.h}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ EVOLVE\_OPTIMIZER\ \ \ \ Evolve\ optimizer}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00016}00016\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION\ -\/\ Включить\ оптимизацию\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ ENABLE\_EVOLVE\_OPTIMIZATION,\ то\ вставляются\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}00068\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}00081\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}00085\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}00086\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}00087\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MIN\_PCT}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{00089}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MAX\_PCT}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{00092}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00097}00097\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_evolve_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}00104\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00107}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{00108}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}00109\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{00111}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ \ \ \textcolor{comment}{//INTERNAL}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}\mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{00114}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00117}\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{00117}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00118}\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{00118}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00119}00119\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @cond\ EVOLVE\_INTERNAL}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \textcolor{comment}{//\ функция\ условия\ сортировки}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \ \ \textcolor{keywordflow}{return}\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}00137\ \}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \textcolor{comment}{/**\ @endcond\ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{00155}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}}\ \ =\ mutation\_amp;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \textcolor{preprocessor}{\#ifdef\ ADC1}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ srand(seed);}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ base\ +\ noise;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 1.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \ \ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i]\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}}\ =\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{return}\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @details}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00224}00224\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00225}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{00225}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00227}00227\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00228}00228\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00231}00231\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00232}00232\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00233}00233\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00234}00234\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00235}00235\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00236}00236\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00239}00239\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00240}00240\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00242}00242\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00243}00243\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00245}00245\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00246}00246\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00247}00247\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00248}00248\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00250}00250\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00251}00251\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00252}00252\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ i++)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[i]\ =\ i;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00256}00256\ \ \ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00257}00257\ \ \ \ \ g\_sort\_opt\ =\ opt;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00258}00258\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00259}00259\ \ \ \ \ g\_sort\_opt\ =\ NULL;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00260}00260\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[0]];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ -\/\ 1]];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00265}00265\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00268}00268\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00270}00270\ \ \ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00271}00271\ \ \ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00275}00275\ \ \ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00278}00278\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00279}00279\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 1.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00282}00282\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00283}00283\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}}\ +}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00286}00286\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00287}00287\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\_mut}}\ =\ adaptive\_mut;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00288}00288\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00289}00289\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00290}00290\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00291}00291\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[c]][i];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[parent][i]\ +\ noise;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 1.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00306}00306\ \ \ \ \ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00307}00307\ \ \ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00309}00309\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\_index}}++;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00310}00310\ \ \ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00311}00311\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00312}00312\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00313}00313\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ i++)}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00314}00314\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00315}00315\ \ \ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00316}00316\ \ \ \textcolor{keywordflow}{return}\ 0;}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00317}00317\ \}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00319}00319\ \textcolor{comment}{//заглушки}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00320}00320\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_params;\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_cand;\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00323}00323\ \ \ uint16\_t\ n\_best;\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00326}00326\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00327}00327\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00332}00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00333}00333\ }
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00334}00334\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00335}00335\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00336}00336\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00338}00338\ \textcolor{comment}{\ \ */}}
-
-\end{DoxyCode}
diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex
index 3015b2d..87d066a 100644
--- a/Doc/latex/files.tex
+++ b/Doc/latex/files.tex
@@ -1,8 +1,9 @@
\doxysection{File List}
Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{}
+\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}} \\*Заголовочный файл для измерения времени между событиями }{\pageref{bench__time_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{}
-\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{}
+\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{gen__optimizer_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{}
\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{}
diff --git a/Doc/latex/evolve__optimizer_8h.tex b/Doc/latex/gen__optimizer_8h.tex
similarity index 52%
rename from Doc/latex/evolve__optimizer_8h.tex
rename to Doc/latex/gen__optimizer_8h.tex
index 4068f31..9639f6c 100644
--- a/Doc/latex/evolve__optimizer_8h.tex
+++ b/Doc/latex/gen__optimizer_8h.tex
@@ -1,5 +1,5 @@
-\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/evolve\+\_\+optimizer.h File Reference}
-\hypertarget{evolve__optimizer_8h}{}\label{evolve__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/evolve\_optimizer.h}}
+\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/gen\+\_\+optimizer.h File Reference}
+\hypertarget{gen__optimizer_8h}{}\label{gen__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}}
Заголовочный файл для адаптивного подбора параметров
@@ -8,12 +8,12 @@
{\ttfamily \#include "{}mylibs\+\_\+defs.\+h"{}}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
-Include dependency graph for evolve\+\_\+optimizer.\+h\+:
+Include dependency graph for gen\+\_\+optimizer.\+h\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=295pt]{evolve__optimizer_8h__incl}
+\includegraphics[width=295pt]{gen__optimizer_8h__incl}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:
@@ -21,33 +21,33 @@ This graph shows which files directly or indirectly include this file\+:
\begin{figure}[H]
\begin{center}
\leavevmode
-\includegraphics[width=212pt]{evolve__optimizer_8h__dep__incl}
+\includegraphics[width=212pt]{gen__optimizer_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item
-struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
+struct \mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}}
\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)
\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)
\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10
\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100
\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2
\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params)
+static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{Gen\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params)
\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss)
+static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{Gen\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss)
\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}
@@ -56,5 +56,5 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
-Definition in file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
+Definition in file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.md5 b/Doc/latex/gen__optimizer_8h__dep__incl.md5
new file mode 100644
index 0000000..d842556
--- /dev/null
+++ b/Doc/latex/gen__optimizer_8h__dep__incl.md5
@@ -0,0 +1 @@
+f620087f87f5ce223eef2578f5c74e74
\ No newline at end of file
diff --git a/Doc/latex/gen__optimizer_8h__dep__incl.pdf b/Doc/latex/gen__optimizer_8h__dep__incl.pdf
new file mode 100644
index 0000000..be1ec98
Binary files /dev/null and b/Doc/latex/gen__optimizer_8h__dep__incl.pdf differ
diff --git a/Doc/latex/gen__optimizer_8h__incl.md5 b/Doc/latex/gen__optimizer_8h__incl.md5
new file mode 100644
index 0000000..ad8b4c6
--- /dev/null
+++ b/Doc/latex/gen__optimizer_8h__incl.md5
@@ -0,0 +1 @@
+d8ba80e222b124652de74ea26c9b5a44
\ No newline at end of file
diff --git a/Doc/latex/gen__optimizer_8h__incl.pdf b/Doc/latex/gen__optimizer_8h__incl.pdf
new file mode 100644
index 0000000..1e5a8ac
Binary files /dev/null and b/Doc/latex/gen__optimizer_8h__incl.pdf differ
diff --git a/Doc/latex/gen__optimizer_8h_source.tex b/Doc/latex/gen__optimizer_8h_source.tex
new file mode 100644
index 0000000..a7832c0
--- /dev/null
+++ b/Doc/latex/gen__optimizer_8h_source.tex
@@ -0,0 +1,344 @@
+\doxysection{gen\+\_\+optimizer.\+h}
+\hypertarget{gen__optimizer_8h_source}{}\label{gen__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibs/Inc/gen\_optimizer.h}}
+\mbox{\hyperlink{gen__optimizer_8h}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00002}00002\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00003}00003\ \textcolor{comment}{*\ @file\ gen\_optimizer.h}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00004}00004\ \textcolor{comment}{*\ @brief\ Заголовочный\ файл\ для\ адаптивного\ подбора\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00005}00005\ \textcolor{comment}{******************************************************************************}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00006}00006\ \textcolor{comment}{*\ @addtogroup\ GEN\_OPTIMIZER\ \ \ \ Genetic\ optimizer}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00007}00007\ \textcolor{comment}{*\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00008}00008\ \textcolor{comment}{*\ @brief\ \ \ \ \ \ Библиотека\ для\ эволюционного\ подбора\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00009}00009\ \textcolor{comment}{*\ @details}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00010}00010\ \textcolor{comment}{Поддерживает:}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00011}00011\ \textcolor{comment}{-\/\ Любое\ количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00012}00012\ \textcolor{comment}{-\/\ Генерацию\ новых\ параметров\ на\ основе\ лучших\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00013}00013\ \textcolor{comment}{-\/\ Мутацию\ для\ поиска\ оптимальных\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00014}00014\ \textcolor{comment}{-\/\ Несколько\ независимых\ оптимизаторов\ в\ одной\ программе}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00015}00015\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00016}00016\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00017}00017\ \textcolor{comment}{Параметры\ для\ конфигурации:}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00018}00018\ \textcolor{comment}{-\/\ @ref\ GEN\_OPTIMIZATION\_ENABLE\ -\/\ Включить\ оптимизацию\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00019}00019\ \textcolor{comment}{\ \ Если\ библиотека\ отключена\ @ref\ GEN\_OPTIMIZATION\_ENABLE,\ то\ вставляются\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ GEN\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MIN\_PCT\ \ \ \ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ GEN\_MUTATION\_MAX\_PCT\ \ \ \ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}gen\_optimizer.h"{}}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00035}00035\ \textcolor{comment}{GenOptimizer\_t\ optimizer;}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00048}00048\ \textcolor{comment}{GenOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00052}00052\ \textcolor{comment}{GenOptimizer\_Step(\&optimizer,\ params,\ loss);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_GEN\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_GEN\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00064}00064\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00068}00068\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ GEN\_OPTIMIZATION\_ENABLE}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00073}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00079}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00081}00081\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00083}00083\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00085}00085\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00086}00086\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00087}00087\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MIN\_PCT}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00089}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{00089}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ GEN\_MUTATION\_MAX\_PCT}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00092}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{00092}}\ \textcolor{preprocessor}{\#define\ GEN\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00095}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00097}00097\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_gen_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00104}00104\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{00107}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{00108}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00109}00109\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{00110}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ текущего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{00111}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ популяции\ \ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00112}00112\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00113}00113\ \ \ \textcolor{comment}{//INTERNAL}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00114}\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{00114}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ у\ текущей\ популяции\ \ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00115}00115\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00116}\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{00116}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00117}\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{00117}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00118}\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{00118}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00119}00119\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00120}00120\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00121}00121\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00122}00122\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00123}00123\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ *\ @cond\ GEN\_INTERNAL}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00126}00126\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00127}00127\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00128}00128\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00129}00129\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00130}00130\ \textcolor{comment}{//\ функция\ условия\ сортировки}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00131}00131\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00132}00132\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00133}00133\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00134}00134\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00135}00135\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00136}00136\ \ \ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00137}00137\ \}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00138}00138\ \textcolor{comment}{/**\ @endcond\ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00139}00139\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00140}00140\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00141}00141\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00142}00142\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00143}00143\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00144}00144\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00148}00148\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00149}00149\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00150}00150\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00151}00151\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00152}00152\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00153}00153\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00154}00154\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00155}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{00155}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00156}00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00157}00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00161}00161\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00164}00164\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00165}00165\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00166}00166\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00167}00167\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}}\ \ \ \ \ =\ n\_params;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00168}00168\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00169}00169\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00170}00170\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00171}00171\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00172}00172\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00174}00174\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00176}00176\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00177}00177\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00178}00178\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00179}00179\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00180}00180\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00181}00181\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00182}00182\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}}\ \ =\ mutation\_amp;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00183}00183\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00184}00184\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00185}00185\ \textcolor{preprocessor}{\#ifdef\ ADC1}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00186}00186\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00187}00187\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00188}00188\ \ \ srand(seed);}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00189}00189\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00190}00190\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00191}00191\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00192}00192\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00193}00193\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00194}00194\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00195}00195\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00196}00196\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ base\ +\ noise;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00197}00197\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00198}00198\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[i][j]\ =\ 1.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00199}00199\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00200}00200\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i]\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00201}00201\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00202}00202\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00203}00203\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00204}00204\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00205}00205\ \ \ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00206}00206\ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00207}00207\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00208}00208\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00209}00209\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00216}00216\ \textcolor{comment}{\ \ *\ @details}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00217}00217\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00218}00218\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00219}00219\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00220}00220\ \textcolor{comment}{\ \ *}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00221}00221\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00222}00222\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00223}00223\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00224}00224\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00225}\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{00225}}\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}*\ opt,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00226}00226\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00227}00227\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00228}00228\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00229}00229\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00231}00231\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00232}00232\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00233}00233\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\_MAX\_PARAMS}})}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00234}00234\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00235}00235\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00236}00236\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00237}00237\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}})}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00239}00239\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00240}00240\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}};\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00241}00241\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\_MAX\_CANDIDATES}}/2)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00242}00242\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00243}00243\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00244}00244\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\_amp}};}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00245}00245\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00246}00246\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00247}00247\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00248}00248\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00249}00249\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}]\ =\ loss;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00250}00250\ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}++;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00251}00251\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00252}00252\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ >=\ n\_cand)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}};\ i++)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[i]\ =\ i;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00256}00256\ \ \ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00257}00257\ \ \ \ \ g\_sort\_opt\ =\ opt;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00258}00258\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00259}00259\ \ \ \ \ g\_sort\_opt\ =\ NULL;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00260}00260\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00261}00261\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00262}00262\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[0]];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\_cand}}\ -\/\ 1]];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00265}00265\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00266}00266\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00268}00268\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[i];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00270}00270\ \ \ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00271}00271\ \ \ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00273}00273\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00275}00275\ \ \ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00278}00278\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00279}00279\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00280}00280\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}\ =\ 1.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00282}00282\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00283}00283\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}}\ +}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00285}00285\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00286}00286\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00287}00287\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\_mut}}\ =\ adaptive\_mut;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00288}00288\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00289}00289\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00290}00290\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00291}00291\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[c]][i];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00298}00298\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00299}00299\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00300}00300\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\_best}}];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00301}00301\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[parent][i]\ +\ noise;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00302}00302\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00303}00303\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[c][i]\ =\ 1.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00304}00304\ \ \ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00305}00305\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}}[c]\ =\ 0.0f;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00306}00306\ \ \ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00307}00307\ \ \ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00308}00308\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}\ =\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00309}00309\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\_index}}++;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00310}00310\ \ \ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00311}00311\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00312}00312\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00313}00313\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\_params}};\ i++)}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00314}00314\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}}[opt-\/>\mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\_index}}][i];}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00315}00315\ \ \ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00316}00316\ \ \ \textcolor{keywordflow}{return}\ 0;}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00317}00317\ \}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00319}00319\ \textcolor{comment}{//заглушки}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00320}00320\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00321}00321\ \ \ uint16\_t\ n\_params;\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00322}00322\ \ \ uint16\_t\ n\_cand;\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00323}00323\ \ \ uint16\_t\ n\_best;\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00324}00324\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00325}00325\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00326}00326\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00327}00327\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00328}00328\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00329}00329\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00330}00330\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00331}00331\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00332}00332\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ GEN\_OPTIMIZATION\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00333}00333\ }
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00334}00334\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_GEN\_OPTIMIZER\_H\_}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00335}00335\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00336}00336\ \textcolor{comment}{/**\ GEN\_OPTIMIZER}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00337}00337\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{gen__optimizer_8h_source_l00338}00338\ \textcolor{comment}{\ \ */}}
+
+\end{DoxyCode}
diff --git a/Doc/latex/general__gpio_8c__incl.pdf b/Doc/latex/general__gpio_8c__incl.pdf
index 8c3a4fa..064f67d 100644
Binary files a/Doc/latex/general__gpio_8c__incl.pdf and b/Doc/latex/general__gpio_8c__incl.pdf differ
diff --git a/Doc/latex/general__gpio_8h__dep__incl.pdf b/Doc/latex/general__gpio_8h__dep__incl.pdf
index a8e3c04..087765d 100644
Binary files a/Doc/latex/general__gpio_8h__dep__incl.pdf and b/Doc/latex/general__gpio_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__gpio_8h__incl.pdf b/Doc/latex/general__gpio_8h__incl.pdf
index b1cc4e0..99fe613 100644
Binary files a/Doc/latex/general__gpio_8h__incl.pdf and b/Doc/latex/general__gpio_8h__incl.pdf differ
diff --git a/Doc/latex/general__spi_8c__incl.pdf b/Doc/latex/general__spi_8c__incl.pdf
index 3ed818e..a12720e 100644
Binary files a/Doc/latex/general__spi_8c__incl.pdf and b/Doc/latex/general__spi_8c__incl.pdf differ
diff --git a/Doc/latex/general__spi_8h__dep__incl.pdf b/Doc/latex/general__spi_8h__dep__incl.pdf
index 458dc12..284ee2b 100644
Binary files a/Doc/latex/general__spi_8h__dep__incl.pdf and b/Doc/latex/general__spi_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__spi_8h__incl.pdf b/Doc/latex/general__spi_8h__incl.pdf
index 807ab2a..27a8875 100644
Binary files a/Doc/latex/general__spi_8h__incl.pdf and b/Doc/latex/general__spi_8h__incl.pdf differ
diff --git a/Doc/latex/general__tim_8c__incl.pdf b/Doc/latex/general__tim_8c__incl.pdf
index 177f001..6449f65 100644
Binary files a/Doc/latex/general__tim_8c__incl.pdf and b/Doc/latex/general__tim_8c__incl.pdf differ
diff --git a/Doc/latex/general__tim_8h__dep__incl.pdf b/Doc/latex/general__tim_8h__dep__incl.pdf
index 47e8c57..3838a8d 100644
Binary files a/Doc/latex/general__tim_8h__dep__incl.pdf and b/Doc/latex/general__tim_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__tim_8h__incl.pdf b/Doc/latex/general__tim_8h__incl.pdf
index 23f6352..0bea05b 100644
Binary files a/Doc/latex/general__tim_8h__incl.pdf and b/Doc/latex/general__tim_8h__incl.pdf differ
diff --git a/Doc/latex/general__uart_8c__incl.pdf b/Doc/latex/general__uart_8c__incl.pdf
index 0d6d63e..5f7b469 100644
Binary files a/Doc/latex/general__uart_8c__incl.pdf and b/Doc/latex/general__uart_8c__incl.pdf differ
diff --git a/Doc/latex/general__uart_8h__dep__incl.pdf b/Doc/latex/general__uart_8h__dep__incl.pdf
index c0c2040..055d1c4 100644
Binary files a/Doc/latex/general__uart_8h__dep__incl.pdf and b/Doc/latex/general__uart_8h__dep__incl.pdf differ
diff --git a/Doc/latex/general__uart_8h__incl.pdf b/Doc/latex/general__uart_8h__incl.pdf
index ccac83a..51da014 100644
Binary files a/Doc/latex/general__uart_8h__incl.pdf and b/Doc/latex/general__uart_8h__incl.pdf differ
diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5 b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5
new file mode 100644
index 0000000..a1ee85e
--- /dev/null
+++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.md5
@@ -0,0 +1 @@
+15b595630eeca30c57a018017bc540ba
\ No newline at end of file
diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf
new file mode 100644
index 0000000..0cab24d
Binary files /dev/null and b/Doc/latex/group___b_e_n_c_h___t_i_m_e.pdf differ
diff --git a/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex
new file mode 100644
index 0000000..46cb9e6
--- /dev/null
+++ b/Doc/latex/group___b_e_n_c_h___t_i_m_e.tex
@@ -0,0 +1,288 @@
+\doxysubsubsection{Time measurement }
+\hypertarget{group___b_e_n_c_h___t_i_m_e}{}\label{group___b_e_n_c_h___t_i_m_e}\index{Time measurement@{Time measurement}}
+
+
+Библиотека для измерения времени/тиков между событиями
+
+
+Collaboration diagram for Time measurement\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=291pt]{group___b_e_n_c_h___t_i_m_e}
+\end{center}
+\end{figure}
+\doxysubsubsubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура статистики измерений \end{DoxyCompactList}\item
+struct \mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура канала измерения \end{DoxyCompactList}\item
+struct \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Основная структура менеджера измерений \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{Bench\+Time\+\_\+\+Init}} (void)
+\begin{DoxyCompactList}\small\item\em Инициализация системы измерения времени \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{Bench\+Time\+\_\+\+Start}} (uint8\+\_\+t channel, uint32\+\_\+t ticks, uint32\+\_\+t tick\+\_\+period)
+\begin{DoxyCompactList}\small\item\em Начало измерения на указанном канале \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{Bench\+Time\+\_\+\+End}} (uint8\+\_\+t channel, uint32\+\_\+t ticks)
+\begin{DoxyCompactList}\small\item\em Окончание измерения на указанном канале \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{Bench\+Time\+\_\+\+Get\+Min}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение минимального времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{Bench\+Time\+\_\+\+Get\+Max}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение максимального времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{Bench\+Time\+\_\+\+Get\+Average}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение среднего времени измерения \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{Bench\+Time\+\_\+\+Get\+Count}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение количества измерений \end{DoxyCompactList}\item
+static uint32\+\_\+t \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}{Bench\+Time\+\_\+\+Get\+Last}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Получение последнего измеренного времени \end{DoxyCompactList}\item
+static void \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}{Bench\+Time\+\_\+\+Reset\+Stats}} (uint8\+\_\+t channel)
+\begin{DoxyCompactList}\small\item\em Сброс статистики для канала \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+static \mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}{hbt}} = \{0\}
+\begin{DoxyCompactList}\small\item\em Внутренний экземпляр \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsubsubsection{Detailed Description}
+Библиотека для измерения времени/тиков между событиями
+
+Поддерживает\+:
+\begin{DoxyItemize}
+\item Многоканальные измерения (несколько независимых таймеров)
+\item Платформонезависимый интерфейс
+\item Измерение в тиках или временных единицах
+\item Статистику измерений (мин/макс/среднее)
+\item Настраиваемый размер тиков для каждого канала
+\end{DoxyItemize}
+
+Параметры для конфигурации\+:
+\begin{DoxyItemize}
+\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE} -\/ Включить бенч времени
+\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS} -\/ Максимальное количество каналов измерения (по умолчанию 8)
+\end{DoxyItemize}
+
+\begin{DoxyParagraph}{Пример использования\+:}
+
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Инициализация}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}{BenchTime\_Init}}();}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ SysTick}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(0,\ HAL\_GetTick,\ 0xFFFFFFFF);}
+\DoxyCodeLine{some\_function();}
+\DoxyCodeLine{uint32\_t\ time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(0,\ HAL\_GetTick);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ TIM2\ (16-\/бит)}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(1,\ TIM2-\/>CNT,\ 0xFFFF);}
+\DoxyCodeLine{fast\_function();\ }
+\DoxyCodeLine{uint32\_t\ time2\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(1,\ TIM2-\/>CNT);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Измерение\ с\ DWT\ цикловым\ счетчиком}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(2,\ DWT-\/>CYCCNT,\ 0xFFFFFFFF);}
+\DoxyCodeLine{critical\_function();}
+\DoxyCodeLine{uint32\_t\ cycles\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(2,\ DWT-\/>CYCCNT);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Многоканальное\ измерение}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(0,\ HAL\_GetTick,\ 1000);\ \ \ \ \ \ \ \ \textcolor{comment}{//\ общее\ время}}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(1,\ TIM3-\/>CNT,\ 500);\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ часть\ 1}}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ ...\ код\ 1}}
+\DoxyCodeLine{}
+\DoxyCodeLine{uint32\_t\ part1\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(1,\ TIM3-\/>CNT);}
+\DoxyCodeLine{\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}{BenchTime\_Start}}(2,\ TIM4-\/>CNT,\ 200);\ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ часть\ 2\ \ }}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ ...\ код\ 2}}
+\DoxyCodeLine{}
+\DoxyCodeLine{uint32\_t\ part2\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(2,\ TIM4-\/>CNT);}
+\DoxyCodeLine{uint32\_t\ total\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}{BenchTime\_End}}(0,\ HAL\_GetTick);\ \textcolor{comment}{//\ общее\ время}}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Статистика}}
+\DoxyCodeLine{uint32\_t\ min\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}{BenchTime\_GetMin}}(0);}
+\DoxyCodeLine{uint32\_t\ max\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}{BenchTime\_GetMax}}(0);}
+\DoxyCodeLine{uint32\_t\ avg\_time\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}{BenchTime\_GetAverage}}(0);}
+\DoxyCodeLine{uint32\_t\ count\ =\ \mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}{BenchTime\_GetCount}}(0);}
+
+\end{DoxyCode}
+
+\end{DoxyParagraph}
+
+
+\label{doc-func-members}
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_doc-func-members}
+\doxysubsubsubsection{Function Documentation}
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}\index{Time measurement@{Time measurement}!BenchTime\_Init@{BenchTime\_Init}}
+\index{BenchTime\_Init@{BenchTime\_Init}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_Init()}{BenchTime\_Init()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gabb7a665a9603ea2e4dbc4432e8cb6054}
+void Bench\+Time\+\_\+\+Init (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Инициализация системы измерения времени
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00111}{111}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}\index{Time measurement@{Time measurement}!BenchTime\_Start@{BenchTime\_Start}}
+\index{BenchTime\_Start@{BenchTime\_Start}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_Start()}{BenchTime\_Start()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gac65338df38129964ce3e9d9cb2fcb349}
+uint32\+\_\+t Bench\+Time\+\_\+\+Start (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{, }\item[{uint32\+\_\+t}]{ticks}{, }\item[{uint32\+\_\+t}]{tick\+\_\+period}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Начало измерения на указанном канале
+
+
+\begin{DoxyParams}{Parameters}
+{\em channel} & Номер канала (0..BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS-\/1) \\
+\hline
+{\em ticks} & Источник тиков (например\+: HAL\+\_\+\+Get\+Tick(), TIM2-\/\texorpdfstring{$>$}{>}CNT, DWT-\/\texorpdfstring{$>$}{>}CYCCNT) \\
+\hline
+{\em tick\+\_\+period} & Период тиков для переполнения \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+1 -\/ успех, 0 -\/ ошибка
+\end{DoxyReturn}
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00131}{131}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}\index{Time measurement@{Time measurement}!BenchTime\_End@{BenchTime\_End}}
+\index{BenchTime\_End@{BenchTime\_End}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_End()}{BenchTime\_End()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga47a69851a2089140eac00cde18a12439}
+uint32\+\_\+t Bench\+Time\+\_\+\+End (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{, }\item[{uint32\+\_\+t}]{ticks}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Окончание измерения на указанном канале
+
+
+\begin{DoxyParams}{Parameters}
+{\em channel} & Номер канала (0..BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS-\/1) \\
+\hline
+{\em ticks} & Источник тиков (должен быть тот же что в Start) \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+Измеренное время в тиках, 0 -\/ в случае ошибки
+\end{DoxyReturn}
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00147}{147}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}\index{Time measurement@{Time measurement}!BenchTime\_GetMin@{BenchTime\_GetMin}}
+\index{BenchTime\_GetMin@{BenchTime\_GetMin}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetMin()}{BenchTime\_GetMin()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga273d45255fe4403fc25648d60cca7705}
+uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Min (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Получение минимального времени измерения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00189}{189}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}\index{Time measurement@{Time measurement}!BenchTime\_GetMax@{BenchTime\_GetMax}}
+\index{BenchTime\_GetMax@{BenchTime\_GetMax}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetMax()}{BenchTime\_GetMax()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga07e27d7b169c9fa1abd57281bb4e374e}
+uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Max (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Получение максимального времени измерения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00197}{197}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}\index{Time measurement@{Time measurement}!BenchTime\_GetAverage@{BenchTime\_GetAverage}}
+\index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetAverage()}{BenchTime\_GetAverage()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga24e2450d5ea921074ec5d7a1e4d56ba8}
+uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Average (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Получение среднего времени измерения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00205}{205}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}\index{Time measurement@{Time measurement}!BenchTime\_GetCount@{BenchTime\_GetCount}}
+\index{BenchTime\_GetCount@{BenchTime\_GetCount}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetCount()}{BenchTime\_GetCount()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gabd1301ca79a30c782970f89fd147df3a}
+uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Count (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Получение количества измерений
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00215}{215}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}\index{Time measurement@{Time measurement}!BenchTime\_GetLast@{BenchTime\_GetLast}}
+\index{BenchTime\_GetLast@{BenchTime\_GetLast}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_GetLast()}{BenchTime\_GetLast()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_gacf3a738d6423d71b238058a63558a4ed}
+uint32\+\_\+t Bench\+Time\+\_\+\+Get\+Last (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Получение последнего измеренного времени
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00223}{223}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}\index{Time measurement@{Time measurement}!BenchTime\_ResetStats@{BenchTime\_ResetStats}}
+\index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{BenchTime\_ResetStats()}{BenchTime\_ResetStats()}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga31a6b2b181b92bcb15f46758f5d57f35}
+void Bench\+Time\+\_\+\+Reset\+Stats (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{channel}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}
+
+
+
+Сброс статистики для канала
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00231}{231}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+\label{doc-var-members}
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_doc-var-members}
+\doxysubsubsubsection{Variable Documentation}
+\Hypertarget{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}\index{Time measurement@{Time measurement}!hbt@{hbt}}
+\index{hbt@{hbt}!Time measurement@{Time measurement}}
+\doxysubsubsubsubsection{\texorpdfstring{hbt}{hbt}}
+{\footnotesize\ttfamily \label{group___b_e_n_c_h___t_i_m_e_ga8e53ef7f7df233bd4e737a87bb203d9d}
+\mbox{\hyperlink{struct_bench_time__t}{Bench\+Time\+\_\+t}} hbt = \{0\}\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Внутренний экземпляр
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00106}{106}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
diff --git a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf
index 2c8efa8..01802db 100644
Binary files a/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf
index 4b406c4..cde6412 100644
Binary files a/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___d_e_l_a_y_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf
index a551bb6..7ab8673 100644
Binary files a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5 b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5
deleted file mode 100644
index 53dee98..0000000
--- a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.md5
+++ /dev/null
@@ -1 +0,0 @@
-0e28d80dcd04448aed641d64d20b3125
\ No newline at end of file
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf
deleted file mode 100644
index 1b1d8ab..0000000
Binary files a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.pdf and /dev/null differ
diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex
deleted file mode 100644
index ababb3b..0000000
--- a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex
+++ /dev/null
@@ -1,76 +0,0 @@
-\doxysubsubsection{Evolve configs }
-\hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g}{}\label{group___e_v_o_l_v_e___c_o_n_f_i_g}\index{Evolve configs@{Evolve configs}}
-
-
-Конфигурация однослойного персептрона и алгоритма обучения
-
-
-Collaboration diagram for Evolve configs\+:
-\nopagebreak
-\begin{figure}[H]
-\begin{center}
-\leavevmode
-\includegraphics[width=246pt]{group___e_v_o_l_v_e___c_o_n_f_i_g}
-\end{center}
-\end{figure}
-\doxysubsubsubsubsection*{Macros}
-\begin{DoxyCompactItemize}
-\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}}
-\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS}}~20
-\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
-\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\end{DoxyCompactItemize}
-
-
-\doxysubsubsubsection{Detailed Description}
-Конфигурация однослойного персептрона и алгоритма обучения
-
-
-
-\label{doc-define-members}
-\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_doc-define-members}
-\doxysubsubsubsection{Macro Definition Documentation}
-\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}\index{Evolve configs@{Evolve configs}!ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}}
-\index{ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}!Evolve configs@{Evolve configs}}
-\doxysubsubsubsubsection{\texorpdfstring{ENABLE\_EVOLVE\_OPTIMIZATION}{ENABLE\_EVOLVE\_OPTIMIZATION}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}
-\#define ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}
-
-
-
-Включить оптимизацию параметров
-
-
-
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}}
-\index{EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}!Evolve configs@{Evolve configs}}
-\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_PARAMS}{EVOLVE\_MAX\_PARAMS}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}
-\#define EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS~20}
-
-
-
-Максимальное количество параметров
-
-
-
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}}
-\index{EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}!Evolve configs@{Evolve configs}}
-\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_CANDIDATES}{EVOLVE\_MAX\_CANDIDATES}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}
-\#define EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES~100}
-
-
-
-Максимальное количество кандидатов для обучения
-
-
-
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00066}{66}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
-
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5 b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5
deleted file mode 100644
index b136329..0000000
--- a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.md5
+++ /dev/null
@@ -1 +0,0 @@
-222e7e00155a235ae6b55b58801480e4
\ No newline at end of file
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf
deleted file mode 100644
index 86f3e87..0000000
Binary files a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.pdf and /dev/null differ
diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex
deleted file mode 100644
index fc8f22f..0000000
--- a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex
+++ /dev/null
@@ -1,253 +0,0 @@
-\doxysubsubsection{Evolve optimizer }
-\hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}\index{Evolve optimizer@{Evolve optimizer}}
-
-
-Библиотека для эволюционного подбора параметров
-
-
-Collaboration diagram for Evolve optimizer\+:
-\nopagebreak
-\begin{figure}[H]
-\begin{center}
-\leavevmode
-\includegraphics[width=280pt]{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}
-\end{center}
-\end{figure}
-\doxysubsubsubsubsection*{Classes}
-\begin{DoxyCompactItemize}
-\item
-struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
-\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
-\doxysubsubsubsubsection*{Macros}
-\begin{DoxyCompactItemize}
-\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)
-\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)
-\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10
-\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100
-\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2
-\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize}
-\doxysubsubsubsubsection*{Functions}
-\begin{DoxyCompactItemize}
-\item
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params)
-\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss)
-\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}
-
-
-\doxysubsubsubsection{Detailed Description}
-Библиотека для эволюционного подбора параметров
-
-Поддерживает\+:
-\begin{DoxyItemize}
-\item Любое количество параметров
-\item Генерацию новых параметров на основе лучших кандидатов
-\item Мутацию для поиска оптимальных параметров
-\item Несколько независимых оптимизаторов в одной программе
-\end{DoxyItemize}
-
-Параметры для конфигурации\+:
-\begin{DoxyItemize}
-\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}, то вставляются заглушки, никак не влияющие на параметры и остальную программу
-\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров
-\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения
-\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%)
-\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%)
-\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений
-\end{DoxyItemize}
-
-\begin{DoxyParagraph}{Пример использования\+:}
-
-\begin{DoxyCode}{0}
-\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}}
-\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
-\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
-\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
-\DoxyCodeLine{\textcolor{preprocessor}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}}
-\DoxyCodeLine{\textcolor{keywordtype}{float}\ params[N\_PARAMS];}
-\DoxyCodeLine{\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ optimizer;}
-\DoxyCodeLine{}
-\DoxyCodeLine{\textcolor{comment}{//\ Формирование\ параметров}}
-\DoxyCodeLine{uint16\_t\ \ param\_u16\ =\ 800;}
-\DoxyCodeLine{\textcolor{keywordtype}{float}\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}
-\DoxyCodeLine{uint8\_t\ \ \ param\_u8\ \ =\ 40;}
-\DoxyCodeLine{int16\_t\ \ \ param\_i16\ =\ 1600;}
-\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}
-\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);}
-\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}
-\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);}
-\DoxyCodeLine{}
-\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}}
-\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}
-\DoxyCodeLine{}
-\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}}
-\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}}
-\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\&optimizer,\ params,\ loss);}
-\DoxyCodeLine{}
-\DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
-\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);}
-\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[1],\ \ 0.001f,\ 0.1f);}
-\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);}
-\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);}
-
-\end{DoxyCode}
-
-\end{DoxyParagraph}
-
-
-\label{doc-define-members}
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-define-members}
-\doxysubsubsubsection{Macro Definition Documentation}
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE@{PARAM\_SCALE}}
-\index{PARAM\_SCALE@{PARAM\_SCALE}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}
-\#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
-
-{\bfseries Value\+:}
-\begin{DoxyCode}{0}
-\DoxyCodeLine{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}
-
-\end{DoxyCode}
-
-
-Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1)
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}}
-\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}
-\#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
-
-{\bfseries Value\+:}
-\begin{DoxyCode}{0}
-\DoxyCodeLine{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}
-
-\end{DoxyCode}
-
-
-Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}.
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}}
-\index{EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MIN\_PCT}{EVOLVE\_MUTATION\_MIN\_PCT}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}
-\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10}
-
-
-
-Минимальная мутация (в процентах от Loss)
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}}
-\index{EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MAX\_PCT}{EVOLVE\_MUTATION\_MAX\_PCT}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}
-\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100}
-
-
-
-Максимальная мутация (в процентах от Loss)
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\index{Evolve optimizer@{Evolve optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}}
-\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}
-\#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2}
-
-
-
-Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-
-
-\label{doc-func-members}
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-func-members}
-\doxysubsubsubsection{Function Documentation}
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Init@{EvolveOptimizer\_Init}}
-\index{EvolveOptimizer\_Init@{EvolveOptimizer\_Init}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Init()}{EvolveOptimizer\_Init()}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{float}]{mutation\+\_\+amp}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})}
-
-
-
-Инициализация эволюционного оптимизатора.
-
-
-\begin{DoxyParams}{Parameters}
-{\em opt} & Указатель на структуру оптимизатора \\
-\hline
-{\em n\+\_\+params} & Количество параметров в одном кандидате \\
-\hline
-{\em n\+\_\+cand} & Количество кандидатов \\
-\hline
-{\em n\+\_\+best} & Количество лучших, усредняемых \\
-\hline
-{\em mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\
-\hline
-{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\
-\hline
-\end{DoxyParams}
-\begin{DoxyReturn}{Returns}
-0 — если окей, -\/1 — если ошибка
-\end{DoxyReturn}
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00155}{155}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Step@{EvolveOptimizer\_Step}}
-\index{EvolveOptimizer\_Step@{EvolveOptimizer\_Step}!Evolve optimizer@{Evolve optimizer}}
-\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Step()}{EvolveOptimizer\_Step()}}
-{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}
-\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{float}]{loss}{}\end{DoxyParamCaption})}
-
-
-
-Один шаг эволюционного оптимизатора.
-
-
-\begin{DoxyParams}{Parameters}
-{\em opt} & Указатель на структуру оптимизатора \\
-\hline
-{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\
-\hline
-{\em loss} & Loss текущего кандидата \\
-\hline
-\end{DoxyParams}
-\begin{DoxyReturn}{Returns}
-0 — если окей, -\/1 — если ошибка
-\end{DoxyReturn}
-Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации.
-
-На выходе params содержит параметры следующего кандидата для измерений. \begin{DoxyNote}{Note}
-Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени
-\end{DoxyNote}
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5 b/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5
new file mode 100644
index 0000000..d496a11
--- /dev/null
+++ b/Doc/latex/group___g_e_n___c_o_n_f_i_g.md5
@@ -0,0 +1 @@
+5f0295c96943053471a3de806e4b1afd
\ No newline at end of file
diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf b/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf
new file mode 100644
index 0000000..7114735
Binary files /dev/null and b/Doc/latex/group___g_e_n___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex
new file mode 100644
index 0000000..dc3c7d1
--- /dev/null
+++ b/Doc/latex/group___g_e_n___c_o_n_f_i_g.tex
@@ -0,0 +1,108 @@
+\doxysubsubsection{Genetic configs }
+\hypertarget{group___g_e_n___c_o_n_f_i_g}{}\label{group___g_e_n___c_o_n_f_i_g}\index{Genetic configs@{Genetic configs}}
+
+
+Конфигурация генетического алгоритма обучения
+
+
+Collaboration diagram for Genetic configs\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=250pt]{group___g_e_n___c_o_n_f_i_g}
+\end{center}
+\end{figure}
+\doxysubsubsubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}}
+\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS}}~20
+\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
+\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE}}
+\begin{DoxyCompactList}\small\item\em Включить бенч времени \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}~16
+\begin{DoxyCompactList}\small\item\em Максимальное количество каналов измерения \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsubsubsection{Detailed Description}
+Конфигурация генетического алгоритма обучения
+
+
+
+\label{doc-define-members}
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_doc-define-members}
+\doxysubsubsubsection{Macro Definition Documentation}
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}\index{Genetic configs@{Genetic configs}!GEN\_OPTIMIZATION\_ENABLE@{GEN\_OPTIMIZATION\_ENABLE}}
+\index{GEN\_OPTIMIZATION\_ENABLE@{GEN\_OPTIMIZATION\_ENABLE}!Genetic configs@{Genetic configs}}
+\doxysubsubsubsubsection{\texorpdfstring{GEN\_OPTIMIZATION\_ENABLE}{GEN\_OPTIMIZATION\_ENABLE}}
+{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}
+\#define GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}
+
+
+
+Включить оптимизацию параметров
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}\index{Genetic configs@{Genetic configs}!GEN\_MAX\_PARAMS@{GEN\_MAX\_PARAMS}}
+\index{GEN\_MAX\_PARAMS@{GEN\_MAX\_PARAMS}!Genetic configs@{Genetic configs}}
+\doxysubsubsubsubsection{\texorpdfstring{GEN\_MAX\_PARAMS}{GEN\_MAX\_PARAMS}}
+{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}
+\#define GEN\+\_\+\+MAX\+\_\+\+PARAMS~20}
+
+
+
+Максимальное количество параметров
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}\index{Genetic configs@{Genetic configs}!GEN\_MAX\_CANDIDATES@{GEN\_MAX\_CANDIDATES}}
+\index{GEN\_MAX\_CANDIDATES@{GEN\_MAX\_CANDIDATES}!Genetic configs@{Genetic configs}}
+\doxysubsubsubsubsection{\texorpdfstring{GEN\_MAX\_CANDIDATES}{GEN\_MAX\_CANDIDATES}}
+{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}
+\#define GEN\+\_\+\+MAX\+\_\+\+CANDIDATES~100}
+
+
+
+Максимальное количество кандидатов для обучения
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00066}{66}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}\index{Genetic configs@{Genetic configs}!BENCH\_TIME\_ENABLE@{BENCH\_TIME\_ENABLE}}
+\index{BENCH\_TIME\_ENABLE@{BENCH\_TIME\_ENABLE}!Genetic configs@{Genetic configs}}
+\doxysubsubsubsubsection{\texorpdfstring{BENCH\_TIME\_ENABLE}{BENCH\_TIME\_ENABLE}}
+{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}
+\#define BENCH\+\_\+\+TIME\+\_\+\+ENABLE}
+
+
+
+Включить бенч времени
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00081}{81}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
+\Hypertarget{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}\index{Genetic configs@{Genetic configs}!BENCH\_TIME\_MAX\_CHANNELS@{BENCH\_TIME\_MAX\_CHANNELS}}
+\index{BENCH\_TIME\_MAX\_CHANNELS@{BENCH\_TIME\_MAX\_CHANNELS}!Genetic configs@{Genetic configs}}
+\doxysubsubsubsubsection{\texorpdfstring{BENCH\_TIME\_MAX\_CHANNELS}{BENCH\_TIME\_MAX\_CHANNELS}}
+{\footnotesize\ttfamily \label{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}
+\#define BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS~16}
+
+
+
+Максимальное количество каналов измерения
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+
diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5 b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5
new file mode 100644
index 0000000..63165ab
--- /dev/null
+++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.md5
@@ -0,0 +1 @@
+ec124a446898cfdeeba090736e9d2802
\ No newline at end of file
diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf
new file mode 100644
index 0000000..5b112d2
Binary files /dev/null and b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.pdf differ
diff --git a/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex
new file mode 100644
index 0000000..7551dba
--- /dev/null
+++ b/Doc/latex/group___g_e_n___o_p_t_i_m_i_z_e_r.tex
@@ -0,0 +1,253 @@
+\doxysubsubsection{Genetic optimizer }
+\hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r}{}\label{group___g_e_n___o_p_t_i_m_i_z_e_r}\index{Genetic optimizer@{Genetic optimizer}}
+
+
+Библиотека для эволюционного подбора параметров
+
+
+Collaboration diagram for Genetic optimizer\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=284pt]{group___g_e_n___o_p_t_i_m_i_z_e_r}
+\end{center}
+\end{figure}
+\doxysubsubsubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}}
+\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)
+\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10
+\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100
+\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2
+\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{Gen\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params)
+\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item
+static int \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{Gen\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss)
+\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsubsubsection{Detailed Description}
+Библиотека для эволюционного подбора параметров
+
+Поддерживает\+:
+\begin{DoxyItemize}
+\item Любое количество параметров
+\item Генерацию новых параметров на основе лучших кандидатов
+\item Мутацию для поиска оптимальных параметров
+\item Несколько независимых оптимизаторов в одной программе
+\end{DoxyItemize}
+
+Параметры для конфигурации\+:
+\begin{DoxyItemize}
+\item \doxylink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}, то вставляются заглушки, никак не влияющие на параметры и остальную программу
+\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров
+\item \doxylink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения
+\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}{GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%)
+\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}{GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%)
+\item (опционально) \doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений
+\end{DoxyItemize}
+
+\begin{DoxyParagraph}{Пример использования\+:}
+
+\begin{DoxyCode}{0}
+\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_optimizer.h}}"{}}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
+\DoxyCodeLine{\textcolor{preprocessor}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}}
+\DoxyCodeLine{\textcolor{keywordtype}{float}\ params[N\_PARAMS];}
+\DoxyCodeLine{\mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}}\ optimizer;}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Формирование\ параметров}}
+\DoxyCodeLine{uint16\_t\ \ param\_u16\ =\ 800;}
+\DoxyCodeLine{\textcolor{keywordtype}{float}\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}
+\DoxyCodeLine{uint8\_t\ \ \ param\_u8\ \ =\ 40;}
+\DoxyCodeLine{int16\_t\ \ \ param\_i16\ =\ 1600;}
+\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}
+\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);}
+\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}
+\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}}
+\DoxyCodeLine{\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}{GenOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}}
+\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}}
+\DoxyCodeLine{\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}{GenOptimizer\_Step}}(\&optimizer,\ params,\ loss);}
+\DoxyCodeLine{}
+\DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
+\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);}
+\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[1],\ \ 0.001f,\ 0.1f);}
+\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);}
+\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);}
+
+\end{DoxyCode}
+
+\end{DoxyParagraph}
+
+
+\label{doc-define-members}
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_doc-define-members}
+\doxysubsubsubsection{Macro Definition Documentation}
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}\index{Genetic optimizer@{Genetic optimizer}!PARAM\_SCALE@{PARAM\_SCALE}}
+\index{PARAM\_SCALE@{PARAM\_SCALE}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}
+\#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}
+
+\end{DoxyCode}
+
+
+Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1)
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Genetic optimizer@{Genetic optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}}
+\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}
+\#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}
+
+\end{DoxyCode}
+
+
+Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}.
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}}
+\index{GEN\_MUTATION\_MIN\_PCT@{GEN\_MUTATION\_MIN\_PCT}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{GEN\_MUTATION\_MIN\_PCT}{GEN\_MUTATION\_MIN\_PCT}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga3db7bdf57549722427e1e72dcaa87068}
+\#define GEN\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10}
+
+
+
+Минимальная мутация (в процентах от Loss)
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}\index{Genetic optimizer@{Genetic optimizer}!GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}}
+\index{GEN\_MUTATION\_MAX\_PCT@{GEN\_MUTATION\_MAX\_PCT}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{GEN\_MUTATION\_MAX\_PCT}{GEN\_MUTATION\_MAX\_PCT}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga48dca8f0a0c9b96d02236ef76ac827fd}
+\#define GEN\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100}
+
+
+
+Максимальная мутация (в процентах от Loss)
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\index{Genetic optimizer@{Genetic optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}}
+\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}
+\#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2}
+
+
+
+Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+
+
+\label{doc-func-members}
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_doc-func-members}
+\doxysubsubsubsection{Function Documentation}
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}\index{Genetic optimizer@{Genetic optimizer}!GenOptimizer\_Init@{GenOptimizer\_Init}}
+\index{GenOptimizer\_Init@{GenOptimizer\_Init}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{GenOptimizer\_Init()}{GenOptimizer\_Init()}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_ga2db1df46b4082ad9280ef4344fdf4e8a}
+int Gen\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{float}]{mutation\+\_\+amp}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Инициализация эволюционного оптимизатора.
+
+
+\begin{DoxyParams}{Parameters}
+{\em opt} & Указатель на структуру оптимизатора \\
+\hline
+{\em n\+\_\+params} & Количество параметров в одном кандидате \\
+\hline
+{\em n\+\_\+cand} & Количество кандидатов \\
+\hline
+{\em n\+\_\+best} & Количество лучших, усредняемых \\
+\hline
+{\em mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\
+\hline
+{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+0 — если окей, -\/1 — если ошибка
+\end{DoxyReturn}
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00155}{155}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}\index{Genetic optimizer@{Genetic optimizer}!GenOptimizer\_Step@{GenOptimizer\_Step}}
+\index{GenOptimizer\_Step@{GenOptimizer\_Step}!Genetic optimizer@{Genetic optimizer}}
+\doxysubsubsubsubsection{\texorpdfstring{GenOptimizer\_Step()}{GenOptimizer\_Step()}}
+{\footnotesize\ttfamily \label{group___g_e_n___o_p_t_i_m_i_z_e_r_gaa9a4c4f43f7beb926c85bd4817ebd628}
+int Gen\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_gen_optimizer__t}{Gen\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{float}]{loss}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Один шаг эволюционного оптимизатора.
+
+
+\begin{DoxyParams}{Parameters}
+{\em opt} & Указатель на структуру оптимизатора \\
+\hline
+{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\
+\hline
+{\em loss} & Loss текущего кандидата \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+0 — если окей, -\/1 — если ошибка
+\end{DoxyReturn}
+Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации.
+
+На выходе params содержит параметры следующего кандидата для измерений. \begin{DoxyNote}{Note}
+Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени
+\end{DoxyNote}
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
diff --git a/Doc/latex/group___g_p_i_o___i_n_i_t.pdf b/Doc/latex/group___g_p_i_o___i_n_i_t.pdf
index 82aa69e..7c35f0b 100644
Binary files a/Doc/latex/group___g_p_i_o___i_n_i_t.pdf and b/Doc/latex/group___g_p_i_o___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf
index 90d5a86..05aa1ff 100644
Binary files a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf and b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
index f01d1d5..b1d0342 100644
--- a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
+++ b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex
@@ -18,7 +18,7 @@ Collaboration diagram for Libraries configs\+:
\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}()
\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}}
+\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{INCLUDE\+\_\+\+GEN\+\_\+\+OPTIMIZER}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку для оптимизации параметров \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку с typedef с битовыми полями \end{DoxyCompactList}\item
@@ -57,13 +57,13 @@ Collaboration diagram for Libraries configs\+:
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00097}{97}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
-\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}\index{Libraries configs@{Libraries configs}!INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}}
-\index{INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}!Libraries configs@{Libraries configs}}
-\doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_EVOLVE\_OPTIMIZER}{INCLUDE\_EVOLVE\_OPTIMIZER}}
-{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}
-\#define INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}
+\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}\index{Libraries configs@{Libraries configs}!INCLUDE\_GEN\_OPTIMIZER@{INCLUDE\_GEN\_OPTIMIZER}}
+\index{INCLUDE\_GEN\_OPTIMIZER@{INCLUDE\_GEN\_OPTIMIZER}!Libraries configs@{Libraries configs}}
+\doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_GEN\_OPTIMIZER}{INCLUDE\_GEN\_OPTIMIZER}}
+{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}
+\#define INCLUDE\+\_\+\+GEN\+\_\+\+OPTIMIZER}
@@ -71,7 +71,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00099}{99}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}\index{Libraries configs@{Libraries configs}!INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}}
\index{INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}!Libraries configs@{Libraries configs}}
@@ -85,7 +85,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00100}{100}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}}
\index{INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}!Libraries configs@{Libraries configs}}
@@ -99,7 +99,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00084}{84}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00101}{101}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}}
\index{INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}!Libraries configs@{Libraries configs}}
@@ -113,7 +113,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00084}{84}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00085}{85}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00102}{102}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}\index{Libraries configs@{Libraries configs}!INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}}
\index{INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}!Libraries configs@{Libraries configs}}
@@ -127,7 +127,7 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00085}{85}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00086}{86}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00103}{103}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}\index{Libraries configs@{Libraries configs}!FREERTOS\_DELAY@{FREERTOS\_DELAY}}
\index{FREERTOS\_DELAY@{FREERTOS\_DELAY}!Libraries configs@{Libraries configs}}
@@ -141,5 +141,5 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00086}{86}} of fil
-Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00087}{87}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00104}{104}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}.
diff --git a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf
index 4d52e25..9dc1317 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf and b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.pdf differ
diff --git a/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf b/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf
index 64f21f2..a1fad2b 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf and b/Doc/latex/group___m_y___l_i_b_s___s_p_i.pdf differ
diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf b/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf
index 9211750..6691623 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf and b/Doc/latex/group___m_y___l_i_b_s___t_i_m.pdf differ
diff --git a/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf b/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf
index afbf5dc..78e9165 100644
Binary files a/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf and b/Doc/latex/group___m_y___l_i_b_s___u_a_r_t.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf
index d4ded15..7a54923 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___a_l_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5 b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
index 3f02def..34ea56a 100644
--- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
+++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.md5
@@ -1 +1 @@
-e39777f4e691429c305a230cb7233db5
\ No newline at end of file
+d391fab11da478dd495954b9be42bbb6
\ No newline at end of file
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf
index fc97eb7..3eddb63 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf and b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
index 843cfc2..35e80d3 100644
--- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex
@@ -18,8 +18,8 @@ Collaboration diagram for Configs\+:
\item
\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g}{Trace configs}}
\begin{DoxyCompactList}\small\item\em Конфигурация трекеров и трассировки \end{DoxyCompactList}\item
-\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g}{Evolve configs}}
-\begin{DoxyCompactList}\small\item\em Конфигурация однослойного персептрона и алгоритма обучения \end{DoxyCompactList}\item
+\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g}{Genetic configs}}
+\begin{DoxyCompactList}\small\item\em Конфигурация генетического алгоритма обучения \end{DoxyCompactList}\item
\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g}{Libraries configs}}
\begin{DoxyCompactList}\small\item\em Подключение различных модулей библиотеки \end{DoxyCompactList}\end{DoxyCompactItemize}
@@ -28,5 +28,5 @@ Collaboration diagram for Configs\+:
Конфигурации для библиотек My\+Libs.
\input{group___t_r_a_c_e___c_o_n_f_i_g}
-\input{group___e_v_o_l_v_e___c_o_n_f_i_g}
+\input{group___g_e_n___c_o_n_f_i_g}
\input{group___l_i_b_s___c_o_n_f_i_g}
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5 b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
index 21a4273..01910aa 100644
--- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
+++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.md5
@@ -1 +1 @@
-e21133381fcfb6b51ca1c555273b8ce6
\ No newline at end of file
+264808d6452fadd8a8ce8eeb10b2b251
\ No newline at end of file
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf
index fe2af8c..a54e0d1 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
index d32e230..da314e2 100644
--- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex
@@ -18,7 +18,9 @@ Collaboration diagram for General Tools\+:
\item
\mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}}
\begin{DoxyCompactList}\small\item\em Макросы и typedef\textquotesingle{}ы для работы с битами в unsigned типах. \end{DoxyCompactList}\item
-\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer}}
+\mbox{\hyperlink{group___b_e_n_c_h___t_i_m_e}{Time measurement}}
+\begin{DoxyCompactList}\small\item\em Библиотека для измерения времени/тиков между событиями \end{DoxyCompactList}\item
+\mbox{\hyperlink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic optimizer}}
\begin{DoxyCompactList}\small\item\em Библиотека для эволюционного подбора параметров \end{DoxyCompactList}\item
\mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}{Error Handler defines}}
\begin{DoxyCompactList}\small\item\em Дефайны для обработки ошибок \end{DoxyCompactList}\item
@@ -36,7 +38,8 @@ Collaboration diagram for General Tools\+:
Общие макросы и typedef\textquotesingle{}ы, используемые по всему проекту
\input{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}
-\input{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}
+\input{group___b_e_n_c_h___t_i_m_e}
+\input{group___g_e_n___o_p_t_i_m_i_z_e_r}
\input{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}
\input{group___d_e_l_a_y_s___d_e_f_i_n_e_s}
\input{group___u_t_i_l_s___d_e_f_i_n_e_s}
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf
index 01ba29d..3c1d42d 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf
index 233193f..106c61c 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf
index bb025ac..3e4a460 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf and b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf
index 36e36b4..eef90f4 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf
index 0798e4b..f3e73bb 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf
index b71ba93..70d362f 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf
index d765e02..32a3068 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.pdf differ
diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf
index 1864a7c..54f9113 100644
Binary files a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf and b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.pdf differ
diff --git a/Doc/latex/group___s_p_i___i_n_i_t.pdf b/Doc/latex/group___s_p_i___i_n_i_t.pdf
index e6e178a..493f128 100644
Binary files a/Doc/latex/group___s_p_i___i_n_i_t.pdf and b/Doc/latex/group___s_p_i___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___t_i_m___i_n_i_t.pdf b/Doc/latex/group___t_i_m___i_n_i_t.pdf
index 2e60311..ce20232 100644
Binary files a/Doc/latex/group___t_i_m___i_n_i_t.pdf and b/Doc/latex/group___t_i_m___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e.pdf b/Doc/latex/group___t_r_a_c_e.pdf
index 4d0bd7b..81dcda3 100644
Binary files a/Doc/latex/group___t_r_a_c_e.pdf and b/Doc/latex/group___t_r_a_c_e.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf
index b5a80db..73c9287 100644
Binary files a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf and b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf b/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf
index 442e91e..fe7b5f8 100644
Binary files a/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf and b/Doc/latex/group___t_r_a_c_e___g_p_i_o.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf
index 055bed7..77d699f 100644
Binary files a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf and b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
index 6d9fd50..dbb5af5 100644
--- a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
+++ b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex
@@ -25,6 +25,15 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\
\begin{DoxyCompactList}\small\item\em Проверка и вывод последнего Hard\+Fault-\/трейса из Flash. \end{DoxyCompactList}\item
\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\+\_\+\+Handle\+Fault}} (void)
\begin{DoxyCompactList}\small\item\em Обработчик Hard\+Fault. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsubsubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}}
+\item
+static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]}
+\item
+static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\}
+\end{DoxyCompactItemize}
\doxysubsubsubsubsection{Detailed Description}
@@ -135,3 +144,38 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00499}{499}} of file \mbox{
Definition at line \mbox{\hyperlink{trace_8h_source_l00540}{540}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.
+
+
+\label{doc-var-members}
+\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_doc-var-members}
+\doxysubsubsubsubsection{Variable Documentation}
+\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_frame@{stack\_frame}}
+\index{stack\_frame@{stack\_frame}!Hardfault trace defines@{Hardfault trace defines}}
+\doxysubsubsubsubsubsection{\texorpdfstring{stack\_frame}{stack\_frame}}
+{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}
+\mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}}\texorpdfstring{$\ast$}{*} stack\+\_\+frame\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line \mbox{\hyperlink{trace_8h_source_l00523}{523}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.
+
+\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}\index{Hardfault trace defines@{Hardfault trace defines}!stack\_dump@{stack\_dump}}
+\index{stack\_dump@{stack\_dump}!Hardfault trace defines@{Hardfault trace defines}}
+\doxysubsubsubsubsubsection{\texorpdfstring{stack\_dump}{stack\_dump}}
+{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}
+uint32\+\_\+t stack\+\_\+dump\mbox{[}32\mbox{]}\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line \mbox{\hyperlink{trace_8h_source_l00524}{524}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.
+
+\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}\index{Hardfault trace defines@{Hardfault trace defines}!ret\_adr@{ret\_adr}}
+\index{ret\_adr@{ret\_adr}!Hardfault trace defines@{Hardfault trace defines}}
+\doxysubsubsubsubsubsection{\texorpdfstring{ret\_adr}{ret\_adr}}
+{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}
+void\texorpdfstring{$\ast$}{*} ret\+\_\+adr\mbox{[}10\mbox{]} = \{0\}\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line \mbox{\hyperlink{trace_8h_source_l00525}{525}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}.
+
diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf
index 1d09cf9..04f0bcb 100644
Binary files a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf and b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf
index ac623a8..343a3b9 100644
Binary files a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf and b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.pdf differ
diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf
index a695c86..51c35dc 100644
Binary files a/Doc/latex/group___t_r_a_c_k_e_r_s.pdf and b/Doc/latex/group___t_r_a_c_k_e_r_s.pdf differ
diff --git a/Doc/latex/group___u_a_r_t___i_n_i_t.pdf b/Doc/latex/group___u_a_r_t___i_n_i_t.pdf
index 589fe83..5d22ebd 100644
Binary files a/Doc/latex/group___u_a_r_t___i_n_i_t.pdf and b/Doc/latex/group___u_a_r_t___i_n_i_t.pdf differ
diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf
index 8e5d91b..6b0c886 100644
Binary files a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf and b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.pdf differ
diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
index 8571583..5797503 100644
--- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
+++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex
@@ -56,7 +56,7 @@ Collaboration diagram for Utils defines\+:
\end{DoxyParams}
Макрос использует memset для обнуления всей памяти структуры. Используется для быстрой и безопасной инициализации переменных структур до нуля.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00155}{155}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00154}{154}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}}
\index{Divide\_Up@{Divide\_Up}!Utils defines@{Utils defines}}
@@ -85,7 +85,7 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00155}{155}} of file
\end{DoxyReturn}
Если результат деления без остатка\+: он возвращается как есть Если с остатком -\/ округляется вверх
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00166}{166}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00165}{165}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}}
\index{ByteSwap16@{ByteSwap16}!Utils defines@{Utils defines}}
@@ -112,7 +112,7 @@ Swap between Little Endian and Big Endian.
\end{DoxyReturn}
Переключения между двумя типами хранения слова\+: HI-\/\+LO байты и LO-\/\+HI байты.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00174}{174}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00173}{173}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\index{Utils defines@{Utils defines}!ABS@{ABS}}
\index{ABS@{ABS}!Utils defines@{Utils defines}}
@@ -139,5 +139,5 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00174}{174}} of file
\end{DoxyReturn}
Берет число по модулю. Хз как работает библиотечный abs в stdlib.\+h, мб это быстрее, но вряд ли конечно.
-Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00182}{182}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
+Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00181}{181}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}.
diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex
index b2c5da4..ac123f4 100644
--- a/Doc/latex/index.tex
+++ b/Doc/latex/index.tex
@@ -9,7 +9,7 @@ My\+Libs -\/ это набор библиотек для удобной рабо
\begin{DoxyItemize}
\item Макросы для задержек и утилит (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines} и \doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines})
\item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} и \doxylink{group___t_r_a_c_e}{Trace defines})
-\item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer})
+\item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___g_e_n___o_p_t_i_m_i_z_e_r}{Genetic optimizer})
\item Битовый доступ к регистрам через union (\doxylink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines})
\end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \protect\doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка {Trace defines}}}\label{index_trace_module}
@@ -49,7 +49,7 @@ My\+Libs -\/ это набор библиотек для удобной рабо
\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}
\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}
\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}
-\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ evolve\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}
+\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}
\DoxyCodeLine{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}
\DoxyCodeLine{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}
\DoxyCodeLine{│\ \ \ └──\ src/}
diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex
index df9df03..194c8be 100644
--- a/Doc/latex/mainpage_8h_source.tex
+++ b/Doc/latex/mainpage_8h_source.tex
@@ -17,7 +17,7 @@
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00014}00014\ \textcolor{comment}{@subsubsection\ utils\_module\ Общие\ утилиты\ (@ref\ MYLIBS\_DEFINES)}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00015}00015\ \textcolor{comment}{-\/\ Макросы\ для\ задержек\ и\ утилит\ (@ref\ DELAYS\_DEFINES\ и\ @ref\ UTILS\_DEFINES)}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00016}00016\ \textcolor{comment}{-\/\ Трекеры\ для\ статистики\ и\ отладки\ \ (@ref\ TRACKERS\ и\ @ref\ TRACE)}}
-\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ EVOLVE\_OPTIMIZER)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00017}00017\ \textcolor{comment}{-\/\ Эволюционный\ алгоритм\ для\ оптимизации\ параметров\ \ (@ref\ GEN\_OPTIMIZER)}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00018}00018\ \textcolor{comment}{-\/\ Битовый\ доступ\ к\ регистрам\ через\ union\ \ (@ref\ BIT\_ACCESS\_DEFINES)}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00019}00019\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00020}00020\ \textcolor{comment}{@subsubsection\ trace\_module\ Трассировка\ @ref\ TRACE}}
@@ -53,7 +53,7 @@
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00050}00050\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_config.h\ \ \ \ \ \ \#\ Конфигурация\ библиотек}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00051}00051\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ mylibs\_defs.h\ \ \ \ \ \ \ \ \#\ Общие\ определения\ и\ макросы}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00052}00052\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ bit\_access.h\ \ \ \ \ \ \ \ \ \#\ Битовый\ доступ\ к\ регистрам}}
-\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ evolve\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}}
+\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00053}00053\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ gen\_optimizer.h\ \ \ \#\ Оптимизатор\ (генетический\ алгоритм)}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00054}00054\ \textcolor{comment}{│\ \ \ │\ \ \ ├──\ trackers.h\ \ \ \ \ \ \ \ \ \ \ \#\ Трекеры\ для\ отладки}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00055}00055\ \textcolor{comment}{│\ \ \ │\ \ \ └──\ trace.h\ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\ Трассировка\ и\ логирование}}
\DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00056}00056\ \textcolor{comment}{│\ \ \ └──\ src/}}
diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex
index dceb968..373df53 100644
--- a/Doc/latex/mylibs__config_8h.tex
+++ b/Doc/latex/mylibs__config_8h.tex
@@ -57,15 +57,19 @@ This graph shows which files directly or indirectly include this file\+:
\begin{DoxyCompactList}\small\item\em Конец RAM памяти (чтобы во время анализа стека не выйти за пределы) \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}{GPIO\+\_\+\+TRACE\+\_\+\+ENABLE}}
\begin{DoxyCompactList}\small\item\em Включить GPIO трассировку \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}}
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{GEN\+\_\+\+OPTIMIZATION\+\_\+\+ENABLE}}
\begin{DoxyCompactList}\small\item\em Включить оптимизацию параметров \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS}}~20
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{GEN\+\_\+\+MAX\+\_\+\+PARAMS}}~20
\begin{DoxyCompactList}\small\item\em Максимальное количество параметров \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{GEN\+\_\+\+MAX\+\_\+\+CANDIDATES}}~100
\begin{DoxyCompactList}\small\item\em Максимальное количество кандидатов для обучения \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{BENCH\+\_\+\+TIME\+\_\+\+ENABLE}}
+\begin{DoxyCompactList}\small\item\em Включить бенч времени \end{DoxyCompactList}\item
+\#define \mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{BENCH\+\_\+\+TIME\+\_\+\+MAX\+\_\+\+CHANNELS}}~16
+\begin{DoxyCompactList}\small\item\em Максимальное количество каналов измерения \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}()
\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\item
-\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER}}
+\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{INCLUDE\+\_\+\+GEN\+\_\+\+OPTIMIZER}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку для оптимизации параметров \end{DoxyCompactList}\item
\#define \mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB}}
\begin{DoxyCompactList}\small\item\em Подключить библиотеку с typedef с битовыми полями \end{DoxyCompactList}\item
diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5
index 2b33d81..1088441 100644
--- a/Doc/latex/mylibs__config_8h__dep__incl.md5
+++ b/Doc/latex/mylibs__config_8h__dep__incl.md5
@@ -1 +1 @@
-549ad4f84281da5919a8182a1cfa8419
\ No newline at end of file
+26252fa1f097da1581d5603686501d37
\ No newline at end of file
diff --git a/Doc/latex/mylibs__config_8h__dep__incl.pdf b/Doc/latex/mylibs__config_8h__dep__incl.pdf
index ca5df57..c6a3764 100644
Binary files a/Doc/latex/mylibs__config_8h__dep__incl.pdf and b/Doc/latex/mylibs__config_8h__dep__incl.pdf differ
diff --git a/Doc/latex/mylibs__config_8h__incl.pdf b/Doc/latex/mylibs__config_8h__incl.pdf
index bb3dab5..8d7ea2c 100644
Binary files a/Doc/latex/mylibs__config_8h__incl.pdf and b/Doc/latex/mylibs__config_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__config_8h_source.tex b/Doc/latex/mylibs__config_8h_source.tex
index ae9b037..13d6468 100644
--- a/Doc/latex/mylibs__config_8h_source.tex
+++ b/Doc/latex/mylibs__config_8h_source.tex
@@ -59,44 +59,61 @@
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00055}00055\ }
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00056}00056\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00057}00057\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @addtogroup\ EVOLVE\_CONFIG\ \ \ Evolve\ configs}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @addtogroup\ GEN\_CONFIG\ \ \ Genetic\ configs}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00059}00059\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Конфигурация\ однослойного\ персептрона\ и\ алгоритма\ обучения}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00060}00060\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Конфигурация\ генетического\ алгоритма\ обучения}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00061}00061\ \textcolor{comment}{\ \ *\ @\{}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00062}00062\ \textcolor{comment}{\ \ */}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00063}00063\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00064}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{00064}}\ \textcolor{preprocessor}{\#define\ ENABLE\_EVOLVE\_OPTIMIZATION\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ оптимизацию\ параметров}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00065}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{00065}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MAX\_PARAMS\ \ \ \ \ \ \ 20\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ параметров}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00066}\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{00066}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MAX\_CANDIDATES\ \ \ 100\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ кандидатов\ для\ обучения}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00064}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_gae6d1db3c0b21f67cb0db2673d207b62c}{00064}}\ \textcolor{preprocessor}{\#define\ GEN\_OPTIMIZATION\_ENABLE\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ оптимизацию\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00065}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga8daf4b266a95353d580bd7946f47c0ab}{00065}}\ \textcolor{preprocessor}{\#define\ GEN\_MAX\_PARAMS\ \ \ \ \ \ \ 20\ \ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00066}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga201cffde04ebc6540869c74bd1dae869}{00066}}\ \textcolor{preprocessor}{\#define\ GEN\_MAX\_CANDIDATES\ \ \ 100\ \ \ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ кандидатов\ для\ обучения}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00067}00067\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00068}00068\ \textcolor{comment}{/**\ EVOLVE\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00068}00068\ \textcolor{comment}{/**\ GEN\_CONFIG}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ @\}}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00070}00070\ \textcolor{comment}{\ \ */}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00071}00071\ }
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00072}00072\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00073}00073\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @addtogroup\ LIBS\_CONFIG\ \ \ Libraries\ configs}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00074}00074\ \textcolor{comment}{\ \ *\ @addtogroup\ GEN\_CONFIG\ \ \ Genetic\ configs}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Подключение\ различных\ модулей\ библиотеки}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00076}00076\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Конфигурация\ генетического\ алгоритма\ обучения}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @\{}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00079}00079\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00080}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{00080}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ \ \ \ \ uwTick\ \ \ \ \ \ }\textcolor{comment}{///<\ Локальное\ время}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00081}00081\ }
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00082}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}{00082}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_EVOLVE\_OPTIMIZER\ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ для\ оптимизации\ параметров}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00083}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00083}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00084}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00084}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00085}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00085}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00086}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00086}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00087}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}{00087}}\ \textcolor{preprocessor}{\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00088}00088\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00089}00089\ \textcolor{comment}{/**\ LIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00090}00090\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00091}00091\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00092}00092\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00093}00093\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00080}00080\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00081}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga67c3c54503b9bbd5d175ac46d37866d9}{00081}}\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_ENABLE\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Включить\ бенч\ времени}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00082}\mbox{\hyperlink{group___g_e_n___c_o_n_f_i_g_ga74fdf777ceefa5e7d67120fbda4cde52}{00082}}\ \textcolor{preprocessor}{\#define\ BENCH\_TIME\_MAX\_CHANNELS\ 16\ \ \ \ }\textcolor{comment}{///<\ Максимальное\ количество\ каналов\ измерения}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00083}00083\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00084}00084\ \textcolor{comment}{/**\ GEN\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00085}00085\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00086}00086\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00087}00087\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00088}00088\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00089}00089\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00090}00090\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00091}00091\ \textcolor{comment}{\ \ *\ @addtogroup\ LIBS\_CONFIG\ \ \ Libraries\ configs}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00092}00092\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00093}00093\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Подключение\ различных\ модулей\ библиотеки}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00094}00094\ \textcolor{comment}{\ \ *\ @\{}}
\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00095}00095\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00096}00096\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00097}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga9c853b02c22f26023c34d1d404b6d653}{00097}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ \ \ \ \ uwTick\ \ \ \ \ \ }\textcolor{comment}{///<\ Локальное\ время}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00098}00098\ }
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00099}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga3cdc9ef47fd3ff080d38481295327692}{00099}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GEN\_OPTIMIZER\ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ для\ оптимизации\ параметров}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00100}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}{00100}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_BIT\_ACCESS\_LIB\ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ typedef\ с\ битовыми\ полями}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00101}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}{00101}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACKERS\_LIB\ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трекерами}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00102}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}{00102}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_TRACE\_LIB\ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ трейсами}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00103}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}{00103}}\ \textcolor{preprocessor}{\#define\ INCLUDE\_GENERAL\_PERIPH\_LIBS\ \ \ }\textcolor{comment}{///<\ Подключить\ библиотеку\ с\ периферией}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00104}\mbox{\hyperlink{group___l_i_b_s___c_o_n_f_i_g_ga57c369737d5c0cfdb7baeecba0a4b151}{00104}}\ \textcolor{preprocessor}{\#define\ FREERTOS\_DELAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{///<\ Использовать\ FreeRTOS\ задержку,\ вместо\ HAL}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00105}00105\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00106}00106\ \textcolor{comment}{/**\ LIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00107}00107\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00108}00108\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00109}00109\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00110}00110\ \textcolor{comment}{/**\ MYLIBS\_CONFIG}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00111}00111\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00112}00112\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__config_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\_\_MYLIBS\_CONFIG\_H\_}}
\end{DoxyCode}
diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.md5 b/Doc/latex/mylibs__defs_8h__dep__incl.md5
index ceb12cf..186de66 100644
--- a/Doc/latex/mylibs__defs_8h__dep__incl.md5
+++ b/Doc/latex/mylibs__defs_8h__dep__incl.md5
@@ -1 +1 @@
-cdcbb90c558ed039bffebd441292f445
\ No newline at end of file
+69bb9960f1fbfb4580bf7e3b97eade6b
\ No newline at end of file
diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.pdf b/Doc/latex/mylibs__defs_8h__dep__incl.pdf
index a81b136..ab88f79 100644
Binary files a/Doc/latex/mylibs__defs_8h__dep__incl.pdf and b/Doc/latex/mylibs__defs_8h__dep__incl.pdf differ
diff --git a/Doc/latex/mylibs__defs_8h__incl.pdf b/Doc/latex/mylibs__defs_8h__incl.pdf
index e00671b..9d08a7f 100644
Binary files a/Doc/latex/mylibs__defs_8h__incl.pdf and b/Doc/latex/mylibs__defs_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__defs_8h_source.tex b/Doc/latex/mylibs__defs_8h_source.tex
index 5261bae..dceb954 100644
--- a/Doc/latex/mylibs__defs_8h_source.tex
+++ b/Doc/latex/mylibs__defs_8h_source.tex
@@ -141,60 +141,60 @@
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00137}00137\ }
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00138}00138\ }
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00139}00139\ \textcolor{comment}{/***************************************************************************}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ @\{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}00154\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00155}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{/**}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}00165\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00166}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}00173\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00174}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}00181\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00182}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{/**\ UTILS\_DEFINES}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ @\}}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \textcolor{comment}{\ \ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ \ \ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}00188\ }
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{/**\ }}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ \textcolor{comment}{\ */}}
-\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00140}00140\ \textcolor{comment}{*******************************UTIL\_DEFINES********************************/}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00141}00141\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @addtogroup\ UTILS\_DEFINES\ \ \ \ \ \ Utils\ defines}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @ingroup\ \ \ \ MYLIBS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @brief\ \ \ \ \ \ Общие\ вспомогательные\ макросы}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @\{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00146}00146\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00147}00147\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00148}00148\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00149}00149\ \textcolor{comment}{\ *\ @brief\ Обнуление\ структуры.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00150}00150\ \textcolor{comment}{\ *\ @param\ \_struct\_\ Структура,\ которую\ нужно\ обнулить.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00151}00151\ \textcolor{comment}{\ *\ @details\ Макрос\ использует\ memset\ для\ обнуления\ всей\ памяти\ структуры.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00152}00152\ \textcolor{comment}{\ *\ Используется\ для\ быстрой\ и\ безопасной\ инициализации\ переменных\ структур\ до\ нуля.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00153}00153\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00154}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{00154}}\ \textcolor{preprocessor}{\#define\ ClearStruct(\_struct\_)\ \ \ \ \ memset(\&(\_struct\_),\ 0,\ sizeof(\_struct\_))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00155}00155\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00156}00156\ \textcolor{comment}{/**}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00157}00157\ \textcolor{comment}{\ \ *\ @brief\ \ Деление\ с\ округлением\ вверх}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00158}00158\ \textcolor{comment}{\ \ *\ @param\ \_val\_\ Делимое.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00159}00159\ \textcolor{comment}{\ \ *\ @param\ \_div\_\ Делитель.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00160}00160\ \textcolor{comment}{\ \ *\ @return\ Результат\ деления,\ округленный\ вверх.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00161}00161\ \textcolor{comment}{\ \ *\ @details\ \ Если\ результат\ деления\ без\ остатка:\ он\ возвращается\ как\ есть}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00162}00162\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ Если\ с\ остатком\ -\/\ округляется\ вверх}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00163}00163\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00164}00164\ \textcolor{comment}{//\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((\_val\_)\%(\_div\_))?\ (\_val\_)/(\_div\_)+1\ :\ (\_val\_)/\_div\_)\ \ /*\ через\ тернарный\ оператор\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00165}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{00165}}\ \textcolor{preprocessor}{\#define\ Divide\_Up(\_val\_,\ \_div\_)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\textcolor{comment}{/*\ через\ мат\ выражение\ */}\textcolor{preprocessor}{\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00166}00166\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00167}00167\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00168}00168\ \textcolor{comment}{\ \ *\ @brief\ \ Swap\ between\ Little\ Endian\ and\ Big\ Endian}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00169}00169\ \textcolor{comment}{\ \ *\ @param\ v\ Исходное\ 16-\/битное\ значение.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00170}00170\ \textcolor{comment}{\ \ *\ @return\ Результат\ с\ поменяными\ местами\ старшим\ и\ младшим\ байтом.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00171}00171\ \textcolor{comment}{\ \ *\ @details\ \ Переключения\ между\ двумя\ типами\ хранения\ слова:\ HI-\/LO\ байты\ и\ LO-\/HI\ байты.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00172}00172\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00173}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{00173}}\ \textcolor{preprocessor}{\#define\ ByteSwap16(v)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00174}00174\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00175}00175\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @brief\ \ Абсолютное\ значение\ числа}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ @param\ x\ Число.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @return\ Абсолютное\ значение\ числа\ x.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ @details\ \ Берет\ число\ по\ модулю.\ Хз\ как\ работает\ библиотечный\ abs\ в\ stdlib.h,\ мб\ это\ быстрее,\ но\ вряд\ ли\ конечно.}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00180}00180\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00181}\mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{00181}}\ \textcolor{preprocessor}{\#define\ ABS(x)\ (\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00182}00182\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00183}00183\ \textcolor{comment}{/**\ UTILS\_DEFINES}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @\}}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00185}00185\ \textcolor{comment}{\ \ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00186}00186\ \ \ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00187}00187\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00188}00188\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00189}00189\ \textcolor{comment}{/**\ }}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00190}00190\ \textcolor{comment}{\ *\ @cond\ LIBS\_INTERNAL}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00191}00191\ \textcolor{comment}{\ */}}
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00192}00192\ }
+\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00193}00193\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ dummy;\ \textcolor{comment}{//\ переменная\ которой\ присваиваются\ значения,\ которые\ некуда\ присвоить}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00194}00194\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00195}00195\ \textcolor{comment}{/**\ \ }}
\DoxyCodeLine{\Hypertarget{mylibs__defs_8h_source_l00196}00196\ \textcolor{comment}{\ \ *\ @brief\ \ Аналог\ HAL\ макроса\ для\ привязки\ DMA\ к\ UART.}}
diff --git a/Doc/latex/mylibs__include_8h.tex b/Doc/latex/mylibs__include_8h.tex
index c1ec186..13645be 100644
--- a/Doc/latex/mylibs__include_8h.tex
+++ b/Doc/latex/mylibs__include_8h.tex
@@ -10,7 +10,7 @@
{\ttfamily \#include "{}bit\+\_\+access.\+h"{}}\newline
{\ttfamily \#include "{}trackers.\+h"{}}\newline
{\ttfamily \#include "{}trace.\+h"{}}\newline
-{\ttfamily \#include "{}evolve\+\_\+optimizer.\+h"{}}\newline
+{\ttfamily \#include "{}gen\+\_\+optimizer.\+h"{}}\newline
{\ttfamily \#include "{}\+\_\+\+\_\+general\+\_\+flash.\+h"{}}\newline
{\ttfamily \#include "{}general\+\_\+gpio.\+h"{}}\newline
Include dependency graph for mylibs\+\_\+include.\+h\+:
@@ -21,6 +21,27 @@ Include dependency graph for mylibs\+\_\+include.\+h\+:
\includegraphics[width=350pt]{mylibs__include_8h__incl}
\end{center}
\end{figure}
+\doxysubsubsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789}{Bench\+Time\+\_\+\+Init}}()
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}{Bench\+Time\+\_\+\+Start}}(channel, ticks, tick\+\_\+period)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}{Bench\+Time\+\_\+\+End}}(channel, ticks)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}{Bench\+Time\+\_\+\+Get\+Min}}(channel)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}{Bench\+Time\+\_\+\+Get\+Max}}(channel)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}{Bench\+Time\+\_\+\+Get\+Average}}(channel)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}{Bench\+Time\+\_\+\+Get\+Count}}(channel)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}{Bench\+Time\+\_\+\+Get\+Last}}(channel)
+\item
+\#define \mbox{\hyperlink{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}{Bench\+Time\+\_\+\+Reset\+Stats}}(channel)
+\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
@@ -30,3 +51,133 @@ Include dependency graph for mylibs\+\_\+include.\+h\+:
Definition in file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+
+\label{doc-define-members}
+\Hypertarget{mylibs__include_8h_doc-define-members}
+\doxysubsection{Macro Definition Documentation}
+\Hypertarget{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_Init@{BenchTime\_Init}}
+\index{BenchTime\_Init@{BenchTime\_Init}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_Init}{BenchTime\_Init}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a31b9f2267c562f3ceb533606daf0b789}
+\#define Bench\+Time\+\_\+\+Init(\begin{DoxyParamCaption}\item[{}]{void}{}\end{DoxyParamCaption})}
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00104}{104}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_Start@{BenchTime\_Start}}
+\index{BenchTime\_Start@{BenchTime\_Start}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_Start}{BenchTime\_Start}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a89ff6c06fc21fb2bbfbf8cbf863316f1}
+\#define Bench\+Time\+\_\+\+Start(\begin{DoxyParamCaption}\item[{}]{channel}{, }\item[{}]{ticks}{, }\item[{}]{tick\+\_\+period}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00105}{105}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_End@{BenchTime\_End}}
+\index{BenchTime\_End@{BenchTime\_End}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_End}{BenchTime\_End}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_adddc120d43a10fad50fbdeeab8d086b5}
+\#define Bench\+Time\+\_\+\+End(\begin{DoxyParamCaption}\item[{}]{channel}{, }\item[{}]{ticks}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00106}{106}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMin@{BenchTime\_GetMin}}
+\index{BenchTime\_GetMin@{BenchTime\_GetMin}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_GetMin}{BenchTime\_GetMin}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a91e352219014c7ea5507bbbe4b15912d}
+\#define Bench\+Time\+\_\+\+Get\+Min(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00107}{107}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetMax@{BenchTime\_GetMax}}
+\index{BenchTime\_GetMax@{BenchTime\_GetMax}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_GetMax}{BenchTime\_GetMax}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_ab8103362e89bad95d965ac668284065c}
+\#define Bench\+Time\+\_\+\+Get\+Max(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00108}{108}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetAverage@{BenchTime\_GetAverage}}
+\index{BenchTime\_GetAverage@{BenchTime\_GetAverage}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_GetAverage}{BenchTime\_GetAverage}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a9f82f5ed8cfae31292dc3dca41471dd5}
+\#define Bench\+Time\+\_\+\+Get\+Average(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00109}{109}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetCount@{BenchTime\_GetCount}}
+\index{BenchTime\_GetCount@{BenchTime\_GetCount}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_GetCount}{BenchTime\_GetCount}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_aafbca7155cfc97b68428da2b0b1200ef}
+\#define Bench\+Time\+\_\+\+Get\+Count(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00110}{110}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_GetLast@{BenchTime\_GetLast}}
+\index{BenchTime\_GetLast@{BenchTime\_GetLast}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_GetLast}{BenchTime\_GetLast}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a9911aa13a8fa67c35a261d1cb3dc11e7}
+\#define Bench\+Time\+\_\+\+Get\+Last(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+{\bfseries Value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{0}
+
+\end{DoxyCode}
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
+\Hypertarget{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}\index{mylibs\_include.h@{mylibs\_include.h}!BenchTime\_ResetStats@{BenchTime\_ResetStats}}
+\index{BenchTime\_ResetStats@{BenchTime\_ResetStats}!mylibs\_include.h@{mylibs\_include.h}}
+\doxysubsubsection{\texorpdfstring{BenchTime\_ResetStats}{BenchTime\_ResetStats}}
+{\footnotesize\ttfamily \label{mylibs__include_8h_a09b9a6ef9b60605fc0015f6b379d8420}
+\#define Bench\+Time\+\_\+\+Reset\+Stats(\begin{DoxyParamCaption}\item[{}]{channel}{}\end{DoxyParamCaption})}
+
+
+
+Definition at line \mbox{\hyperlink{mylibs__include_8h_source_l00112}{112}} of file \mbox{\hyperlink{mylibs__include_8h_source}{mylibs\+\_\+include.\+h}}.
+
diff --git a/Doc/latex/mylibs__include_8h__incl.md5 b/Doc/latex/mylibs__include_8h__incl.md5
index a515c46..0123200 100644
--- a/Doc/latex/mylibs__include_8h__incl.md5
+++ b/Doc/latex/mylibs__include_8h__incl.md5
@@ -1 +1 @@
-817f7e940e65c096c687de633dbb8802
\ No newline at end of file
+64f981d795a52476ad96388f8545ab10
\ No newline at end of file
diff --git a/Doc/latex/mylibs__include_8h__incl.pdf b/Doc/latex/mylibs__include_8h__incl.pdf
index 09d7e8f..f28f26d 100644
Binary files a/Doc/latex/mylibs__include_8h__incl.pdf and b/Doc/latex/mylibs__include_8h__incl.pdf differ
diff --git a/Doc/latex/mylibs__include_8h_source.tex b/Doc/latex/mylibs__include_8h_source.tex
index 027aafd..87fb93e 100644
--- a/Doc/latex/mylibs__include_8h_source.tex
+++ b/Doc/latex/mylibs__include_8h_source.tex
@@ -83,8 +83,8 @@
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00079}00079\ \textcolor{preprocessor}{\#define\ HF\_HandleFault(...)}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00080}00080\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00081}00081\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_EVOLVE\_OPTIMIZER}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GEN\_OPTIMIZER}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00083}00083\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{gen__optimizer_8h}{gen\_optimizer.h}}"{}}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00084}00084\ \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00085}00085\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00086}00086\ \ \ uint16\_t\ n\_params;\ }
@@ -93,39 +93,55 @@
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00089}00089\ \ \ uint16\_t\ iq\_mutation;\ }
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00090}00090\ \ \ int32\_t\ loss[0];\ }
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00091}00091\ \ \ int32\_t\ candidates[0][0];\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00092}00092\ \}\ \mbox{\hyperlink{struct_gen_optimizer__t}{GenOptimizer\_t}};}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00093}00093\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00094}00094\ \textcolor{preprocessor}{\#define\ GenOptimizer\_Step(opt,\ params,\ LossFunc)}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00095}00095\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00096}00096\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00097}00097\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00098}00098\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00099}00099\ }
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00100}00100\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#include\ "{}\_\_general\_flash.h"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__spi_8h}{general\_spi.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__uart_8h}{general\_uart.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00101}00101\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_BENCH\_TEST}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00102}00102\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{bench__time_8h}{bench\_time.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00103}00103\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00104}00104\ \textcolor{preprocessor}{\#define\ BenchTime\_Init()}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00105}00105\ \textcolor{preprocessor}{\#define\ BenchTime\_Start(channel,\ ticks,\ tick\_period)\ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00106}00106\ \textcolor{preprocessor}{\#define\ BenchTime\_End(channel,\ ticks)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00107}00107\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMin(channel)\ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00108}00108\ \textcolor{preprocessor}{\#define\ BenchTime\_GetMax(channel)\ \ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00109}00109\ \textcolor{preprocessor}{\#define\ BenchTime\_GetAverage(channel)\ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00110}00110\ \textcolor{preprocessor}{\#define\ BenchTime\_GetCount(channel)\ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00111}00111\ \textcolor{preprocessor}{\#define\ BenchTime\_GetLast(channel)\ \ \ \ \ \ 0}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00112}00112\ \textcolor{preprocessor}{\#define\ BenchTime\_ResetStats(channel)}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00113}00113\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//BENCH\_TIME\_ENABLE}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00114}00114\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00115}00115\ \textcolor{preprocessor}{\#ifdef\ INCLUDE\_GENERAL\_PERIPH\_LIBS}}
\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00116}00116\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{comment}{//\ user\ includes}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ }
-\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00117}00117\ \textcolor{preprocessor}{\#include\ "{}\_\_general\_flash.h"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00118}00118\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__gpio_8h}{general\_gpio.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00119}00119\ \textcolor{preprocessor}{\#ifdef\ HAL\_SPI\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00120}00120\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__spi_8h}{general\_spi.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00121}00121\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00122}00122\ \textcolor{preprocessor}{\#ifdef\ HAL\_UART\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00123}00123\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__uart_8h}{general\_uart.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00124}00124\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00125}00125\ \textcolor{preprocessor}{\#ifdef\ HAL\_TIM\_MODULE\_ENABLED}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00126}00126\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{general__tim_8h}{general\_tim.h}}"{}}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00127}00127\ \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00128}00128\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00129}00129\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//INCLUDE\_GENERAL\_PERIPH\_LIBS}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00130}00130\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00131}00131\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00132}00132\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00133}00133\ \textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00134}00134\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00135}00135\ \textcolor{comment}{//\ user\ includes}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00136}00136\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00137}00137\ \textcolor{comment}{//\ user\ settings}\textcolor{comment}{}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00138}00138\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}}
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00139}00139\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00140}00140\ }
+\DoxyCodeLine{\Hypertarget{mylibs__include_8h_source_l00141}00141\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_MYLIBS\_INCLUDE\_H\_}}
\end{DoxyCode}
diff --git a/Doc/latex/refman.tex b/Doc/latex/refman.tex
index 1737da7..e4588e0 100644
--- a/Doc/latex/refman.tex
+++ b/Doc/latex/refman.tex
@@ -243,7 +243,10 @@
\chapter{Topic Documentation}
\input{group___m_y_l_i_b_s___a_l_l}
\chapter{Class Documentation}
-\input{struct_evolve_optimizer__t}
+\input{struct_bench_time__t}
+\input{struct_bench_time_channel__t}
+\input{struct_bench_time_stats__t}
+\input{struct_gen_optimizer__t}
\input{struct_g_p_i_o___l_e_d_type_def}
\input{struct_g_p_i_o___switch_type_def}
\input{struct_h_f___stack_frame__t}
@@ -258,10 +261,12 @@
\input{unionuint8___bit_type_def}
\chapter{File Documentation}
\input{mainpage_8h_source}
+\input{bench__time_8h}
+\input{bench__time_8h_source}
\input{bit__access_8h}
\input{bit__access_8h_source}
-\input{evolve__optimizer_8h}
-\input{evolve__optimizer_8h_source}
+\input{gen__optimizer_8h}
+\input{gen__optimizer_8h_source}
\input{mylibs__config_8h}
\input{mylibs__config_8h_source}
\input{mylibs__defs_8h}
diff --git a/Doc/latex/struct_bench_time__t.tex b/Doc/latex/struct_bench_time__t.tex
new file mode 100644
index 0000000..5d68a53
--- /dev/null
+++ b/Doc/latex/struct_bench_time__t.tex
@@ -0,0 +1,57 @@
+\doxysection{Bench\+Time\+\_\+t Struct Reference}
+\hypertarget{struct_bench_time__t}{}\label{struct_bench_time__t}\index{BenchTime\_t@{BenchTime\_t}}
+
+
+Основная структура менеджера измерений
+
+
+
+
+{\ttfamily \#include $<$bench\+\_\+time.\+h$>$}
+
+
+
+Collaboration diagram for Bench\+Time\+\_\+t\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=190pt]{struct_bench_time__t__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} \mbox{\hyperlink{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}{channels}} \mbox{[}16\mbox{]}
+\begin{DoxyCompactList}\small\item\em Каналы измерения \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Основная структура менеджера измерений
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00102}{102}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+\label{doc-variable-members}
+\Hypertarget{struct_bench_time__t_doc-variable-members}
+\doxysubsection{Member Data Documentation}
+\Hypertarget{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}\index{BenchTime\_t@{BenchTime\_t}!channels@{channels}}
+\index{channels@{channels}!BenchTime\_t@{BenchTime\_t}}
+\doxysubsubsection{\texorpdfstring{channels}{channels}}
+{\footnotesize\ttfamily \label{struct_bench_time__t_a9ae6d45c610be9d4b7628a614ccb06d6}
+\mbox{\hyperlink{struct_bench_time_channel__t}{Bench\+Time\+Channel\+\_\+t}} Bench\+Time\+\_\+t\+::channels\mbox{[}16\mbox{]}}
+
+
+
+Каналы измерения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00103}{103}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_bench_time__t__coll__graph.md5 b/Doc/latex/struct_bench_time__t__coll__graph.md5
new file mode 100644
index 0000000..33c3634
--- /dev/null
+++ b/Doc/latex/struct_bench_time__t__coll__graph.md5
@@ -0,0 +1 @@
+99de2aa6d22284dc8ac4dd052cd3054b
\ No newline at end of file
diff --git a/Doc/latex/struct_bench_time__t__coll__graph.pdf b/Doc/latex/struct_bench_time__t__coll__graph.pdf
new file mode 100644
index 0000000..c2acde1
Binary files /dev/null and b/Doc/latex/struct_bench_time__t__coll__graph.pdf differ
diff --git a/Doc/latex/struct_bench_time_channel__t.tex b/Doc/latex/struct_bench_time_channel__t.tex
new file mode 100644
index 0000000..67de03b
--- /dev/null
+++ b/Doc/latex/struct_bench_time_channel__t.tex
@@ -0,0 +1,105 @@
+\doxysection{Bench\+Time\+Channel\+\_\+t Struct Reference}
+\hypertarget{struct_bench_time_channel__t}{}\label{struct_bench_time_channel__t}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}}
+
+
+Структура канала измерения
+
+
+
+
+{\ttfamily \#include $<$bench\+\_\+time.\+h$>$}
+
+
+
+Collaboration diagram for Bench\+Time\+Channel\+\_\+t\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=190pt]{struct_bench_time_channel__t__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}{start\+\_\+tick}}
+\begin{DoxyCompactList}\small\item\em Время старта в тиках \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}{tick\+\_\+period}}
+\begin{DoxyCompactList}\small\item\em Период тиков для переполнения \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}{is\+\_\+running}}
+\begin{DoxyCompactList}\small\item\em Флаг активного измерения \end{DoxyCompactList}\item
+\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} \mbox{\hyperlink{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}{stats}}
+\begin{DoxyCompactList}\small\item\em Статистика измерений \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Структура канала измерения
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00092}{92}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+\label{doc-variable-members}
+\Hypertarget{struct_bench_time_channel__t_doc-variable-members}
+\doxysubsection{Member Data Documentation}
+\Hypertarget{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!start\_tick@{start\_tick}}
+\index{start\_tick@{start\_tick}!BenchTimeChannel\_t@{BenchTimeChannel\_t}}
+\doxysubsubsection{\texorpdfstring{start\_tick}{start\_tick}}
+{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a8140fe9e3d323404651f0cfeeae53928}
+uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::start\+\_\+tick}
+
+
+
+Время старта в тиках
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00093}{93}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!tick\_period@{tick\_period}}
+\index{tick\_period@{tick\_period}!BenchTimeChannel\_t@{BenchTimeChannel\_t}}
+\doxysubsubsection{\texorpdfstring{tick\_period}{tick\_period}}
+{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a095d93e0228641f58b8661e263bc1bcd}
+uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::tick\+\_\+period}
+
+
+
+Период тиков для переполнения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00094}{94}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!is\_running@{is\_running}}
+\index{is\_running@{is\_running}!BenchTimeChannel\_t@{BenchTimeChannel\_t}}
+\doxysubsubsection{\texorpdfstring{is\_running}{is\_running}}
+{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a0f80bb194231df7921712d20bac603c9}
+uint32\+\_\+t Bench\+Time\+Channel\+\_\+t\+::is\+\_\+running}
+
+
+
+Флаг активного измерения
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00095}{95}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}\index{BenchTimeChannel\_t@{BenchTimeChannel\_t}!stats@{stats}}
+\index{stats@{stats}!BenchTimeChannel\_t@{BenchTimeChannel\_t}}
+\doxysubsubsection{\texorpdfstring{stats}{stats}}
+{\footnotesize\ttfamily \label{struct_bench_time_channel__t_a22a3913e7925aa89cc12ec1d24a6c16c}
+\mbox{\hyperlink{struct_bench_time_stats__t}{Bench\+Time\+Stats\+\_\+t}} Bench\+Time\+Channel\+\_\+t\+::stats}
+
+
+
+Статистика измерений
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00096}{96}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_bench_time_channel__t__coll__graph.md5 b/Doc/latex/struct_bench_time_channel__t__coll__graph.md5
new file mode 100644
index 0000000..851c636
--- /dev/null
+++ b/Doc/latex/struct_bench_time_channel__t__coll__graph.md5
@@ -0,0 +1 @@
+47051da0ae1727593c14401e5b86376e
\ No newline at end of file
diff --git a/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf b/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf
new file mode 100644
index 0000000..8b375d5
Binary files /dev/null and b/Doc/latex/struct_bench_time_channel__t__coll__graph.pdf differ
diff --git a/Doc/latex/struct_bench_time_stats__t.tex b/Doc/latex/struct_bench_time_stats__t.tex
new file mode 100644
index 0000000..3a6d468
--- /dev/null
+++ b/Doc/latex/struct_bench_time_stats__t.tex
@@ -0,0 +1,111 @@
+\doxysection{Bench\+Time\+Stats\+\_\+t Struct Reference}
+\hypertarget{struct_bench_time_stats__t}{}\label{struct_bench_time_stats__t}\index{BenchTimeStats\_t@{BenchTimeStats\_t}}
+
+
+Структура статистики измерений
+
+
+
+
+{\ttfamily \#include $<$bench\+\_\+time.\+h$>$}
+
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}{min\+\_\+ticks}}
+\begin{DoxyCompactList}\small\item\em Минимальное время в тиках \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}{max\+\_\+ticks}}
+\begin{DoxyCompactList}\small\item\em Максимальное время в тиках \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}{total\+\_\+ticks}}
+\begin{DoxyCompactList}\small\item\em Суммарное время в тиках \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}{count}}
+\begin{DoxyCompactList}\small\item\em Количество измерений \end{DoxyCompactList}\item
+uint32\+\_\+t \mbox{\hyperlink{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}{last\+\_\+ticks}}
+\begin{DoxyCompactList}\small\item\em Последнее измеренное время \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Структура статистики измерений
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00081}{81}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+\label{doc-variable-members}
+\Hypertarget{struct_bench_time_stats__t_doc-variable-members}
+\doxysubsection{Member Data Documentation}
+\Hypertarget{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!min\_ticks@{min\_ticks}}
+\index{min\_ticks@{min\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}}
+\doxysubsubsection{\texorpdfstring{min\_ticks}{min\_ticks}}
+{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a39b71a5d48c4a51a553a26a9fb961ac8}
+uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::min\+\_\+ticks}
+
+
+
+Минимальное время в тиках
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00082}{82}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!max\_ticks@{max\_ticks}}
+\index{max\_ticks@{max\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}}
+\doxysubsubsection{\texorpdfstring{max\_ticks}{max\_ticks}}
+{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a3da36eb65b03ba995b5905b4650ea93c}
+uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::max\+\_\+ticks}
+
+
+
+Максимальное время в тиках
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00083}{83}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!total\_ticks@{total\_ticks}}
+\index{total\_ticks@{total\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}}
+\doxysubsubsection{\texorpdfstring{total\_ticks}{total\_ticks}}
+{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a21499b0b19d1ed27f8cea069f674e8ec}
+uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::total\+\_\+ticks}
+
+
+
+Суммарное время в тиках
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00084}{84}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!count@{count}}
+\index{count@{count}!BenchTimeStats\_t@{BenchTimeStats\_t}}
+\doxysubsubsection{\texorpdfstring{count}{count}}
+{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a5e95ef31dd0daf973894ef2f034d1f71}
+uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::count}
+
+
+
+Количество измерений
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00085}{85}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+\Hypertarget{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}\index{BenchTimeStats\_t@{BenchTimeStats\_t}!last\_ticks@{last\_ticks}}
+\index{last\_ticks@{last\_ticks}!BenchTimeStats\_t@{BenchTimeStats\_t}}
+\doxysubsubsection{\texorpdfstring{last\_ticks}{last\_ticks}}
+{\footnotesize\ttfamily \label{struct_bench_time_stats__t_a2c739e1db6b26ceac5db3f2c44c177a0}
+uint32\+\_\+t Bench\+Time\+Stats\+\_\+t\+::last\+\_\+ticks}
+
+
+
+Последнее измеренное время
+
+
+
+Definition at line \mbox{\hyperlink{bench__time_8h_source_l00086}{86}} of file \mbox{\hyperlink{bench__time_8h_source}{bench\+\_\+time.\+h}}.
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{bench__time_8h}{bench\+\_\+time.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_evolve_optimizer__t.tex b/Doc/latex/struct_evolve_optimizer__t.tex
deleted file mode 100644
index d261b31..0000000
--- a/Doc/latex/struct_evolve_optimizer__t.tex
+++ /dev/null
@@ -1,207 +0,0 @@
-\doxysection{Evolve\+Optimizer\+\_\+t Struct Reference}
-\hypertarget{struct_evolve_optimizer__t}{}\label{struct_evolve_optimizer__t}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-
-
-Структура эволюционного оптимизатора
-
-
-
-
-{\ttfamily \#include $<$evolve\+\_\+optimizer.\+h$>$}
-
-\doxysubsubsection*{Public Attributes}
-\begin{DoxyCompactItemize}
-\item
-float \mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}
-\begin{DoxyCompactList}\small\item\em Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}) \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\+\_\+params}}
-\begin{DoxyCompactList}\small\item\em Количество параметров \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand}}
-\begin{DoxyCompactList}\small\item\em Количество кандидатов в популяции \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\+\_\+best}}
-\begin{DoxyCompactList}\small\item\em Количество лучших, усредняемых \end{DoxyCompactList}\item
-float \mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\+\_\+amp}}
-\begin{DoxyCompactList}\small\item\em Амплитуда мутации (0..1) \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\+\_\+index}}
-\begin{DoxyCompactList}\small\item\em Индекс кандидата для обработки \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}{gen\+\_\+index}}
-\begin{DoxyCompactList}\small\item\em Индекс популяции \end{DoxyCompactList}\item
-float \mbox{\hyperlink{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}{gen\+\_\+mut}}
-\begin{DoxyCompactList}\small\item\em Амплитуда мутации у текущей популяции \end{DoxyCompactList}\item
-float \mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}} \mbox{[}100\mbox{]}
-\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item
-float \mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]}
-\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\item
-uint16\+\_\+t \mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\+\_\+idx}} \mbox{[}100\mbox{]}
-\begin{DoxyCompactList}\small\item\em Индексы отсортированных кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize}
-
-
-\doxysubsection{Detailed Description}
-Структура эволюционного оптимизатора
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00102}{102}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-
-
-\label{doc-variable-members}
-\Hypertarget{struct_evolve_optimizer__t_doc-variable-members}
-\doxysubsection{Member Data Documentation}
-\Hypertarget{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!stability@{stability}}
-\index{stability@{stability}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{stability}{stability}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}
-float Evolve\+Optimizer\+\_\+t\+::stability}
-
-
-
-Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\+\_\+cand})
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00103}{103}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_params@{n\_params}}
-\index{n\_params@{n\_params}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{n\_params}{n\_params}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+params}
-
-
-
-Количество параметров
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00105}{105}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_cand@{n\_cand}}
-\index{n\_cand@{n\_cand}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{n\_cand}{n\_cand}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+cand}
-
-
-
-Количество кандидатов в популяции
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00106}{106}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!n\_best@{n\_best}}
-\index{n\_best@{n\_best}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{n\_best}{n\_best}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::n\+\_\+best}
-
-
-
-Количество лучших, усредняемых
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00107}{107}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!mutation\_amp@{mutation\_amp}}
-\index{mutation\_amp@{mutation\_amp}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{mutation\_amp}{mutation\_amp}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}
-float Evolve\+Optimizer\+\_\+t\+::mutation\+\_\+amp}
-
-
-
-Амплитуда мутации (0..1)
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00108}{108}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!cand\_index@{cand\_index}}
-\index{cand\_index@{cand\_index}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{cand\_index}{cand\_index}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::cand\+\_\+index}
-
-
-
-Индекс кандидата для обработки
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00110}{110}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!gen\_index@{gen\_index}}
-\index{gen\_index@{gen\_index}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{gen\_index}{gen\_index}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_ad0f464d7048a9ed0753b61f76f563108}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::gen\+\_\+index}
-
-
-
-Индекс популяции
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00111}{111}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!gen\_mut@{gen\_mut}}
-\index{gen\_mut@{gen\_mut}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{gen\_mut}{gen\_mut}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a3be8c0c34db8429210ff470497a56727}
-float Evolve\+Optimizer\+\_\+t\+::gen\+\_\+mut}
-
-
-
-Амплитуда мутации у текущей популяции
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00114}{114}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!loss@{loss}}
-\index{loss@{loss}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{loss}{loss}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}
-float Evolve\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}}
-
-
-
-Loss для каждого кандидата
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!candidates@{candidates}}
-\index{candidates@{candidates}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{candidates}{candidates}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}
-float Evolve\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}}
-
-
-
-Параметры кандидатов
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-\Hypertarget{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}\index{EvolveOptimizer\_t@{EvolveOptimizer\_t}!sorted\_idx@{sorted\_idx}}
-\index{sorted\_idx@{sorted\_idx}!EvolveOptimizer\_t@{EvolveOptimizer\_t}}
-\doxysubsubsection{\texorpdfstring{sorted\_idx}{sorted\_idx}}
-{\footnotesize\ttfamily \label{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}
-uint16\+\_\+t Evolve\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}}
-
-
-
-Индексы отсортированных кандидатов
-
-
-
-Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00118}{118}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.
-
-
-
-The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
-\item
-E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_gen_optimizer__t.tex b/Doc/latex/struct_gen_optimizer__t.tex
new file mode 100644
index 0000000..4e88d5e
--- /dev/null
+++ b/Doc/latex/struct_gen_optimizer__t.tex
@@ -0,0 +1,207 @@
+\doxysection{Gen\+Optimizer\+\_\+t Struct Reference}
+\hypertarget{struct_gen_optimizer__t}{}\label{struct_gen_optimizer__t}\index{GenOptimizer\_t@{GenOptimizer\_t}}
+
+
+Структура эволюционного оптимизатора
+
+
+
+
+{\ttfamily \#include $<$gen\+\_\+optimizer.\+h$>$}
+
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+float \mbox{\hyperlink{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}{stability}}
+\begin{DoxyCompactList}\small\item\em Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand}) \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}{n\+\_\+params}}
+\begin{DoxyCompactList}\small\item\em Количество параметров \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand}}
+\begin{DoxyCompactList}\small\item\em Количество кандидатов в популяции \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}{n\+\_\+best}}
+\begin{DoxyCompactList}\small\item\em Количество лучших, усредняемых \end{DoxyCompactList}\item
+float \mbox{\hyperlink{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}{mutation\+\_\+amp}}
+\begin{DoxyCompactList}\small\item\em Амплитуда мутации (0..1) \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}{cand\+\_\+index}}
+\begin{DoxyCompactList}\small\item\em Индекс текущего кандидата \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}{gen\+\_\+index}}
+\begin{DoxyCompactList}\small\item\em Индекс популяции \end{DoxyCompactList}\item
+float \mbox{\hyperlink{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}{gen\+\_\+mut}}
+\begin{DoxyCompactList}\small\item\em Амплитуда мутации у текущей популяции \end{DoxyCompactList}\item
+float \mbox{\hyperlink{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}{loss}} \mbox{[}100\mbox{]}
+\begin{DoxyCompactList}\small\item\em Loss для каждого кандидата \end{DoxyCompactList}\item
+float \mbox{\hyperlink{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}{candidates}} \mbox{[}100\mbox{]}\mbox{[}20\mbox{]}
+\begin{DoxyCompactList}\small\item\em Параметры кандидатов \end{DoxyCompactList}\item
+uint16\+\_\+t \mbox{\hyperlink{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}{sorted\+\_\+idx}} \mbox{[}100\mbox{]}
+\begin{DoxyCompactList}\small\item\em Индексы отсортированных кандидатов \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Структура эволюционного оптимизатора
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00102}{102}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+
+
+\label{doc-variable-members}
+\Hypertarget{struct_gen_optimizer__t_doc-variable-members}
+\doxysubsection{Member Data Documentation}
+\Hypertarget{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}\index{GenOptimizer\_t@{GenOptimizer\_t}!stability@{stability}}
+\index{stability@{stability}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{stability}{stability}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_abe0aacea949fbe93e5d4c002e37d7192}
+float Gen\+Optimizer\+\_\+t\+::stability}
+
+
+
+Коэффициент насколько стабильная популяция (0..1)(\doxylink{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}{n\+\_\+cand})
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00103}{103}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_params@{n\_params}}
+\index{n\_params@{n\_params}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_params}{n\_params}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_afe598a90024a8aa628dd16f3a2b38eb5}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+params}
+
+
+
+Количество параметров
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00105}{105}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_cand@{n\_cand}}
+\index{n\_cand@{n\_cand}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_cand}{n\_cand}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a9e20d2f6f39a5147e6dbac46baca73a9}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+cand}
+
+
+
+Количество кандидатов в популяции
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00106}{106}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}\index{GenOptimizer\_t@{GenOptimizer\_t}!n\_best@{n\_best}}
+\index{n\_best@{n\_best}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{n\_best}{n\_best}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8201f1eede36a2c04ec7b4caac7465c9}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::n\+\_\+best}
+
+
+
+Количество лучших, усредняемых
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00107}{107}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}\index{GenOptimizer\_t@{GenOptimizer\_t}!mutation\_amp@{mutation\_amp}}
+\index{mutation\_amp@{mutation\_amp}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{mutation\_amp}{mutation\_amp}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ad4dc0e53b3ca6bf2a642dfe7a1d1f26c}
+float Gen\+Optimizer\+\_\+t\+::mutation\+\_\+amp}
+
+
+
+Амплитуда мутации (0..1)
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00108}{108}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}\index{GenOptimizer\_t@{GenOptimizer\_t}!cand\_index@{cand\_index}}
+\index{cand\_index@{cand\_index}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{cand\_index}{cand\_index}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a04a72c1a13e17581e84eaaf3d245bbfc}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::cand\+\_\+index}
+
+
+
+Индекс текущего кандидата
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00110}{110}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_index@{gen\_index}}
+\index{gen\_index@{gen\_index}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{gen\_index}{gen\_index}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8f226c85e9bb034cb811aa0366bb191c}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::gen\+\_\+index}
+
+
+
+Индекс популяции
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00111}{111}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}\index{GenOptimizer\_t@{GenOptimizer\_t}!gen\_mut@{gen\_mut}}
+\index{gen\_mut@{gen\_mut}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{gen\_mut}{gen\_mut}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_acfeb93ef4823e09473ddba52fae9a6b1}
+float Gen\+Optimizer\+\_\+t\+::gen\+\_\+mut}
+
+
+
+Амплитуда мутации у текущей популяции
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00114}{114}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}\index{GenOptimizer\_t@{GenOptimizer\_t}!loss@{loss}}
+\index{loss@{loss}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{loss}{loss}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a8b5066935d99f2fc7ebb94cc3652fc73}
+float Gen\+Optimizer\+\_\+t\+::loss\mbox{[}100\mbox{]}}
+
+
+
+Loss для каждого кандидата
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00116}{116}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}\index{GenOptimizer\_t@{GenOptimizer\_t}!candidates@{candidates}}
+\index{candidates@{candidates}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{candidates}{candidates}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_a2c9a50ea7d975b9bc22a67e453ab83df}
+float Gen\+Optimizer\+\_\+t\+::candidates\mbox{[}100\mbox{]}\mbox{[}20\mbox{]}}
+
+
+
+Параметры кандидатов
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00117}{117}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+\Hypertarget{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}\index{GenOptimizer\_t@{GenOptimizer\_t}!sorted\_idx@{sorted\_idx}}
+\index{sorted\_idx@{sorted\_idx}!GenOptimizer\_t@{GenOptimizer\_t}}
+\doxysubsubsection{\texorpdfstring{sorted\_idx}{sorted\_idx}}
+{\footnotesize\ttfamily \label{struct_gen_optimizer__t_ad37161efa27ef1390d1f7e6ee2f79b12}
+uint16\+\_\+t Gen\+Optimizer\+\_\+t\+::sorted\+\_\+idx\mbox{[}100\mbox{]}}
+
+
+
+Индексы отсортированных кандидатов
+
+
+
+Definition at line \mbox{\hyperlink{gen__optimizer_8h_source_l00118}{118}} of file \mbox{\hyperlink{gen__optimizer_8h_source}{gen\+\_\+optimizer.\+h}}.
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs/\+Inc/\mbox{\hyperlink{gen__optimizer_8h}{gen\+\_\+optimizer.\+h}}\end{DoxyCompactItemize}
diff --git a/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf b/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf
index d7d2e72..5e47cee 100644
Binary files a/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf and b/Doc/latex/struct_t_i_m___encoder_type_def__coll__graph.pdf differ
diff --git a/Doc/latex/topics.tex b/Doc/latex/topics.tex
index 3fddd5c..a81c542 100644
--- a/Doc/latex/topics.tex
+++ b/Doc/latex/topics.tex
@@ -5,13 +5,14 @@ Here is a list of all topics with brief descriptions\+:\begin{DoxyCompactList}
\item \contentsline{section}{Configs}{\pageref{group___m_y_l_i_b_s___c_o_n_f_i_g}}{}
\begin{DoxyCompactList}
\item \contentsline{section}{Trace configs}{\pageref{group___t_r_a_c_e___c_o_n_f_i_g}}{}
-\item \contentsline{section}{Evolve configs}{\pageref{group___e_v_o_l_v_e___c_o_n_f_i_g}}{}
+\item \contentsline{section}{Genetic configs}{\pageref{group___g_e_n___c_o_n_f_i_g}}{}
\item \contentsline{section}{Libraries configs}{\pageref{group___l_i_b_s___c_o_n_f_i_g}}{}
\end{DoxyCompactList}
\item \contentsline{section}{General Tools}{\pageref{group___m_y_l_i_b_s___d_e_f_i_n_e_s}}{}
\begin{DoxyCompactList}
\item \contentsline{section}{Bit access defines}{\pageref{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}}{}
-\item \contentsline{section}{Evolve optimizer}{\pageref{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}}{}
+\item \contentsline{section}{Time measurement}{\pageref{group___b_e_n_c_h___t_i_m_e}}{}
+\item \contentsline{section}{Genetic optimizer}{\pageref{group___g_e_n___o_p_t_i_m_i_z_e_r}}{}
\item \contentsline{section}{Error Handler defines}{\pageref{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}}{}
\item \contentsline{section}{Delays defines}{\pageref{group___d_e_l_a_y_s___d_e_f_i_n_e_s}}{}
\item \contentsline{section}{Utils defines}{\pageref{group___u_t_i_l_s___d_e_f_i_n_e_s}}{}
diff --git a/Doc/latex/trace_8h.tex b/Doc/latex/trace_8h.tex
index 05c62d3..553c277 100644
--- a/Doc/latex/trace_8h.tex
+++ b/Doc/latex/trace_8h.tex
@@ -57,6 +57,15 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\
\begin{DoxyCompactList}\small\item\em Проверка и вывод последнего Hard\+Fault-\/трейса из Flash. \end{DoxyCompactList}\item
\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}{HF\+\_\+\+Handle\+Fault}} (void)
\begin{DoxyCompactList}\small\item\em Обработчик Hard\+Fault. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+static \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\+t}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga8bde6da023f9fc577e2004c56c09bc3e}{stack\+\_\+frame}}
+\item
+static uint32\+\_\+t \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga5eaebf741ff2454968da6e6c28ac92b7}{stack\+\_\+dump}} \mbox{[}32\mbox{]}
+\item
+static void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadb6ef6ffef1b50aec4abb32b03bceb79}{ret\+\_\+adr}} \mbox{[}10\mbox{]} = \{0\}
+\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf
index 8e9aaf3..3f47bd3 100644
Binary files a/Doc/latex/trace_8h__dep__incl.pdf and b/Doc/latex/trace_8h__dep__incl.pdf differ
diff --git a/Doc/latex/trace_8h__incl.pdf b/Doc/latex/trace_8h__incl.pdf
index 728db5a..e68b762 100644
Binary files a/Doc/latex/trace_8h__incl.pdf and b/Doc/latex/trace_8h__incl.pdf differ
diff --git a/Doc/latex/trackers_8h__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf
index 897c9d3..fb8b130 100644
Binary files a/Doc/latex/trackers_8h__dep__incl.pdf and b/Doc/latex/trackers_8h__dep__incl.pdf differ
diff --git a/Doc/latex/trackers_8h__incl.pdf b/Doc/latex/trackers_8h__incl.pdf
index 47dd049..754e36b 100644
Binary files a/Doc/latex/trackers_8h__incl.pdf and b/Doc/latex/trackers_8h__incl.pdf differ
diff --git a/MyLibs/Inc/bench_time.h b/MyLibs/Inc/bench_time.h
new file mode 100644
index 0000000..1704b3e
--- /dev/null
+++ b/MyLibs/Inc/bench_time.h
@@ -0,0 +1,258 @@
+/**
+******************************************************************************
+* @file bench_time.h
+* @brief Заголовочный файл для измерения времени между событиями
+******************************************************************************
+* @addtogroup BENCH_TIME Time measurement
+* @ingroup MYLIBS_DEFINES
+* @brief Библиотека для измерения времени/тиков между событиями
+* @details
+Поддерживает:
+- Многоканальные измерения (несколько независимых таймеров)
+- Платформонезависимый интерфейс
+- Измерение в тиках или временных единицах
+- Статистику измерений (мин/макс/среднее)
+- Настраиваемый размер тиков для каждого канала
+
+Параметры для конфигурации:
+- @ref BENCH_TIME_ENABLE - Включить бенч времени
+- @ref BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8)
+
+@par Пример использования:
+@code
+#include "bench_time.h"
+
+// Инициализация
+BenchTime_Init();
+
+// Измерение с SysTick
+BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);
+some_function();
+uint32_t time = BenchTime_End(0, HAL_GetTick);
+
+// Измерение с TIM2 (16-бит)
+BenchTime_Start(1, TIM2->CNT, 0xFFFF);
+fast_function();
+uint32_t time2 = BenchTime_End(1, TIM2->CNT);
+
+// Измерение с DWT цикловым счетчиком
+BenchTime_Start(2, DWT->CYCCNT, 0xFFFFFFFF);
+critical_function();
+uint32_t cycles = BenchTime_End(2, DWT->CYCCNT);
+
+// Многоканальное измерение
+BenchTime_Start(0, HAL_GetTick, 1000); // общее время
+BenchTime_Start(1, TIM3->CNT, 500); // часть 1
+
+// ... код 1
+
+uint32_t part1 = BenchTime_End(1, TIM3->CNT);
+BenchTime_Start(2, TIM4->CNT, 200); // часть 2
+
+// ... код 2
+
+uint32_t part2 = BenchTime_End(2, TIM4->CNT);
+uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время
+
+// Статистика
+uint32_t min_time = BenchTime_GetMin(0);
+uint32_t max_time = BenchTime_GetMax(0);
+uint32_t avg_time = BenchTime_GetAverage(0);
+uint32_t count = BenchTime_GetCount(0);
+@endcode
+* @{
+*****************************************************************************/
+#ifndef __BENCH_TIME_H_
+#define __BENCH_TIME_H_
+
+#include "mylibs_defs.h"
+#include
+
+#ifdef BENCH_TIME_ENABLE
+
+// Конфигурация библиотеки
+#ifndef BENCH_TIME_MAX_CHANNELS
+#define BENCH_TIME_MAX_CHANNELS 8 ///< Максимальное количество каналов измерения
+#endif
+
+/**
+ * @brief Структура статистики измерений
+ */
+typedef struct {
+ uint32_t min_ticks; ///< Минимальное время в тиках
+ uint32_t max_ticks; ///< Максимальное время в тиках
+ uint32_t total_ticks; ///< Суммарное время в тиках
+ uint32_t count; ///< Количество измерений
+ uint32_t last_ticks; ///< Последнее измеренное время
+} BenchTimeStats_t;
+
+/**
+ * @brief Структура канала измерения
+ */
+typedef struct {
+ uint32_t start_tick; ///< Время старта в тиках
+ uint32_t tick_period; ///< Период тиков для переполнения
+ uint32_t is_running; ///< Флаг активного измерения
+ BenchTimeStats_t stats; ///< Статистика измерений
+} BenchTimeChannel_t;
+
+/**
+ * @brief Основная структура менеджера измерений
+ */
+typedef struct {
+ BenchTimeChannel_t channels[BENCH_TIME_MAX_CHANNELS]; ///< Каналы измерения
+} BenchTime_t;
+
+static BenchTime_t hbt = {0}; ///< Внутренний экземпляр
+
+/**
+ * @brief Инициализация системы измерения времени
+ */
+static inline void BenchTime_Init(void) {
+ for (int i = 0; i < BENCH_TIME_MAX_CHANNELS; i++) {
+ hbt.channels[i].start_tick = 0;
+ hbt.channels[i].tick_period = 0xFFFFFFFF;
+ hbt.channels[i].is_running = 0;
+ hbt.channels[i].stats.min_ticks = 0xFFFFFFFF;
+ hbt.channels[i].stats.max_ticks = 0;
+ hbt.channels[i].stats.total_ticks = 0;
+ hbt.channels[i].stats.count = 0;
+ hbt.channels[i].stats.last_ticks = 0;
+ }
+}
+
+/**
+ * @brief Начало измерения на указанном канале
+ * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)
+ * @param ticks Источник тиков (например: HAL_GetTick(), TIM2->CNT, DWT->CYCCNT)
+ * @param tick_period Период тиков для переполнения
+ * @return 1 - успех, 0 - ошибка
+ */
+static inline uint32_t BenchTime_Start(uint8_t channel, uint32_t ticks, uint32_t tick_period) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ if (hbt.channels[channel].is_running) return 0;
+
+ hbt.channels[channel].start_tick = ticks;
+ hbt.channels[channel].tick_period = tick_period;
+ hbt.channels[channel].is_running = 1;
+ return 1;
+}
+
+/**
+ * @brief Окончание измерения на указанном канале
+ * @param channel Номер канала (0..BENCH_TIME_MAX_CHANNELS-1)
+ * @param ticks Источник тиков (должен быть тот же что в Start)
+ * @return Измеренное время в тиках, 0 - в случае ошибки
+ */
+static inline uint32_t BenchTime_End(uint8_t channel, uint32_t ticks) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ if (!hbt.channels[channel].is_running) return 0;
+
+ uint32_t end_tick = ticks;
+ uint32_t start_tick = hbt.channels[channel].start_tick;
+ uint32_t tick_period = hbt.channels[channel].tick_period;
+ uint32_t elapsed_ticks;
+
+ if (end_tick >= start_tick) {
+ elapsed_ticks = end_tick - start_tick;
+ } else {
+ elapsed_ticks = (tick_period - start_tick) + end_tick + 1;
+ }
+
+ if (elapsed_ticks > tick_period) {
+ elapsed_ticks = tick_period;
+ }
+
+ hbt.channels[channel].is_running = 0;
+
+ // Обновление статистики
+ BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+ stats->last_ticks = elapsed_ticks;
+
+ if (elapsed_ticks < stats->min_ticks) {
+ stats->min_ticks = elapsed_ticks;
+ }
+
+ if (elapsed_ticks > stats->max_ticks) {
+ stats->max_ticks = elapsed_ticks;
+ }
+
+ stats->total_ticks += elapsed_ticks;
+ stats->count++;
+
+ return elapsed_ticks;
+}
+
+/**
+ * @brief Получение минимального времени измерения
+ */
+static inline uint32_t BenchTime_GetMin(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ return hbt.channels[channel].stats.min_ticks;
+}
+
+/**
+ * @brief Получение максимального времени измерения
+ */
+static inline uint32_t BenchTime_GetMax(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ return hbt.channels[channel].stats.max_ticks;
+}
+
+/**
+ * @brief Получение среднего времени измерения
+ */
+static inline uint32_t BenchTime_GetAverage(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+ if (stats->count == 0) return 0;
+ return stats->total_ticks / stats->count;
+}
+
+/**
+ * @brief Получение количества измерений
+ */
+static inline uint32_t BenchTime_GetCount(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ return hbt.channels[channel].stats.count;
+}
+
+/**
+ * @brief Получение последнего измеренного времени
+ */
+static inline uint32_t BenchTime_GetLast(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return 0;
+ return hbt.channels[channel].stats.last_ticks;
+}
+
+/**
+ * @brief Сброс статистики для канала
+ */
+static inline void BenchTime_ResetStats(uint8_t channel) {
+ if (channel >= BENCH_TIME_MAX_CHANNELS) return;
+ BenchTimeStats_t* stats = &hbt.channels[channel].stats;
+ stats->min_ticks = 0xFFFFFFFF;
+ stats->max_ticks = 0;
+ stats->total_ticks = 0;
+ stats->count = 0;
+ stats->last_ticks = 0;
+}
+#else //BENCH_TIME_ENABLE
+
+#define BenchTime_Init()
+#define BenchTime_Start(channel, ticks, tick_period) 0
+#define BenchTime_End(channel, ticks) 0
+#define BenchTime_GetMin(channel) 0
+#define BenchTime_GetMax(channel) 0
+#define BenchTime_GetAverage(channel) 0
+#define BenchTime_GetCount(channel) 0
+#define BenchTime_GetLast(channel) 0
+#define BenchTime_ResetStats(channel)
+
+#endif //BENCH_TIME_ENABLE
+
+#endif // __BENCH_TIME_H_
+
+/** BENCH_TIME
+ * @}
+ */
\ No newline at end of file
diff --git a/MyLibs/Inc/evolve_optimizer.h b/MyLibs/Inc/gen_optimizer.h
similarity index 82%
rename from MyLibs/Inc/evolve_optimizer.h
rename to MyLibs/Inc/gen_optimizer.h
index 150186b..9a3b332 100644
--- a/MyLibs/Inc/evolve_optimizer.h
+++ b/MyLibs/Inc/gen_optimizer.h
@@ -1,9 +1,9 @@
/**
******************************************************************************
-* @file evolve_optimizer.h
+* @file gen_optimizer.h
* @brief Заголовочный файл для адаптивного подбора параметров
******************************************************************************
-* @addtogroup EVOLVE_OPTIMIZER Evolve optimizer
+* @addtogroup GEN_OPTIMIZER Genetic optimizer
* @ingroup MYLIBS_DEFINES
* @brief Библиотека для эволюционного подбора параметров
* @details
@@ -15,24 +15,24 @@
Параметры для конфигурации:
-- @ref ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров
- Если библиотека отключена @ref ENABLE_EVOLVE_OPTIMIZATION, то вставляются
+- @ref GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров
+ Если библиотека отключена @ref GEN_OPTIMIZATION_ENABLE, то вставляются
заглушки, никак не влияющие на параметры и остальную программу
-- @ref EVOLVE_MAX_PARAMS - Максимальное количество параметров
-- @ref EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
-- (опционально) @ref EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
-- (опционально) @ref EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
+- @ref GEN_MAX_PARAMS - Максимальное количество параметров
+- @ref GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
+- (опционально) @ref GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
+- (опционально) @ref GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
@par Пример использования:
@code
-#include "evolve_optimizer.h"
+#include "gen_optimizer.h"
#define N_PARAMS 4
#define N_CANDIDATES 100
#define N_BEST 10
#define MUTATION 0.1f
float params[N_PARAMS];
-EvolveOptimizer_t optimizer;
+GenOptimizer_t optimizer;
// Формирование параметров
uint16_t param_u16 = 800;
@@ -45,11 +45,11 @@ params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
// Инициалиазция
-EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
+GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
// Шаг эволюции
float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
-EvolveOptimizer_Step(&optimizer, params, loss);
+GenOptimizer_Step(&optimizer, params, loss);
// Взятие следующих для эволюции параметров
param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
@@ -59,14 +59,14 @@ param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
@endcode
* @{
*****************************************************************************/
-#ifndef __EVOLVE_OPTIMIZER_H_
-#define __EVOLVE_OPTIMIZER_H_
+#ifndef __GEN_OPTIMIZER_H_
+#define __GEN_OPTIMIZER_H_
#include "mylibs_defs.h"
#include
#include
-#ifdef ENABLE_EVOLVE_OPTIMIZATION
+#ifdef GEN_OPTIMIZATION_ENABLE
/**
* @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
*/
@@ -85,11 +85,11 @@ param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
-#ifndef EVOLVE_MUTATION_MIN_PCT
-#define EVOLVE_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
+#ifndef GEN_MUTATION_MIN_PCT
+#define GEN_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
#endif
-#ifndef EVOLVE_MUTATION_MAX_PCT
-#define EVOLVE_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
+#ifndef GEN_MUTATION_MAX_PCT
+#define GEN_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
#endif
#ifndef ELOVLE_N_ELITE_CANDIDATE
#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
@@ -113,19 +113,19 @@ typedef struct {
//INTERNAL
float gen_mut; ///< Амплитуда мутации у текущей популяции
- float loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
- float candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
- uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
-} EvolveOptimizer_t;
+ float loss[GEN_MAX_CANDIDATES]; ///< Loss для каждого кандидата
+ float candidates[GEN_MAX_CANDIDATES][GEN_MAX_PARAMS]; ///< Параметры кандидатов
+ uint16_t sorted_idx[GEN_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
+} GenOptimizer_t;
/**
- * @cond EVOLVE_INTERNAL
+ * @cond GEN_INTERNAL
*/
// Вспомогательный указатель для сортировки
-static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
+static GenOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
// функция условия сортировки
static int cmp_idx(const void *a, const void *b) {
@@ -152,7 +152,7 @@ static int cmp_idx(const void *a, const void *b) {
* @return 0 — если окей,
* -1 — если ошибка
*/
-__STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt,
+static int GenOptimizer_Init(GenOptimizer_t* opt,
uint16_t n_params,
uint16_t n_cand,
uint16_t n_best,
@@ -162,15 +162,15 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt,
if((opt == NULL) || (start_params == NULL))
return -1;
- if(n_params > EVOLVE_MAX_PARAMS)
+ if(n_params > GEN_MAX_PARAMS)
return -1;
opt->n_params = n_params;
- if(n_cand > EVOLVE_MAX_CANDIDATES)
+ if(n_cand > GEN_MAX_CANDIDATES)
return -1;
opt->n_cand = n_cand;
- if(n_best > EVOLVE_MAX_CANDIDATES/2)
+ if(n_best > GEN_MAX_CANDIDATES/2)
return -1;
opt->n_best = n_best;
@@ -222,7 +222,7 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt,
* @note Функция использует глобальную внутреннюю переменную для сортировки.
* Надо убедится что только один экземпляр функции запущен в момент времени
*/
-__STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt,
+static int GenOptimizer_Step(GenOptimizer_t* opt,
float* params,
float loss)
{
@@ -230,15 +230,15 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt,
return -1;
uint16_t n_params = opt->n_params;
- if(n_params > EVOLVE_MAX_PARAMS)
+ if(n_params > GEN_MAX_PARAMS)
return -1;
uint16_t n_cand = opt->n_cand;
- if(n_cand > EVOLVE_MAX_CANDIDATES)
+ if(n_cand > GEN_MAX_CANDIDATES)
return -1;
uint16_t n_best = opt->n_best;
- if(n_best > EVOLVE_MAX_CANDIDATES/2)
+ if(n_best > GEN_MAX_CANDIDATES/2)
return -1;
float mut = opt->mutation_amp;
@@ -280,8 +280,8 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt,
if(opt->stability < 0.0f) opt->stability = 0.0f;
if(opt->stability > 1.0f) opt->stability = 1.0f;
- float mut_pct = EVOLVE_MUTATION_MIN_PCT +
- (EVOLVE_MUTATION_MAX_PCT - EVOLVE_MUTATION_MIN_PCT) * loss_ratio;
+ float mut_pct = GEN_MUTATION_MIN_PCT +
+ (GEN_MUTATION_MAX_PCT - GEN_MUTATION_MIN_PCT) * loss_ratio;
float adaptive_mut = mut * (mut_pct / 100.0f);
if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f;
opt->gen_mut = adaptive_mut;
@@ -315,7 +315,7 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt,
return 0;
}
-#else // ENABLE_EVOLVE_OPTIMIZATION
+#else // GEN_OPTIMIZATION_ENABLE
//заглушки
typedef struct {
uint16_t n_params;
@@ -324,15 +324,15 @@ typedef struct {
float mutation_amp;
float loss[0];
float candidates[0][0];
-} EvolveOptimizer_t;
-#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
-#define EvolveOptimizer_Step(opt, params, LossFunc)
+} GenOptimizer_t;
+#define GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
+#define GenOptimizer_Step(opt, params, LossFunc)
#define PARAM_SCALE(x, min_val, max_val) (x)
#define PARAM_UNSCALE(val, min_val, max_val) (val)
-#endif // ENABLE_EVOLVE_OPTIMIZATION
+#endif // GEN_OPTIMIZATION_ENABLE
-#endif // __EVOLVE_OPTIMIZER_H_
+#endif // __GEN_OPTIMIZER_H_
-/** EVOLVE_OPTIMIZER
+/** GEN_OPTIMIZER
* @}
*/
diff --git a/MyLibs/Inc/mylibs_config.h b/MyLibs/Inc/mylibs_config.h
index 68208d2..5e56f3d 100644
--- a/MyLibs/Inc/mylibs_config.h
+++ b/MyLibs/Inc/mylibs_config.h
@@ -55,21 +55,38 @@
/**
- * @addtogroup EVOLVE_CONFIG Evolve configs
+ * @addtogroup GEN_CONFIG Genetic configs
* @ingroup MYLIBS_CONFIG
- * @brief Конфигурация однослойного персептрона и алгоритма обучения
+ * @brief Конфигурация генетического алгоритма обучения
* @{
*/
-#define ENABLE_EVOLVE_OPTIMIZATION ///< Включить оптимизацию параметров
-#define EVOLVE_MAX_PARAMS 20 ///< Максимальное количество параметров
-#define EVOLVE_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
+#define GEN_OPTIMIZATION_ENABLE ///< Включить оптимизацию параметров
+#define GEN_MAX_PARAMS 20 ///< Максимальное количество параметров
+#define GEN_MAX_CANDIDATES 100 ///< Максимальное количество кандидатов для обучения
-/** EVOLVE_CONFIG
+/** GEN_CONFIG
* @}
*/
+/**
+ * @addtogroup GEN_CONFIG Genetic configs
+ * @ingroup MYLIBS_CONFIG
+ * @brief Конфигурация генетического алгоритма обучения
+ * @{
+ */
+
+
+#define BENCH_TIME_ENABLE ///< Включить бенч времени
+#define BENCH_TIME_MAX_CHANNELS 16 ///< Максимальное количество каналов измерения
+
+/** GEN_CONFIG
+ * @}
+ */
+
+
+
/**
* @addtogroup LIBS_CONFIG Libraries configs
* @ingroup MYLIBS_CONFIG
@@ -79,7 +96,7 @@
#define local_time() uwTick ///< Локальное время
-#define INCLUDE_EVOLVE_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
+#define INCLUDE_GEN_OPTIMIZER ///< Подключить библиотеку для оптимизации параметров
#define INCLUDE_BIT_ACCESS_LIB ///< Подключить библиотеку с typedef с битовыми полями
#define INCLUDE_TRACKERS_LIB ///< Подключить библиотеку с трекерами
#define INCLUDE_TRACE_LIB ///< Подключить библиотеку с трейсами
diff --git a/MyLibs/Inc/mylibs_include.h b/MyLibs/Inc/mylibs_include.h
index e9acba2..6f12c6c 100644
--- a/MyLibs/Inc/mylibs_include.h
+++ b/MyLibs/Inc/mylibs_include.h
@@ -79,8 +79,8 @@
#define HF_HandleFault(...)
#endif
-#ifdef INCLUDE_EVOLVE_OPTIMIZER
-#include "evolve_optimizer.h"
+#ifdef INCLUDE_GEN_OPTIMIZER
+#include "gen_optimizer.h"
#else
typedef struct {
uint16_t n_params;
@@ -89,13 +89,29 @@ typedef struct {
uint16_t iq_mutation;
int32_t loss[0];
int32_t candidates[0][0];
-} EvolveOptimizer_t;
-#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
-#define EvolveOptimizer_Step(opt, params, LossFunc)
+} GenOptimizer_t;
+#define GenOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
+#define GenOptimizer_Step(opt, params, LossFunc)
#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
#endif
+
+
+#ifdef INCLUDE_BENCH_TEST
+#include "bench_time.h"
+#else //BENCH_TIME_ENABLE
+#define BenchTime_Init()
+#define BenchTime_Start(channel, ticks, tick_period) 0
+#define BenchTime_End(channel, ticks) 0
+#define BenchTime_GetMin(channel) 0
+#define BenchTime_GetMax(channel) 0
+#define BenchTime_GetAverage(channel) 0
+#define BenchTime_GetCount(channel) 0
+#define BenchTime_GetLast(channel) 0
+#define BenchTime_ResetStats(channel)
+#endif //BENCH_TIME_ENABLE
+
#ifdef INCLUDE_GENERAL_PERIPH_LIBS
#include "__general_flash.h"
diff --git a/mainpage.h b/mainpage.h
index 7b4af51..bfb5b30 100644
--- a/mainpage.h
+++ b/mainpage.h
@@ -14,7 +14,7 @@ MyLibs - это набор библиотек для удобной работы
@subsubsection utils_module Общие утилиты (@ref MYLIBS_DEFINES)
- Макросы для задержек и утилит (@ref DELAYS_DEFINES и @ref UTILS_DEFINES)
- Трекеры для статистики и отладки (@ref TRACKERS и @ref TRACE)
-- Эволюционный алгоритм для оптимизации параметров (@ref EVOLVE_OPTIMIZER)
+- Эволюционный алгоритм для оптимизации параметров (@ref GEN_OPTIMIZER)
- Битовый доступ к регистрам через union (@ref BIT_ACCESS_DEFINES)
@subsubsection trace_module Трассировка @ref TRACE
@@ -50,7 +50,7 @@ ProjectRoot/
│ │ ├── mylibs_config.h # Конфигурация библиотек
│ │ ├── mylibs_defs.h # Общие определения и макросы
│ │ ├── bit_access.h # Битовый доступ к регистрам
-│ │ ├── evolve_optimizer.h # Оптимизатор (генетический алгоритм)
+│ │ ├── gen_optimizer.h # Оптимизатор (генетический алгоритм)
│ │ ├── trackers.h # Трекеры для отладки
│ │ └── trace.h # Трассировка и логирование
│ └── src/