forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Revision:
218:b4067cac75c0
Parent:
216:189b0ea1dc38
Child:
219:2d3475d0dd1b
--- a/Command.c	Mon Sep 04 12:55:13 2017 +0000
+++ b/Command.c	Mon Sep 25 10:35:56 2017 +0000
@@ -147,7 +147,7 @@
 }
 void CMD_Rate7(void)
 {
-    
+    //Buff_Restored_Mod[CountV31]    BuffADC_znak[q]
   // (CountV64)&0x3f]*Gyro.ModAmp туды 
    //BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase)  & 0x3f]
     BuffClear();
@@ -156,104 +156,111 @@
     int Temp1;
    	float Temp2;
     int Shift = -11463;
-    static unsigned int t=16;
+    static unsigned int t=15;
 
 	BuffTemp[0] = Gyro.SOC_Out;
     BuffTemp[1] = Gyro.My_Addres;
   
-    	iRate_7 =(((BuffADC_64Point[(t - 0 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
+    	iRate_7 =(Buff_Restored_Mod[(t - Gyro.PLC_Phase)&0x1f])&0xffff;
     BuffTemp[ 2] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 3] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков
    		
-   		iRate_7 = (((BuffADC_64Point[(t - 2 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
+   		iRate_7  =(Buff_Restored_Mod[((t - 2) - (Gyro.PLC_Phase ))&0x1f])&0xffff;
     BuffTemp[ 4] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 5] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
                   
                   
-        iRate_7 =(((BuffADC_64Point[(t - 4 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
+        iRate_7  =(Buff_Restored_Mod[((t - 4) - (Gyro.PLC_Phase))&0x1f])&0xffff;
     BuffTemp[ 6] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 7] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
 
-        iRate_7 = (((BuffADC_64Point[(t - 6 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
+        iRate_7  =(Buff_Restored_Mod[((t - 6) - (Gyro.PLC_Phase))&0x1f])&0xffff;
     BuffTemp[ 8] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 9] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
 
-        iRate_7 = (((BuffADC_64Point[(t - 8 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
-    BuffTemp[ 10] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 11] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+        iRate_7  =(Buff_Restored_Mod[((t - 8) - (Gyro.PLC_Phase))&0x1f])&0xffff;
+    BuffTemp[10] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[11] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
        
-  		iRate_7 = (((BuffADC_64Point[(t - 10 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
-    BuffTemp[ 12] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 13] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+  		iRate_7  =(Buff_Restored_Mod[((t - 10) - (Gyro.PLC_Phase))&0x1f])&0xffff;
+    BuffTemp[12] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[13] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
 
-        iRate_7 = (((BuffADC_64Point[(t - 12 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
-    BuffTemp[ 14] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 15] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+         iRate_7 =(Buff_Restored_Mod[((t - 12) - (Gyro.PLC_Phase))&0x1f])&0xffff;
+    BuffTemp[14] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[15] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
         
-        iRate_7 = (((BuffADC_64Point[(t - 14 - Gyro.PLC_Phase)&0x3f]) )+ Shift)&0xffff;
-    BuffTemp[ 16] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 17] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;    
+         iRate_7 = (Buff_Restored_Mod[((t - 14) - (Gyro.PLC_Phase))&0x1f])&0xffff;
+    BuffTemp[16] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[17] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;    
      
 
      
      
      
-           iRate_7 = (((ModArraySin[(t - 0)&0x3f])))- 50;
-    BuffTemp[ 18] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 19] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t)] - 50;
+    BuffTemp[ 18] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 19] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
        
-            iRate_7 = (((ModArraySin[(t - 2)&0x3f])))- 50;
-    BuffTemp[ 20] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 21] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 2)&0x1f] - 50;
+    BuffTemp[ 20] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 21] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
           
-            iRate_7 = (((ModArraySin[(t - 4)&0x3f])))- 50;
-    BuffTemp[ 22] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 23] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 4)&0x1f] - 50;
+    BuffTemp[ 22] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 23] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
            
-            iRate_7 = (((ModArraySin[(t - 6)&0x3f])))- 50;
-    BuffTemp[ 24] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 25] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 6)&0x1f] - 50;
+    BuffTemp[ 24] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 25] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
         
-            iRate_7 = (((ModArraySin[(t - 8)&0x3f])))- 50;
-    BuffTemp[ 26] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 27] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 8)&0x1f] - 50;
+    BuffTemp[ 26] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 27] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
 
-            iRate_7 = (((ModArraySin[(t - 10)&0x3f])))- 50;
-    BuffTemp[ 28] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 29] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 10)&0x1f] - 50;
+    BuffTemp[ 28] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 29] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
         
-            iRate_7 = (((ModArraySin[(t - 12)&0x3f])))- 50;
-    BuffTemp[ 30] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 31] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 12)&0x1f] - 50;
+    BuffTemp[ 30] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 31] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
            
