forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Revision:
197:7a05523bf588
Parent:
196:f76dbc081e63
Child:
198:fb22ba6aad54
Child:
201:76f4123bf22a
Child:
203:3a6615de9581
--- a/vibro.c	Fri Sep 23 05:34:50 2016 +0000
+++ b/vibro.c	Wed Oct 19 10:55:05 2016 +0000
@@ -254,9 +254,6 @@
     }
     
 LPC_TIM1->MR0 =(unsigned int)(100000000/((Gyro.Frq)>>11));//запись в таймер нового  значение частоты вибро
-  
-	
-    
 }
 void VibroAMPRegul(void)  //подстройка амплитуды ВП
 {
@@ -264,13 +261,12 @@
 	CaunAddPlus = 0;
 	Gyro.CaunMin  = CaunAddMin; //амплитуда по модулю из востановленного синиуса Buff_Restored_sin
 	CaunAddMin = 0;
-	/*Gyro.tempdelta=Gyro.CaunPlus - Gyro.CaunMin	;*/
   	Gyro.MaxAmp = Gyro.CaunPlus + Gyro.CaunMin;         //расчет максимальной амплитуды из востановленного синуса р-р.
     Gyro.Amp   -= (Gyro.MaxAmp - Gyro.AmpTarget) * Gyro.AmpSpeed;  // расчет амплитуды ВП с учетом разници
   if((Gyro.Amp>>16) > Gyro.AmpPerMax)   {Gyro.Amp = (Gyro.AmpPerMax << 16);}   // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
   if((Gyro.Amp>>16) < Gyro.AmpPerMin)   {Gyro.Amp = (Gyro.AmpPerMin << 16);}  // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
   if(Gyro.RgConA&0x20)     {Gyro.AmpPer = Gyro.Amp>>16;} //приведение амплитуды ВП к виду 0%-100%
-  //  Gyro.MaxAmp =0;
+
 
 }
 
@@ -294,6 +290,7 @@
 {  
     switch(CountV31) {
      case 0:
+            
           	Gyro.VibroAMPRegulF=1;
             Time_vibro=0;
             Gyro.VibroNoiseF=1;//расчет и установка нового заначения частоты ошумления и запись в таймер частоты ошумления.
@@ -301,28 +298,43 @@
      break;
     
 	 case 16:
-	        //Gyro.Reper_Event=1; 
+	 
+	        Gyro.Reper_Event=1; 
             Time_vibro=0;
             Gyro.VibroFrqRegulF=1; //
      break;
      
-     case 31:
-     for (int i = 0; i < 32; i++ ) 
+    case 31:
+    /* for (int i = 0; i < 32; i++ ) 
      { 
       Gyro.CuruAngle  +=  Buff_32Point [i];
       Gyro.tempdelta  += (Buff_Restored_sin[i]);
-      Gyro.tempdelta2 += (Buff_Restored_sin2[i]);
-     }
+      Gyro.tempdelta2 += (Buff_Restored_sin2[i])
+     } 
+     */  
      if(Gyro.LogHZ)
      {
-	 sprintf((Time),"%d %d %d\r\n",	Gyro.CuruAngle,Gyro.tempdelta,Gyro.tempdelta2);  WriteCon(Time);
+	 sprintf((Time),"%d %d %d\r\n",ADCDIF,(ADCDIF>>5),(ADCDIF>>10));
+	 WriteCon(Time);
+	  ADCDIF=0;
 	 Gyro.CuruAngle=0;
 	 Gyro.tempdelta=0;
 	 Gyro.tempdelta2=0;
-	
-     }
-	
-     break;
+     } /*
+     if(Gyro.ModJump==2) {            ///прыжок с моды на моду. (-->) 
+       Gyro.ModJump=0;
+       Spi.DAC_B += 4300;
+       Gyro.PLC_Error2Mode=1;
+    } 
+    
+    if(Gyro.ModJump==1) {            ///прыжок с моды на моду. (<--)     
+       Gyro.OldCuruAngle=Gyro.CuruAngle;       
+       Gyro.ModJump=0;
+       Spi.DAC_B -= 5900;
+       Gyro.PLC_Error2Mode=1;
+    } 
+    
+	break;*/
     }
 }
 void AllRegul (void)
@@ -330,49 +342,29 @@
    
     if (Spi.ADC_NewData     == 1) {ADS_Acum();								 	}   // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
 	if (Gyro.ADF_NewData    == 1) {Gyro.ADF_NewData = 0;                    	}   // был приход новых данных После быстрого фильтра AD	
-	if (Gyro.ADS_NewData    == 1) 
-	{
-		Gyro.ADS_NewData = 0; 
+	
+	
+	
+	/*if (Gyro.ADS_NewData    == 1) 
+	{	Gyro.ADS_NewData = 0; 
 		switch(Gyro.LogPLC) {
         case 0:     PlcRegul();    break;    
 	    case 1:     PlcRegul();    break;
 	    case 2:     ShowMod();     break;
 	    }
-	}   // был приход новых данных После Медленного фильтра AD (гдето раз в 0.63 секунды )//регулировка периметра.
+	}*/// был приход новых данных После Медленного фильтра AD (гдето раз в 0.63 секунды )//регулировка периметра.
+ 
+ 
+ 
     if (Gyro.VibroFrqRegulF == 1) {Gyro.VibroFrqRegulF = 0;	 VibroFrqRegul();	}	// Регулеровка частоты виброподвеса    
     if (Gyro.VibroAMPRegulF == 1) {Gyro.VibroAMPRegulF = 0;	 VibroAMPRegul();   }	// Регулеровка Амплитуды виброподвеса
     if (Gyro.VibroNoiseF    == 1) 
     { 
-  /*Gyro.AmpPerDel=10;
-    Gyro.AmpMin =10;// минимальное  значение AmpT;
-    Gyro.AmpTD =30;// максимальное значение AmpT; (AmpT частота ошумления)
-    Gyro.VibroNoiseF = 0;
-    OLDCalcAmpN();*/
-   
-   switch(Gyro.flag) {
-     case 1:
-   Gyro.VibroNoiseF = 0;
-    OLDCalcAmpN();
-    break;
-    
-    case 2:
-      	Gyro.AmpMin =3;
-    	Gyro.AmpTD =10;
-    	Gyro.VibroNoiseF = 0;	
-    	Calc2AmpN();	  
-    break;
-    
-    case 3:
-    	Gyro.AmpMin =1;
-    	Gyro.AmpTD =10;
-    	Gyro.VibroNoiseF = 0;	
-    	//CalcAmpN();
-    	Gyro.AmpTarget =15000;	
-    	//CalcAmpI();  
-    	CalcAmpD();  
-    break; 
+      switch(Gyro.flag) {
+  	   case 1: Gyro.VibroNoiseF = 0; OLDCalcAmpN();                             break;
+       case 2: Gyro.AmpMin =3;Gyro.AmpTD =10;Gyro.VibroNoiseF = 0;Calc2AmpN();  break;
+       case 3: Gyro.AmpMin =1;Gyro.AmpTD =10;Gyro.VibroNoiseF = 0;CalcAmpD();   break; 
+	  } 
+    }	// регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
+    if (Gyro.VibroOutF      == 1) {Gyro.VibroOutF = 0; VibroOut();}	// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно 
 }
-    }	// регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
-    if (Gyro.VibroOutF      == 1) {Gyro.VibroOutF = 0;		 VibroOut();		}	// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно 
-
-}