fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
153:7086895c6ee3
Parent:
152:cff1321ab25e
Child:
155:94e7ac5fea58
--- a/SPI.c	Thu May 05 14:00:36 2016 +0000
+++ b/SPI.c	Fri May 06 10:08:51 2016 +0000
@@ -3,6 +3,8 @@
 //unsigned int Temp_AMP;
 unsigned int Temp_AMP64P;
 
+int ttt = 0;
+
 unsigned int Count_AMP, ADD_AMP, Cur_Amp;
 int Znak_Amp;
 int AD_Regul = 0;
@@ -134,41 +136,63 @@
 	    int PLC_In;
         int tempDelta;
         int tempDac;
+        
        
 //   LoopOn
+    
+
+
 		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;										// запоминание значения
-      
-		if(AD_MAX < Gyro.AD_Slow) {AD_MAX = Gyro.AD_Slow;l=0;}			//обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды.
-		else l++;														//ели небыло обновления максимальной амплитуды инкрементируем счетчика малого понижения амплитуды.
-		if((l>100)&&(Gyro.PLC_Lern>59)) {AD_MAX -= 3107200; l=0;}		//если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). 
-		                                                         		//уменьшаем максимальную амплитуду, сбрасываем счетчик.
-		if(flagmod==3){         		//если максимальный режим регулирования 
-			k++;                		//инкрементируем счетчик большого понижения амплитуды
-			  if(k>35)          		//если счетчик бльше 35
-			    {
-				 k=0;                	//обнуляем счетчик
-			     AD_MAX -= 13107200;	//уменьшаем максимальную амплитуду.
-			    }
-			}       
-		else k=0;						//если это не серия максимальных регулировок обнуляем счетчик.
+
+		
+  
+    tempDelta=(unsigned int)(AD_MAX-Gyro.AD_Slow);//ищем разницу между желаемой и действительной амплитудами.
+
+
 
-    tempDelta=(unsigned int)(AD_MAX-Gyro.AD_Slow);//ищем разницу между желаемой и действительной амплитудами.
-    if( (Gyro.PLC_Lern<60)&&(Gyro.PLC_Error2Mode != 0))//пробигаем по нескольким значениям цап(50*0х3с=0хВВ8) для определения максимальной амплитуды.
+/*
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////смотрим все моды/////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////   
+  if( (Gyro.PLC_Lern<1011)&&(Gyro.PLC_Error2Mode != 0))//пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды.
+    { 
+      //if(AD_MAX < Gyro.AD_Slow) {AD_MAX = Gyro.AD_Slow;}
+      ttt=1;
+      Gyro.PLC_Lern++;
+      Spi.DAC_B += 0x3c;
+      if(AD_MAX < Gyro.AD_Slow) AD_MAX = Gyro.AD_Slow;
+      sprintf((Time),"%d %d %d \r\n", Spi.DAC_B, Gyro.AD_Slow, AD_MAX);
+      WriteCon(Time);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////   
+
+*/
+
+
+
+                                             //                                                    3600 (размер моды порядка 3000)
+    if( (Gyro.PLC_Lern<60)&&(Gyro.PLC_Error2Mode != 0))//пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды.
     { 
       Gyro.PLC_Lern++;
       Spi.DAC_B += 0x3c;
       if(AD_MAX < Gyro.AD_Slow) AD_MAX = Gyro.AD_Slow;
-
     }
+          
+	if(AD_MAX < Gyro.AD_Slow) {AD_MAX = Gyro.AD_Slow;l=0;}			//обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды.
+	else l++;														//ели небыло обновления максимальной амплитуды инкрементируем счетчика малого понижения амплитуды.
+	if((l>100)&&(Gyro.PLC_Lern>59)) {AD_MAX -= 3107200; l=0;}		//если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). 
 
-	    if(Gyro.RgConA&0x2)											// если включон контур регулирования
+
+	    if(Gyro.RgConA&0x2)											// если  контур регулирования замкнут
 	    {	
-			if 		( Gyro.PLC_Error2Mode > 0)				{Gyro.PLC_Error2Mode --; 						Gyro.PLC_ADC_DOld = 0;} 	// если ошибка(нахожление в двух модовом)
+			if 		( Gyro.PLC_Error2Mode > 0)				{Gyro.PLC_Error2Mode --;						Gyro.PLC_ADC_DOld = 0;} 	// если ошибка(нахожление в двух модовом)
 			else if ( Gyro.PLC_Delta > 	(3500 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; 	Gyro.PLC_ADC_DOld = 0;}		// проверка на двух модовость
 			else if ( Gyro.PLC_Delta < 	(-3500 * 65536)) 	{Spi.DAC_B += 2500;	Gyro.PLC_Error2Mode = 5; 	Gyro.PLC_ADC_DOld = 0;}		// проверка на двух модовость
 	  	    else if ( Gyro.PLC_DeltaADD > 0)        		{Gyro.PLC_ADC_DOld =  1;}
@@ -181,6 +205,9 @@
 		else {Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0;}
 		
 		
+		
+		
+
 		if(tempDelta>(50<<18)) 								// 3 режим регулирования 
 		{   
 		    tempDac=(unsigned int)(tempDelta>>18);
@@ -209,7 +236,31 @@
 			tempDac = Gyro.PLC_ADC_DOld * tempDac;
 			flagmod=1;
 		}
-			
+		
+		
+		
+		
+		
+		
+		if(flagmod==3){         		//если максимальный режим регулирования 
+		   k++;                		//инкрементируем счетчик большого понижения амплитуды
+		   if(k>35)          		//если счетчик бльше 35
+			  {
+			   k=0;                	//обнуляем счетчик
+			   AD_MAX -= 13107200;	//уменьшаем максимальную амплитуду.
+			  }
+			}       
+		else k=0;						//если это не серия максимальных регулировок обнуляем счетчик.
+		
+		
+
+	
+		
+		
+		
+		
+		
+		
 		
 		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;}
@@ -218,10 +269,10 @@
 		{
 		//sprintf((Time),"%d %d %d %d\r\n",Gyro.PLC_Lern, Spi.DAC_B, Gyro.AD_Slow, Gyro.AD_Slow>>18 );//выдаем в терминал для постройки граффика регулировки периметра.
         //WriteCon(Time);
-		sprintf((Time),"%d %d %d %d %d %d %d %d\r\n", Spi.DAC_B, temp9,tempDelta>>18,tempDac, flagmod, AD_MAX, Gyro.AD_Slow, k);//выдаем в терминал для постройки граффика регулировки периметра.
+		sprintf((Time),"%d %d %d %d %d %d %d %d\r\n", Spi.DAC_B, temp9, tempDelta>>18, tempDac, flagmod, AD_MAX, Gyro.AD_Slow, k);//выдаем в терминал для постройки граффика регулировки периметра.
         WriteCon(Time);
         }
-//LoopOff
+//LoopOff*/
  }