Dmitry Kovalev
/
LG2
fork
Fork of LG by
Diff: SPI.c
- Revision:
- 171:d227a6045305
- Parent:
- 170:d099c3025f87
- Child:
- 172:ef7bf1663645
diff -r d099c3025f87 -r d227a6045305 SPI.c --- a/SPI.c Wed Jun 08 14:06:03 2016 +0000 +++ b/SPI.c Thu Jun 09 10:19:23 2016 +0000 @@ -154,7 +154,7 @@ Gyro.PlC_MaxD=(unsigned int)(AD_MAX-Gyro.AD_Slow); //ищем разницу между желаемой и действительной амплитудами. - if(Gyro.RgConA&0x2) { // если контур регулирования замкнут + if(Gyro.RgConA&0x8) { // если контур регулирования замкнут /* else if ( Gyro.PLC_Delta > (3500 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_ADC_DOld = 0;} // проверка на двух модовость else if ( Gyro.PLC_Delta < (-3500 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_ADC_DOld = 0;} // проверка на двух модовость*/ if ( Gyro.PLC_Error2Mode > 0) { Gyro.PLC_Error2Mode --; Gyro.PLC_ADC_DOld = 0;} // если ошибка(нахожление в двух модовом) @@ -169,39 +169,38 @@ Spi.DAC_B += 12500; Gyro.PLC_Error2Mode=4; } + if(Gyro.ModJump==2) { Gyro.ModJump=0; Spi.DAC_B -= 12500; Gyro.PLC_Error2Mode=4; } - - - 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 * значение регулировки) - tempDac = Gyro.PLC_ADC_DOld * tempDac; //используется только для выдачи - flagmod=3; - } - else if(Gyro.PlC_MaxD>(12<<18)) { // 2 режим регулирования - tempDac=(unsigned int)(Gyro.PlC_MaxD>>18); - Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac); - tempDac = Gyro.PLC_ADC_DOld * (tempDac); //используется только для выдачи - flagmod=2; - } - 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; - tempDac = Gyro.PLC_ADC_DOld * tempDac; - flagmod=1; - } - + if(Gyro.RgConA&0x8) { + 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 * значение регулировки) + tempDac = Gyro.PLC_ADC_DOld * tempDac; //используется только для выдачи + flagmod=3; + } + else if(Gyro.PlC_MaxD>(12<<18)) { // 2 режим регулирования + tempDac=(unsigned int)(Gyro.PlC_MaxD>>18); + Spi.DAC_B += Gyro.PLC_ADC_DOld * (tempDac); + tempDac = Gyro.PLC_ADC_DOld * (tempDac); //используется только для выдачи + flagmod=2; + } + 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; + tempDac = Gyro.PLC_ADC_DOld * tempDac; + flagmod=1; + } + } /* if(flagmod==3) {k++; //если максимальный режим регулирования //инкрементируем счетчик большого понижения амплитуды if(k>100){k=0;AD_MAX -= 6107200;} //если счетчик бльше 50 //обнуляем счетчик //уменьшаем максимальную амплитуду. @@ -222,7 +221,6 @@ sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", Spi.DAC_B, temp9, r, tempDac, flagmod, AD_MAX, Gyro.AD_Slow, Gyro.CuruAngle, Gyro.TermLM, (Gyro.Frq>>16) );//выдаем в терминал для постройки граффика регулировки периметра. WriteCon(Time); } - // LoopOff }