Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
Diff: SPI.c
- Revision:
- 196:f76dbc081e63
- Parent:
- 195:bcc769f5292b
- Child:
- 197:7a05523bf588
--- a/SPI.c Tue Sep 20 10:39:30 2016 +0000 +++ b/SPI.c Fri Sep 23 05:34:50 2016 +0000 @@ -2,13 +2,13 @@ struct SPI Spi; //unsigned int Temp_AMP; unsigned int Temp_AMP64P; -int tt=0; +int ttt=1; unsigned int Count_AMP, ADD_AMP, Cur_Amp; int Znak_Amp; int AD_Regul = 0; int temp9,tempADC5; int AD_MAX=0; -int k=0,l=0,r=0;//счетчики для регулировки периметра +int k=0,l=0,r=0,n=0;//счетчики для регулировки периметра int flagmod=0,Bdelta; int start=10; unsigned int Temp_ADC_2; @@ -120,19 +120,21 @@ int templm=0; int PLC_In; int tempDac; - if(!(Gyro.PinReg & PinRegBitL) && (start>0)) start--; - else if(start==2) + if(0<start<=5) { - if(tt==0) - {// +25° - templm = (Gyro.TermoNKU-Gyro.Termo)*2; //дельта + if(ttt) + {// +25 С° + templm = (Gyro.TermoNKU-Gyro.Termo); //дельта if(templm>0) Gyro.Ktermo=1; else Gyro.Ktermo=0; Spi.DAC_B+=templm; - tt=1; + ttt=0; } } - else if(start==0) + + if(!(Gyro.PinReg & PinRegBitL) && (start>0)) start--; + + else if((start==0)) { PLC_In = Gyro.AD_Slow; //выбираем даные для фильтрации Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old; //узнаем приращение @@ -163,8 +165,8 @@ if(AD_MAX < PLC_In) {AD_MAX = PLC_In; l=0;} //обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды. else l++; //инкрементируем счетчик малого понижения желаемой амплитуды (максимальной замеченной) if((l > 100)&&(Gyro.PLC_Error2Mode == 0)) {AD_MAX -= 2107200;k=15;l=0;} //если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). m - if ((k == 15)&&(Gyro.PLC_Lern > 150)) Spi.DAC_B += 200; //после уменьшения максимальной амплитуды двигаем шевелем цап - else if((k == 1)&&(Gyro.PLC_Lern > 150)) {Spi.DAC_B -= 200; k=0;l=0;} //для быстрог поиска новог максимума. + if ((k == 15)&&(Gyro.PLC_Lern > 150)) Spi.DAC_B += 75; //после уменьшения максимальной амплитуды двигаем шевелем цап + else if((k == 1)&&(Gyro.PLC_Lern > 150)) {Spi.DAC_B -= 75; k=0;l=0;} //для быстрог поиска новог максимума. if(k>0)k--; Gyro.PlC_MaxD=(unsigned int)(AD_MAX-PLC_In); //ищем разницу между желаемой и действительной амплитудами. @@ -206,24 +208,25 @@ flagmod=3; } - else if(Gyro.PlC_MaxD>(12<<17)) { // 2 режим регулирования + else if(Gyro.PlC_MaxD>(20<<17)) { // 2 режим регулирования tempDac=(unsigned int)(Gyro.PlC_MaxD>>19); Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac); tempDac = Gyro.PLC_ADC_DOld * (tempDac); //используется только для выдачи flagmod=2; } - else if(Gyro.PlC_MaxD<(2<<17)) { //режим если дельта равна 0;Gyro.ModJump - tempDac=2; + else if(Gyro.PlC_MaxD<(4<<17)) { //режим если дельта равна 0;Gyro.ModJump + tempDac=1; Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac; flagmod=0; } else { - tempDac=(unsigned int)(Gyro.PlC_MaxD>>18); // 1 режим регулирования + tempDac=(unsigned int)(Gyro.PlC_MaxD>>19); // 1 режим регулирования Spi.DAC_B += Gyro.PLC_ADC_DOld *tempDac; tempDac = Gyro.PLC_ADC_DOld * tempDac; flagmod=1; } } + if ( Spi.DAC_B < 18300 ) {Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} //проверка на переваливание за границу. else if ( Spi.DAC_B > 53000) {Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} @@ -234,8 +237,14 @@ //////////лог////////// /////////////////////// if(Gyro.LogPLC==1) { - sprintf((Time),"%d %d %d %d %d %d\r\n", Spi.DAC_B, templm, start, tt, PLC_In, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра. + // LoopOn + sprintf((Time),"%d %d %d %d %d %d %d %d \r\n",Gyro.CuruAngle, Gyro.tempdelta, Gyro.tempdelta2, Spi.DAC_B, tempDac, AD_MAX, PLC_In, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра. + Gyro.CuruAngle=0; + Gyro.tempdelta=0; + Gyro.tempdelta2=0; WriteCon(Time); + // LoopOff + } }