19 lines
545 B
C
19 lines
545 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; // read from port c
|
|
ADCSRA = (1<<ADEN)|(1<<ADPS1)|(1<<ADPS2); // magic enable adc
|
|
ADMUX = (1<<REFS0); // magic enable multiplexer
|
|
}
|
|
uint16_t adc_read(uint8_t channel) {
|
|
ADMUX &= 0xf0; // max channel?
|
|
ADMUX |= (channel & 0x0f); // select channel, max 2^4?
|
|
ADCSRA |= (1<<ADSC); // interrupt enable
|
|
while((ADCSRA&(1<<ADIF))==0); // wait for something
|
|
return ADCL + (ADCH << 8); // read
|
|
}
|