]> www.fi.muni.cz Git - heater.git/blobdiff - firmware/main.c
Rudimentary firmware infrastructure.
[heater.git] / firmware / main.c
diff --git a/firmware/main.c b/firmware/main.c
new file mode 100644 (file)
index 0000000..30f904b
--- /dev/null
@@ -0,0 +1,33 @@
+#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);
+       }
+}