forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Revision:
207:d1ce992f5d17
Parent:
205:775d54fdf646
Child:
208:19150d2b528f
--- a/SPI.c	Tue Dec 20 14:08:17 2016 +0000
+++ b/SPI.c	Fri Jan 13 08:27:28 2017 +0000
@@ -52,16 +52,16 @@
 
 void InitMOD(void)
 {
-     for (int i = 0; i < 64; i++ ) 
+     for (int i = 0; i < 32; i++ ) 
  	 { 
-   	 if(i<32)   { ModArrayTriangle[i]=Mod; Mod+=3;}
-   	 else       { ModArrayTriangle[i]=Mod; Mod-=3;}
+   	 if(i<16)   { ModArrayTriangle[i]=Mod; Mod+=1;}
+   	 else       { ModArrayTriangle[i]=Mod; Mod-=1;}
      }
     
-     for (int i = 0; i < 64; i++ ) 
+     for (int i = 0; i < 16; i++ ) 
  	 { 
       ModArraySaw[i]=Mod;
-      Mod+=2;
+      Mod+=1;
      }
 }
 void Modulator(void)
@@ -75,7 +75,6 @@
 }
 void  PLCRegul(void)
 {
- 
  if (CountV64 == 0) 
         {
           for (int i = 0; i < 32; i++ )
@@ -87,15 +86,14 @@
                 	SinMns+=  BuffADC_64Point[i];
                 }
         ADCDIF = SinPls - SinMns;    
-      //  Spi.DAC_B-=ADCDIF>>6;
+        // Spi.DAC_B-=ADCDIF>>6;
         
           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 %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра.
+/*        sprintf((Time),"%d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра.
           WriteCon(Time);
           */
    		SinPls=0;
@@ -121,45 +119,41 @@
     Gyro.ADF_Count ++;
     Gyro.ADS_Count ++;
 
-    if (Gyro.ADF_Count > 15) {				// если прошло 16 тактов виброподвеса
+    if (Gyro.ADF_Count > 15) {					// если прошло 16 тактов виброподвеса
         Gyro.AD_Fast = Gyro.ADF_Accum << 11;	//обновляем данные и приводим в один масштаб
         Gyro.ADF_Count = 0;//
         Gyro.ADF_Accum = 0;
         Gyro.ADF_NewData = 1;
     }
-    if (Gyro.ADS_Count > 255) {				// если прошло 256 тактов виброподвеса
+    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;  
+        Gyro.ADS_NewData = 1;
+        //srand(Gyro.AD_Slow);  
     }
 }
-
 void SPI_Exchange(void)  // новая функция чтения, в нецй не должно быть ничего лишнего
 {
     unsigned int DummySPI;
-    
     //unsigned int ADC5Dif;
-    
     ADC5New = LPC_SSP0->DR;// Чтение АЦП
-   // Spi.ADC5_Accum += 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;
     Spi.ADC1_Accum += LPC_SSP0->DR;
-    Spi.ADC5_Accum += ADC5New;	
-   
-       
+    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) 	{
+    while (LPC_SSP0->SR & RX_SSP_notEMPT) 	
+    {
     DummySPI = LPC_SSP0->DR;   //если буфер SPI не пуст.//очистить буфер.
     }
     DAC_OutPut();
@@ -176,18 +170,12 @@
         Spi.ADC4_Accum  = 0;
         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 тактов