forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Revision:
226:4a4d5bd5fcd7
Parent:
225:f8fee6c586cc
Child:
227:2774b56bfab0
--- a/Command.c	Tue Dec 12 05:53:39 2017 +0000
+++ b/Command.c	Tue Dec 26 05:14:09 2017 +0000
@@ -123,18 +123,24 @@
  ///////////////end flah and boot///////////
 
  void M_RateA(void)
- {  
+ {
+ 	
+ 	if(Gyro.ModeOut==3)
+ 	{
+ 		if (Gyro.Device_Mode) Gyro.ModeOut=4;
+ 	}
+ 
     switch(Gyro.ModeOut) 
     {
-    case  1: if(Gyro.Rate1_Event ) 				CMD_Rate();  		 	  		break;  
-    case  2: if(Gyro.Reper_Event )				CMD_Rate2(); 			  		break;  
-    case  3: if(Gyro.Event_500Hz ) 				CMD_Delta_PS();           		break;   
-    case  4: if(Gyro.EXT_Latch   ) 				CMD_Delta_PS();          		break;   
-    case  5: if(Gyro.Event_500Hz ) 				CMD_Delta_Bins();         		break;   
-    case  6: if(Gyro.EXT_Latch   ) 			    CMD_B_Delta();            		break;      	
-    case  7: if(Gyro.Event_500Hz ) 				CMD_B_Delta();          		break;    
-    case  8: if(Gyro.Rate3_Event )				CMD_Rate3();			 		break;        	
-    case  9: if(Gyro.Reper_Event ){				CMD_Rate2(); Gyro.ModeOut=0;}	break;
+    case  1: if(Gyro.Rate1_Event ) 		CMD_Rate();  		 	  		break;  
+    case  2: if(Gyro.Reper_Event )		CMD_Rate2(); 			  		break;  
+    case  3: if(Gyro.Event_500Hz ) 		CMD_Delta_PS();           		break;   
+    case  4: if(Gyro.EXT_Latch   ) 		CMD_Delta_PS(); Gyro.EXT_Latch=0; LoopOff         		break;   
+    case  5: if(Gyro.Event_500Hz ) 		CMD_Delta_Bins();         		break;   
+    case  6: if(Gyro.EXT_Latch   ) 	    CMD_B_Delta();  Gyro.EXT_Latch=0;          		break;      	
+    case  7: if(Gyro.Event_500Hz ) 		CMD_B_Delta();          		break;    
+    case  8: if(Gyro.Rate3_Event )		CMD_Rate3();			 		break;        	
+    case  9: if(Gyro.Reper_Event ){		CMD_Rate2(); Gyro.ModeOut=0;}	break;
     case 10:  CMD_Rate7();Gyro.ModeOut=0;break;//if(Gyro.EvenRate7   ){				CMD_Rate7(); Gyro.EvenRate7=0;}	break;
     case 11: if(Gyro.EvenRate5K  ){				M_Rate5K(); Gyro.EvenRate5K--;}	break;
     }
@@ -269,7 +275,7 @@
    switch(NP) 
    {
    				case  0: Gyro.My_Addres 	= GyroP.Str.My_Addres; 													break;
-   				case  1: Gyro.HFO_ref		= /*GyroP.Str.HFO_ref>>1;*/(unsigned int)(GyroP.Str.HFO_ref)  ;      	break;
+   				case  1: Gyro.HFO_ref		= (unsigned int)(GyroP.Str.HFO_ref)  ;      							break;
    				case  2: Gyro.HFO_Gain 		= 		GyroP.Str.HFO_Gain; 											break;
      			case  3: if(Gyro.LG_Type)  Gyro.HFO_Max=0xffff-GyroP.Str.DAC_current_Work;                                                //((int)(GyroP.Str.DAC_current_Work*0.67)-2000);
      					 else			   Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+ 0x7fff)&0xffff)+22544)*0.65); 	break;  
