123

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
127:6a7472d67804
Parent:
126:76579c4db080
Child:
128:1e4675a36c93
--- a/SPI.c	Sat Apr 09 15:19:06 2016 +0000
+++ b/SPI.c	Mon Apr 11 03:13:42 2016 +0000
@@ -71,26 +71,55 @@
 {
 		int PLC_In;
 
-		PLC_In = Gyro.AD_Slow;
+
+		PLC_In = Gyro.AD_Slow;									//выбираем даные для фильтрации
 //		PLC_In = Gyro.AD_Fast;
-	
-		Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old;
+
+		Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old;					// узнаем приращение
+		Gyro.PLC_DeltaADD = PLC_Delta * Gyro.PLC_ADC_DOld;		//приращение с учетом знака (и количества) прошлого приращения
+		Gyro.PLC_Old = PLC_In;									// запоминание значения
+	    if(Gyro.RgConA&0x2)										// если включон контур регулирования
+	    {	
+			if 		(Gyro.PLC_Error2Mode > 0)			{Gyro.PLC_Error2Mode --;} 									// если ошибка(нахожление в двух модовом)
+			else if ( Gyro.PLC_Delta > 	(1000 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}		// проверка на двух модовость
+			else if ( Gyro.PLC_Delta < 	(-1000 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
+	  	    else if (Gyro.PLC_DeltaADD > 0)  
+			{
+
+			}
+	  	    else if (Gyro.PLC_DeltaADD < 0)  
+			{
+
+			}
+			else
+			{
+				
+			}
+		}
+		else 
+		{
+			Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0
+		}
+		Spi.DAC_B += Gyro.PLC_ADC_DOld * 4;
+		if ( Spi.DAC_B < 1000 ) {Spi.DAC_B = 64000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
+		if ( Spi.DAC_B > 1000 ) {Spi.DAC_B = 1000;  Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
  
-	    
-	    
+ 
+ 
+ 
+
+/* эТО вроде заработало
 	    if(Gyro.RgConA&0x2)
 	    {
-			if 		(Gyro.PLC_Znak > 1)			{Gyro.PLC_Znak --;}
-			else if ( Gyro.PLC_Delta > 	(1000 * 65536)) 	{Spi.DAC_B += 2500; 	Gyro.PLC_Znak = 5;}
-			else if ( Gyro.PLC_Delta < 	(-1000 * 65536)) 	{Spi.DAC_B += 2500;		Gyro.PLC_Znak = 5;}
+			if 		(Gyro.PLC_Error2Mode > 0)			{Gyro.PLC_Error2Mode --;} 		// если ошибка(нахожление в двух модовом)
+			else if ( Gyro.PLC_Delta > 	(1000 * 65536)) 	{Spi.DAC_B += 2500; 	Gyro.PLC_Error2Mode = 5;}
+			else if ( Gyro.PLC_Delta < 	(-1000 * 65536)) 	{Spi.DAC_B += 2500;		Gyro.PLC_Error2Mode = 5;}
 	  	    else if ((Gyro.PLC_Delta * Gyro.PLC_Znak) > 0)  
 			{
 			Gyro.PLC_Znak = 1;
 //			Gyro.PLC_Regul -= ((Gyro.PLC_Delta * Gyro.PLC_Znak)/100);	
 //			Spi.DAC_B  -= (((Gyro.PLC_Delta * Gyro.PLC_Znak)/65536))*16;
 			Spi.DAC_B  -= 64;
-
-
 			}
 			else
 			{
@@ -100,10 +129,14 @@
 			Spi.DAC_B  += 64;
 			}
 //			Spi.DAC_B  = (Gyro.PLC_Regul + 0x1fffffff)/65536;
-
 		}
 else Spi.DAC_B  += 16;
- 		Gyro.PLC_Old = PLC_In;
+*/
+
+
+
+
+ 		
 }