fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
200:1df682165694
Parent:
199:2728719cdc64
--- a/SPI.c	Thu Oct 20 09:32:25 2016 +0000
+++ b/SPI.c	Thu Oct 20 11:38:22 2016 +0000
@@ -30,20 +30,9 @@
 
 
 unsigned int Buff_ADC_5		   [512];
-unsigned int BuffADC_16Point	[64];
-unsigned int BuffADC_32Point	[64];		
-unsigned int BuffADC_64Point	[64];	
-unsigned int BuffADC_32PointD	[64];
-unsigned int Buff_Restored_Mod 	[64];
 
-unsigned int PulseADC_16Point;
-unsigned int PulseADC_32Point;
-unsigned int PulseADC_64Point;
-unsigned int PulseADC_32PointD;
+unsigned int BuffADC_64Point	[64];	
 
-
-unsigned int Buff_AMP		[256];
-unsigned int Buff_AMP64P	[256];
 unsigned int TypeMod=0;
 unsigned int ModArraySin	  [64] = {50,55,59,64,68,73,77,81,85,88,91,94,96,98,99,99,100,99,99,98,96,94,91,88,85,81,77,73,68,64,59,55,50,45,41,36,32,27,23,19,16,12,9,7,4,2,1,1,0,1,1,2,4,7,9,12,16,19,23,27,32,36,41,45};
 unsigned int ModArrayTriangle [64];
@@ -64,6 +53,7 @@
       Mod+=2;
      }
 }
+
 void Modulator(void)
 {
 	switch(TypeMod) 
@@ -75,8 +65,9 @@
 }
 void  PLCRegul(void)
 {
- 
- if (CountV64 == 0) 
+ if(Gyro.start)Gyro.start--;
+ else{
+     if (CountV64 == 0) 
         {
           for (int i = 0; i < 32; i++ )
                 {
@@ -87,37 +78,35 @@
                 	SinMns+=  BuffADC_64Point[i];
                 }
         ADCDIF = SinPls - SinMns;    
-      //  Spi.DAC_B-=ADCDIF>>6;
-        
-          if(ADCDIF>0) Spi.DAC_B-=3;
-          else Spi.DAC_B+=3;
-          
+        Spi.DAC_B-=ADCDIF>>7;
+    
         if      ( Spi.DAC_B < 15300 )	Spi.DAC_B = 32000;            //проверка на переваливание за границу.  
         else if ( Spi.DAC_B > 53000 ) 	Spi.DAC_B = 32000;
-/*
-          sprintf((Time),"%d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра.
-          WriteCon(Time);
-          */
+
+        /*sprintf((Time),"%d %d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B,   Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра.
+          WriteCon(Time);*/
+      
    		SinPls=0;
    		SinMns=0;
         }
+     }
 }
 
 
 void ADS_Acum(void)
 {
-    Spi.ADC_NewData = 0;
-    Gyro.Termo 	= Spi.ADC1;
+   /* Spi.ADC_NewData = 0;
+    //Gyro.Termo 	= Spi.ADC1;
     Gyro.In1   	= Spi.ADC2;
     Gyro.In2   	= Spi.ADC3;
     Gyro.DeltaT = Spi.ADC4;
     
-    TempA = (0xffff - Spi.ADC5);  		// перевернем знак  и умножим на два (было 32000...0 стало 0 ...32000 /*сдвиг(<<1) стало 0 ...64000*/)
-    TempTermLM = Spi.ADC1; 
+    TempA = (0xffff - Spi.ADC5);  		// перевернем знак  и умножим на два (было 32000...0 стало 0 ...32000 /*сдвиг(<<1) стало 0 ...64000)
+    //TempTermLM = Spi.ADC1; 
     
     Gyro.ADF_Accum += TempA;
     Gyro.ADS_Accum += TempA;
-    Gyro.ADS_AccumTermLM+=TempTermLM;
+    //Gyro.ADS_AccumTermLM+=TempTermLM;
     Gyro.ADF_Count ++;
     Gyro.ADS_Count ++;
 
@@ -129,12 +118,12 @@
     }
     if (Gyro.ADS_Count > 255) {				// если прошло 256 тактов виброподвеса
         Gyro.AD_Slow = Gyro.ADS_Accum << 7;		//обновляем данные и приводим в один масштаб
-        Gyro.TermLM = Gyro.ADS_AccumTermLM << 3;
+       // Gyro.TermLM = Gyro.ADS_AccumTermLM << 3;
         Gyro.ADS_Count = 0;
         Gyro.ADS_Accum = 0;
-        Gyro.ADS_AccumTermLM=0;
+     //   Gyro.ADS_AccumTermLM=0;
         Gyro.ADS_NewData = 1;  
-    }
+    }*/
 }
 
 void SPI_Exchange(void)  // новая функция чтения, в нецй не должно быть ничего лишнего
