123

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
112:4a96133a1311
Parent:
110:6406b7ac0442
Child:
113:8be429494918
--- a/SPI.c	Mon Apr 04 03:21:25 2016 +0000
+++ b/SPI.c	Mon Apr 04 11:09:56 2016 +0000
@@ -1,6 +1,6 @@
 #include "Global.h"
 struct SPI Spi;
-unsigned int Temp_AMP;
+//unsigned int Temp_AMP;
 unsigned int Temp_AMP64P;
 
 unsigned int Count_AMP, ADD_AMP, Cur_Amp;
@@ -44,48 +44,64 @@
     Spi.ADC2_Accum += LPC_SSP0->DR;
     Spi.ADC1_Accum += LPC_SSP0->DR;
     while (LPC_SSP0->SR & RX_SSP_notEMPT) 	{DummySPI = LPC_SSP0->DR;} 		                //если буфер SPI не пуст.//очистить буфер. 
-    LPC_SSP0->DR=0x5555;
-    LPC_SSP0->DR=0x5555;
-    LPC_SSP0->DR=0x5555;
-
-    if (CountV31 & 1) {           	// если нечетный такт то
-        LPC_SSP0->DR = WRITE_DAC0;   			// команда для ЦАП_0 передавать.
-        LPC_SSP0->DR = (Spi.DAC_A);         
-    } else { 						//если такт четный.
-        LPC_SSP0->DR = WRITE_DAC1 ;   			// команда для ЦАП_1 передавать.
-        LPC_SSP0->DR = (Spi.DAC_B); 	        // передача 12 бит
-    }
+   
+   
+    DAC_OutPut();
+    
   	if (CountV31 == 0)							// просто фильтруем по 32 точкам. 
   	{
-  		Spi.ADC_NewData = 1;					// выставояем бит, что есть новы данные
+  							// выставояем бит, что есть новы данные
 		Spi.ADC1 = 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;
 		Spi.ADC5 = Spi.ADC5_Accum >> 5;
-  		Spi.ADC1_Accum = 0;						// сбрасывкем аккамулятор
-    	Spi.ADC2_Accum = 0;		
-    	Spi.ADC3_Accum = 0;		
-    	Spi.ADC4_Accum = 0;		
-    	Spi.ADC5_Accum = 0;		
+  		Spi.ADC1_Accum  = 0;						// сбрасывкем аккамулятор
+    	Spi.ADC2_Accum  = 0;		
+    	Spi.ADC3_Accum  = 0;		
+    	Spi.ADC4_Accum  = 0;		
+    	Spi.ADC5_Accum  = 0;		
+    	Spi.PLC_NewData = 1;
   	}
+  	Spi.ADC_NewData = 1;
+}
+void PlcRegul(void)
+{
+	int Delta;
+	 	
+	ADD_AMP+=Spi.ADC5;
+    Count_AMP++; 
+     if(Count_AMP>=(32*32+8)) 
+     {
+		Delta = ADD_AMP - Cur_Amp;
+		
+	    if(Gyro.RgConA&0x2)
+	    {
+			if 		(Znak_Amp > 1)			{Znak_Amp --;}
+			else if ( Delta > 30000000 ) 	{AD_Regul += 5000000; Znak_Amp = 5;}
+			else if ( Delta < (-3000000)) 	{AD_Regul += 5000000;	Znak_Amp = 5;}
+	  	    else if ((Delta * Znak_Amp) > 0)  
+			{
+			Znak_Amp = 1;
+			AD_Regul -= (Delta * Znak_Amp * 10);	
+			}
+			else
+			{
+			Znak_Amp = -1;
+			AD_Regul -= (Delta * Znak_Amp * 10);	
+			}
+			
+		Spi.DAC_B  = (AD_Regul + 0x1fffffff)/65536;
+		}
+     	Cur_Amp=ADD_AMP; Count_AMP=0; ADD_AMP=0;
+	 }
+	 
 }
 
 
-void SPI_Exchange(void)
+void DAC_OutPut(void)//выдача в цапы
 {
-    unsigned int DummySPI;
-   	int Delta;
-
-    Spi.ADC5 = LPC_SSP0->DR;
-    Spi.ADC4 = LPC_SSP0->DR;
-    Spi.ADC3 = LPC_SSP0->DR;
-    Spi.ADC2 = LPC_SSP0->DR;
-    Spi.ADC1 = LPC_SSP0->DR;
-
-    Input.ArrayIn[2]= Spi.ADC5;
-
-    LPC_SSP0->DR=0x5555;
+	LPC_SSP0->DR=0x5555;
     LPC_SSP0->DR=0x5555;
     LPC_SSP0->DR=0x5555;
 
@@ -96,65 +112,37 @@
         LPC_SSP0->DR = WRITE_DAC1 ;   					//e.команда для ЦАП_1 передавать.
         LPC_SSP0->DR = (Spi.DAC_B); 	        	//e. передача 12 бит
     }
