Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
Diff: SPI.c
- 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;