![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
fork
Fork of LG by
Diff: SPI.c
- Revision:
- 200:1df682165694
- Parent:
- 199:2728719cdc64
--- a/SPI.c Thu Oct 20 09:32:25 2016 +0000 +++ b/SPI.c Thu Oct 20 11:38:22 2016 +0000 @@ -30,20 +30,9 @@ unsigned int Buff_ADC_5 [512]; -unsigned int BuffADC_16Point [64]; -unsigned int BuffADC_32Point [64]; -unsigned int BuffADC_64Point [64]; -unsigned int BuffADC_32PointD [64]; -unsigned int Buff_Restored_Mod [64]; -unsigned int PulseADC_16Point; -unsigned int PulseADC_32Point; -unsigned int PulseADC_64Point; -unsigned int PulseADC_32PointD; +unsigned int BuffADC_64Point [64]; - -unsigned int Buff_AMP [256]; -unsigned int Buff_AMP64P [256]; unsigned int TypeMod=0; unsigned int ModArraySin [64] = {50,55,59,64,68,73,77,81,85,88,91,94,96,98,99,99,100,99,99,98,96,94,91,88,85,81,77,73,68,64,59,55,50,45,41,36,32,27,23,19,16,12,9,7,4,2,1,1,0,1,1,2,4,7,9,12,16,19,23,27,32,36,41,45}; unsigned int ModArrayTriangle [64]; @@ -64,6 +53,7 @@ Mod+=2; } } + void Modulator(void) { switch(TypeMod) @@ -75,8 +65,9 @@ } void PLCRegul(void) { - - if (CountV64 == 0) + if(Gyro.start)Gyro.start--; + else{ + if (CountV64 == 0) { for (int i = 0; i < 32; i++ ) { @@ -87,37 +78,35 @@ SinMns+= BuffADC_64Point[i]; } ADCDIF = SinPls - SinMns; - // Spi.DAC_B-=ADCDIF>>6; - - if(ADCDIF>0) Spi.DAC_B-=3; - else Spi.DAC_B+=3; - + Spi.DAC_B-=ADCDIF>>7; + if ( Spi.DAC_B < 15300 ) Spi.DAC_B = 32000; //проверка на переваливание за границу. else if ( Spi.DAC_B > 53000 ) Spi.DAC_B = 32000; -/* - sprintf((Time),"%d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра. - WriteCon(Time); - */ + + /*sprintf((Time),"%d %d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B, Gyro.Termo);//выдаем в терминал для постройки граффика регулировки периметра. + WriteCon(Time);*/ + SinPls=0; SinMns=0; } + } } void ADS_Acum(void) { - Spi.ADC_NewData = 0; - Gyro.Termo = Spi.ADC1; + /* Spi.ADC_NewData = 0; + //Gyro.Termo = Spi.ADC1; Gyro.In1 = Spi.ADC2; Gyro.In2 = Spi.ADC3; Gyro.DeltaT = Spi.ADC4; - TempA = (0xffff - Spi.ADC5); // перевернем знак и умножим на два (было 32000...0 стало 0 ...32000 /*сдвиг(<<1) стало 0 ...64000*/) - TempTermLM = Spi.ADC1; + 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.ADS_AccumTermLM+=TempTermLM; Gyro.ADF_Count ++; Gyro.ADS_Count ++; @@ -129,12 +118,12 @@ } if (Gyro.ADS_Count > 255) { // если прошло 256 тактов виброподвеса Gyro.AD_Slow = Gyro.ADS_Accum << 7; //обновляем данные и приводим в один масштаб - Gyro.TermLM = Gyro.ADS_AccumTermLM << 3; + // Gyro.TermLM = Gyro.ADS_AccumTermLM << 3; Gyro.ADS_Count = 0; Gyro.ADS_Accum = 0; - Gyro.ADS_AccumTermLM=0; + // Gyro.ADS_AccumTermLM=0; Gyro.ADS_NewData = 1; - } + }*/ } void SPI_Exchange(void) // новая функция чтения, в нецй не должно быть ничего лишнего @@ -145,6 +134,7 @@ ADC5New = LPC_SSP0->DR;// Чтение АЦП // Spi.ADC5_Accum += LPC_SSP0->DR; + Spi.ADC4_Accum += LPC_SSP0->DR; Spi.ADC3_Accum += LPC_SSP0->DR; Spi.ADC2_Accum += LPC_SSP0->DR; @@ -155,17 +145,19 @@ // ADC5Dif = (ADC5New) - (ADC5Old); // ADC5Old=ADC5New; - /* -sprintf((Time)," %d\r\n", (Buff_Restored_Mod[CountV64])); -WriteCon(Time); - */ + /* +sprintf((Time)," %d\r\n", Spi.ADC1); +WriteCon(Time);*/ + while (LPC_SSP0->SR & RX_SSP_notEMPT) { DummySPI = LPC_SSP0->DR; //если буфер SPI не пуст.//очистить буфер. } DAC_OutPut(); + BuffADC_64Point[CountV64]=ADC5New; + PLCRegul(); if (CountV31 == 0) { // просто фильтруем по 32 точкам. // выставояем бит, что есть новы данные - Spi.ADC1 = Spi.ADC1_Accum >> 5; // подгоотавливаем данные (в той эе сетке) те ADC1 0..65535 + Gyro.Termo = 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; @@ -182,48 +174,7 @@ - BuffADC_64Point[CountV64]=ADC5New; - Buff_ADC_5[CountV255] = (0x7fff-ADC5New)<<2; - PLCRegul(); - - - -/* - 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);*/ - - + } void ShowMod(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап @@ -265,14 +216,14 @@ int tempDac; if(start<=5) { - if(ttt) + /* 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--;