123
Fork of LG by
Diff: SPI.c
- Revision:
- 190:289514f730ee
- Parent:
- 189:8a16378724c4
- Child:
- 191:40028201ddad
--- a/SPI.c Mon Aug 22 10:39:08 2016 +0000 +++ b/SPI.c Tue Aug 23 14:03:16 2016 +0000 @@ -3,13 +3,12 @@ //unsigned int Temp_AMP; unsigned int Temp_AMP64P; -int ttt = 0; unsigned int Count_AMP, ADD_AMP, Cur_Amp; int Znak_Amp; int AD_Regul = 0; -int temp9; +int temp9,tempADC5; int AD_MAX=0; -int k=0,l=0,r=0; +int k=0,l=0,r=0;//счетчики для регулировки периметра int flagmod=0,Bdelta; unsigned int Temp_ADC_2; @@ -73,10 +72,7 @@ while (LPC_SSP0->SR & RX_SSP_notEMPT) { DummySPI = LPC_SSP0->DR; //если буфер SPI не пуст.//очистить буфер. } - - DAC_OutPut(); - if (CountV31 == 0) { // просто фильтруем по 32 точкам. // выставояем бит, что есть новы данные Spi.ADC1 = Spi.ADC1_Accum >> 5; // подгоотавливаем данные (в той эе сетке) те ADC1 0..65535 @@ -95,9 +91,7 @@ } - - -void ShowMod(void)//технологическая функция для просмотра мод на всем диапазпне цап +void ShowMod(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап { ////////////////////////////////////////////////////////////////////////////////////////////////// @@ -125,25 +119,26 @@ int PLC_In; int tempDac; - - PLC_In = Gyro.AD_Slow; //выбираем даные для фильтрации + if(!(Gyro.PinReg & PinRegBitL)) PLC_In = Gyro.AD_Slow; //выбираем даные для фильтрации + // PLC_In = (unsigned int)(PLC_In>>1); 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) для определения максимальной амплитуды. - Gyro.PLC_Lern++; //инкрементируем счетчик поиска максимальной амплитуды + if((!(Gyro.PinReg & PinRegBitL)) && (Gyro.PLC_Lern < 150) && (Gyro.PLC_Error2Mode != 0)) { //пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды. + //Gyro.PLC_Lern++; //инкрементируем счетчик поиска максимальной амплитуды Spi.DAC_B += 0x3c; //добовляем в значение цапа 60 - if(AD_MAX < PLC_In){AD_MAX = PLC_In;} //если максимальная амплитуда меньше текущей записываем новую максимальную амплитуду. - else if ((AD_MAX>PLC_In)&&(AD_MAX>1500800000)) r++; //если текущая амплитуда меньше максимально найденной то инкрементируем счетчик. + if(AD_MAX < PLC_In){AD_MAX = PLC_In;} //если максимальная амплитуда меньше текущей записываем новую максимальную амплитуду. + else if ((AD_MAX>PLC_In)&&(AD_MAX>1500800000)) r++; //если текущая амплитуда меньше максимально найденной то инкрементируем счетчик. if (r>10){Gyro.PLC_Lern=150;Gyro.PLC_Error2Mode=8;} //если текущая амплитуда меньше максимально найденной в течении 5 тактов то выходим из поиска Gyro.CuruAngle = 0; //не считаем угол пока ищем максивальную амплитуду. } //работает только первые ~30-40 секунд (37 сек). - - + + if (Gyro.PLC_Lern<250) Gyro.PLC_Lern++; + // if (Gyro.PLC_Lern<20)AD_MAX=0; if(AD_MAX < PLC_In) {AD_MAX = PLC_In; l=0;} //обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды. else l++; @@ -165,7 +160,7 @@ else { Gyro.PLC_ADC_DOld = 1;} } else {Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0;}///прыжок с моды на моду. - +/* if(Gyro.ModJump==1) { ///прыжок с моды на моду. (-->) Gyro.ModJump=0; Spi.DAC_B += 12500; @@ -176,10 +171,12 @@ Gyro.ModJump=0; Spi.DAC_B -= 12500; Gyro.PLC_Error2Mode=4; - } - if (Bdelta>20) - {AD_MAX=1510800000;} - if(Gyro.RgConA&0x8) { + } */ + /*if (Bdelta>20) + {AD_MAX=1510800000;}*/ + tempADC5=0x7fff-Spi.ADC5; + + if((Gyro.RgConA&0x8) && (tempADC5>1000) && (!(Gyro.PinReg & PinRegBitL))) { if(Gyro.PlC_MaxD>(50<<17)) { // 3 режим регулирования tempDac=(unsigned int)(Gyro.PlC_MaxD>>19); if(tempDac>600) {tempDac=600; Bdelta++; } //ограничение на регулирование если очень большая разница амплитуд @@ -223,7 +220,7 @@ //////////лог////////// /////////////////////// if(Gyro.LogPLC==1) { - sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", Gyro.AD_Slow, temp9, r, tempDac, flagmod, AD_MAX, PLC_In, (Gyro.Frq>>16), Gyro.Frq, Gyro.In2);//выдаем в терминал для постройки граффика регулировки периметра. + sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", l, temp9, r, tempDac, flagmod, AD_MAX, PLC_In, 0x7fff-Spi.ADC5,0,0);//выдаем в терминал для постройки граффика регулировки периметра. WriteCon(Time); } }