Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
Diff: vibro.c
- Revision:
- 197:7a05523bf588
- Parent:
- 196:f76dbc081e63
- Child:
- 198:fb22ba6aad54
- Child:
- 201:76f4123bf22a
- Child:
- 203:3a6615de9581
diff -r f76dbc081e63 -r 7a05523bf588 vibro.c --- 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(); } // установка ног в регисторе тоже подумать , зачем отделный флаг? наверно - -}