+}
+
+
+void SPI_Exchange(void)
+{
+    unsigned int DummySPI;
+  
+
+    Spi.ADC5 = LPC_SSP0->DR;
+    Spi.ADC4 = LPC_SSP0->DR;
+    Spi.ADC3 = LPC_SSP0->DR;
+    Spi.ADC2 = LPC_SSP0->DR;
+    Spi.ADC1 = LPC_SSP0->DR;
+
+    Input.ArrayIn[2]= Spi.ADC5;
+   
+    DAC_OutPut();
 
 //  LPC_DAC->CR = (((SinPLC[CountV64]*35/5)+24300));// модулятор
-//  LPC_DAC->CR = (((SinPLC[CountV64]*35/5)+24300));// модулятор
+
     while (LPC_SSP0->SR & RX_SSP_notEMPT)  		                //если буфер SPI не пуст.
     DummySPI = LPC_SSP0->DR;	                                //очистить буфер.
 
-
-    Buff_ADC_1	[CountV31] = Spi.ADC1;              
-    Buff_ADC_2	[CountV31] = Spi.ADC2;
-    Buff_ADC_3	[CountV31] = Spi.ADC3;
-    Buff_ADC_4	[CountV31] = Spi.ADC4;
+    //заполнение буферов еденичных значений АЦП.
+    Buff_ADC_1	[CountV31]  = Spi.ADC1;              
+    Buff_ADC_2	[CountV31]  = Spi.ADC2;
+    Buff_ADC_3	[CountV31]  = Spi.ADC3;
+    Buff_ADC_4	[CountV31]  = Spi.ADC4;
     Buff_ADC_5	[CountV255] = Spi.ADC5;    // ампл ацп.
 
-
-//    Temp_AMP += Buff_ADC_5[CountV255];
-//    Temp_AMP -= Buff_ADC_5[(CountV255-32) & 0xff];                    // заполнение буфера накопленых приращений за 8 тактов
-//    Buff_AMP[CountV255] = (unsigned int) (Temp_AMP);
-
-//     Temp_AMP += Buff_ADC_5[CountV255];
-//     Temp_AMP -= Buff_ADC_5[(CountV255-32) & 0xff];									// з
-//     Temp_AMP += Buff_ADC_5[(CountV255-64) & 0xff];									//
-//     Temp_AMP -= Buff_ADC_5[(CountV255-96) & 0xff];									// з
-//     Buff_AMP[CountV255] = (unsigned int) (Temp_AMP);
-     
-    ADD_AMP+=Spi.ADC5;
-    Count_AMP++; 
-     if(Count_AMP>=(32*32+8)) 
-     {
-		Delta = ADD_AMP - Cur_Amp;
-		
-	    if(Gyro.RgConA&0x2){
-	
-			
-			
-			if 		(Znak_Amp > 10)			{Znak_Amp --;}
-			else if ( Delta > 30000000 ) 	{AD_Regul += 5000000; Znak_Amp = 5;}
-			else if ( Delta < (-3000000)) 	{AD_Regul += 5000000;	Znak_Amp = 5;}
-	  	    else if ((Delta * Znak_Amp) > 0)  
-			{
-//				Spi.DAC_B +=   1 ; 
-				Znak_Amp = 1;
-			AD_Regul += (Delta * Znak_Amp * 100);	
-			}
-			else
-			{
-//				Spi.DAC_B -=  1; 
-				Znak_Amp = -1;
-			AD_Regul += (Delta * Znak_Amp * 100);	
-			}
-		
-		Spi.DAC_B  = (AD_Regul + 0x1fffffff)/65536;
-		
-		
-		}
-
-
-
-     	Cur_Amp=ADD_AMP; Count_AMP=0; ADD_AMP=0;
-	 }
+  
    	Temp_AMP64P += Buff_ADC_5[CountV255];
     Temp_AMP64P -= Buff_ADC_5[(CountV255-64) & 0xff];                    // заполнение буфера накопленых приращений за 8 тактов
     Buff_AMP64P[CountV255] = (unsigned int) (Temp_AMP64P);
@@ -171,4 +159,5 @@
 
     Temp_ADC_5 += Buff_ADC_1[CountV255];
     Temp_ADC_5 -= Buff_ADC_1[(CountV255-32) & 0xff];
+    Spi.PLC_NewData=1;
 }
\ No newline at end of file