fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
214:4c70e452c491
Parent:
211:ac8251b067d2
Child:
215:b58b887fd367
--- a/vibro.c	Wed Jul 26 13:24:39 2017 +0000
+++ b/vibro.c	Wed Aug 16 09:00:25 2017 +0000
@@ -43,7 +43,7 @@
         }
     }
 }
-
+/*
 
 void OLDCalcAmpN(void)//расчет точек старта и стопа импульса вибропривода и расчет частоты ошумления.
 {   
@@ -53,21 +53,18 @@
     if(PeriodCount>= Gyro.AmpT) 
     { //если количество заходов в прерывание больше либо равно частоте ошумления.
       PeriodCount=0;//сбрасываем таймер
-      /*   sprintf((Time),"%d   %d    %d\r\n", Gyro.AmpN1, Gyro.AmpN2-Gyro.AmpN1,  Gyro.AmpPer);
-         WriteCon(Time);*/
+         sprintf((Time),"%d   %d    %d\r\n", Gyro.AmpN1, Gyro.AmpN2-Gyro.AmpN1,  Gyro.AmpPer);
+         WriteCon(Time);
     //Gyro.AmpPerDel=(Gyro.AmpPer*100)/Gyro.AmpPerDel;   
     if(Cheng_AMP_Flag==0) 
       { 
-       if((Gyro.AmpPer+Gyro.AmpPerDel)>90)
-            {
-                Gyro.AmpPer=90-Gyro.AmpPerDel;   //проверка верхней граници амплитуды
-            }						//26214400
+      if((Gyro.AmpPer+Gyro.AmpPerDel)>90)             Gyro.AmpPer=90-Gyro.AmpPerDel;   //проверка верхней граници амплитуды
        Nmax = (unsigned int)((100000/(Gyro.Frq>>16))-1);//256                    //
        Gyro.AmpN1=(unsigned int)((Nmax*(100-Gyro.AmpPer))/Gyro.FrqHZ);     //левая граница амплитуды  63
        Gyro.AmpN2=(unsigned int)((Nmax/2)-Gyro.AmpN1);                     //правая граница амплитуды 65
        Gyro.L_vibro=Gyro.AmpPer*208;
-      /* sprintf((Time),"%d %d %d \r\n",Gyro.L_vibro,Gyro.AmpPer,Cheng_AMP_Flag);
-       WriteCon(Time);*/	
+       sprintf((Time),"%d %d %d \r\n",Gyro.L_vibro,Gyro.AmpPer,Cheng_AMP_Flag);
+       WriteCon(Time);	
        Cheng_AMP_Flag=1;
        }
     else  
@@ -79,8 +76,8 @@
            	Gyro.AmpN1=(unsigned int)((Nmax*(100-Gyro.AmpPer-Gyro.AmpPerDel))/Gyro.FrqHZ); //левая граница амплитуды 61
         	Gyro.AmpN2=(unsigned int)((Nmax/2)-Gyro.AmpN1);                        		   //правая граница амплитуды 67
         	Gyro.L_vibro=(Gyro.AmpPer+Gyro.AmpPerDel)*208;
-        	/*sprintf((Time),"%d %d %d \r\n",Gyro.L_vibro,Gyro.AmpPer,Cheng_AMP_Flag);
-       		WriteCon(Time);	*/
+        	sprintf((Time),"%d %d %d \r\n",Gyro.L_vibro,Gyro.AmpPer,Cheng_AMP_Flag);
+       		WriteCon(Time);	
           }
         Cheng_AMP_Flag=0;
         }
@@ -88,11 +85,42 @@
     
       srand(Global_Time);//инициализация функции rand() для получения новых случайных велечин.
      Gyro.AmpT = (rand() % Gyro.AmpTD+Gyro.AmpMin);// ОШУМЛЕНИЕ amp
-    //    Gyro.L_vibro= ((Gyro.AmpN2-Gyro.AmpN1))*(16383/Nmax);
-   //  Gyro.L_vibro=((16000 *(Gyro.AmpN2-Gyro.AmpN1))/(Nmax/2));
     } else {
         PeriodCount++;//таймер амплитуды
     }
+}*/
+void OLDCalcAmpN(void)//расчет точек старта и стопа импульса вибропривода и расчет частоты ошумления.
+{   
+    static int PeriodCount = 0,Period=0;
+    unsigned int Nmax=0, lowper=1;
+    Gyro.FrqHZ=Gyro.Frq>>16;
+    if(PeriodCount>= Gyro.AmpT) 
+    { 
+      PeriodCount=0;//сбрасываем таймер
+      if(Cheng_AMP_Flag==0) 
+      	{ 
+     		 	//if((Gyro.AmpPer+Gyro.AmpPerDel*100)>9000)             Gyro.AmpPer=9000-Gyro.AmpPerDel*100;   //проверка верхней граници амплитуды
+             	T_vib_1 = Gyro.AmpPer * T_vibP;
+        	 	T_vib_2 = T_vibP * (10000-Gyro.AmpPer);
+     		 	Gyro.L_vibro=Gyro.AmpPer*3;
+     		 	Cheng_AMP_Flag=1;
+     	}
+      else  
+	   {
+        		//if((Gyro.AmpPer+Gyro.AmpPerDel*100)>9000)          Gyro.AmpPer=9000-Gyro.AmpPerDel*100;   //проверка верхней граници амплитуды
+        		if((Gyro.RgConA&0x20))
+       	 		 	{            
+         	       		T_vib_1 = T_vibP * (Gyro.AmpPer +(Gyro.AmpPerDel*100));
+        				T_vib_2 = T_vibP * (10000 -(Gyro.AmpPer+(Gyro.AmpPerDel*100)));
+		        		Gyro.L_vibro=(Gyro.AmpPer+Gyro.AmpPerDel)*3;
+        	     	}
+       			 Cheng_AMP_Flag=0;
+        }
+
+        	srand(Global_Time);//инициализация функции rand() для получения новых случайных велечин.
+   		 	Gyro.AmpT = (rand() % Gyro.AmpTD+Gyro.AmpMin);// ОШУМЛЕНИЕ amp
+     }
+     else {PeriodCount++;}
 
 }
 
