forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Revision:
222:7de7b3bf3a1d
Parent:
221:53b256368ca1
Child:
224:598aec95415f
--- a/SPI.c	Mon Oct 23 05:31:10 2017 +0000
+++ b/SPI.c	Mon Nov 20 13:06:31 2017 +0000
@@ -32,7 +32,7 @@
 int Buff_OUT1	[64];
 int Buff_OUT	[64];
 int RegulADC,DeltaRegul,tempDeltaRegul;
-int count10v=0,AMPSUM,AMPSUMP,AMPSUMM,AMPSUM_DESP,AMPSUMPout,AMPSUMMout,SumDelta,PLC_EROR,PLC_Flag,HFO_Flag,HFOdelta,HFOregul,HFOSumDelta;
+int count10v=0,AMPSUM,AMPSUMP,AMPSUMM,AMPSUM_DESP,AMPSUMPout,AMPSUMMout,AMPSUMout,SumDelta,PLC_EROR,PLC_Flag,HFO_Flag,HFOdelta,HFOregul,HFOSumDelta;
 
 
 //int BuffADC_32Point	[64];		
@@ -108,8 +108,8 @@
          WriteCon(Time);*/
       	if(Gyro.RgConA&0x8)
 			{
-		      if(Gyro.PLC_Eror>0) {Spi.DAC_B+=1 * Gyro.PLC_Gain;}
-		      else 				  {Spi.DAC_B-=1 * Gyro.PLC_Gain;}
+		   /*   if(Gyro.PLC_Eror>0) {Spi.DAC_B+=1 * Gyro.PLC_Gain;}
+		      else 				  {Spi.DAC_B-=1 * Gyro.PLC_Gain;}*/
 		    }  
 	/*	if(Gyro.PLC_Eror>0) {Gyro.PLC_Eror_count++;}
      	else 				{Gyro.PLC_Eror_count--;}*/
@@ -123,7 +123,7 @@
           
                 
  
- void  HFORegul2(void)
+/* void  HFORegul2(void)
 {
 static unsigned int countHFO;
 	
@@ -150,7 +150,7 @@
     if(Spi.DAC_A>Gyro.HFO_Min-1)	  Spi.DAC_A=Gyro.HFO_Min-2;
  	else if(Spi.DAC_A<Gyro.HFO_Max+1) Spi.DAC_A=Gyro.HFO_Max+2;
  	
-}          
+}      */    
            
 // Spi.DAC_B-=ADCDIF>>6;
         
@@ -186,7 +186,6 @@
    		 Gyro.IN1_Accum=0;
    		 Gyro.IN2_Accum=0;
     	 Gyro.ADM_Count=0;