@@ -145,6 +134,7 @@
     
     ADC5New = LPC_SSP0->DR;// Чтение АЦП
    // Spi.ADC5_Accum += LPC_SSP0->DR;
+  
     Spi.ADC4_Accum += LPC_SSP0->DR;
     Spi.ADC3_Accum += LPC_SSP0->DR;
     Spi.ADC2_Accum += LPC_SSP0->DR;
@@ -155,17 +145,19 @@
    // ADC5Dif = (ADC5New) - (ADC5Old);
    // ADC5Old=ADC5New; 
 
-     /*    
-sprintf((Time)," %d\r\n", (Buff_Restored_Mod[CountV64]));
-WriteCon(Time);
-   */
+ /*     
+sprintf((Time)," %d\r\n",  Spi.ADC1);
+WriteCon(Time);*/
+
     while (LPC_SSP0->SR & RX_SSP_notEMPT) 	{
     DummySPI = LPC_SSP0->DR;   //если буфер SPI не пуст.//очистить буфер.
     }
     DAC_OutPut();
+    BuffADC_64Point[CountV64]=ADC5New;
+    PLCRegul();
     if (CountV31 == 0) {						// просто фильтруем по 32 точкам.
          										// выставояем бит, что есть новы данные
-        Spi.ADC1 = Spi.ADC1_Accum >> 5;			// подгоотавливаем данные (в той эе сетке) те 	 ADC1  0..65535
+        Gyro.Termo = Spi.ADC1_Accum >> 5;			// подгоотавливаем данные (в той эе сетке) те 	 ADC1  0..65535
         Spi.ADC2 = Spi.ADC2_Accum >> 5;
         Spi.ADC3 = Spi.ADC3_Accum >> 5;
         Spi.ADC4 = Spi.ADC4_Accum >> 5;
@@ -182,48 +174,7 @@
  
 
 
-        BuffADC_64Point[CountV64]=ADC5New;
-        Buff_ADC_5[CountV255] = (0x7fff-ADC5New)<<2;
-        PLCRegul();
-
-
-
-/*
-        PulseADC_16Point += Buff_ADC_5[CountV255];
-        PulseADC_16Point -= Buff_ADC_5[(CountV255-16)& 0xff];                    			// заполнение буфера накопленых приращений за 16 тактов
-        BuffADC_16Point[CountV64] = (Pulse_16Point);
-
-        PulseADC_32Point +=  Buff_ADC_5[CountV255];
-        PulseADC_32Point -=  Buff_ADC_5[(CountV255-32)& 0xff ];  								// заполнение буфера накопленых приращений за 32 тактов
-        BuffADC_32Point[CountV64] = (PulseADC_32Point );
-  
-        PulseADC_32PointD +=  Buff_ADC_5[CountV255];
-        PulseADC_32PointD -=  Buff_ADC_5[(CountV255-32)& 0xff];									// заполнение буфера накопленых приращений за 32 тактов Двойныз
-        PulseADC_32PointD +=  Buff_ADC_5[(CountV255-48)& 0xff];									//
-        PulseADC_32PointD -=  Buff_ADC_5[(CountV255-64)& 0xff];									// 
-        BuffADC_32PointD[CountV64] = PulseADC_32PointD ;    
-    */
-       /* PulseADC_64Point +=  (Buff_ADC_5[CountV255]);
-        PulseADC_64Point -=  Buff_ADC_5[(CountV255-64) & 0xff];  								// заполнение буфера накопленых приращений за два 64 тактов
-        BuffADC_64Point[CountV64] = (PulseADC_64Point);*/
-        //ADCDIF +=  BuffADC_64Point[CountV64];
-        /// Buff_Restored_Mod[CountV64] = BuffADC_32PointD[CountV64] - BuffADC_64Point[CountV64];
-       
-       /* if(ADC5Old>3)
-        {
-        sprintf((Time),"%d %d \r\n",  BuffADC_64Point[CountV64], Buff_Restored_Mod[CountV64]);
-   		WriteCon(Time);
-   		ADC5Old=0;
-   		}
-   		else ADC5Old++;
-        */
- //   BackLightOFF
-     
-       // ADCDIF +=  BuffADC_64Point[CountV64]/*>>5*/;
-    /* sprintf((Time),"%d %d\r\n", ADC5New, PulseADC_64Point);
-   		WriteCon(Time);*/
-
-
+      
 }
 
 void ShowMod(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап
@@ -265,14 +216,14 @@
     int tempDac;
     if(start<=5)
     {
-    	if(ttt)
+   /* 	if(ttt)
     	{//           +25 С°
     	templm = (Gyro.TermoNKU-Gyro.Termo); //дельта 
     	if(templm>0) Gyro.Ktermo=1;
     	else Gyro.Ktermo=0;
     	Spi.DAC_B+=templm;
     	ttt=0;
-    	}
+    	}*/
     }
  
     if(!(Gyro.PinReg & PinRegBitL) && (start>0)) start--;