fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
203:3a6615de9581
Parent:
197:7a05523bf588
Child:
204:e7e9762bf609
--- a/vibro.c	Wed Oct 19 10:55:05 2016 +0000
+++ b/vibro.c	Fri Nov 18 14:06:22 2016 +0000
@@ -23,22 +23,22 @@
          // левая граница вЫкл вибро 1 > Time_vibro <ПРАВАЯ  граница вЫкл вибро 1
         if((Time_vibro>Gyro.AmpN1) && (Time_vibro<Gyro.AmpN2))	
         {
-            Gyro.PinReg &= ~PinRegBit_1V;//установить в регистре PinReg бит "вибро 1" в "0"
+            SetV1//установить в регистре PinReg бит "вибро 1" в "0"
         } 
         else 
         {
-            Gyro.PinReg |= PinRegBit_1V;//установить в регистре PinReg бит "вибро 1" в "1"
+          ClrV1  //установить в регистре PinReg бит "вибро 1" в "1"
         }
 
       } 
     else {//вторая нога вибро
         if((Time_vibro>Gyro.AmpN1)&&(Time_vibro<Gyro.AmpN2))	
         {
-            Gyro.PinReg &= ~PinRegBit_2V; //установить в регистре PinReg бит "вибро 2" в "0"
+         SetV2 //установить в регистре PinReg бит "вибро 2" в "0"
         } 
         else
         {
-            Gyro.PinReg |= PinRegBit_2V;//установить в регистре PinReg бит "вибро 2" в "1"
+            ClrV2//установить в регистре PinReg бит "вибро 2" в "1"
         }
     }
 }
@@ -218,7 +218,7 @@
 void OLDCalcAmpN(void)//расчет точек старта и стопа импульса вибропривода и расчет частоты ошумления.
 {
     static int PeriodCount = 0;
-    unsigned int Nmax=0;
+    unsigned int Nmax=0, lowper;
 
     //расчет амплитуды относительно центральной точки
     if(PeriodCount>= Gyro.AmpT) { //если количество заходов в прерывание больше либо равно частоте ошумления.
@@ -229,8 +229,15 @@
                 Gyro.AmpPer=90-Gyro.AmpPerDel;   //проверка верхней граници амплитуды
             }
             Nmax =(unsigned int)((100000/(Gyro.Frq>>16))-1);                    //
-            Gyro.AmpN1=(unsigned int)((Nmax*(100-Gyro.AmpPer))/Gyro.FrqHZ);            //левая граница амплитуды
+            Gyro.AmpN1=(unsigned int)((Nmax*(100-Gyro.AmpPer))/Gyro.FrqHZ);     //левая граница амплитуды
             Gyro.AmpN2=(unsigned int)((Nmax/2)-Gyro.AmpN1);                     //правая граница амплитуды
+            if(Gyro.AmpPer<6)
+            {
+              lowper = Gyro.AmpN2-Gyro.AmpN1;
+              lowper=lowper/2;
+              Gyro.AmpN2= Gyro.AmpN2+lowper;
+            }
+         //   Gyro.AmpN2=Gyro.AmpN1+2;
             Cheng_AMP_Flag=1;
            
         }
@@ -243,9 +250,18 @@
             Nmax =(unsigned int)((100000/(Gyro.Frq>>16))-1);
             Gyro.AmpN1=(unsigned int)((Nmax*(100-Gyro.AmpPer+Gyro.AmpPerDel))/Gyro.FrqHZ);//левая граница амплитуды
             Gyro.AmpN2=(unsigned int)((Nmax/2)-Gyro.AmpN1);                        //правая граница амплитуды
+            if(Gyro.AmpPer<6)
+            {
+              lowper = Gyro.AmpN2-Gyro.AmpN1;
+              lowper=lowper/2;
+              Gyro.AmpN2= Gyro.AmpN2+lowper+1;
+            }
+            // Gyro.AmpN2=Gyro.AmpN1+2;
             Cheng_AMP_Flag=0;
             
         }
+         /* sprintf((Time),"%d %d %d %d\r\n",  Gyro.AmpPer, Nmax, Gyro.AmpN1, Gyro.AmpN2 );//выдаем в терминал для постройки граффика регулировки периметра.
+          WriteCon(Time);*/
         srand(Global_Time);//инициализация функции rand() для получения новых случайных велечин.
         Gyro.AmpT = (rand() % Gyro.AmpTD+Gyro.AmpMin);// ОШУМЛЕНИЕ amp
  
@@ -366,5 +382,5 @@
        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();}	// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно 
 }