Dmitry Kovalev
/
LG2
fork
Fork of LG by
Diff: SPI.c
- Revision:
- 209:224e7331a061
- Parent:
- 208:19150d2b528f
- Child:
- 211:ac8251b067d2
--- a/SPI.c Tue Feb 07 10:11:35 2017 +0000 +++ b/SPI.c Thu Apr 13 14:14:45 2017 +0000 @@ -52,10 +52,10 @@ void InitMOD(void) { - for (int i = 0; i < 32; i++ ) + for (int i = 0; i < 64; i++ ) { - if(i<16) { ModArrayTriangle[i]=Mod; Mod+=1;} - else { ModArrayTriangle[i]=Mod; Mod-=1;} + if(i<32) { ModArrayTriangle[i]=Mod; Mod+=3;} + else { ModArrayTriangle[i]=Mod; Mod-=3;} } for (int i = 0; i < 16; i++ ) @@ -66,43 +66,68 @@ } void Modulator(void) { + if(!MODFlag) + { switch(TypeMod) { case 0: LPC_DAC->DACR = (ModArraySin [CountV64]*Gyro.ModAmp); break; case 1: LPC_DAC->DACR = (ModArraySaw [CountV64]*Gyro.ModAmp); break; case 2: LPC_DAC->DACR = (ModArrayTriangle [CountV64]*Gyro.ModAmp); break; } + } } void PLCRegul(void) { unsigned int temp; static int CountFaza; - if(Gyro.RgConA&0x8) - { - for (CountFaza = 0; CountFaza <32; CountFaza++ ) - { - SinPls+= BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase) & 0x3f]; - } - for (CountFaza = 32; CountFaza <64; CountFaza++) - { - SinMns+= BuffADC_64Point[(CountFaza + Gyro.PLC_Phase) & 0x3f]; - } - ADCDIF = SinMns-SinPls; + + for (CountFaza = 0; CountFaza <32; CountFaza++ ) SinPls+= BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase) & 0x3f]; + for (CountFaza = 32; CountFaza <64; CountFaza++) SinMns+= BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase) & 0x3f]; + Gyro.PLC_Eror = SinMns-SinPls; + /*sprintf((Time),"%d\r\n",Gyro.PLC_Phase); WriteCon(Time);*/ - if(ADCDIF>0) Spi.DAC_B+=1 * Gyro.PLC_Gain; - else Spi.DAC_B-=1 * Gyro.PLC_Gain; - - if ( Spi.DAC_B < 15300 ) Spi.DAC_B = 32000; //проверка на переваливание за границу. - else if ( Spi.DAC_B > 53000 ) Spi.DAC_B = 32000; + if(Gyro.RgConA&0x8) + { + if(Gyro.PLC_Eror>0) {Spi.DAC_B+=1 * Gyro.PLC_Gain;} + else {Spi.DAC_B-=1 * Gyro.PLC_Gain;} + } + if(Gyro.PLC_Eror>0) {Gyro.PLC_Eror_count++;} + else {Gyro.PLC_Eror_count--;} + + if ( Spi.DAC_B < 10300 ) Spi.DAC_B = 32000; //проверка на переваливание за границу. + else if ( Spi.DAC_B > 57000 ) Spi.DAC_B = 32000; SinPls=0; SinMns=0; - } + } +void PLCRegul250(void) +{ + unsigned int temp; + static int CountFaza; + temp = MODCount; + for (CountFaza = 0; CountFaza <32; CountFaza++ ) SinPls+= BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase) & 0x3f]; + for (CountFaza = 32; CountFaza <64; CountFaza++) SinMns+= BuffADC_64Point[ (CountFaza + Gyro.PLC_Phase) & 0x3f]; + Gyro.PLC_Eror = SinMns-SinPls; + /*sprintf((Time)," %d %d %d\r\n",SinPls, SinMns, Gyro.PLC_Eror); + WriteCon(Time);*/ + if(Gyro.RgConA&0x8) + { + if(Gyro.PLC_Eror>0) {Spi.DAC_B+=1 * Gyro.PLC_Gain;} + else {Spi.DAC_B-=1 * Gyro.PLC_Gain;} + } + if(Gyro.PLC_Eror>0) {Gyro.PLC_Eror_count++;} + else {Gyro.PLC_Eror_count--;} + + if ( Spi.DAC_B < 10300 ) Spi.DAC_B = 32000; //проверка на переваливание за границу. + else if ( Spi.DAC_B > 57000 ) Spi.DAC_B = 32000; + SinPls=0; + SinMns=0; +} @@ -112,21 +137,33 @@ void ADS_Acum(void) { Spi.ADC_NewData = 0; - Gyro.Termo = (unsigned int)(((Spi.ADC1>>1) + Gyro.Tmp_OffsetT4) * Gyro.Tmp_scaleT4); - Gyro.In1 = Spi.ADC2; - Gyro.In2 = Spi.ADC3; - Gyro.DeltaT = (unsigned int)(((Spi.ADC4>>1) + Gyro.Tmp_OffsetT5) * Gyro.Tmp_scaleT5); - + // Gyro.Termo = (unsigned int)(((Spi.ADC1>>1) + Gyro.Tmp_OffsetT4) * Gyro.Tmp_scaleT4); + Gyro.Termo = (unsigned int)(Spi.ADC1>>1); + Gyro.IN1_Accum += Spi.ADC2; + Gyro.IN2_Accum += Spi.ADC3; + // Gyro.DeltaT = (unsigned int)(((Spi.ADC4>>1) + Gyro.Tmp_OffsetT5) * Gyro.Tmp_scaleT5); + Gyro.DeltaT = (unsigned int)(Spi.ADC4>>1); TempA = (0xffff - Spi.ADC5); // перевернем знак и умножим на два (было 32000...0 стало 0 ...32000 /*сдвиг(<<1) стало 0 ...64000*/) TempTermLM = Spi.ADC1; - Gyro.ADF_Accum += TempA; Gyro.ADS_Accum += TempA; /// Gyro.ADS_AccumTermLM+=TempTermLM; Gyro.ADF_Count ++; Gyro.ADS_Count ++; + Gyro.ADM_Count ++; + /* sprintf((Time),"%d %d\r\n",((Gyro.In1>>1) - 0x4fff),(Spi.DAC_B-0x4fff)); + WriteCon(Time);*/ + if (Gyro.ADM_Count > 255) { + Gyro.In1 = Gyro.IN1_Accum>>8; + Gyro.In2 = Gyro.IN2_Accum>>8; + /* sprintf((Time),"%d %i %d %d\r\n", Gyro.In1, Gyro.In2, GyroP.Str.DAC_current_Work, Spi.DAC_A ); + WriteCon(Time);*/ + Gyro.IN1_Accum=0; + Gyro.IN2_Accum=0; + Gyro.ADM_Count=0; + } if (Gyro.ADF_Count > 15) { // если прошло 16 тактов виброподвеса Gyro.AD_Fast = Gyro.ADF_Accum << 11; //обновляем данные и приводим в один масштаб Gyro.ADF_Count = 0;// @@ -140,10 +177,7 @@ Gyro.ADS_Accum = 0; Gyro.ADS_AccumTermLM=0; Gyro.ADS_NewData = 1; - /* sprintf((Time),"%d\r\n",Spi.ADC5); - WriteCon(Time);*/ - //srand(Gyro.AD_Slow); - } + } } void SPI_Exchange(void) // новая функция чтения, в нецй не должно быть ничего лишнего { @@ -156,12 +190,7 @@ Spi.ADC2_Accum += LPC_SSP0->DR; Spi.ADC1_Accum += LPC_SSP0->DR; Spi.ADC5_Accum += ADC5New; - // ADC5Dif = (ADC5New) - (ADC5Old); - // ADC5Old=ADC5New; - /* -sprintf((Time)," %d\r\n", (Buff_Restored_Mod[CountV64])); -WriteCon(Time); - */ + while (LPC_SSP0->SR & RX_SSP_notEMPT) { DummySPI = LPC_SSP0->DR; //если буфер SPI не пуст.//очистить буфер. @@ -180,47 +209,11 @@ Spi.ADC4_Accum = 0; Spi.ADC5_Accum = 0; Spi.ADC_NewData = 1; + } - BuffADC_64Point[CountV64]=ADC5New; + if(!MODFlag) BuffADC_64Point[CountV64]=ADC5New; Buff_ADC_5[CountV255] = (0x7fff-ADC5New)<<2; - - -/* - PulseADC_16Point += Buff_ADC_5[CountV255]; - PulseADC_16Point -= Buff_ADC_5[(CountV255-16)& 0xff]; // заполнение буфера накопленых приращений за 16 тактов - BuffADC_16Point[CountV64] = (Pulse_16Point); - - PulseADC_32Point += Buff_ADC_5[CountV255]; - PulseADC_32Point -= Buff_ADC_5[(CountV255-32)& 0xff ]; // заполнение буфера накопленых приращений за 32 тактов - BuffADC_32Point[CountV64] = (PulseADC_32Point ); - - PulseADC_32PointD += Buff_ADC_5[CountV255]; - PulseADC_32PointD -= Buff_ADC_5[(CountV255-32)& 0xff]; // заполнение буфера накопленых приращений за 32 тактов Двойныз - PulseADC_32PointD += Buff_ADC_5[(CountV255-48)& 0xff]; // - PulseADC_32PointD -= Buff_ADC_5[(CountV255-64)& 0xff]; // - BuffADC_32PointD[CountV64] = PulseADC_32PointD ; - */ - /* PulseADC_64Point += (Buff_ADC_5[CountV255]); - PulseADC_64Point -= Buff_ADC_5[(CountV255-64) & 0xff]; // заполнение буфера накопленых приращений за два 64 тактов - BuffADC_64Point[CountV64] = (PulseADC_64Point);*/ - //ADCDIF += BuffADC_64Point[CountV64]; - /// Buff_Restored_Mod[CountV64] = BuffADC_32PointD[CountV64] - BuffADC_64Point[CountV64]; - - /* if(ADC5Old>3) - { - sprintf((Time),"%d %d \r\n", BuffADC_64Point[CountV64], Buff_Restored_Mod[CountV64]); - WriteCon(Time); - ADC5Old=0; - } - else ADC5Old++; - */ - // BackLightOFF - - // ADCDIF += BuffADC_64Point[CountV64]/*>>5*/; - /* sprintf((Time),"%d %d\r\n", ADC5New, PulseADC_64Point); - WriteCon(Time);*/ - } @@ -249,251 +242,20 @@ Gyro.CuruAngle=0; WriteCon(Time); } - - - -/* - -void PlcRegul(void) - //Программа расчет напряжения для модулятора(//выполняется 1.25 микросек.) -{ - - int templm=0; - int PLC_In; - int tempDac; - if(start<=5) - { - if(ttt) - {// +25 С° - templm = (Gyro.TermoNKU-Gyro.Termo); //дельта - if(templm>0) Gyro.Ktermo=1; - else Gyro.Ktermo=0; - Spi.DAC_B+=templm; - ttt=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; //узнаем приращение - Gyro.PLC_DeltaADD = Gyro.PLC_Delta * Gyro.PLC_ADC_DOld; //приращение с учетом знака (и количества) прошлого приращения - Gyro.PLC_Old = PLC_In; //запоминание значения - if(Gyro.flagGph_W) - { - AD_MAX=0; - Gyro.flagGph_W--; - Gyro.PLC_Error2Mode=3; - } //если изменился коэфициент усиления ФД //3600 (размер моды порядка 3000) - if((Gyro.PLC_Lern < 150) && (Gyro.PLC_Error2Mode != 0)) - { //пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды. - - if(Gyro.Ktermo)Spi.DAC_B += 0x3c; //добовляем в значение цапа 60 - else Spi.DAC_B -= 0x3c; - if(AD_MAX < PLC_In){AD_MAX = PLC_In;} //если максимальная амплитуда меньше текущей записываем новую максимальную амплитуду. - else if ((AD_MAX>PLC_In)&&(AD_MAX>1550800000)) r++; //если текущая амплитуда меньше максимально найденной то инкрементируем счетчик. - if (r>10) - { - Gyro.PLC_Lern=151; - Gyro.PLC_Error2Mode=3; - } //если текущая амплитуда меньше максимально найденной в течении 5 тактов то выходим из поиска - Gyro.CuruAngle = 0; //не считаем угол пока ищем максивальную амплитуду. - } //работает только первые ~30-40 секунд (37 сек). - if (Gyro.PLC_Lern<160) Gyro.PLC_Lern++; - - if(AD_MAX < PLC_In) {AD_MAX = PLC_In; l=0;} //обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды. - else l++; //инкрементируем счетчик малого понижения желаемой амплитуды (максимальной замеченной) - if((l > 300)&&(Gyro.PLC_Error2Mode == 0)) {AD_MAX -= 2107200;k=15;l=0;} //если счетчик малого понижения амплитуды больше 100(аммплитуда не обновлялась 100 раз). m - 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); //ищем разницу между желаемой и действительной амплитудами. - - if(Gyro.ModJump==1) { ///прыжок с моды на моду. (-->) - Gyro.OldCuruAngle = Gyro.CuruAngle; - Gyro.ModJump=0; - Spi.DAC_B += 4300; - Gyro.PLC_Error2Mode=1; - Gyro.StopCuruAngle=2; - } - - if(Gyro.ModJump==2) { ///прыжок с моды на моду. (<--) - Gyro.OldCuruAngle = Gyro.CuruAngle; - Gyro.ModJump=0; - Spi.DAC_B -= 5250; - Gyro.PLC_Error2Mode=1; - Gyro.StopCuruAngle=2; - } - - if(Gyro.RgConA&0x8) { // если контур регулирования замкнут - if ( Gyro.PLC_Error2Mode > 0) { Gyro.PLC_Error2Mode --; Gyro.PLC_ADC_DOld = 0;} // если ошибка(нахожление в двух модовом) - else if ( Gyro.PLC_DeltaADD > 0) { Gyro.PLC_ADC_DOld = 1;} - else if ( Gyro.PLC_DeltaADD < 0) { Gyro.PLC_ADC_DOld = -1;} - else { Gyro.PLC_ADC_DOld = 1;} - } - else {Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0;} - - ///прыжок с моды на моду. - - - - - - tempADC5=0x7fff-Spi.ADC5; - // контур замкнут включен лазер - if((Gyro.RgConA&0x8) && (tempADC5>1000)) - { - if(Gyro.PlC_MaxD>(50<<17)) { // 3 режим регулирования - tempDac=(unsigned int)(Gyro.PlC_MaxD>>19); - 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<<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; - tempDac=2; - Spi.DAC_B += Gyro.PLC_ADC_DOld * tempDac; - flagmod=0; - } - else { - tempDac=2; // 1 режим регулирования - Spi.DAC_B += Gyro.PLC_ADC_DOld *tempDac; - tempDac = Gyro.PLC_ADC_DOld * tempDac; - flagmod=1; - } - } - - - if ( Spi.DAC_B < 15300 ) {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;} - +void ShowMod2(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап +{ + unsigned int step = 30, ENDMOD=53000; + sprintf((Time),"%d %d %d %d %d %d %d\r\n", Gyro.CuruAngle, Spi.DAC_B, Gyro.AD_Slow, Spi.ADC5, 0xfFFf-Spi.ADC1, Spi.ADC1, Gyro.Termo); + Gyro.CuruAngle=0; + WriteCon(Time); + Spi.DAC_B+=step; + if(Spi.DAC_B>ENDMOD) + { + Gyro.LogMod=0; + PlcON + Spi.DAC_B = 32000; + } } - if(Gyro.StopCuruAngle) {Gyro.CuruAngle = Gyro.OldCuruAngle; Gyro.StopCuruAngle--;} - /////////////////////// - //////////лог////////// - /////////////////////// - if(Gyro.LogPLC==1) { - - sprintf((Time),"%d %d %d %d %d %d %d %d %d \r\n",Gyro.CuruAngle, Gyro.Frq, Gyro.MaxAmp, Spi.DAC_B, tempDac, flagmod, AD_MAX, PLC_In, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра. - Gyro.CuruAngle=0; - Gyro.tempdelta=0; - Gyro.tempdelta2=0; - WriteCon(Time); - - } -} - - - -*/ -/* - -void PlcRegul(void) //Программа расчет напряжения для модулятора -{ - int PLC_In; - - - PLC_In = Gyro.AD_Slow; //выбираем даные для фильтрации -// PLC_In = Gyro.AD_Fast; - //или+,или-(знак) - Gyro.PLC_Delta = PLC_In - Gyro.PLC_Old; // узнаем приращение - // (знак) * (то на что инкрементировали цап) - Gyro.PLC_DeltaADD = Gyro.PLC_Delta * Gyro.PLC_ADC_DOld; //приращение с учетом знака (и количества) прошлого приращения - Gyro.PLC_Old = PLC_In; // запоминание значения - - if(Gyro.RgConA&0x2) // если включон контур регулирования - { - if (Gyro.PLC_Error2Mode > 0) {Gyro.PLC_Error2Mode --; Gyro.PLC_ADC_DOld = 0; } // если ошибка(нахожление в двух модовом) - else if ( Gyro.PLC_Delta > (3000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_ADC_DOld = 0;} // проверка на двух модовость - else if ( Gyro.PLC_Delta < (-3000 * 65536)) {Spi.DAC_B += 2500; Gyro.PLC_Error2Mode = 5; Gyro.PLC_ADC_DOld = 0;} - - else if (Gyro.PLC_DeltaADD > 0) - { - -// Gyro.PLC_ADC_DOld = (Gyro.PLC_DeltaADD /6553600 )+1; - Gyro.PLC_ADC_DOld = 1; - } - else if (Gyro.PLC_DeltaADD < 0) - { - -// Gyro.PLC_ADC_DOld = (Gyro.PLC_DeltaADD /6553600 )-1; - Gyro.PLC_ADC_DOld = -1; - } - else - { - Gyro.PLC_ADC_DOld = 1; - } - } - else - { - Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0; - } - - - Spi.DAC_B += Gyro.PLC_ADC_DOld * 16; - - - if ( Spi.DAC_B < 1000 ) {Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} - if ( Spi.DAC_B > 63000 ) {Spi.DAC_B = 32000; Gyro.PLC_Error2Mode = 5; Gyro.PLC_DeltaADD = 0;} - - if(Gyro.LogPLC==1) - { - sprintf((Time),"%d %d %d %d %d %d\r\n", Spi.DAC_B, temp9,flagmod, AD_MAX, Gyro.AD_Slow, k);//выдаем в терминал для постройки граффика регулировки периметра. - WriteCon(Time); - } - - } - - -*//* -void PlcRegul_old(void) // на всякий случай -{ - int Delta; - - ADD_AMP+=Spi.ADC5; - Count_AMP++; - if(Count_AMP>=(32*32+8)) { - Delta = ADD_AMP - Cur_Amp; - - if(Gyro.RgConA&0x2) { - if (Znak_Amp > 1) { - Znak_Amp --; - } else if ( Delta > 30000000 ) { - AD_Regul += 5000000; - Znak_Amp = 5; - } else if ( Delta < (-3000000)) { - AD_Regul += 5000000; - Znak_Amp = 5; - } else if ((Delta * Znak_Amp) > 0) { - Znak_Amp = 1; - AD_Regul -= (Delta * Znak_Amp * 10); - } else { - Znak_Amp = -1; - AD_Regul -= (Delta * Znak_Amp * 10); - } - - Spi.DAC_B = (AD_Regul + 0x1fffffff)/65536; - } - Cur_Amp=ADD_AMP; - Count_AMP=0; - ADD_AMP=0; - } - -} - - -*/ - void DAC_OutPut(void)//выдача в цапы { if(Gyro.RgConA&0x10) Modulator(); @@ -501,38 +263,15 @@ LPC_SSP0->DR=0x5555; LPC_SSP0->DR=0x5555; - if (CountV31 & 1) { //если нечетный такт то + if (CountV31 & 1) + { //если нечетный такт то LPC_SSP0->DR = WRITE_DAC0; //e.команда для ЦАП_0 передавать. LPC_SSP0->DR = (Spi.DAC_A); //e. передача 12 бит - } else { //если такт четный. + } + else + { //если такт четный. LPC_SSP0->DR = WRITE_DAC1 ; //e.команда для ЦАП_1 передавать. LPC_SSP0->DR = (Spi.DAC_B); - // t//emp9 = Spi.DAC_B;//для вывода. - /* - switch( Gyro.StrayPLC_flag) { - - case 0://режим без воздействия - LPC_SSP0->DR = (Spi.DAC_B); - temp9=Spi.DAC_B; - break; - case 1://малое воздействие + - temp9=Spi.DAC_B + Gyro.StrayPLC_Pls; - LPC_SSP0->DR = temp9; - break; - - case 3://малое воздействие - - temp9=Spi.DAC_B + Gyro.StrayPLC_Mns; - LPC_SSP0->DR = temp9; - break; - - case 2://большое воздействие + - temp9=Spi.DAC_B + Gyro.StrayPLC_2Mode; - LPC_SSP0->DR = temp9;//вгоняем в многомодовый режим - break; - - }*/ - // LPC_SSP0->DR = Spi.DAC_B; //e. передача 12 бит - } } @@ -541,74 +280,3 @@ - - - - - - - - - - - - - - - - - - - - - - - - -/* -void SPI_Exchange(void) -{ - unsigned int DummySPI; - - - Spi.ADC5 = LPC_SSP0->DR; - Spi.ADC4 = LPC_SSP0->DR; - Spi.ADC3 = LPC_SSP0->DR; - Spi.ADC2 = LPC_SSP0->DR; - Spi.ADC1 = LPC_SSP0->DR; - - Input.ArrayIn[2]= Spi.ADC5; - - DAC_OutPut(); - -// LPC_DAC->CR = (((SinPLC[CountV64]*35/5)+24300));// модулятор - - while (LPC_SSP0->SR & RX_SSP_notEMPT) //если буфер SPI не пуст. - DummySPI = LPC_SSP0->DR; //очистить буфер. - - //заполнение буферов еденичных значений АЦП. - Buff_ADC_1 [CountV31] = Spi.ADC1; - Buff_ADC_2 [CountV31] = Spi.ADC2; - Buff_ADC_3 [CountV31] = Spi.ADC3; - Buff_ADC_4 [CountV31] = Spi.ADC4; - Buff_ADC_5 [CountV255] = Spi.ADC5; // ампл ацп. - - - Temp_AMP64P += Buff_ADC_5[CountV255]; - Temp_AMP64P -= Buff_ADC_5[(CountV255-64) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов - Buff_AMP64P[CountV255] = (unsigned int) (Temp_AMP64P); - - - Temp_ADC_2 += Buff_ADC_2[CountV31]; - Temp_ADC_2 -= Buff_ADC_2[(CountV31-32) & 0xff]; - - Temp_ADC_3 += Buff_ADC_3[CountV31]; - Temp_ADC_3 -= Buff_ADC_3[(CountV31-32) & 0xff]; - - Temp_ADC_4 += Buff_ADC_4[CountV31]; - Temp_ADC_4 -= Buff_ADC_4[(CountV31-32) & 0xff]; - - Temp_ADC_5 += Buff_ADC_1[CountV255]; - Temp_ADC_5 -= Buff_ADC_1[(CountV255-32) & 0xff]; - Spi.PLC_NewData=1; -}*/ \ No newline at end of file