-
     	}   
     if (Gyro.ADF_Count > 15) {					// если прошло 16 тактов виброподвеса
         Gyro.AD_Fast = Gyro.ADF_Accum << 11;	//обновляем данные и приводим в один масштаб
@@ -212,43 +211,7 @@
          if (count10v>=64*8)
  		  {
  	        count10v=0;
- 	        
- 	     /*  for(int q=0; q<5; q++)
-      	       	{ 			
-      	    	AMPSUMP+=BuffADC_10v[q];
-       	     	}*/
-
- 	 /*     for(int q=0; q<32; q++)
-      	   	 	{
-      	    	AMPSUMP += BuffADC_10v[q];
-	      	    	
-	       	   }
-       	   for(int q=32; q<64; q++)
-      	    	{
-      	    	AMPSUMM += BuffADC_10v[q];
-       	   		}
-       	    */
-       	    /////////////////////////////
-       	    
-          /*  for(int q=32; q<32+5; q++)
-      	    	{
-      	    	AMPSUMM+=BuffADC_10v[q];
-       	    	}*/
- 	       /* for(int q=32+12; q<32+20; q++)
-      	    	{
-      	    	AMPSUMM+=BuffADC_10v[q];
-       	    	}*/
-      	   /* for(int q=32+28; q<32+32; q++)
-      	   	 	{
-      	    	AMPSUMM+=BuffADC_10v[q];
-       	    	} */
-       	 
-           
-          /*  sprintf((Time),"%d  %d    %d   %d \r\n",  AMPSUM, AMPSUMP, AMPSUMM,AMPSUMP  - AMPSUMM);
-            WriteCon(Time);*/
-             	
-    
- 	        
+        
  	        for(int q=0; q<32; q++)
       	    	{
 	  	    	SumBuff += BuffADC_10v[q];
@@ -278,18 +241,21 @@
     	        for(int q=0; q<64; q++)
       	    	{
       	    	 	AMPSUM+=BuffADC_10v[q];
-      	    	 	//Buff_OUT[q]=BuffADC_1Point[q];
-      	    	 	Buff_OUT[q]=BuffADC_10v_F [q];
-      	    	 	//Buff_OUT1[q]=
-   	       	 		BuffADC_10v_OLD[q]= BuffADC_10v[q];
+      	    	 	AMPSUMout+=BuffADC_10v_F[q];   	    	 	
+	       	 		BuffADC_10v_OLD[q]= BuffADC_10v[q];
     	   		 	BuffADC_10v[q] =0;
            		}
-            sprintf((Time),"%d  \r\n",  Spi.DAC_A);
-            WriteCon(Time);
+           		for(int q=0; q<64; q++)
+      	    	{
+      	    	 	Buff_OUT[q]=(BuffADC_10v_F[q]-(AMPSUM>>1))>>3;
+           		}
+           		
+            /*sprintf((Time),"%d  \r\n",  Spi.DAC_A);
+            WriteCon(Time);*/
           	   
        	    AMPSUMPout=AMPSUMP;
        	    AMPSUMMout=AMPSUMM;
-       	    
+       	    AMPSUMout=AMPSUM;
             Delta= (AMPSUMPout - AMPSUMMout);
             SumDelta+=Delta;
             Gyro.PLC_Eror_count=SumDelta/Gyro.PLC_Gain;
@@ -418,7 +384,8 @@
 		if(PLC_Flag)
 			{  
 	  	  	 	PLC_Flag=0;
-	  	  		Spi.DAC_B+=(Gyro.PLC_Eror_count);
+	  	  	 	if   (Gyro.PLCDelay){}
+	  	  	 	else Spi.DAC_B+=(Gyro.PLC_Eror_count);
 	  	  		
 	  	  		
 			}
@@ -426,8 +393,16 @@
    		Gyro.PLC_Eror_count=0;  		 	
   if(Gyro.LG_Type==1)
  	{
-   		if	 	( Spi.DAC_B < Gyro.HighTreshold ) Spi.DAC_B = (Gyro.ResetLevelHeat);       
-    	else if	( Spi.DAC_B > Gyro.DownTreshold ) Spi.DAC_B = (Gyro.ResetLevelCool);
+   		if(Spi.DAC_B < Gyro.HighTreshold ) 
+   		{
+   			Spi.DAC_B = (Gyro.ResetLevelCool);  
+   			Gyro.PLCDelay			= GyroP.Str.PLCDelay/10; 
+   		}     
+   else if(Spi.DAC_B > Gyro.DownTreshold ) 
+    	{
+    		Spi.DAC_B = (Gyro.ResetLevelHeat);
+    		Gyro.PLCDelay			= GyroP.Str.PLCDelay/10; 
+    	}
     }
   else
     {
@@ -460,8 +435,8 @@
       else {Gyro.LogPLC=0;}  
       }
       else dispersion++;
-      sprintf((Time),"%d %d %d %d \r\n", Gyro.CuruAngle, Spi.DAC_B, Gyro.AD_Slow, Gyro.Termo);
-      Gyro.CuruAngle=0;
+      /*sprintf((Time),"%d %d %d %d \r\n", Gyro.CuruAngle, Spi.DAC_B, Gyro.AD_Slow, Gyro.Termo);
+      Gyro.CuruAngle=0;*/
       WriteCon(Time);
 }
 void ShowMod2(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап
@@ -469,9 +444,9 @@
 	if(dispersion>3)
     {
 	unsigned int step = 50, ENDMOD=65400;
-	sprintf((Time),"%d %d %d %d     %d   %d   %d\r\n", Gyro.CuruAngle, Spi.DAC_B, Gyro.AD_Slow, Spi.ADC5, 0xfFFf-Spi.ADC1, Spi.ADC1, Gyro.Termo);
+	/*sprintf((Time),"%d %d %d %d     %d   %d   %d\r\n", Gyro.CuruAngle, Spi.DAC_B, Gyro.AD_Slow, Spi.ADC5, 0xfFFf-Spi.ADC1, Spi.ADC1, Gyro.Termo);
     Gyro.CuruAngle=0;
-    WriteCon(Time);
+    WriteCon(Time);*/
 	Spi.DAC_B+=step;
 	if(Spi.DAC_B>ENDMOD)
 		{