This repository has been archived on 2025-01-09. You can view files and clone it, but cannot push or open issues or pull requests.
cooler-controller/Board/lib/utils/ADC.cpp

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;
}