fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
168:f4a6abb18358
Parent:
165:b2bd0c810a4f
Child:
169:140743e3bb96
--- a/SPI.c	Sun Jun 05 11:03:33 2016 +0000
+++ b/SPI.c	Mon Jun 06 14:07:45 2016 +0000
@@ -109,7 +109,8 @@
           if(AD_MAX < Gyro.AD_Slow) AD_MAX = Gyro.AD_Slow;
           sprintf((Time),"%d %d %d %d  \r\n",Gyro.TermLM,Spi.DAC_B, Gyro.AD_Slow, AD_MAX);
           WriteCon(Time);
-        }    
+        } 
+        else {Gyro.ModJump=0;}  
 }
 
 
@@ -148,7 +149,7 @@
 
     if(AD_MAX < Gyro.AD_Slow) { AD_MAX = Gyro.AD_Slow; l=0; }                      //обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды.                                                          *
     else if((l == 150)&&(Gyro.PLC_Error2Mode == 0)) { AD_MAX -= 5107200;k=30;l=0;} //если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). 
-    else if(Gyro.PLC_Error2Mode == 0) l++;                                         //инкрементируем счетчик малого понижения желаемой амплитуды (максимальной замеченной)
+    else if(Gyro.PLC_Error2Mode == 0) l++;                                        //инкрементируем счетчик малого понижения желаемой амплитуды (максимальной замеченной)
     if     ((k == 30)&&(Gyro.PLC_Lern > 59))  Spi.DAC_B += 200;                    //после уменьшения максимальной амплитуды двигаем шевелем цап 
     else if((k ==  1)&&(Gyro.PLC_Lern > 59)) {Spi.DAC_B -= 200; k=0;l=0;}          //для быстрог поиска новог максимума.
     if(k>0)k--;
@@ -166,7 +167,17 @@
     } 
     else {Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0;}
 
-    if(Gyro.PlC_MaxD>(50<<18)) {							// 3 режим регулирования
+    if(Gyro.ModJump==1) {                    
+       Gyro.ModJump=0;
+       Spi.DAC_B += 6100;
+    } 
+    if(Gyro.ModJump==2) {                    
+       Gyro.ModJump=0;
+       Spi.DAC_B -= 6100;
+    } 
+    
+    
+    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 * значение регулировки)
@@ -179,11 +190,12 @@
         tempDac    = Gyro.PLC_ADC_DOld * (tempDac);     //используется только для выдачи
         flagmod=2;
     } 
-    else if(Gyro.PlC_MaxD<(2<<18)) {                     //режим если дельта равна 0;
+    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;