File source

#include "adc.h"
#include <fitkitlib>

/* read ADC on given channel (average of 4 samples)*/
unsigned int readADC(char ch){
  P6DIR &= ~( 1 << ch);
  ADC12CTL0 = ADC12ON | SHT0_15 | MSH | REFON | REF2_5V;
  ADC12CTL1 = ADC12SSEL_2 | ADC12DIV_2 | CSTARTADD_0 | CONSEQ_1 | SHP;  
  
  // ref VSS to VCC, channel x, end of sequence
  ADC12MCTL0 = SREF_0 | ch;             
  ADC12MCTL1 = SREF_0 | ch;             
  ADC12MCTL2 = SREF_0 | ch;             
  ADC12MCTL3 = SREF_0 | ch | EOS;             

  ADC12CTL0 |= ENC;                              // povoleni prevodu
  ADC12CTL0 |= ADC12SC;                          // sample & convert
  while (ADC12CTL0 & ADC12SC);                   // cekani na prevod  
  ADC12CTL0 &= ~ENC;      
  unsigned long result = ADC12MEM0;
  result += ADC12MEM1;
  result += ADC12MEM2;
  result += ADC12MEM3;
  result = result / 4;
  return result;       
}