@@ -361,6 +367,7 @@
 {
     
     Gyro.ModeOut=0;
+    Gyro.Device_Mode	= 0;
          for(int q=0; q<64; q++)
         {
     		BuffTemp[q]=0;
@@ -669,21 +676,16 @@
     BuffTemp[ 9] = (Temp >> 0) & 0xff;//	    								10 --частота расщипления
     
   //(unsigned int)((Gyro.DacIn+30000)*0.6667);
- switch(Gyro.LG_Type) 
-    {
-     	case 1:  	Temp1 =  0xffff - Spi.DAC_A; 	break;//(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); 	break;
-     	
-     	case 0:    //	Temp2 = (Spi.DAC_A*1.538) - 0xd80f;   
-				Temp1 =(int)(((float)(Spi.DAC_A)/0.64)- 56000); 	break;
-	}
-	//Temp1=Gyro.DacIn/*-0x7fff*/;
-    BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч;					11 --выход регулятора ГВЧ
+  	Temp1 =  0xffff - Spi.DAC_A; 	
+	BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч;					11 --выход регулятора ГВЧ
     BuffTemp[11] = (Temp1 >> 0) & 0xff;										  //12 --выход регулятора ГВЧ
    
    
-   
+   /*
     if(Gyro.LG_Type) Temp =(int)(tempDeltaRegul);
-    else  Temp =(unsigned int)((0x7fff-Spi.ADC5)*0.79)<<1;
+    else  Temp =(unsigned int)((0x7fff-Spi.ADC5)*0.79)<<1;*/
+    
+    Temp =(int)(tempDeltaRegul);                                                 //для призмы
     tempDeltaRegul=0;
     BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO									13 --сигнал ошибки регулятора ГВЧ
     BuffTemp[13]=(Temp >> 0) & 0xff;////										14 --сигнал ошибки регулятора ГВЧ
@@ -992,8 +994,14 @@
   BuffTemp[1]	= Gyro.My_Addres;    //00
   BuffTemp[2]	= Gyro.CMD_In;       //D9
   TempMod	 	= BuffTemp[3] & 0xf;
-  Gyro.RgConMod	= TempMod;
-  BuffTemp[3]=Gyro.RgConMod & 0xff;
+  Gyro.Device_Mode	= TempMod;
+  
+      sprintf((Time)," Comand - DeviceMode();   Gyro.Device_Mode = %d Gyro.ModeOut = %d\r\n",Gyro.Device_Mode,Gyro.ModeOut);
+      WriteCon(Time);
+  /*
+		   sprintf((Time),"%d\r\n",Gyro.Device_Mode);
+    		WriteCon(Time);*/
+  BuffTemp[3]=Gyro.Device_Mode & 0xff;
   BuffTemp[4]=0;
   BuffTemp[5]=0;
   Check(BuffTemp, CRC_N);
@@ -1115,6 +1123,7 @@
     //  if(d8_anser)D8_Answer();
       
       switch(Gyro.CMD_In) {
+    //  case 0xA5:					DeviceMode()	;				    		 break;
       case 0x99: /*Gyro.ModeOut=0;*/CMD_Maintenance(); 							 break;
       case 0xD8: 					CMD_M_Control_D8();	 	              		 break;
       case 0xE9:	 				CMD_M_Param_R();							 break;		//чтение параметров
@@ -1125,13 +1134,13 @@
       case 0xDD:  TempParam=(BuffTemp[3]) & 0x9f; 							    //Rate
                   switch(TempParam) {
   				  case  Rate1  :  CMD_Rate(); 	   								break;  
-				  //case  Rate2  :  Gyro.ModeOut=9; 								break;
+				  //case  Rate2  :  Gyro.ModeOut=9; 							break;
 				  case  Rate3  :  CMD_Rate3();             						break;
 				  case  PRate1 :  Gyro.ModeOut=1;	    						break;  
 				  case  PRate2 :  Gyro.ModeOut=2;            					break;  
 				  case  PRate3 :  Gyro.ModeOut=8;								break; 
 				  case  Rate7  :  CMD_Rate7();	    							break; 
-				  case  PRate7 :  Gyro.ModeOut=10;             				break;
+				  case  PRate7 :  Gyro.ModeOut=10;             				    break;
 				  case  Rate5K :  M_Rate5K();	    							break; 
 				  case  PRate5K:  
 				  if(Gyro.ModeOut){}
@@ -1140,14 +1149,19 @@
 				  
 				 }
       break;      //DropDelay(); выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд; 
-      case 0xA0:  /*DropDelay();*/    TempParam=(BuffTemp[3]) & 0x90; 				//Delta_PS
-                  switch(TempParam) {
-  				  case  Delta_500  :  CMD_Delta_PS();		 	    			break;  
-				  case  Delta_EXT  :  CMD_Delta_PS();              				break;
-				  case  PDelta_500 :  Gyro.ModeOut=3;   Gyro.Event_500Hz=0;		break;  
-				  case  PDelta_EXT :  Gyro.ModeOut=4;              				break;
-				 }
+      
+      case 0xA0:  /*DropDelay();*/  
+                //  TempParam=(BuffTemp[3]) & 0x80; 				//Delta_PS
+                 
+                  switch(Gyro.Device_Mode) 
+                  {
+  				  case  0:   Gyro.ModeOut=3;   Gyro.Event_500Hz=0;				break;  
+				  case  4:   Gyro.ModeOut=4;             						break;
+				  }		
+				  sprintf((Time)," Comand - B_Delta_PS();   Gyro.Device_Mode = %d Gyro.ModeOut = %d\r\n", Gyro.Device_Mode, Gyro.ModeOut);
+                  WriteCon(Time);		 
 	  break;
+	  
 	  case 0xB0:  DropDelay();	TempParam =	TempParam=(BuffTemp[3]>>7);	        //Delta_Bins
                   switch(TempParam) {
   				  case  PDelta_Bins:  Gyro.ModeOut=5;   Gyro.Event_500Hz=0;		break;