From be45fa7582f716e7098130b6df2c80ac3293ca7b Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Wed, 15 Jan 2014 19:08:54 +0100 Subject: [PATCH] function to read ADC value and average some samples --- firmware/src/CB_functions.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/firmware/src/CB_functions.c b/firmware/src/CB_functions.c index 7aa19fc..e7c5c97 100644 --- a/firmware/src/CB_functions.c +++ b/firmware/src/CB_functions.c @@ -69,6 +69,22 @@ void report_all_registers(void) { } +uint16_t readAdc0(uint16_t cmd) { + static uint32_t accu = 0; + spi1_writeWord(cmd); + accu += spi1_receivedWord(); + uint16_t res = accu/4; + accu = 0; + spi1_writeWord(cmd); + accu += spi1_receivedWord(); + spi1_writeWord(cmd); + accu += spi1_receivedWord(); + spi1_writeWord(cmd); + accu += spi1_receivedWord(); + return res; + } + + void adc0_read(void){ uint8_t c = 0; // counter for spi buffer fill @@ -84,10 +100,14 @@ void adc0_read(void){ spi1_writeWord(CH3VSGND | UNIPOLAR); // VDDDCUR // ignore received data + spi1_writeWord(CH4VSGND | UNIPOLAR); // VDDACUR + SPI_DMA_Buffer_In[c++] = VDDDCUR; + SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); -// spi1_writeWord(CH5VSCH7 | UNIPOLAR); // VDDD +// SPI_DMA_Buffer_In[c++] = readAdc0(CH5VSGND | UNIPOLAR); + // spi1_writeWord(CH5VSCH7 | UNIPOLAR); // VDDD spi1_writeWord(CH5VSGND | UNIPOLAR); // VDDD vs AGND SPI_DMA_Buffer_In[c++] = VDDACUR; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); -- 2.43.0