Files
terminal/timer.c
2023-05-26 22:35:59 +03:00

26 lines
761 B
C

#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;
}