Dmitry Kovalev
/
LGfiltr
forkd
Fork of LGstaandart by
Diff: SPI.c
- Revision:
- 232:130a2b5003e6
- Parent:
- 231:079835d508ef
diff -r 079835d508ef -r 130a2b5003e6 SPI.c --- a/SPI.c Thu Jan 25 13:59:43 2018 +0000 +++ b/SPI.c Wed Jan 31 13:41:23 2018 +0000 @@ -47,10 +47,14 @@ Spi.ADC_NewData = 0; /*Gyro.IN1_Accum += Spi.ADC2; Gyro.IN2_Accum += Spi.ADC3;*/ - Gyro.Termo = (unsigned int)((((Spi.ADC1>>1)*100)*0.0122)-27300); - Gyro.DeltaT = (unsigned int)((((Spi.ADC2>>1)*100)*0.0122)-27300); - Gyro.Termo = Spi.ADC1>>1; - Gyro.DeltaT = Spi.ADC2>>1; + + Spi.ADC1 = (int)(((((Spi.ADC1>>1)*100)*0.0122)-27300)+Gyro.Tmp_OffsetT4); + Spi.ADC2 = (int)(((((Spi.ADC2>>1)*100)*0.0122)-27300)+Gyro.Tmp_OffsetT5); + Gyro.Termo = Spi.ADC1; + Gyro.DeltaT = Spi.ADC2; + /*Gyro.Termo = Spi.ADC1-44726; + Gyro.DeltaT = Spi.ADC2-44726;*/ + Gyro.DeltaTRate=(Spi.ADC2-Spi.ADC1); Gyro.TermLM = Spi.ADC1; } @@ -111,7 +115,7 @@ static int TempModT5=0; static int OldT4=0; - static int OldT5=0; + static int OldT5=0,LastTermoMod=0;; static int OldDeltaT4=0; static int OldDeltaT5=0; static int OldMod=0; @@ -119,14 +123,11 @@ AVR_T_Count++; - - Gyro.T4=Spi.ADC1; - Gyro.T5=Spi.ADC2; + TempModT4 = (int)(Gyro.T4-OldT4); TempModT5 = (int)(Gyro.T5-OldT5); - OldT4=Gyro.T4; OldT5=Gyro.T5; @@ -143,19 +144,30 @@ Gyro.DeltaT5+=Delt_T5[q]; Delt_T5[q]=0; } + if(Gyro.DeltaT4==0)Gyro.DeltaT4=OldDeltaT4; if(Gyro.DeltaT5==0)Gyro.DeltaT5=OldDeltaT5; OldDeltaT4=Gyro.DeltaT4; OldDeltaT5=Gyro.DeltaT5; + + + Gyro.TermoMod = Gyro.DeltaT4+Gyro.DeltaT5; + + + + if (Gyro.TermoMod> 0) Gyro.TermoMod=1; + else if(Gyro.TermoMod==0) Gyro.TermoMod=LastTermoMod ; + else Gyro.TermoMod=(-1); - Gyro.TermoMod = Gyro.DeltaT4 + Gyro.DeltaT5; - + LastTermoMod = Gyro.TermoMod; Gyro.DeltaT4=0; Gyro.DeltaT5=0; Gyro.TemperNewData=1; AVR_T_Count=0; + + } @@ -189,8 +201,11 @@ Spi.ADC1 = Spi.ADC1_Accum >> 5; // подгоотавливаем данные (в той эе сетке) те ADC1 0..65535 Spi.ADC2 = Spi.ADC2_Accum >> 5; Spi.ADC3 = Spi.ADC3_Accum >> 5; - Spi.ADC4 = Spi.ADC4_Accum >> 5; - Spi.ADC5 = Spi.ADC5_Accum >> 5; + Spi.ADC4 = (Spi.ADC4_Accum >> 5); + Spi.ADC5 = (Spi.ADC5_Accum >> 5); + + Gyro.T4=Spi.ADC1; + Gyro.T5=Spi.ADC2; Spi.ADC1_Accum = 0; // сбрасывкем аккамулятор Spi.ADC2_Accum = 0; Spi.ADC3_Accum = 0; @@ -233,7 +248,8 @@ void PLCRegul(void) { static unsigned int Flag_64=0, count; -static int CountFaza,Sin; +static int CountFaza,Sin,FlagGain; + if(Gyro.RgConA&0x8) @@ -241,21 +257,32 @@ if(PLC_Flag) { PLC_Flag=0; - if(Gyro.PLCDelay) { } - else Spi.DAC_B+=Gyro.PLC_Eror_count; + if(Gyro.PLCDelay) { FlagGain=1; } + else + { + if(FlagGain) + { + FlagGain=0; + Gyro.HFO_Gain = GyroP.Str.HFO_Gain; + } + Spi.DAC_B+=Gyro.PLC_Eror_count; + } } switch(Gyro.TermoMod) { case -1: if(Spi.DAC_B > Gyro.HighTreshold ) { - Spi.DAC_B = (Gyro.ResetLevelCool); + Gyro.HFO_Gain = GyroP.Str.HFO_Gain_Reset_PLC; + Spi.DAC_B = (Gyro.ResetLevelCool); Gyro.PLCDelay = GyroP.Str.PLCDelay; } break; + case 1: if(Spi.DAC_B < Gyro.DownTreshold ) { + Gyro.HFO_Gain = GyroP.Str.HFO_Gain_Reset_PLC; Spi.DAC_B = (Gyro.ResetLevelHeat); Gyro.PLCDelay = GyroP.Str.PLCDelay; }