Dmitry Kovalev
/
LGfiltr
forkd
Fork of LGstaandart by
Diff: SPI.c
- Revision:
- 110:6406b7ac0442
- Parent:
- 109:ee0cff33ad3b
- Child:
- 112:4a96133a1311
diff -r ee0cff33ad3b -r 6406b7ac0442 SPI.c --- a/SPI.c Sat Apr 02 13:10:40 2016 +0000 +++ b/SPI.c Sun Apr 03 05:20:36 2016 +0000 @@ -31,12 +31,52 @@ 1016, 1023 }; + + + + +void SPI_Exchange_I(void) // новая функция чтения, в нецй не должно быть ничего лишнего + { + unsigned int DummySPI; + 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; + while (LPC_SSP0->SR & RX_SSP_notEMPT) {DummySPI = LPC_SSP0->DR;} //если буфер SPI не пуст.//очистить буфер. + LPC_SSP0->DR=0x5555; + LPC_SSP0->DR=0x5555; + LPC_SSP0->DR=0x5555; + + if (CountV31 & 1) { // если нечетный такт то + LPC_SSP0->DR = WRITE_DAC0; // команда для ЦАП_0 передавать. + LPC_SSP0->DR = (Spi.DAC_A); + } else { //если такт четный. + LPC_SSP0->DR = WRITE_DAC1 ; // команда для ЦАП_1 передавать. + LPC_SSP0->DR = (Spi.DAC_B); // передача 12 бит + } + if (CountV31 == 0) // просто фильтруем по 32 точкам. + { + Spi.ADC_NewData = 1; // выставояем бит, что есть новы данные + Spi.ADC1 = 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; + Spi.ADC5 = Spi.ADC5_Accum >> 5; + Spi.ADC1_Accum = 0; // сбрасывкем аккамулятор + Spi.ADC2_Accum = 0; + Spi.ADC3_Accum = 0; + Spi.ADC4_Accum = 0; + Spi.ADC5_Accum = 0; + } +} + + void SPI_Exchange(void) { unsigned int DummySPI; int Delta; - Spi.ADC5 = LPC_SSP0->DR; Spi.ADC4 = LPC_SSP0->DR; Spi.ADC3 = LPC_SSP0->DR; @@ -49,7 +89,7 @@ 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 { //если такт четный. @@ -68,8 +108,8 @@ Buff_ADC_3 [CountV31] = Spi.ADC3; Buff_ADC_4 [CountV31] = Spi.ADC4; Buff_ADC_5 [CountV255] = Spi.ADC5; // ампл ацп. - - + + // Temp_AMP += Buff_ADC_5[CountV255]; // Temp_AMP -= Buff_ADC_5[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов // Buff_AMP[CountV255] = (unsigned int) (Temp_AMP); @@ -115,12 +155,7 @@ Cur_Amp=ADD_AMP; Count_AMP=0; ADD_AMP=0; } - - - - - - Temp_AMP64P += Buff_ADC_5[CountV255]; + Temp_AMP64P += Buff_ADC_5[CountV255]; Temp_AMP64P -= Buff_ADC_5[(CountV255-64) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов Buff_AMP64P[CountV255] = (unsigned int) (Temp_AMP64P);