--- /dev/null
+#include <avr/io.h>
+#include <avr/eeprom.h>
+#include <util/delay.h>
+
+static uint16_t adcval EEMEM;
+
+int main()
+{
+ DDRB |= _BV(PB2) | _BV(PB4);
+ TCCR1 = _BV(CS10); // clk/1 = 1 MHz
+ // TCCR1 = _BV(CS11) | _BV(CS13); // clk/512 = 2 kHz
+ GTCCR = _BV(COM1B1) | _BV(PWM1B);
+ OCR1C = 255;
+ OCR1B = 9;
+
+ ADCSRA = _BV(ADEN) | _BV(ADPS1) | _BV(ADPS0); // clk/8 = 125 kHz
+ ADMUX = _BV(REFS1) | _BV(MUX1) | _BV(MUX0); // 1.1V ref., PB3 single-ended
+ DIDR0 = _BV(ADC3D);
+ ADCSRA |= _BV(ADSC);
+ while (!(ADCSRA & _BV(ADIF)))
+ ;
+ ADCSRA |= _BV(ADSC);
+ while (!(ADCSRA & _BV(ADIF)))
+ ;
+ eeprom_write_word(&adcval, ADCW);
+
+ while(1) {
+ PORTB |= _BV(PB2);
+ _delay_ms(500);
+ PORTB &= ~_BV(PB2);
+ _delay_ms(1000);
+ }
+}