sysprog-basic/include/adc.c

19 lines
417 B
C

#include "adc.h"
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
void adc_init() {
DDRC=0x0; // does not exist but is default?
ADCSRA = (1<<ADEN)|(1<<ADPS1)|(1<<ADPS2);
ADMUX = (1<<REFS0);
}
uint16_t adc_read(uint8_t channel) {
ADMUX &= 0xf0;
ADMUX |= (channel & 0x0f);
ADCSRA |= (1<<ADSC);
while((ADCSRA&(1<<ADIF))==0);
return ADCL + (ADCH << 8);
}