Dmitry Kovalev / Mbed 2 deprecated LG2

Dependencies:   mbed

Fork of LG by igor Apu

Files at this revision

API Documentation at this revision

Comitter:
Kovalev_D
Date:
Tue Apr 12 11:10:49 2016 +0000
Parent:
128:1e4675a36c93
Child:
130:1421dda4d7e7
Commit message:
?????? ? ?????? ??????????

Changed in this revision

CntrlGLD.c Show annotated file Show diff for this revision Revisions of this file
CntrlGLD.h Show annotated file Show diff for this revision Revisions of this file
Command.c Show annotated file Show diff for this revision Revisions of this file
Dither_Reg.c Show annotated file Show diff for this revision Revisions of this file
Global.c Show annotated file Show diff for this revision Revisions of this file
PLC_reg.c Show annotated file Show diff for this revision Revisions of this file
Parameters.c Show annotated file Show diff for this revision Revisions of this file
ThermoCalc.c Show annotated file Show diff for this revision Revisions of this file
commandset.c Show annotated file Show diff for this revision Revisions of this file
el_lin.c Show annotated file Show diff for this revision Revisions of this file
main.c Show annotated file Show diff for this revision Revisions of this file
mathDSP.c Show annotated file Show diff for this revision Revisions of this file
vibro.c Show annotated file Show diff for this revision Revisions of this file
vibro.h Show annotated file Show diff for this revision Revisions of this file
--- a/CntrlGLD.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/CntrlGLD.c	Tue Apr 12 11:10:49 2016 +0000
@@ -11,7 +11,7 @@
 
 uint32_t	Valid_Data;   //r. байт-признак достоверных данных, накапливающий ошибки от запроса до запроса
 
-TDEVICE_BLK Device_blk;   //e. union for device constants
+//TDEVICE_BLK Device_blk;   //e. union for device constants
 uint32_t	ser_num;	 //e. device serial number
 
 int 	Device_Mode = DM_INT_10KHZ_LATCH;  //r. режим работы прибора (внутр.защелка, знаковый меандр или внешняя защелка)
--- a/CntrlGLD.h	Mon Apr 11 11:04:34 2016 +0000
+++ b/CntrlGLD.h	Tue Apr 12 11:10:49 2016 +0000
@@ -34,7 +34,7 @@
 
 //e. *** the BLOCK of VARIABLES, LOADED from FLASH-memory ********************** //r. *** БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти **********************
 //e. Address (parameter number in the block = 0..255 ) //r. Адрес (Номер параметра в блоке = 0..255)
-typedef  union {
+/*typedef  union {
     int Array[171];
     struct {
         // Device_blk
@@ -137,7 +137,7 @@
 
 
 
-
+*/
 
 
 
@@ -146,7 +146,7 @@
 
 
 //e. ************ end of the BLOCK of VARIABLES, LOADED from FLASH-memory ************ //r. ************ конец блока загружаемых из флэш-памяти параметров ГЛД ************
-extern 	TDEVICE_BLK Device_blk; //e. the BLOCK of VARIABLES, LOADED from FLASH-memory //r. БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти
+ //e. the BLOCK of VARIABLES, LOADED from FLASH-memory //r. БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти
 
 extern 		 int Device_Mode;
 extern 	unsigned Valid_Data;
--- a/Command.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/Command.c	Tue Apr 12 11:10:49 2016 +0000
@@ -12,16 +12,44 @@
 unsigned int Consol=123;
 unsigned int TempParam=1;
 unsigned int CountParam=0;
-/*
-void exec_CMD(void)       //r. === процедура окончательной дешифрации и исполнения команды
+
+void CMD_M_Param_R(void)
 {
-	unsigned int Comand_code;
-
-	//rx_buf_copy = 1;                  //r. предустанов флага копирования приемного буфера
-
-	Comand_code = (rcv_buf[2] & 0xFF) << 8;
-	PC_Comand = Comand_code | (rcv_buf[3] & 0xFF);	//e. save it in the memory for echo-transmission //r. сохранить его в памяти для обратной передачи
-}*/
+   unsigned int NP;
+   unsigned int Param;
+   BuffTemp[0] =  Gyro.SOC_Out;
+   BuffTemp[1] =  Gyro.My_Addres;
+   
+   NP    = BuffTemp[3]; 
+   
+   Param = GyroP.Array[NP];
+   
+   BuffTemp[2] =(Param >> 8) & 0xff;//старший байт требуемого параметра
+   BuffTemp[3] =(Param >> 0) & 0xff;//младший байт требуемого параметра
+   
+   Check(BuffTemp, 6);
+   WriteConN (BuffTemp,6);
+}
+void CMD_M_Param_W(void)
+{
+   unsigned int NP;
+   unsigned int Param;
+   
+   NP     =  BuffTemp[3];
+   Param  = (BuffTemp[4]<<8);
+   Param |=  BuffTemp[5];
+ 
+  GyroP.Array[NP] = Param;
+     
+   
+   BuffTemp[0] =  Gyro.SOC_Out;
+   BuffTemp[1] =  Gyro.My_Addres;
+   BuffTemp[2] =  Gyro.CMD_In;
+   BuffTemp[3] =  0x00;//старший байт требуемого параметра
+   
+   Check(BuffTemp, 6);
+   WriteConN (BuffTemp,6);
+}
 void CMD_Maintenance(void)
 {
 
@@ -201,11 +229,8 @@
 {   
     unsigned int Temp;
     Gyro.EXT_Latch=0;
-    WriteCon("0");
 	BuffTemp[ 0] = Gyro.SOC_Out;
-	WriteCon("1");
     BuffTemp[ 1] = Gyro.My_Addres;
-    
     Temp = Gyro.CuruAngle;
     Gyro.CuruAngle = 0;
 
@@ -552,7 +577,14 @@
     	 break;
     	}
    } 
