]> jspc29.x-matter.uni-frankfurt.de Git - mvd_firmware.git/commitdiff
function to read ADC value and average some samples
authorJan Michel <j.michel@gsi.de>
Wed, 15 Jan 2014 18:08:54 +0000 (19:08 +0100)
committerJan Michel <j.michel@gsi.de>
Wed, 15 Jan 2014 18:08:54 +0000 (19:08 +0100)
firmware/src/CB_functions.c

index 7aa19fc4bb3b63c76612ba7c9864aa7e739e0cbb..e7c5c9701f9f7481bb047cf8a2c3016f704a174a 100644 (file)
@@ -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();