#include <avr/interrupt.h>
#include "timer.h"
/*
 * timer.c
 *
 * Created: 13.04.2023 14:13:50
 *  Author: mrnek
 */ 

static unsigned long millis = 0;

void setup_timer() {
	TCCR1B |= (1 << WGM12); // настраиваем режим CTC (Clear Timer on Compare Match)
	OCR1A = 250; // задаем значение, при котором будет срабатывать прерывание (в данном случае 15999, так как Atmega328p работает на частоте 16 МГц и нужно получить прерывание раз в 1 мс)
	TIMSK1 |= (1 << OCIE1A); // включаем прерывание по совпадению со значением регистра OCR1A
	sei(); // разрешаем глобальные прерывания
	TCCR1B |= (1 << CS11) | (1 << CS10); // запускаем таймер с предделителем 64 (16000000/64=250000)
}

unsigned long get_millis() {
	return millis;	
}

ISR(TIMER1_COMPA_vect) {
	++millis;
}