![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
fork
Fork of LG by
Diff: SPI.c
- Revision:
- 207:d1ce992f5d17
- Parent:
- 205:775d54fdf646
- Child:
- 208:19150d2b528f
--- a/SPI.c Tue Dec 20 14:08:17 2016 +0000 +++ b/SPI.c Fri Jan 13 08:27:28 2017 +0000 @@ -52,16 +52,16 @@ void InitMOD(void) { - for (int i = 0; i < 64; i++ ) + for (int i = 0; i < 32; i++ ) { - if(i<32) { ModArrayTriangle[i]=Mod; Mod+=3;} - else { ModArrayTriangle[i]=Mod; Mod-=3;} + if(i<16) { ModArrayTriangle[i]=Mod; Mod+=1;} + else { ModArrayTriangle[i]=Mod; Mod-=1;} } - for (int i = 0; i < 64; i++ ) + for (int i = 0; i < 16; i++ ) { ModArraySaw[i]=Mod; - Mod+=2; + Mod+=1; } } void Modulator(void) @@ -75,7 +75,6 @@ } void PLCRegul(void) { - if (CountV64 == 0) { for (int i = 0; i < 32; i++ ) @@ -87,15 +86,14 @@ SinMns+= BuffADC_64Point[i]; } ADCDIF = SinPls - SinMns; - // Spi.DAC_B-=ADCDIF>>6; + // Spi.DAC_B-=ADCDIF>>6; if(ADCDIF>0) Spi.DAC_B-=3; else Spi.DAC_B+=3; 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);//выдаем в терминал для постройки граффика регулировки периметра. +/* sprintf((Time),"%d %d %d %d %d \r\n", SinPls, SinMns, ADCDIF, ADCDIF>>5, Spi.DAC_B);//выдаем в терминал для постройки граффика регулировки периметра. WriteCon(Time); */ SinPls=0; @@ -121,45 +119,41 @@ Gyro.ADF_Count ++; Gyro.ADS_Count ++; - if (Gyro.ADF_Count > 15) { // если прошло 16 тактов виброподвеса + if (Gyro.ADF_Count > 15) { // если прошло 16 тактов виброподвеса Gyro.AD_Fast = Gyro.ADF_Accum << 11; //обновляем данные и приводим в один масштаб Gyro.ADF_Count = 0;// Gyro.ADF_Accum = 0; Gyro.ADF_NewData = 1; } - if (Gyro.ADS_Count > 255) { // если прошло 256 тактов виброподвеса + if (Gyro.ADS_Count > 255) { // если прошло 256 тактов виброподвеса Gyro.AD_Slow = Gyro.ADS_Accum << 7; //обновляем данные и приводим в один масштаб Gyro.TermLM = Gyro.ADS_AccumTermLM << 3; Gyro.ADS_Count = 0; Gyro.ADS_Accum = 0; Gyro.ADS_AccumTermLM=0; - Gyro.ADS_NewData = 1; + Gyro.ADS_NewData = 1; + //srand(Gyro.AD_Slow); } } - void SPI_Exchange(void) // новая функция чтения, в нецй не должно быть ничего лишнего { unsigned int DummySPI; - //unsigned int ADC5Dif; - ADC5New = LPC_SSP0->DR;// Чтение АЦП - // Spi.ADC5_Accum += 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; Spi.ADC1_Accum += LPC_SSP0->DR; - Spi.ADC5_Accum += ADC5New; - - + 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) { + while (LPC_SSP0->SR & RX_SSP_notEMPT) + { DummySPI = LPC_SSP0->DR; //если буфер SPI не пуст.//очистить буфер. } DAC_OutPut(); @@ -176,18 +170,12 @@ Spi.ADC4_Accum = 0; Spi.ADC5_Accum = 0; Spi.ADC_NewData = 1; - - } + } - - - 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 тактов