31 lines
459 B
C
31 lines
459 B
C
|
#include "adc.h"
|
||
|
|
||
|
|
||
|
uint16_t readADC(uint8_t channel) {
|
||
|
uint16_t result;
|
||
|
|
||
|
//ADC aktiv, Prescaler 16
|
||
|
ADCSRA = (1 << ADEN) | (1 << ADPS2);
|
||
|
|
||
|
//ADC0 kein mutiplexing
|
||
|
ADMUX = channel;
|
||
|
|
||
|
// AVcc als Versorgungspannung
|
||
|
ADMUX |= (1 << REFS0);
|
||
|
|
||
|
//ADC starten mit Dummyreadout
|
||
|
ADCSRA |= (1 << ADSC);
|
||
|
while(ADCSRA & (1 << ADSC));
|
||
|
|
||
|
|
||
|
ADCSRA |= (1 << ADSC);
|
||
|
while(ADCSRA & (1 << ADSC));
|
||
|
result = ADCW;
|
||
|
|
||
|
//ADC aus
|
||
|
ADCSRA &= ~(1 << ADEN);
|
||
|
|
||
|
|
||
|
return result;
|
||
|
}
|