fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
171:d227a6045305
Parent:
170:d099c3025f87
Child:
172:ef7bf1663645
--- a/SPI.c	Wed Jun 08 14:06:03 2016 +0000
+++ b/SPI.c	Thu Jun 09 10:19:23 2016 +0000
@@ -154,7 +154,7 @@
     Gyro.PlC_MaxD=(unsigned int)(AD_MAX-Gyro.AD_Slow);              //ищем разницу между желаемой и действительной амплитудами.  
  
   
-    if(Gyro.RgConA&0x2) {	       // если  контур регулирования замкнут
+    if(Gyro.RgConA&0x8) {	       // если  контур регулирования замкнут
          /*			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;}		// проверка на двух модовость*/
         if      ( Gyro.PLC_Error2Mode > 0)   { Gyro.PLC_Error2Mode --; Gyro.PLC_ADC_DOld = 0;}  // если ошибка(нахожление в двух модовом)
@@ -169,39 +169,38 @@
        Spi.DAC_B += 12500;
        Gyro.PLC_Error2Mode=4;
     } 
+    
     if(Gyro.ModJump==2) {                    
        Gyro.ModJump=0;
        Spi.DAC_B -= 12500;
        Gyro.PLC_Error2Mode=4;
     } 
-    
-    
-    else if(Gyro.PlC_MaxD>(50<<18)) {							// 3 режим регулирования
-        tempDac=(unsigned int)(Gyro.PlC_MaxD>>18);
-        if(tempDac>600) tempDac=600;   //ограничение на регулирование если очень большая разница амплитуд
-        Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac;      //новое значение в цап (±1 * значение регулировки)
-        tempDac   =  Gyro.PLC_ADC_DOld * tempDac;      //используется только для выдачи
-        flagmod=3;
-    } 
-    else if(Gyro.PlC_MaxD>(12<<18)) {					// 2 режим регулирования
-        tempDac=(unsigned int)(Gyro.PlC_MaxD>>18);
-        Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac);
-        tempDac    = Gyro.PLC_ADC_DOld * (tempDac);     //используется только для выдачи
-        flagmod=2;
-    } 
-    else if(Gyro.PlC_MaxD<(2<<18)) {                     //режим если дельта равна 0;Gyro.ModJump
-        tempDac=2;
-        Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac;
-        flagmod=0;
-    } 
-  
-    else {
-        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(Gyro.RgConA&0x8) {
+   		      if(Gyro.PlC_MaxD>(50<<18)) {							// 3 режим регулирования
+      		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>18);
+     		  if(tempDac>600) tempDac=600;   //ограничение на регулирование если очень большая разница амплитуд
+       		  Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac;      //новое значение в цап (±1 * значение регулировки)
+      		  tempDac   =  Gyro.PLC_ADC_DOld * tempDac;      //используется только для выдачи
+      		  flagmod=3;
+  		    } 
+		    else if(Gyro.PlC_MaxD>(12<<18)) {					// 2 режим регулирования
+      		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>18);
+     		  Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac);
+      		  tempDac    = Gyro.PLC_ADC_DOld * (tempDac);     //используется только для выдачи
+      		  flagmod=2;
+   		    } 
+   		    else if(Gyro.PlC_MaxD<(2<<18)) {                     //режим если дельта равна 0;Gyro.ModJump
+      		  tempDac=2;
+      		  Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac;
+              flagmod=0;
+            } 
+            else {
+     		  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(flagmod==3) {k++;         	//если максимальный режим регулирования //инкрементируем счетчик большого понижения амплитуды
       if(k>100){k=0;AD_MAX -= 6107200;} //если счетчик бльше 50 //обнуляем счетчик //уменьшаем максимальную амплитуду.   
@@ -222,7 +221,6 @@
         sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", Spi.DAC_B, temp9, r, tempDac, flagmod, AD_MAX, Gyro.AD_Slow, Gyro.CuruAngle, Gyro.TermLM, (Gyro.Frq>>16) );//выдаем в терминал для постройки граффика регулировки периметра.
         WriteCon(Time);
     }
-  //  LoopOff
 }