24 lines
768 B
C++
24 lines
768 B
C++
//
|
|
// Created by User on 018 18.05.20.
|
|
//
|
|
|
|
#include "ADC.h"
|
|
#define ADC_PORT_SELECTION_MASK ((1<<REFS0) | (1<<REFS1) | (1<<ADLAR))
|
|
|
|
void ADCIO::setup() {
|
|
ADCSRA |= (1<<ADEN); //включаем ADC
|
|
ADCSRA |= (1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);//выставляем делитель частоты 128
|
|
ADMUX |= (1<<REFS0); //используем внешнее опорное напряжение
|
|
}
|
|
|
|
uint16_t ADCIO::read(ADCPort port) {
|
|
ADMUX &= ADC_PORT_SELECTION_MASK;
|
|
ADMUX |= port;
|
|
uint16_t result = 0;
|
|
for(uint8_t i=0;i<ADC_READ_COUNT;i++){
|
|
ADCSRA |= (1<<ADSC);//включаем АЦП
|
|
while((ADCSRA & (1<<ADSC))); //ждём готовность
|
|
result+=(uint16_t)ADCW;
|
|
}
|
|
return result/ADC_READ_COUNT;
|
|
} |