-            iRate_7 = (((ModArraySin[(t - 14)&0x3f])))- 50;
-    BuffTemp[ 32] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
-    BuffTemp[ 33] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
+          iRate_7 = ModArraySin32[(t - 14)&0x1f] - 50;
+    BuffTemp[ 32] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
+    BuffTemp[ 33] = (iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
    
+         
+         
             iRate_7 = (Spi.DAC_B - 0x7fff);
     BuffTemp[ 34] =(iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 35] =(iRate_7 >>  0) & 0xff;//младший байт разности счетчиков;
      
-             Rate_7 = Gyro.PLC_Eror_count;
+     
+     
+             Rate_7 = Gyro.PLC_Eror_count>>3;
     BuffTemp[ 36] =(Rate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 37] =(Rate_7 >>  0) & 0xff;//младший байт разности счетчиков;
 
     Gyro.PLC_Eror_count=0;
- switch(Gyro.LG_Type) 
+    
+    switch(Gyro.LG_Type) 
     {
-     	case 1:  	iRate_7 =(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); 	break;
+     	case 1:  	iRate_7 =(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); 		break;
+     	
      	case 0:    	Temp2   = (Spi.DAC_A*1.538) - 0xd80f;   
-					iRate_7 =  (int)Temp2;							break;
+					iRate_7 =  (int)Temp2;							  
+					//iRate_7 =(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); 			
+					break;
 	}
 	//Rate_7 = 30000;//(unsigned int)(iRate_7&0xffff);
-  
     BuffTemp[ 38] = (iRate_7 >>  8) & 0xff;//младший байт разности счетчиков
     BuffTemp[ 39] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков;
 
     Check(BuffTemp, 42);
     WriteConN (BuffTemp,42);
-    if(t<47)t+=16;
-    else t =16;
+ /*   if(t<31)t+=8;
+    else t =15;*/
   
 }
 
@@ -326,8 +333,8 @@
      			case 18: temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo);
      			sprintf((Time),"%d \r\n", temp/32);
        		    WriteCon(Time);
-    					 temp=temp*20;
-    					 Gyro.AmpTarget=(unsigned int)(temp);
+    			temp=temp*20;
+    			Gyro.AmpTarget=(unsigned int)(temp);
      			break; 
      			
      			case 19: Gyro.AmpSpeed 		= GyroP.Str.AmpSpeed;	     											break; 