@@ -117,36 +145,26 @@
 	}
 	else
 	{   
-	 /*   sprintf((Time)," %d   %d   %d\r\n",Gyro.F_ras,  Gyro.MaxAmp,  Gyro.AmpTarget/((Gyro.Frq)>>16));
-        WriteCon(Time);*/
 		Gyro.F_rasAdd += Gyro.MaxAmp/32*Gyro.FrqHZ/40;
-		Gyro.F_ras=Gyro.F_rasAdd>>8;
+		Gyro.F_ras=Gyro.F_rasAdd>>9;
 		Gyro.F_rasAdd=0;
 		countFras=0;
 	}
-	
-	
 	if(Gyro.RgConA&0x20)
 	{
   	//расчет максимальной амплитуды из востановленного синуса р-р.
-  	temp=(int)(((Gyro.MaxAmp -Gyro.AmpTarget/((Gyro.Frq)>>16)) * Gyro.AmpSpeed));
+  	temp=(int)(((Gyro.MaxAmp - Gyro.AmpTarget*2/((Gyro.Frq)>>16)) * Gyro.AmpSpeed));
   	temp=temp>>6;
     LowDZ	=	((Gyro.AmpSpeed<<3)*(-1));
     HiDZ	=	(Gyro.AmpSpeed<<3);
-     if((temp<LowDZ)||(temp>HiDZ))
-     { 	/* sprintf((Time)," %d   %d\r\n",Gyro.MaxAmp, temp);
-         WriteCon(Time);*/
-    	Gyro.Amp   -= temp; // расчет амплитуды ВП с учетом разници
-     }
-     else {
-     	/* 	 sprintf((Time),"not regul\r\n");
-         WriteCon(Time);
-     	*/
-     	}
-  		if((Gyro.Amp>>16) > Gyro.AmpPerMax)   {Gyro.Amp = (Gyro.AmpPerMax << 16);}   // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
- 		if((Gyro.Amp>>16) < Gyro.AmpPerMin)   {Gyro.Amp = (Gyro.AmpPerMin << 16);}  // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
-    Gyro.AmpPer = Gyro.Amp>>16; //приведение амплитуды ВП к виду 0%-100%
+    Gyro.Amp   -= temp; // расчет амплитуды ВП с учетом разници
+  		if((Gyro.Amp>>16) > (Gyro.AmpPerMax))   {Gyro.Amp = (Gyro.AmpPerMax << 16);}   // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
+ 		if((Gyro.Amp>>16) < (Gyro.AmpPerMin))   {Gyro.Amp = (Gyro.AmpPerMin << 16);}  // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
+       // Gyro.AmpPer = (Gyro.Amp)>>16; //приведение амплитуды ВП к виду 0%-100%
     }
+    
+        	LPC_MCPWM->MAT1 = T_vib_1;
+        	LPC_MCPWM->MAT2 = T_vib_2;
     }
 
 
@@ -164,8 +182,9 @@
     }
   //  Gyro.FrqPhaseEror = TempFaza<<10;
     if     (Gyro.Frq < Gyro.FrqHZmin) Gyro.Frq=Gyro.FrqHZmin;//нижнее  ограничение частоты
-    else if(Gyro.Frq > Gyro.FrqHZmax) Gyro.Frq=Gyro.FrqHZmax;//верхнее ограничение частоты
-    LPC_TIM1->MR0 =(unsigned int)(103000000/((Gyro.Frq)>>11));//запись в таймер нового  значение частоты вибро
+    else if(Gyro.Frq > Gyro.FrqHZmax) Gyro.Frq=Gyro.FrqHZmax;//верхнее ограничение частоты*/
+    LPC_TIM1->MR0 =(unsigned int)(103200000/(Gyro.Frq>>11));//запись в таймер нового  значение частоты вибро
+  // LPC_TIM1->MR0 =(unsigned int) F_vib;
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -175,16 +194,42 @@
 {  
     switch(CountV31) {
      case 0:
+       BackLightON  
+       BackLightON  
+       BackLightON
+            ReVib();///обновление значений вибро
           	Gyro.VibroAMPRegulF=1;
             Time_vibro=0;
-            Gyro.VibroNoiseF++;//расчет и установка нового заначения частоты ошумления и запись в таймер частоты ошумления.
+            Gyro.VibroNoiseF++;//расчет и установка нового заначения частоты ошумления и запись в таймер частоты ошумления. 
+            BackLightOFF
+            BackLightOFF
+            BackLightOFF       
      break;
-    
+     case 8:
+         BackLightON
+ 
+  		LPC_MCPWM->CON_CLR |= (1<<8);
+   		LPC_MCPWM->CON_CLR |= (1<<16);
+       
+         LPC_MCPWM->TC1 =1;
+         LPC_MCPWM->TC2 =1;
+      
+          LPC_MCPWM->CON_SET |= (1<<8);
+         LPC_MCPWM->CON_SET |= (1<<16);  //вкл
+
+     BackLightOFF
+        break;
+        
 	 case 16:
 	     //   Gyro.Reper_Event=1; 
             Time_vibro=0;
             Gyro.VibroFrqRegulF=1; //
      break;
+     
+     	 case 31:
+	     //   Gyro.Reper_Event=1; 
+     //LPC_MCPWM->LIM0=0;
+     break;
      }
 }
 void AllRegul (void)