--- /dev/null
+#include "adc.h"
+
+#define BIT(n) (1<<(n))
+
+void adc_init()
+{
+ // TODO Adjust ADPS bits according to F_CPU
+ ADMUX = BIT(REFS0);
+ ADCSRA = BIT(ADEN) | BIT(ADIE) | BIT(ADPS2) | BIT(ADPS1) | BIT(ADPS0);
+ ADCSRB = 0;
+ DIDR0 = 0x3F;
+}
+
+void adc_read_async(uint8_t chan)
+{
+ ADMUX = (ADMUX&0xF0) | (chan&0x0F);
+ ADCSRA |= BIT(ADSC);
+}