forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Revision:
199:2728719cdc64
Parent:
198:fb22ba6aad54
Child:
200:1df682165694
--- a/SPI.c	Thu Oct 20 09:29:05 2016 +0000
+++ b/SPI.c	Thu Oct 20 09:32:25 2016 +0000
@@ -75,10 +75,10 @@
 }
 void  PLCRegul(void)
 {
- int templm=0;
- if (CountV64 == 0)
+ 
+ if (CountV64 == 0) 
         {
-         for (int i = 0; i < 32; i++ )
+          for (int i = 0; i < 32; i++ )
                 {
                 	SinPls+=  BuffADC_64Point[i];
                 }
@@ -87,17 +87,17 @@
                 	SinMns+=  BuffADC_64Point[i];
                 }
         ADCDIF = SinPls - SinMns;    
-        Spi.DAC_B-=ADCDIF>>7;
+      //  Spi.DAC_B-=ADCDIF>>6;
         
-      /*    if(ADCDIF>0) Spi.DAC_B-=3;
-          else Spi.DAC_B+=3;*/
+          if(ADCDIF>0) Spi.DAC_B-=3;
+          else Spi.DAC_B+=3;
           
         if      ( Spi.DAC_B < 15300 )	Spi.DAC_B = 32000;            //проверка на переваливание за границу.  
         else if ( Spi.DAC_B > 53000 ) 	Spi.DAC_B = 32000;
-    
-        sprintf((Time),"%d %d %d \r\n", ADCDIF>>7, Spi.DAC_B, Gyro.test );//выдаем в терминал для постройки граффика регулировки периметра.
-        WriteCon(Time);
-          
+/*
+          sprintf((Time),"%d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра.
+          WriteCon(Time);
+          */
    		SinPls=0;
    		SinMns=0;
         }
@@ -113,9 +113,11 @@
     Gyro.DeltaT = Spi.ADC4;
     
     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.ADF_Count ++;
     Gyro.ADS_Count ++;
 
@@ -127,8 +129,10 @@
     }
     if (Gyro.ADS_Count > 255) {				// если прошло 256 тактов виброподвеса
         Gyro.AD_Slow = Gyro.ADS_Accum << 7;		//обновляем данные и приводим в один масштаб
+        Gyro.TermLM = Gyro.ADS_AccumTermLM << 3;
         Gyro.ADS_Count = 0;
         Gyro.ADS_Accum = 0;
+        Gyro.ADS_AccumTermLM=0;
         Gyro.ADS_NewData = 1;  
     }
 }
@@ -141,21 +145,25 @@
     
     ADC5New = LPC_SSP0->DR;// Чтение АЦП
    // Spi.ADC5_Accum += LPC_SSP0->DR;
-   
-    Spi.ADC5_Accum += ADC5New;	
     Spi.ADC4_Accum += LPC_SSP0->DR;
     Spi.ADC3_Accum += LPC_SSP0->DR;
     Spi.ADC2_Accum += LPC_SSP0->DR;
-    /*Spi.ADC1_Accum +*/Gyro.test = LPC_SSP0->DR;
- 
-        /*sprintf((Time),"%d \r\n", Gyro.test);//выдаем в терминал для постройки граффика регулировки периметра.
-        WriteCon(Time);*/
+    Spi.ADC1_Accum += LPC_SSP0->DR;
+    Spi.ADC5_Accum += ADC5New;	
+   
        
+   // ADC5Dif = (ADC5New) - (ADC5Old);
+   // ADC5Old=ADC5New; 
+
+     /*    
+sprintf((Time)," %d\r\n", (Buff_Restored_Mod[CountV64]));
+WriteCon(Time);
+   */
     while (LPC_SSP0->SR & RX_SSP_notEMPT) 	{
     DummySPI = LPC_SSP0->DR;   //если буфер SPI не пуст.//очистить буфер.
     }
     DAC_OutPut();
-   /* if (CountV31 == 0) {						// просто фильтруем по 32 точкам.
+    if (CountV31 == 0) {						// просто фильтруем по 32 точкам.
          										// выставояем бит, что есть новы данные
         Spi.ADC1 = Spi.ADC1_Accum >> 5;			// подгоотавливаем данные (в той эе сетке) те 	 ADC1  0..65535
         Spi.ADC2 = Spi.ADC2_Accum >> 5;
@@ -169,15 +177,53 @@
         Spi.ADC5_Accum  = 0;
         Spi.ADC_NewData = 1;
    
-    }*/
+    }
    
  
 
 
         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)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап