-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadc.c
More file actions
32 lines (24 loc) · 932 Bytes
/
Copy pathadc.c
File metadata and controls
32 lines (24 loc) · 932 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "adc.h"
void ADC_init(void)
{
ADMUX |= (1<<REFS0); //AVCC with external capacitor at AREF pin
ADMUX &= ~(1<<REFS1); //AVCC with external capacitor at AREF pin
ADCSRA &= ~(1<<ADPS0); //division factor of 64, ADC frequency = 8MHz/64 = 125kHz
ADCSRA |= (1<<ADPS1); //division factor of 64, ADC frequency = 8MHz/64 = 125kHz
ADCSRA |= (1<<ADPS2); //division factor of 64, ADC frequency = 8MHz/64 = 125kHz
ADCSRA |= (1<<ADEN); //enable ADC
}
uint16_t ADC_read(void)
{
ADMUX &= ~(1<<MUX0); //ADC0 channel selection
ADMUX &= ~(1<<MUX1); //ADC0 channel selection
ADMUX &= ~(1<<MUX2); //ADC0 channel selection
ADMUX &= ~(1<<MUX3); //ADC0 channel selection
ADMUX &= ~(1<<MUX4); //ADC0 channel selection
ADCSRA |= (1<<ADSC); //start conversion
ADMUX &= ~(1<<ADLAR); //ADLAR to right adjust the result
while(ADCSRA & (1<<ADSC)) //loops until ADSC is completed
{
}
return ADCW;
}