fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
196:f76dbc081e63
Parent:
195:bcc769f5292b
Child:
197:7a05523bf588
--- a/SPI.c	Tue Sep 20 10:39:30 2016 +0000
+++ b/SPI.c	Fri Sep 23 05:34:50 2016 +0000
@@ -2,13 +2,13 @@
 struct SPI Spi;
 //unsigned int Temp_AMP;
 unsigned int Temp_AMP64P;
-int tt=0;
+int ttt=1;
 unsigned int Count_AMP, ADD_AMP, Cur_Amp;
 int Znak_Amp;
 int AD_Regul = 0;
 int temp9,tempADC5;
 int AD_MAX=0;
-int k=0,l=0,r=0;//счетчики для регулировки периметра
+int k=0,l=0,r=0,n=0;//счетчики для регулировки периметра
 int flagmod=0,Bdelta;
 int start=10;
 unsigned int Temp_ADC_2;
@@ -120,19 +120,21 @@
     int templm=0;
     int PLC_In;
     int tempDac;
-    if(!(Gyro.PinReg & PinRegBitL) && (start>0)) start--; 
-    else if(start==2)
+    if(0<start<=5)
     {
-    	if(tt==0)
-    	{//           +25°
-    	templm = (Gyro.TermoNKU-Gyro.Termo)*2; //дельта 
+    	if(ttt)
+    	{//           +25 С°
+    	templm = (Gyro.TermoNKU-Gyro.Termo); //дельта 
     	if(templm>0) Gyro.Ktermo=1;
     	else Gyro.Ktermo=0;
     	Spi.DAC_B+=templm;
-    	tt=1;
+    	ttt=0;
     	}
     }
-    else if(start==0)
+ 
+    if(!(Gyro.PinReg & PinRegBitL) && (start>0)) start--; 
+
+    else if((start==0))
       {
          PLC_In = Gyro.AD_Slow;					//выбираем даные для фильтрации
    		 Gyro.PLC_Delta    = PLC_In - Gyro.PLC_Old;								//узнаем приращение
@@ -163,8 +165,8 @@
      if(AD_MAX < PLC_In) {AD_MAX = PLC_In; l=0;}                      			//обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды.                  
      else l++;                                   								//инкрементируем счетчик малого понижения желаемой амплитуды (максимальной замеченной)
      if((l > 100)&&(Gyro.PLC_Error2Mode == 0)) {AD_MAX -= 2107200;k=15;l=0;} 	//если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). m 
-     if     ((k == 15)&&(Gyro.PLC_Lern > 150))   Spi.DAC_B += 200;                //после уменьшения максимальной амплитуды двигаем шевелем цап 
-     else if((k ==  1)&&(Gyro.PLC_Lern > 150))  {Spi.DAC_B -= 200; k=0;l=0;}      //для быстрог поиска новог максимума.
+     if     ((k == 15)&&(Gyro.PLC_Lern > 150))   Spi.DAC_B += 75;                //после уменьшения максимальной амплитуды двигаем шевелем цап 
+     else if((k ==  1)&&(Gyro.PLC_Lern > 150))  {Spi.DAC_B -= 75; k=0;l=0;}      //для быстрог поиска новог максимума.
      if(k>0)k--;
                                                           
      Gyro.PlC_MaxD=(unsigned int)(AD_MAX-PLC_In);              					//ищем разницу между желаемой и действительной амплитудами.  
@@ -206,24 +208,25 @@
       		  flagmod=3;
       		   		 
   		    } 
-		    else if(Gyro.PlC_MaxD>(12<<17)) {									// 2 режим регулирования
+		    else if(Gyro.PlC_MaxD>(20<<17)) {									// 2 режим регулирования
       		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>19);
      		  Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac);
       		  tempDac    = Gyro.PLC_ADC_DOld * (tempDac);     					//используется только для выдачи
       		  flagmod=2;
    		    } 
-   		    else if(Gyro.PlC_MaxD<(2<<17)) {                     				//режим если дельта равна 0;Gyro.ModJump
-      		  tempDac=2;
+   		    else if(Gyro.PlC_MaxD<(4<<17)) {                     				//режим если дельта равна 0;Gyro.ModJump
+      		  tempDac=1;
       		  Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac;
               flagmod=0;
             } 
             else {
-     		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>18); 						// 1 режим регулирования
+     		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>19); 						// 1 режим регулирования
     		  Spi.DAC_B += Gyro.PLC_ADC_DOld *tempDac;
               tempDac = Gyro.PLC_ADC_DOld * tempDac;
               flagmod=1;
          	}
   	 	} 
+  	 
   	 	
  if      ( Spi.DAC_B < 18300 )	{Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}            //проверка на переваливание за границу.  
  else if ( Spi.DAC_B > 53000) 	{Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;}
@@ -234,8 +237,14 @@
     //////////лог//////////
     ///////////////////////
     if(Gyro.LogPLC==1) {
-        sprintf((Time),"%d %d %d %d %d %d\r\n", Spi.DAC_B, templm, start, tt, PLC_In, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра.
+       // LoopOn
+        sprintf((Time),"%d %d %d %d %d %d %d %d \r\n",Gyro.CuruAngle, Gyro.tempdelta, Gyro.tempdelta2, Spi.DAC_B, tempDac, AD_MAX, PLC_In, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра.
+        Gyro.CuruAngle=0;
+        Gyro.tempdelta=0;
+        Gyro.tempdelta2=0;
         WriteCon(Time);
+      //  LoopOff
+        
     }
 }