forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Revision:
227:2774b56bfab0
Parent:
226:4a4d5bd5fcd7
--- a/Command.c	Tue Dec 26 05:14:09 2017 +0000
+++ b/Command.c	Fri Jan 05 08:14:38 2018 +0000
@@ -135,7 +135,7 @@
     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  4: if(Gyro.EXT_Latch   ) 		CMD_Delta_PS(); Gyro.EXT_Latch=0;          		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;    
@@ -274,7 +274,7 @@
  
    switch(NP) 
    {
-   				case  0: Gyro.My_Addres 	= GyroP.Str.My_Addres; 													break;
+   				//case  0: Gyro.My_Addres 	= GyroP.Str.My_Addres; 													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);
@@ -365,30 +365,26 @@
 }
 void CMD_Maintenance(void)
 {
-    
-    Gyro.ModeOut=0;
-    Gyro.Device_Mode	= 0;
+    unsigned int Temp;
+    Gyro.ModeOut = 0;
+    Gyro.Device_Mode = 0;
          for(int q=0; q<64; q++)
         {
     		BuffTemp[q]=0;
     	}
    //Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД
     BuffTemp[0] =  Gyro.SOC_Out;
-
     BuffTemp[1] =  Gyro.My_Addres;
 
-    BuffTemp[2] =  Gyro.Firmware_Version;
-   /* sprintf((Time),"%d \r\n", Gyro.Firmware_Version);
-     WriteCon(Time);*/
-    BuffTemp[3] =  Gyro.GLD_Serial;
-
-    BuffTemp[4]=0x00;
-
-    BuffTemp[5]=0x00;
+    Temp = 0xfff; //Gyro.Firmware_Version;    
+    BuffTemp[2] =  (Temp >> 0) & 0xff;
+    BuffTemp[3] =  (Temp >> 8) & 0xff; 
+	
+	Temp = Gyro.GLD_Serial;
+    BuffTemp[4]=(Temp >> 0) & 0xff;
+    BuffTemp[5]=(Temp >> 8) & 0xff;
 
     Check(BuffTemp, 8);
-   /*  sprintf((Time),"%d  %d  %d  %d  %d %d %d %d\r\n",BuffTemp[0], BuffTemp[1],BuffTemp[2],BuffTemp[3],BuffTemp[4],BuffTemp[5],BuffTemp[6],BuffTemp[7]);
-     WriteCon(Time);*/
     WriteConN (BuffTemp,8);
    
 }
@@ -440,11 +436,12 @@
     BuffTemp[ 1] = Gyro.My_Addres;
       
     Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; 						//(72 град/с)
-    
+   
 	OldCuruAngle=Gyro.CuruAngle & 0xf;										//сохраняем 3 бит для след измирений 
-	Temp=Gyro.CuruAngle>>4;                                            	//приводим к форме вывода
+	Temp=Gyro.CuruAngle>>4;  
+	                                          	//приводим к форме вывода
 	Gyro.CuruAngle = 0;
-
+    //Temp=200;
     BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
     BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
     
@@ -464,14 +461,8 @@
      
      //HFO
      case 2:
-     	  /* Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff;   
-	       Temp1=  (int)Temp2;*/
-	       //2930
-	    if(Gyro.LG_Type) {OutDeltaPS =(int)(((Spi.DAC_A-0x84bf))* 2);
-	    }
-   	    else 	   	     {OutDeltaPS =(unsigned int)(0x7fff-Spi.ADC5)*0.79;
-   	    }       
-         //  Temp = Spi.DAC_A-0x7fff;
+
+	       OutDeltaPS =  0xffff - Spi.DAC_A; 
            BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
      break;     
      
@@ -509,7 +500,7 @@
      
      //Напряжение на регуляторе периметра
      case 8:
-          OutDeltaPS =(int)(3300+(0x7fff+(Spi.DAC_B*1.083)));// (Spi.DAC_B - 0x7fff);
+          OutDeltaPS =	((Spi.DAC_B-0x7fff)&0xffff);
           BuffTemp[5] =  (OutDeltaPS >> 8) & 0xff;
   
      break;  
@@ -550,7 +541,7 @@
      //ток 1
      case 14:
       //Temp = Gyro.In1;
-        IntOutDeltaPS = ((Gyro.In1>>1)*0.800875)-0x3e0b;
+        IntOutDeltaPS = 0;//((Gyro.In1>>1)*0.800875)-0x3e0b;
         BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff;//in1//2
         
      break;  
@@ -564,7 +555,7 @@
      //ток 2
      case 16:
    //	Temp = Gyro.In2;
-     	IntOutDeltaPS = ((Gyro.In2>>1)*0.800875)-0x3e0b;    
+     	IntOutDeltaPS =0;// ((Gyro.In2>>1)*0.800875)-0x3e0b;    
      	BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff;
      break;  
      