-
+    BuffTemp[0] = Gyro.SOC_Out;      //DD
+    BuffTemp[1] = Gyro.My_Addres;    //00
+    BuffTemp[2] = Gyro.CMD_In;       //D8
+    BuffTemp[3] = A<<4;       
+    BuffTemp[4] = 0x0;
+    BuffTemp[5] = 0x0;
+    Check(BuffTemp, CRC_N);
+    WriteConN (BuffTemp,CRC_N);
 }
 
 void CMD_M_Control_D9()///чтение регистров управления
@@ -658,12 +690,23 @@
             lengf=8;
             break;
 
-        case 0xA5://DeviceMode
+        case 0xE9://DeviceMode
 
             lengf=6;
             CRC_N=8;
             break;
+        case 0xE8://DeviceMode
 
+            lengf=6;
+            CRC_N=8;
+            break;
+   
+          case 0xA5://DeviceMode
+
+            lengf=6;
+            CRC_N=8;
+            break;
+            
         case 0xDD://m_rate
             lengf=6;
             CRC_N=44;
@@ -761,10 +804,12 @@
         ReadCon1(BuffTemp); 
             switch(Gyro.CMD_In) {
                 Rate_Flag=0;
+               
                 case 0x99:
                     Gyro.ModeOut=0;
                     CMD_Maintenance();
                 break;
+               
                 case 0xA0:
                   TempParam=(BuffTemp[3]) & 0x90; 
                   if      (TempParam==Delta_500)        CMD_Delta_500Hz();
@@ -772,15 +817,27 @@
                   else if (TempParam==PDelta_500)      { Gyro.ModeOut=3; Gyro.Delta500_Event=0; WriteCon("Delta500"); }
                   else if (TempParam==PDelta_EXT)      { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0; WriteCon("deltaEXT"); }
                     break;
+               
                 case 0xD8:
                     CMD_M_Control_D8();
                     break;
+               
+                case 0xE9://чтение параметров
+                    CMD_M_Param_R();
+                    break;
+                    
+                case 0xE8://запись параметра
+                    CMD_M_Param_W();
+                    break;          
+               
                 case 0xD9:
                     CMD_M_Control_D9();
                     break;
+               
                 case 0x0A:
                     CMD_M_Stymul();
                     break;
+               
                 case 0xDD:
                  TempParam=(BuffTemp[3]) & 0x9f; 
                  if      (TempParam == Rate1)        { CMD_Rate(); 		     	                    WriteCon("Rate11");}
@@ -788,9 +845,11 @@
                  else if (TempParam == PRate1)       { Gyro.ModeOut=1; Gyro.Rate1_Event=0;	        WriteCon("Rate12");}
                  else if (TempParam == PRate2)       { Gyro.ModeOut=2; Gyro.Rate2_Event=0;		    WriteCon("Rate22");}
                  break; 
+              
                case 0xE4:
                     CMD_M_vib();
                     break; 
+              
                case 0xE6:
                     Gph_W();
                     break; 
--- a/Dither_Reg.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/Dither_Reg.c	Tue Apr 12 11:10:49 2016 +0000
@@ -46,7 +46,7 @@
 //коэфф.деления N вибропривода (период колебаний) ВП = T_Vibro длительность импульса вибропривода>>
 
 
-    Device_blk.Str.VB_N = Output.Str.T_Vibro;
+  //  Device_blk.Str.VB_N = Output.Str.T_Vibro;
     LPC_MCPWM->LIM0 = (Output.Str.T_Vibro*MULT_7680_12500)>>SHIFT_7680_12500;//#define 	SHIFT_7680_12500		15	  смешение для конвертации частоты из 7680 в 12500
 #if defined DITHERSIM
     6565  LIM0 = (Output.Str.T_Vibro*86)>>16;
@@ -323,27 +323,27 @@
 
 void clc_Noise_regulator(void)
 {
-    int temp;
+   /* int temp;
     static uint32_t Flag = 0;
     static int PeriodCount = 0, Tnoise = 0;
 
     if ( PeriodCount >= Tnoise ) {
         PeriodCount = 0;
-        srand(Device_blk.Str.VB_N);// Srand(период колебаний ВП) -инициализация генератора случайных чисел с зерном (VB_N)
+     //   srand(Device_blk.Str.VB_N);// Srand(период колебаний ВП) -инициализация генератора случайных чисел с зерном (VB_N)
         //заданный период ошумления
-        Tnoise = add( Device_blk.Str.VBN_Tzd,     mult_r(Device_blk.Str.VBN_Ran, rand())); // Tnoise = Device_blk.Str.VBN_Tzd + MULT_RND_SAT( Device_blk.Str.VBN_Ran, rand() );
+       // Tnoise = add( Device_blk.Str.VBN_Tzd,     mult_r(Device_blk.Str.VBN_Ran, rand())); // Tnoise = Device_blk.Str.VBN_Tzd + MULT_RND_SAT( Device_blk.Str.VBN_Ran, rand() );
         if ( Flag ) {                                                                      //e. calculation +dF/-dF //r. расчет +dF/-dF
-            temp = Device_blk.Str.VBN_k;                                                     //r. 25 - заданная константа ошумления
+           // temp = Device_blk.Str.VBN_k;                                                     //r. 25 - заданная константа ошумления
         } else {
-            temp = -Device_blk.Str.VBN_k;
+           // temp = -Device_blk.Str.VBN_k;
         }
 ///Длительность импульса до ошумления
-        Device_blk.Str.VB_tau = add(VB_tau_Ins, (mult_r( VB_tau_Ins, temp ) << 1)); // VB_tau = VB_tau_Ins + VB_tau_Ins * temp; with saturation
+    //    Device_blk.Str.VB_tau = add(VB_tau_Ins, (mult_r( VB_tau_Ins, temp ) << 1)); // VB_tau = VB_tau_Ins + VB_tau_Ins * temp; with saturation
         Saturation(Device_blk.Str.VB_tau, Device_blk.Str.VB_Tmax, Device_blk.Str.VB_Tmin);	//e. checking upper and lower levels of control range //r. проверка верхнего диапазона регулирования
         Flag = !Flag;
     } else {
         PeriodCount++;
-    }
+    }*/
 
 } // clc_Noise_regulator
 /******************************************************************************
@@ -370,21 +370,21 @@
     //счетчик времени и регистр период канала 0.
 
     LPC_MCPWM->TC0 = 0;// инициализация (обнуление) таймера 0;
-    LPC_MCPWM->LIM0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; //период ШИМ(Виропривода).
+   // LPC_MCPWM->LIM0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; //период ШИМ(Виропривода).
 
-    LPC_MCPWM->MAT0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500;	  // set LPC_MCPWM->MAT0  for defineteness  						                          |  установление временных интервалов
-    LPC_MCPWM->MAT2 = (Device_blk.Str.VB_tau*MULT_7680_12500)>>SHIFT_7680_12500;	// pulse width of the PhA dither drive                                          |  (MAT) при достижении которых
-    LPC_MCPWM->MAT1 = ((Device_blk.Str.VB_N - Device_blk.Str.VB_tau)*MULT_7680_12500)>>SHIFT_7680_12500;	// pulse width of the PhB dither drive  at first time   |  таймером, что то происходит.
+    //LPC_MCPWM->MAT0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500;	  // set LPC_MCPWM->MAT0  for defineteness  						                          |  установление временных интервалов
+ //   LPC_MCPWM->MAT2 = (Device_blk.Str.VB_tau*MULT_7680_12500)>>SHIFT_7680_12500;	// pulse width of the PhA dither drive                                          |  (MAT) при достижении которых
+ //   LPC_MCPWM->MAT1 = ((Device_blk.Str.VB_N - Device_blk.Str.VB_tau)*MULT_7680_12500)>>SHIFT_7680_12500;	// pulse width of the PhB dither drive  at first time   |  таймером, что то происходит.
 
     LPC_MCPWM->DT &= ~0x3FF; //e. reset dead timer register
     LPC_MCPWM->INTEN_SET = 1;	//e. enable lim0 interrupt
 
     LPC_MCPWM->CON_SET |= (1<<8) |1 |(1<<16);	  //start PWM channel 0,1,2
 
-    VB_tau_Ins = Device_blk.Str.VB_tau;         // VB_tau_Ins - внутреннее значение контура регулирования Тау
+  //  VB_tau_Ins = Device_blk.Str.VB_tau;         // VB_tau_Ins - внутреннее значение контура регулирования Тау
 
-    Output.Str.L_Vibro = Device_blk.Str.VB_tau;  //to update the period and pulse duration for displaying
-    Output.Str.T_Vibro = Device_blk.Str.VB_N;    //запись в выходной масив длительности и периуда импульсов для отображения
+ //   Output.Str.L_Vibro = Device_blk.Str.VB_tau;  //to update the period and pulse duration for displaying
+ //   Output.Str.T_Vibro = Device_blk.Str.VB_N;    //запись в выходной масив длительности и периуда импульсов для отображения
     return;
 }
 /******************************************************************************
@@ -400,12 +400,12 @@
 {
 
     init_VibroReduce(); // расчет коэфициентов (вибро апертуры)
-    Device_blk.Str.VB_N = 29538; //коэфф.деления N вибропривода (период колебаний) ВП (? задается только сдесь но используется уже при вычислении Vibro_Filter_Aperture в предъидущей функции)
+  // Device_blk.Str.VB_N = 29538; //коэфф.деления N вибропривода (период колебаний) ВП (? задается только сдесь но используется уже при вычислении Vibro_Filter_Aperture в предъидущей функции)
     VibroDither_Init();// Выбор ножек для двух каналов ШИМ(1-2(Канал 0 тоже определен)),период ШИМ,режим и тд.
     VibroDither_SwitchOn(); //LPC_MCPWM->CON_SET = 1<<8; старт таймера 1. выставление 8 бита mscon_set изменяет 8 бит в регистре mscon (PDF CTP. - 526)
     init_BandPass(1.0/(float)Vibro_Filter_Aperture, 100.0/(float)DEVICE_SAMPLE_RATE_HZ, DUP);	//линейный фильтр (то же самое что и в СРП)полософой фильтр для выделения частоты колебания.
     MaxDelay = Vibro_Filter_Aperture >> 1; //r. макс. задержка меандра вибропривода (Vibro_Filter_Aperture определяетс в init_VibroReduce();)
-    CounterIquiryCycle_Init((Device_blk.Str.VB_N*Vibro_2_CountIn)>>SHIFT_C_7680_12500);  //задание периода сброса счетчика, запрет прерывания.
+    //CounterIquiryCycle_Init((Device_blk.Str.VB_N*Vibro_2_CountIn)>>SHIFT_C_7680_12500);  //задание периода сброса счетчика, запрет прерывания.
 }
 /******************************************************************************
 **                            End Of File
--- a/Global.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/Global.c	Tue Apr 12 11:10:49 2016 +0000
@@ -84,6 +84,11 @@
         Buff_8Point[i] 		= 0x00;
         Buff_32Point[i] 	= 0x00;
         Buff_16PointD[i] 	= 0x00;
+         GyroP.Array[i]     = 0x00;
+    }
+    
+   for (int i = 0; i < 170; i++ ) {
+      GyroP.Array[i]     =i;
     }
     ////////////////////////////////////////////////////
     ////////////////////////////////////////////////////
--- a/PLC_reg.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/PLC_reg.c	Tue Apr 12 11:10:49 2016 +0000
@@ -54,7 +54,7 @@
 ******************************************************************************/
 void init_PLC(void)
 {
-    int i;
+   /* int i;
     //( 1,2 вольта)
     if (Device_blk.Str.WP_reset < PLC_RESET_THRESHOLD) //e. напряжение после сброса на нагревателе не должно превышать 1,2 вольта.
         //(исходное значение регулятора СРП (после сброса)) < (-3276).
@@ -87,7 +87,7 @@
     Device_blk.Str.WP_scl <<=  1; //e. during fist 10 seconds after start we state	Device_blk.Str.WP_scl = 2*Device_blk.Str.WP_scl
     // первые 10 секунд работать с коэфициентом передачи * 2
 
-    MaxDelayPLC = Device_blk.Str.PI_b3>>1;	//e. max expected delay for phase detector output
+    MaxDelayPLC = Device_blk.Str.PI_b3>>1;	//e. max expected delay for phase detector output*/
 } // init_PLC
 
 /******************************************************************************
@@ -101,7 +101,7 @@
 ******************************************************************************/
 int PLC_MeanderDelay(int flag)
 {
-    static int poz_counter = 0, neg_counter = 0, flg_delay;
+ /*   static int poz_counter = 0, neg_counter = 0, flg_delay;
 
     if (Device_blk.Str.WP_ref == 0) {
         return (flag);
@@ -125,7 +125,7 @@
     if (neg_counter == Device_blk.Str.WP_ref) {
         flg_delay = 1;
     }
-    return (flg_delay);
+    return (flg_delay);*/
 }
 /******************************************************************************
 ** Function name:		clc_PLC
--- a/Parameters.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/Parameters.c	Tue Apr 12 11:10:49 2016 +0000
@@ -11,7 +11,7 @@
 ******************************************************************************/
 void LoadFlashParam(unsigned source) 
 {
-  if (source == FromFLASH) 
+/*  if (source == FromFLASH) 
   {  
    	 while (LPC_GPDMACH3->CConfig & (1<<17));      	   //e. wait while DMA channel3 is busy
 
@@ -34,7 +34,7 @@
    else  //e. source == ByDefault
 	   init_DefaultParam();		//e. load parameters by default 
 
-  blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF);
+  blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF);*/
 }
 /******************************************************************************
 ** Function name:		init_DefaultParam
@@ -47,7 +47,7 @@
 ******************************************************************************/
 void init_DefaultParam(void)      
 {
-	int i;
+	/*int i;
         
 		Device_blk.Str.My_Addres = My_Addres_const; //r. 0x00; //e. direct set of the main device address //r. прямое назначение основного адреса у-ва
 
@@ -115,7 +115,7 @@
 		Device_blk.Str.Gain_Ph_B = G_PHOTO_STRB;
 
 		Device_blk.Str.Device_SerialNumber = DEVICE_SN;  //e. serial number of the device is by default written down in the register of self-testing  //r. серийный номер прибора по умолчанию записываем в регистр самотестирования
-		
+		*/
 } // init_DefaultParam
 /******************************************************************************
 ** Function name:		FlashDMA_Init
@@ -127,13 +127,13 @@
 ** 
 ******************************************************************************/
 void FlashDMA_Init()
-{
+{/*
 	LPC_GPDMACH3->CConfig &= ~DMAChannelEn; 
 
 	LPC_GPDMA->IntTCClear = DMA3_IntTCClear;
 	LPC_GPDMA->IntErrClr = DMA3_IntTCClear;
 
-	  /* Ch3 set for M2M transfer from Flash to RAM. */
+	 
 	  LPC_GPDMACH3->CSrcAddr = 0x40000;	   //e. address of device parameter block in flash memory (22 sec)
 	  LPC_GPDMACH3->CDestAddr = (uint32_t)&(Device_blk.Array);//e. address of device parameter block in RAM
 
@@ -142,5 +142,5 @@
 
 	  LPC_GPDMACH3->CConfig = MaskTCInt |MaskErrInt|DMA_MEMORY |DMA_MEMORY |(M2M << 11)| DMAChannelEn;	
 
-  return;
+  return;*/
 }
--- a/ThermoCalc.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/ThermoCalc.c	Tue Apr 12 11:10:49 2016 +0000
@@ -62,7 +62,7 @@
 ******************************************************************************/
 int StaticTermoCompens(int temperature) //r. расчет статической составляющей термокомпенсации за один период прибора (100 мкс)
 {
-
+/*
     float TermoCompens_Curr; //r. величина термокомпенсации за один период прибора (100 мкс)
 
     int i, t;
@@ -87,16 +87,11 @@
     //r. Отладка
     //r. TermoCompens_Curr = 1.111111125; // отладка
     //r.TermoCompens_Curr = // 0.25; // за 1 сек накапливается 2500 импульсов
-    /*r.
-    					//0.000100; // коэфф., при котором за 1 сек накапливается 1 импульс
-    					//1.0001; // коэфф., при котором за 1 сек накапливается 10001 импульс
-    					// 0.000125; // коэфф., при котором за 1 сек накапливается 1.25 импульса (за 100 выводится 122 имп.???)
-    					// 0.000105; // за 100 сек д.накапливаться 105 имп., накапл. 103???
-    */
+    
 
     //	TermoCompens_Curr = LONG_2_FRACT_14_18(TermoCompens_Curr);  //r. TermoCompens_Curr переводим в формат 14.18
 
-    return TermoCompens_Curr;
+    return TermoCompens_Curr;*/
 } // StaticTermoCompens
 
 /******************************************************************************
@@ -110,7 +105,7 @@
 ******************************************************************************/
 int DynamicDeltaCalc() //e. calculation the addition termocompensation for 1 reset //r. расчет добавки термокомпенсации на одно обнуление
 {
-
+/*
     int i, t;
 
     t = Temp_Aver;
@@ -135,7 +130,7 @@
         TermoCompDelta = ( Device_blk.Str.ThermoCoolDelta[i] - dThermoCoolDeltaPer_dTermo[i] * (float)( Device_blk.Str.TemperCoolIntDyn[i] - t ) );
     }
     return TermoCompDelta;
-
+*/
 } // DynamicDeltaCalc
 
 /******************************************************************************
@@ -148,7 +143,7 @@
 **
 ******************************************************************************/
 void clc_ThermoSensors(void)
-{
+{/*
     unsigned i;
     static int TS_sum = 0;
     static int seconds_aver = 0, TenSeconds = 0;
@@ -159,9 +154,7 @@
     for (i=0; i<2; i++) {
         //e. conversion of temperature values on ADC output //r. преобразование значений температуры на выходе АЦП
         //e. to range -32768 .. +32767 ( additional code; format 1.15 ) //r. к диапазону -32768 .. +32767 (дополнит. код; формат 1.15)
-        /*	Output.Str.Tmp_Out[i] = mac_r(Device_blk.Str.Tmp_bias[i] << 16,
-        											(Input.StrIn.Tmp_in[i] - 0x8000),
-        											Device_blk.Str.Tmp_scal[i]);*/
+  
         Output.Str.Tmp_Out[i+4] = Input.StrIn.Tmp_in[i];
     }
 
@@ -238,7 +231,7 @@
 
     if ( abs( Output.Str.Tmp_Out[4] - Output.Str.Tmp_Out[5]) > TS_DIFF_MAX) {
         Valid_Data |= THERMO_DIFF_ERROR;
-    }
+    }*/
 } // clc_ThermoSensors
 
 
@@ -252,7 +245,7 @@
 **
 ******************************************************************************/
 void DithFreqRangeCalc(void)  //r. расчет границ коэффициента деления для частоты вибропривода, зависящих от текущей температуры
-{
+{/*
 
     unsigned int min_level, max_level;
     int delta_VB_N;
@@ -266,7 +259,7 @@
     Max_Saturation(&max_level, ((unsigned int)0xFFFF >> DITH_VBN_SHIFT));
     Device_blk.Str.VB_Nmin = min_level << DITH_VBN_SHIFT;
     Device_blk.Str.VB_Nmax = max_level << DITH_VBN_SHIFT;
-
+*/
 } // DithFreqRange_calc
 
 
--- a/commandset.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/commandset.c	Tue Apr 12 11:10:49 2016 +0000
@@ -372,18 +372,18 @@
 
 void M_Gph_W(void)        //e.------------ set the gain factor of photodetector channels ------------------- //r.------------ установка усиления каналов фотоприемника -------------------
 {
-    Device_blk.Str.Gain_Ph_A = rcv_buf[4];     //e. read from the receiver buffer the value of the gain factor of the A channel //r. считать из буфера приемника значение усиления канала А
+  /*  Device_blk.Str.Gain_Ph_A = rcv_buf[4];     //e. read from the receiver buffer the value of the gain factor of the A channel //r. считать из буфера приемника значение усиления канала А
     Device_blk.Str.Gain_Ph_B = rcv_buf[5];     //e. read from the receiver buffer the value of the gain factor of the B channel //r. считать из буфера приемника значение усиления канала В
 
     Out_G_photo(Device_blk.Str.Gain_Ph_A, Device_blk.Str.Gain_Ph_B);       //e. display these values to digital potentiometers //r. вывести эти значения в цифровые потенциометры
 
     trm_cycl = 0;      //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется
-    Mk_Ask1();
+    Mk_Ask1();*/
 } // M_Gph_W
-/*
+
 void M_Rate(void)         //e.------------ start of transfer of the M_Rate parameters stack ------------------- //r.------------ запуск передачи набора параметров M_Rate -------------------
 {
-    uint8_t mode;
+  /*  uint8_t mode;
 
     SetSpeedPeriod();        //e. set the answer transfer rate and its periodicity //r. установить скорость передачи ответа и его периодичность
     UART_SwitchSpeed(trm_rate);
@@ -500,25 +500,25 @@
             trm_ena = 1;        //e. allow operation of the transmitter //r. разрешить работу передатчика
             break;
     }
-    SetIntLatch(wrk_period);
+    SetIntLatch(wrk_period);*/
 } // M_Rate
-*/
+
 void M_Reset(void)
 {
     while(1);
 } // will not achieve
 
 void M_Param_R(void)      //e. ------------ read the parameter of the GLD from the data memory ---------------------- //r.------------ чтение параметра GLD из памяти данных ----------------------
-{
+{/*
     num_of_par = 1;     //e. 1 parameter output //r. выводить один параметр
     addr_param[0] = (void *)(&Device_blk.Str.My_Addres + rcv_buf[3]); //e. address of the needed parameter in the block //r. адрес требуемого параметра в блоке
     size_param[0] = 2;     //e. size of the buffer -  2 bytes //r. размер буфера  - 2 байта
 
-    trm_ena = 1;        //e. allow operation of the transmitter //r. разрешить работу передатчика
+    trm_ena = 1;   */     //e. allow operation of the transmitter //r. разрешить работу передатчика*/
 } // M_Param_R
 
 void M_Param_W(void)      //e.------------ write the parameter of the GLD from the data memory ----------------------- //r.------------ запись параметра GLD в память данных -----------------------
-{
+{/*
     int * ptr;
 
     ScopeMode = 0; //e. VB_DELAY_MEANDER allocate a mode of display for a control point of an scope //r. VB_DELAY_MEANDER назначить режим отображения для контрольной точки осциллографа
@@ -528,22 +528,22 @@
     *ptr = (rcv_buf[4] << 8) | (rcv_buf[5] & 0xFF); // write new parameter value
 
     trm_cycl = 0;      //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется
-    Mk_Ask1();
+    Mk_Ask1();*/
 } // M_Param_W
 
 void M_LdPar_F()      //e.============ procedure for load the GLD parameters from the flash-memory =========== //r.============ процедура загрузки параметров ГЛД из флэш-памяти ===========
 {
-
+/*
     LoadFlashParam(FromFLASH);        //e. load the GLD parameters from the flash-memory //r. загрузить параметры ГЛД из фдэш-памяти
     blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF);
 //	Init_software();
 
     trm_cycl = 0;      //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется
-    Mk_Ask1();
+    Mk_Ask1();*/
 } // M_LdPar_F
 
 void M_LdPar_D(void)      	//e.============ procedure for set parameters of the GLD by default ============ //r.============ процедура установки параметров ГЛД по умолчанию ============
-{
+{/*
 #if !defined COMMAND_DEBUG
     LoadFlashParam(ByDefault);  	//e. define parameters of the GLD by default //r. определить параметры ГЛД по умолчанию (default)
     Init_software();
@@ -582,7 +582,7 @@
 } // B_Delta
 
 void D_Period_W(void)     //e. === set the period of the angle increase output //r. === установка периода выдачи приращения угла
-{
+{*/
 } // D_Period_W
 
 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--- a/el_lin.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/el_lin.c	Tue Apr 12 11:10:49 2016 +0000
@@ -200,7 +200,7 @@
 
 
 void transm_DAT(void)
-{
+{/*
     uint32_t param, param_byte, CRC;
     int32_t *trans_param;
 
@@ -237,7 +237,7 @@
 
         for (param_byte = 0; param_byte < size_param[param]; param_byte++) {
             if ( (param_byte & 0x0001) == 0 )			//r. считываем старший байт
-                trm_buf[trm_num_byt] = (*trans_param >> (8/**(size_param[param]-param_byte-1)*/)) & 0x00ff;	    	 //r.размещение передаваемого параметра в пакете
+                trm_buf[trm_num_byt] = (*trans_param >> (8)) & 0x00ff;	    	 //r.размещение передаваемого параметра в пакете
             else {
                 trm_buf[trm_num_byt] = *trans_param & 0x00ff;
                 trans_param ++;								//r.переходим к следующей ячейке памяти
@@ -280,7 +280,7 @@
     }
 
     LPC_GPDMACH2->CConfig |=  DMAChannelEn;                   //e. DMA for enable signal
-    return;
+    return;*/
 }
 /******************************************************************************
 ** Function name:		DMA_Init
--- a/main.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/main.c	Tue Apr 12 11:10:49 2016 +0000
@@ -58,8 +58,8 @@
 
 
     UART_InitSet (0, 921600, 0x03);  // надо проверить, мож чо с ногам
-    UART_InitSet (1, 921600, 0x03);
-   //UART_InitSet (1, 115200, 0x03);
+   // UART_InitSet (1, 921600, 0x03);
+      UART_InitSet (1, 115200, 0x03);
     
     ////////////
     //DAC_ADC_Exchange_Init();  // инициализация  обмена АЦП и ЦАП.
@@ -69,7 +69,7 @@
     LoadFlashParam(FromFLASH); 	//загрузка параметров.
 
    // open_all_loops();                          //#define open_all_loops()			RgConA   = 0	(Основной регистр управления устройства (0 - включить, 1 - отключить)).
-    Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
+  //  Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
     init_PLC();                                //Инициализация СРП(регулировка периметра)
     init_Dither_reg();                         //инициализация вибропривода
   //  RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1	0x0001)
--- a/mathDSP.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/mathDSP.c	Tue Apr 12 11:10:49 2016 +0000
@@ -36,7 +36,7 @@
 ******************************************************************************/
 void init_VibroReduce()
 {
-  unsigned int i; 
+  /*unsigned int i; 
  	   __int64 coeff;
 //     ~22.9                    ~17600           768                               | 10000Hz = 10 KHz  |*|      ?????      |/|768000|
   Vibro_Filter_Aperture = Device_blk.Str.VB_N/DIV_CONST;	//e. real expression is DEVICE_SAMPLE_RATE_HZ*Device_blk.Str.VB_N/7680000
@@ -54,7 +54,7 @@
     hMovAver[i]= coeff;
    }
    Vibro_2_CountIn = MULT_7680_12500/Vibro_Filter_Aperture;
-   Vibro_2_CountIn++; //какойто счетчик
+   Vibro_2_CountIn++; //какойто счетчик*/
 }
 
 /******************************************************************************
--- a/vibro.c	Mon Apr 11 11:04:34 2016 +0000
+++ b/vibro.c	Tue Apr 12 11:10:49 2016 +0000
@@ -1,6 +1,6 @@
 #include "Global.h"
 GyroT Gyro;
-
+GyroParam GyroP;
 
 volatile unsigned int Cheng_AMP_Flag=0;
 int    reper=0;
--- a/vibro.h	Mon Apr 11 11:04:34 2016 +0000
+++ b/vibro.h	Tue Apr 12 11:10:49 2016 +0000
@@ -153,12 +153,118 @@
 unsigned int EXT_Latch;
 
 
-} GyroT, *Gyro_p;
-extern GyroT Gyro;
 
 
 
 
+} GyroT, *Gyro_p;
+extern GyroT Gyro;
+
+typedef  union {
+    int Array[171];
+    struct {
+        // Device_blk
+        int     My_Addres;            //e. 0 - device own address //r.0 - собственный адрес устройства
+
+        //e. =============== parameters of HFO regulator ===============    //r. =============== параметры контура ВЧ генератора накачки ===============
+        int		HF_ref;    		      //e. 1 - value of the reference //r.  1 - значение опоры
+        int     HF_scl;               //e. 2 - the gain factor (1.15)    //r. 2 - коэффициент передачи (1.15)
+        int     HF_min;              //r.  3 - минимум выходного значения на ЦАПе регулятора (соответствует максим. напряжению на ГВЧ)
+        int     HF_max;               //e. 4 - maximum of the output value on the regulator DAC (appropriate to minimal voltage on the HFO) //r.  4 - максимум выходного значения на ЦАПе регулятора (соответствует миним. напряжению на ГВЧ)
+
+        //e. =============== parameters of the regulator of the DS power regulator ========== //r. =============== параметры контура регулирования мощности ДУП ==========
+        int     RI_ref;               //e. 5 - value of the reference //r.  5 - значение опоры
+        int     RI_scl;               //e. 6 - the gain factor (1.15) //r.  6 - коэффициент передачи (1.15)
+
+        //e. =============== parameters of the CPLC regulator ===== //r. =============== параметры контура стабилизации рабочего периметра (СРП) =====
+        int     WP_ref;         //e. 7 -  value of the reference //r.  7 - значение опоры
+        int     WP_scl;         //e. 8 - the gain factor (1.15) //r. 8 - коэффициент передачи (1.15)
+        int     WP_mdy;         //e. 9 - value of the reset delay //r. 9 - значение задержки сброса
+        int     WP_rup;         //e. 10 - upper value of DAC adjustment (appropriate to minimal voltage on the heater) //r. 10 - верхнее значение регулировки ЦАП (соответствует миним. напряжению на нагревателе)
+        int     WP_rdw;         //e. 11 - lower value of the DAC adjustment (appropriate to maximal voltage on the heater) //r. 11 - верхнее значение регулировки ЦАП (соответствует максим. напряжению на нагревателе)
+
+        //e. =============== parameters of the dither drive regulator of the GLD ==================== //r. =============== параметры контура вибропривода ГЛД ====================
+        int     VB_phs;         //e. 12 - the phase delay parameter of the dither drive PLL //r.  12 - параметр Phase_зад. СРЧ вибропривода
+        int     VB_scl;         //e. 13 - the gain factor (1.15) of the dither drive PLL  //r. 13 - коэффициент передачи (1.15) СРЧ вибропривода
+        unsigned int VB_N;          //e. 14 - divider for dither drive period (defines dither period) //r. 14 - коэфф.деления N вибропривода (период колебаний) ВП
+        unsigned int VB_Nmin;        //e. 15 - minimum of the output value of the oscillation period regulator //r. 15 - минимум выходного значения регулятора периода
+        unsigned int VB_Nmax;        //e. 16 - maximum of the output value of the oscillation period regulator //r. 16 - максимум выходного значения регулятора периода
+
+        int     VB_Fdf_Hi;      //e. 17 - adjusted output frequency (H) //r. 17 - заданная частота расщепления (H)
+        unsigned int VB_Fdf_Lo;      //e. 18 - (L) (double precision) //r. 18 - (L) (двойная точность)
+
+        int     VB_Fsc;           	 //e. 19 - the gain factor of the frequency regulator //r. 19 - коэффициент передачи регулятора частоты расщепления
+        unsigned int VB_Tmin;        //e. 20 - the gain factor of the frequency regulator //r. 19 - коэффициент передачи регулятора частоты расщепления
+        unsigned int VB_Tmax;        //e. 21 - maximum of the output value of the regulator //r. 21 - максимум выходного значения регулятора Tau
+        unsigned int VB_tau;         //e. 22 - pulse width of the dither drive (without noise)//r. 22 - длительность импульса вибропривода (до ошумления)
+        int     VBN_Tzd;      		 //e. 23 - adjusted noise period //r. 23 - заданный период ошумления
+        int     VBN_Ran;        	 //e. 24 - range of the random component of noise //r. 24 - диапазон случайной составляющей ошумления VBN_Tsl
+        int     VBN_k;          	 //e. 25 - adjusted noise constant //r. 25 - заданная константа ошумления
+
+        //e. =============== parameters of processing of accurate data ============= //r. =============== параметры обработки точностной информации =============
+        int     PI_Fsc; //_         //e.  26 - the S_ds scale parameter //r.  26 - масштабный коэффициент Sдуп
+        int     PI_Fb0; //_         //e.  27 - the B_ds zero shift of the DS //r.  27 - смещение нуля ДУПа Bдуп
+        int     PI_scl; //_         //e.  28 - the Scale scale coefficient of the gyro //r.  28 - масштабный коэфф. гироскопа Scale
+        int     PI_bia; //_         //e.  29 - the Bias zero shift of the gyro //r.  29 - смещение нуля гироскопа Bias
+
+        //e. ===============  coefficients of the temperature correction ================= //r. ===============  коэффициенты температурной коррекции =================
+        int     PI_a0; //_    	     //  30
+        int     PI_a1; //_           //  31
+        int     PI_a2; //_   	     //  32
+        int     PI_a3; //_           //  33
+        int     PI_a4; //_           //  34
+        int     PI_a5; //_           //  35
+        int     PI_a6; //_           //  36
+        int     PI_b1; //_           //  37
+        int     PI_b2; //_           //  38
+        int     PI_b3; //_           //  39
+        int     PI_b4; //_           //  40
+        int     PI_b5; //_           //  41
+        int     PI_b6; //_           //  42
+
+        //e. =============== parameters of normalization of the temperature sensors  ============= //r. =============== параметры нормировки датчиков температуры =============
+
+        int     Tmp_bias[6]; //_    //e. 43 - an array of shifts of the 0..5 temperature sensors //r. 43 - массив сдвигов температурных датчиков 0..5
+        int     Tmp_scal[6]; //_    //e. 49 - an array of the scale coefficients of temperature sensors//r.  49 - массив масштабных к-тов температурных датчиков
+        int     WP_reset;           //e. 55 - initial position of the CPLC regulator (after reset)  //r.  55 - исходное положение регулятора СРП (после сброса)
+
+        //e. ================ gain factor of photodetector channels =========== //r. ================ к-т усиления каналов фотоприемника ===========
+        unsigned int	Gain_Ph_A;	//e. 56 - initial gain factor of the A channel of photodetector //r.	56 - начальный к-т усиления канала А фотоприемника
+        unsigned int	Gain_Ph_B;	//e. 57 - initial gain factor of the B channel of photodetector //r. 57 - начальный к-т усиления канала B фотоприемника
+
+        //e. =============== switch of the source of loading GLD variables block === //r. =============== переключатель источника загрузки блока переменных ГЛД (галочка в настороечной программе)
+        
+        int		Header_Word;		//e. 58 - flash sector validity header  //r. 58 - заголовок-ключ к индикатору источника загрузки
+        int		LoadFlash_enable;	//e. 59 - source loading flag: 1 - load from the flash //r. 59 - признак источника загрузки: 1 - грузиться из flesh
+
+//e. 0 - load default parameters (factory)  //r. 0 - грузить параметры по умолчанию (заводские)
+        unsigned int Device_SerialNumber;	//e. 60 - serial number of the device //r. 60 - серийный номер прибора
+        int     Reserved0;                  //e. 61 - not used
+
+        int     WP_reset2;                  //e. 91 - voltages of CPLC regulator reset at cooling //r.  xx - напряжения обнуления контура СРП при охлаждении
+        //e. parameters setting termocompensation parameters in dynamics (at heating and cooling) //r. параметры, задающие параметры термокомпенсации в динамике (при нагреве и охлаждении)
+        float	Reserved1;                  //e. 92 - not used
+        float	Reserved2;                  //e. 93 - not used
+        int		K_vb_tu; 			//e. 94 - slope of dependence of the VB_N division factor from temperature (as though Hz/degree, but in relative units ) //r. крутизна зависимости коэффициента деления VB_N от температуры (как бы Гц/градус, но в у.е.)
+        int		TemperNormal; 		//e. 95 -temperature for which the VB_N division factor of the dither drive is set //r. температура, для которой задан коэффициент деления вибропривода VB_N
+        int		K_WP_rst_heating; 	//r. 96 - крутизна зависимости напряжения обнуления при нагревании от температуры (как бы вольт/градус, но в у.е. ЦАП и термодатчиков )
+        int		K_WP_rst_cooling; 	//e. 97 - slope of dependence of a reset voltage at cooling from temperature (as though Volt/degree, but in relative units of DAC and temperature sensors)  //r. крутизна зависимости напряжения обнуления при охлаждении от температуры (как бы вольт/градус, но в у.е. ЦАП и термодатчиков )
+        int		WP_transition_step; //e. 98 - step of change of a heater voltage at resetting //r. шаг изменения напряжения нагревателя при выполнении обнуления
+        int		Reserved3; // e. 99 -not used
+        int     HF_scl_2;         //r. 100 -  коэффициент передачи (1.15) контура ГВЧ при обнулении
+//    int 	TemperIntDyn[TERMO_FUNC_SIZE]; //e. 114 -
+//    float   ThermoHeatDelta[TERMO_FUNC_SIZE]; //e. 128 -
+        int     DeltaTempRecalc;   //r. 129 - температурный интервал пересчета динамич. компенсации (в у.е.) //e. temperature delta for dynamic thermocompensation recalculation(in relative units)
+//   int 	TemperCoolIntDyn[TERMO_FUNC_SIZE]; // e. 143 -
+//   float   ThermoCoolDelta[TERMO_FUNC_SIZE];  //e. 157 -
+// TERMO_MODE	TermoMode;	//e  62 - device operation mode (with thermocompenstion, without it, debug )//r.  62 - режим работы прибора (с термокомпенсацией, без нее или отладка)
+//e. addition for the piecewise-linear termocorrection //r. добавление для кусочно-линейной термокоррекции
+//     int 	TemperInt[TERMO_FUNC_SIZE];	//e. 63
+//   float 	TermoFunc[TERMO_FUNC_SIZE];	//e. 77
+    } Str;
+} GyroParam;
+
+extern 	GyroParam GyroP;
 
 
 extern unsigned int amp;