Dmitry Kovalev
/
LG
n
Fork of LG by
Embed:
(wiki syntax)
Show/hide line numbers
SPI.c
00001 #include "Global.h" 00002 struct SPI Spi; 00003 unsigned int Temp_AMP=0; 00004 00005 unsigned int Temp_ADC_2=0; 00006 unsigned int Temp_ADC_3=0; 00007 unsigned int Temp_ADC_4=0; 00008 unsigned int Temp_ADC_5=0; 00009 00010 00011 unsigned int Buff_ADC_1 [256]; 00012 unsigned int Buff_ADC_2 [256]; 00013 unsigned int Buff_ADC_3 [256]; 00014 unsigned int Buff_ADC_4 [256]; 00015 unsigned int Buff_ADC_5 [256]; 00016 00017 unsigned int Buff_AMP [256]; 00018 00019 unsigned int SinPLC[64]={1023, 1016, 1006, 993, 976, 954, 904, 874, 841, 806, 768, 728, 00020 687, 645, 601, 557, 500, 379, 337, 296, 256, 219, 183, 150, 00021 120, 93, 69, 48, 31, 18, 8, 0, 8, 18, 31, 48, 00022 69, 93, 120, 150, 183, 219, 256, 296, 337, 379, 468, 512, 557, 00023 601, 645, 687, 728, 768, 806, 841, 874, 904, 954, 976, 993, 1006, 00024 1016, 1023}; 00025 void DACLInit( void ) 00026 { 00027 /* setup the related pin to DAC output */ 00028 LPC_PINCON->PINSEL1 = 0x00200000; /* set p0.26 to DAC output */ 00029 return; 00030 } 00031 void SPI_Exchange() 00032 { 00033 unsigned int Dummy; 00034 00035 Spi.ADC5 = LPC_SSP0->DR; 00036 Spi.ADC4 = LPC_SSP0->DR; 00037 Spi.ADC3 = LPC_SSP0->DR; 00038 Spi.ADC2 = LPC_SSP0->DR; 00039 Spi.ADC1 = LPC_SSP0->DR; 00040 00041 Input.ArrayIn[2]= Spi.ADC5; 00042 00043 LPC_SSP0->DR=0x5555; 00044 LPC_SSP0->DR=0x5555; 00045 LPC_SSP0->DR=0x5555; 00046 00047 if (CountV31 & 1) //если нечетный такт то 00048 { 00049 LPC_SSP0->DR = WRITE_DAC0; //e.команда для ЦАП_0 передавать. 00050 LPC_SSP0->DR = (Spi.DAC_A); //e. передача 12 бит 00051 } 00052 else //если такт четный. 00053 { 00054 LPC_SSP0->DR = WRITE_DAC1 ; //e.команда для ЦАП_1 передавать. 00055 LPC_SSP0->DR = (Spi.DAC_B); //e. передача 12 бит 00056 } 00057 00058 LPC_DAC->CR = (((SinPLC[CountV64]*35)+21300)); 00059 while (LPC_SSP0->SR & RX_SSP_notEMPT) //если буфер SPI не пуст. 00060 Dummy = LPC_SSP0->DR; //очистить буфер. 00061 00062 00063 Buff_ADC_1 [CountV255] = Spi.ADC1; // ампл ацп. 00064 Buff_ADC_2 [CountV255] = Spi.ADC2; 00065 Buff_ADC_3 [CountV255] = Spi.ADC3; 00066 Buff_ADC_4 [CountV255] = Spi.ADC4; 00067 Buff_ADC_5 [CountV255] = Spi.ADC5; 00068 00069 00070 00071 Temp_AMP += Buff_ADC_5[CountV255]; 00072 Temp_AMP -= Buff_ADC_5[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов 00073 Buff_AMP[CountV255] = (unsigned int) (Temp_AMP); 00074 00075 Temp_ADC_2 += Buff_ADC_2[CountV255]; 00076 Temp_ADC_2 -= Buff_ADC_2[(CountV255-32) & 0xff]; 00077 00078 Temp_ADC_3 += Buff_ADC_3[CountV255]; 00079 Temp_ADC_3 -= Buff_ADC_3[(CountV255-32) & 0xff]; 00080 00081 Temp_ADC_4 += Buff_ADC_4[CountV255]; 00082 Temp_ADC_4 -= Buff_ADC_4[(CountV255-32) & 0xff]; 00083 00084 Temp_ADC_5 += Buff_ADC_1[CountV255]; 00085 Temp_ADC_5 -= Buff_ADC_1[(CountV255-32) & 0xff]; 00086 } 00087 void Init_SPI_Exchange() 00088 { 00089 ResetCS(ADC); //prepare ADC for sampling 00090 SetDAC(DAC); 00091 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00092 //LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00093 //LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00094 SetCS(ADC); //start ADC sampling 00095 ResetDAC(DAC); 00096 }
Generated on Tue Jul 12 2022 15:16:11 by 1.7.2