28 lines
682 B
C
28 lines
682 B
C
#include <avr/io.h>
|
||
#include <avr/interrupt.h>
|
||
|
||
static unsigned long millis = 0;
|
||
|
||
void setup_timer()
|
||
{
|
||
// Включаем режим СТС
|
||
TCCR0A = (1 << WGM01);
|
||
// Устанавливаем счетчик с предделителем 64
|
||
TCCR0B = (1 << CS01) | (1 << CS00);
|
||
// Устанавливаем значение сравнения для 1 мс
|
||
OCR0A = 250;
|
||
// Разрешаем прерывание по совпадению
|
||
TIMSK0 = (1 << OCIE0A);
|
||
// Разрешаем все прерывания
|
||
sei();
|
||
}
|
||
|
||
unsigned long get_millis()
|
||
{
|
||
return millis;
|
||
}
|
||
|
||
ISR(TIMER0_COMPA_vect)
|
||
{
|
||
++millis;
|
||
} |