![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
forkd
Fork of LG2 by
Diff: SPI.c
- Revision:
- 127:6a7472d67804
- Parent:
- 126:76579c4db080
- Child:
- 128:1e4675a36c93
--- a/SPI.c Sat Apr 09 15:19:06 2016 +0000 +++ b/SPI.c Mon Apr 11 03:13:42 2016 +0000 @@ -71,26 +71,55 @@ { int PLC_In; - PLC_In = Gyro.AD_Slow; + + PLC_In = Gyro.AD_Slow; //выбираем даные для фильтрации // PLC_In = Gyro.AD_Fast; - - Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old; + + Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old; // узнаем приращение + Gyro.PLC_DeltaADD = PLC_Delta * Gyro.PLC_ADC_DOld; //приращение с учетом знака (и количества) прошлого приращения + Gyro.PLC_Old = PLC_In; // запоминание значения + if(Gyro.RgConA&0x2) // если включон контур регулирования + { + if (Gyro.PLC_Error2Mode > 0) {Gyro.PLC_Error2Mode --;} // если ошибка(нахожление в двух модовом) + else if ( Gyro.PLC_Delta > (1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} // проверка на двух модовость + else if ( Gyro.PLC_Delta < (-1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} + else if (Gyro.PLC_DeltaADD > 0) + { + + } + else if (Gyro.PLC_DeltaADD < 0) + { + + } + else + { + + } + } + else + { + Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0 + } + Spi.DAC_B += Gyro.PLC_ADC_DOld * 4; + if ( Spi.DAC_B < 1000 ) {Spi.DAC_B = 64000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} + if ( Spi.DAC_B > 1000 ) {Spi.DAC_B = 1000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} - - + + + + +/* эТО вроде заработало if(Gyro.RgConA&0x2) { - if (Gyro.PLC_Znak > 1) {Gyro.PLC_Znak --;} - else if ( Gyro.PLC_Delta > (1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Znak = 5;} - else if ( Gyro.PLC_Delta < (-1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Znak = 5;} + if (Gyro.PLC_Error2Mode > 0) {Gyro.PLC_Error2Mode --;} // если ошибка(нахожление в двух модовом) + else if ( Gyro.PLC_Delta > (1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5;} + else if ( Gyro.PLC_Delta < (-1000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5;} else if ((Gyro.PLC_Delta * Gyro.PLC_Znak) > 0) { Gyro.PLC_Znak = 1; // Gyro.PLC_Regul -= ((Gyro.PLC_Delta * Gyro.PLC_Znak)/100); // Spi.DAC_B -= (((Gyro.PLC_Delta * Gyro.PLC_Znak)/65536))*16; Spi.DAC_B -= 64; - - } else { @@ -100,10 +129,14 @@ Spi.DAC_B += 64; } // Spi.DAC_B = (Gyro.PLC_Regul + 0x1fffffff)/65536; - } else Spi.DAC_B += 16; - Gyro.PLC_Old = PLC_In; +*/ + + + + + }