Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
Diff: SPI.c
- Revision:
- 147:1aed74f19a8f
- Parent:
- 146:2bea299a7c4f
- Child:
- 148:7ce8c1fd00f7
--- a/SPI.c Thu Apr 28 13:54:29 2016 +0000 +++ b/SPI.c Fri Apr 29 07:27:50 2016 +0000 @@ -13,7 +13,7 @@ unsigned int Temp_ADC_3; unsigned int Temp_ADC_4; unsigned int Temp_ADC_5; - +unsigned int TempA; unsigned int Buff_ADC_1 [32]; unsigned int Buff_ADC_2 [32]; @@ -33,7 +33,36 @@ +void ADS_Acum(void) +{ + // можно апихнкть в функцию + Spi.ADC_NewData = 0; + Gyro.Termo = Spi.ADC1; + Gyro.In1 = Spi.ADC2; + Gyro.In2 = Spi.ADC3; + Gyro.DeltaT = Spi.ADC4; + TempA = (0x7fff - Spi.ADC5) << 1; // перевернем знак и умножим на два (было 32000...0 стало 0 ...64000) + Gyro.ADF_Accum += TempA; + Gyro.ADS_Accum += TempA; + Gyro.ADF_Count ++; + Gyro.ADS_Count ++; + + if (Gyro.ADF_Count > 15) // если прошло 16 тактов виброподвеса + { + Gyro.AD_Fast = Gyro.ADF_Accum << 12; //обновляем данные и приводим в один масштаб + Gyro.ADF_Count = 0; + Gyro.ADF_Accum = 0; + Gyro.ADF_NewData = 1; + } + if (Gyro.ADS_Count > 255) // если прошло 256 тактов виброподвеса + { + Gyro.AD_Slow = Gyro.ADS_Accum << 8; //обновляем данные и приводим в один масштаб + Gyro.ADS_Count = 0; + Gyro.ADS_Accum = 0; + Gyro.ADS_NewData = 1; + } +} void SPI_Exchange(void) // новая функция чтения, в нецй не должно быть ничего лишнего {