@@ -379,7 +386,12 @@
 }
 void CMD_Maintenance(void)
 {
+    
     Gyro.ModeOut=0;
+         for(int q=0; q<64; q++)
+        {
+    		BuffTemp[q]=0;
+    	}
    //Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД
     BuffTemp[0] =  Gyro.SOC_Out;
 
@@ -441,6 +453,9 @@
     Gyro.EXT_Latch=0;
     Gyro.Event_500Hz=0;
     unsigned int Temp;
+	
+	
+	
 	BuffTemp[ 0] = Gyro.SOC_Out;
     BuffTemp[ 1] = Gyro.My_Addres;
       
@@ -471,9 +486,11 @@
      case 2:
      	  /* Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff;   
 	       Temp1=  (int)Temp2;*/
-	       
-	    if(Gyro.LG_Type) {OutDeltaPS =(int)(((Spi.DAC_A/0.6667)-30000)-0x7fff);}
-   	    else 	   	     {OutDeltaPS =(unsigned int)(0x7fff-Spi.ADC5)*0.79;}       
+	       //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;
            BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
      break;     
@@ -512,7 +529,7 @@
      
      //Напряжение на регуляторе периметра
      case 8:
-          OutDeltaPS = (Spi.DAC_B - 0x7fff);
+          OutDeltaPS =(int)(3300+(0x7fff+(Spi.DAC_B*1.083)));// (Spi.DAC_B - 0x7fff);
           BuffTemp[5] =  (OutDeltaPS >> 8) & 0xff;
   
      break;  
@@ -693,7 +710,7 @@
     BuffTemp[23] =  (Temp1 >> 0) & 0xff;	
     										//24
 
-    Temp = Gyro.PLC_Eror_count; //Gyro.AD_Slow >> 16; 
+    Temp = Gyro.PLC_Eror_count>>6; //Gyro.AD_Slow >> 16; 
     Gyro.PLC_Eror_count = 0;
     BuffTemp[24] = (Temp >> 8) & 0xff;//                                        //25 ФД СРП
     BuffTemp[25] = (Temp >> 0) & 0xff;// 										//26 ФД СРП
@@ -787,10 +804,7 @@
     	if(Gyro.LG_Type==1) Spi.DAC_A = ((unsigned int)((Gyro.DacIn+0x7011)*0.6667));
     	else Spi.DAC_A = (unsigned int)((temp));
     }
-    else	Spi.DAC_B = (unsigned int)temp;
-	
-
-    
+    else	Spi.DAC_B = (unsigned int)temp;    
 	/*
       sprintf((Time),"%d     %d     %f     \r\n", temp,   Spi.DAC_A,    (temp+10744)*0.79);
       WriteCon(Time);
@@ -800,15 +814,19 @@
     		DACF =(temp*K_DAC)+deltaDAC;
    			Spi.DAC_B =(unsigned int)(DACF) (unsigned int)(temp*K_DAC+deltaDAC); // K_DAC);
     	}*/
-    if(Consol)
-    {
+ /*   if(Consol)
+    {*/
+     for(int q=0; q<64; q++)
+        {
+    		BuffTemp[q]=0;
+    	}
     BuffTemp[0] = Gyro.SOC_Out;      //DD
     BuffTemp[1] = Gyro.My_Addres;    //00
     BuffTemp[2] = Gyro.CMD_In;       //D9
     BuffTemp[3] =0;
     Check(BuffTemp, CRC_N);
     WriteConN (BuffTemp,CRC_N);
-    }
+  /*  }*/
 }
 
 void CMD_M_vib()
@@ -1117,7 +1135,7 @@
       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;  
@@ -1220,14 +1238,13 @@
                 LPC_MCPWM->MAT1 = T_vib_1;
              }  
              if (Time[0] == 'X') {		// выдача технологическая
-                faza += 1;
-                sprintf((Time),"%d \r\n",  Spi.DAC_A);
-    		    WriteCon(Time);
+               if(Gyro.Debag2 >5) Gyro.Debag2=0;
+               else  Gyro.Debag2=200;
             }
              if (Time[0] == 'x') {		// выдача технологическая
                
-               if(TypeMod>2) TypeMod=0;
-               else  TypeMod=4;
+               if(Gyro.Debag >200) Gyro.Debag=0;
+               else  Gyro.Debag=2500;
              } 
              if (Time[0] == 'p') {		// выдача технологическая
               // PlcOFF //Gyro.RgConA&0x8=0;
@@ -1275,9 +1292,9 @@
            
             if (Time[0] == 'b') 
             {          
-                for(int q=0; q<64; q++)
+                for(int q=13; q<21; q++)
             		{
-                	sprintf((Time),"%d  \r\n",   Buff_Restored_Mod[q]);
+                	sprintf((Time),"%d  \r\n",   (Buff_Restored_Mod[(q - Gyro.PLC_Phase)&0x1f])*(BuffADC_znak[q]));
     	   			WriteCon(Time);
             		}
             }