fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
128:1e4675a36c93
Parent:
127:6a7472d67804
Child:
140:1fbf117fc120
--- a/SPI.c	Mon Apr 11 03:13:42 2016 +0000
+++ b/SPI.c	Mon Apr 11 11:04:34 2016 +0000
@@ -63,7 +63,7 @@
     	Spi.ADC5_Accum  = 0;		
   		Spi.ADC_NewData = 1;
   	}
-  	
+
 
 }
 
@@ -74,70 +74,45 @@
 
 		PLC_In = Gyro.AD_Slow;									//выбираем даные для фильтрации
 //		PLC_In = Gyro.AD_Fast;
+        //или+,или-(знак)
+		Gyro.PLC_Delta 		= PLC_In - Gyro.PLC_Old;						// узнаем приращение
+		//                       (знак)  *   (то на что инкрементировали цап)
+		Gyro.PLC_DeltaADD 	= Gyro.PLC_Delta * Gyro.PLC_ADC_DOld;			//приращение с учетом знака (и количества) прошлого приращения
+		Gyro.PLC_Old 		= PLC_In;										// запоминание значения
 
-		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.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;}
+			if 		(Gyro.PLC_Error2Mode > 0)				{Gyro.PLC_Error2Mode --; 						Gyro.PLC_ADC_DOld = 0; } 									// если ошибка(нахожление в двух модовом)
+			else if ( Gyro.PLC_Delta > 	(3000 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; 	Gyro.PLC_ADC_DOld = 0;}		// проверка на двух модовость
+			else if ( Gyro.PLC_Delta < 	(-3000 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; 	Gyro.PLC_ADC_DOld = 0;}
+	  	 
 	  	    else if (Gyro.PLC_DeltaADD > 0)  
 			{
-
+	
+//				Gyro.PLC_ADC_DOld =	(Gyro.PLC_DeltaADD /6553600 )+1;
+			Gyro.PLC_ADC_DOld = 1;
 			}
 	  	    else if (Gyro.PLC_DeltaADD < 0)  
 			{
 
+//				Gyro.PLC_ADC_DOld =	(Gyro.PLC_DeltaADD /6553600 )-1;
+				Gyro.PLC_ADC_DOld = -1;
 			}
 			else
 			{
-				
+				Gyro.PLC_ADC_DOld = 1;
 			}
 		}
 		else 
 		{
-			Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0
+			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;}
- 
- 
- 
+		
+		Spi.DAC_B += Gyro.PLC_ADC_DOld * 16;
+		if ( Spi.DAC_B < 1000 ) 	{Spi.DAC_B = 32000;  Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
+		if ( Spi.DAC_B > 63000 ) 	{Spi.DAC_B = 32000;  Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
  
-
-/* эТО вроде заработало
-	    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;}
-			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
-			{
-			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;
-			}
-//			Spi.DAC_B  = (Gyro.PLC_Regul + 0x1fffffff)/65536;
-		}
-else Spi.DAC_B  += 16;
-*/
-
-
-
-
- 		
-}
+ }