fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
129:406995a91322
Parent:
128:1e4675a36c93
Child:
131:ef5973569c02
--- 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;