@@ -590,7 +581,7 @@
      //температурный канал 5
      case 20:
         OutDeltaPS = 0;
-        OutDeltaPS =  Gyro.Termo;//Spi.ADC1;// //Gyro.Termo;//0xa4=164
+        OutDeltaPS =  Gyro.Termo;
         BuffTemp[5] =(OutDeltaPS >> 8) & 0xff;//температура    
      break;       
      
@@ -691,7 +682,7 @@
     BuffTemp[13]=(Temp >> 0) & 0xff;////										14 --сигнал ошибки регулятора ГВЧ
   
  	//Temp = (unsigned int)((7675000*16/(Gyro.Frq>>12))); 		
- 	Temp = (unsigned int)(7680000/(Gyro.Frq>>16)); 
+ 	Temp = Gyro.Frq>>12;//(unsigned int)(7680000/(Gyro.Frq>>16)); 
     BuffTemp[14]  =  (Temp >> 8) & 0xff;									    //15 период вибропривода.(частота) T_Vibro
     BuffTemp[15]  =  (Temp >> 0) & 0xff;								        //16 период вибропривода.
     
@@ -701,7 +692,7 @@
     /*sprintf((Time),"%d   %d\r\n",Gyro.FrqPhaseEror, Gyro.FrqPhaseEror<<2);
     WriteCon(Time);			*/										//18
 
- 	Temp =Gyro.L_vibro/*>>1*/;//(unsigned int)(((7675000*16/200) * Gyro.AmpPer /(Gyro.Frq>>12))); 
+ 	Temp = Gyro.AmpPer/*>>1*/;//(unsigned int)(((7675000*16/200) * Gyro.AmpPer /(Gyro.Frq>>12))); 
     BuffTemp[18]  =  (Temp >> 8) & 0xff;										//19 длительность импулься вибропривода(амплитуда)
     BuffTemp[19]  =  (Temp >> 0) & 0xff;										//20
 	
@@ -813,8 +804,8 @@
     }
     
     else	Spi.DAC_B = (unsigned int)((temp-0x7fff)&0xffff);   
-     sprintf((Time),"%d     %d   \r\n", Spi.DAC_B, temp);
-    		WriteCon(Time); 
+   /*sprintf((Time),"%d     %d   \r\n", Spi.DAC_B, temp);
+    		WriteCon(Time); */
     for(int q=0; q<64; q++)
         {
     		BuffTemp[q]=0;
@@ -831,11 +822,18 @@
 {   
     unsigned int temp1,temp2,anser;
     temp1 		=	(((BuffTemp[4]<<8) | BuffTemp[5])&0xFFFF);
-    Gyro.Frq	=	(122780000/temp1)<<12;
-    F_vib=103200000/((Gyro.Frq>>16)*2);
-    temp2		=	(((BuffTemp[6]<<8) | BuffTemp[7])&0xFFFF);
-    Gyro.AmpPer	=	((((((Gyro.Frq>>12)*200)/16)*temp2)/7680000)/2);
-    Gyro.Amp = (Gyro.AmpPer)<<15;
+    Gyro.Frq	=	 (temp1<<12);
+ // Gyro.Frq	=	(122780000/temp1)<<12;
+    
+    F_vib= (unsigned int)(825600000 / temp1);
+    temp2 =	(((BuffTemp[6]<<8) | BuffTemp[7])&0xFFFF);
+   
+    sprintf((Time),"%d  %d \r\n",temp1, temp2);
+    WriteCon(Time);
+    Gyro.AmpPer	=	temp2;
+    Gyro.Amp   =    (Gyro.AmpPer<<17)/100;
+   /* Gyro.AmpPer	=	((((((Gyro.Frq>>12)*200)/16)*temp2)/7680000)/2);
+    Gyro.Amp = (Gyro.AmpPer)<<17;*/
 
     BuffTemp[0] = Gyro.SOC_Out;      
     BuffTemp[1] = Gyro.My_Addres;    
@@ -1205,8 +1203,14 @@
                		 if( Gyro.Debag2) Gyro.Debag2=0;
                		 else Gyro.Debag2=1;      
                   	}
-             if (Time[0] == 'C') Spi.DAC_A+=200;
-             if (Time[0] == 'c') Spi.DAC_A-=200;
+             if (Time[0] == 'C') Spi.DAC_A+=32;
+             if (Time[0] == 'c') Spi.DAC_A-=32;
+             
+              if (Time[0] == 'k') PLC_ERR_DAC_F = 0;
+              
+             if (Time[0] == 'V') Spi.DAC_A+=160;
+             if (Time[0] == 'v') Spi.DAC_A-=160;
+            
              if (Time[0] == 'X') Spi.DAC_B+=2000;
              if (Time[0] == 'x') Spi.DAC_B-=2000;
 /////////////////////////////////////////////////////////////////