Таймер, который считает при отключении всех прерываний
Создал простой класс таймера, который засекает время и говорит, что время вышло, если его спросить об этом. Тики этого таймера увеличиваются в прерывании, которое происходит 1 раз в 1 мс. Но вот незадача, если необходимо на время отключить все прерывания, то и таймер перестаёт считать на это самое время. Есть ли выход из подобной ситуации. Может кто знает хитрый таймер, тики которого всегда проходят, даже при выключении всех прерываний?
uint64_t millis()
{
return timestamp;
}
ISR(TIMER0_OVF_vect)
{
TCNT0 = TCNT0_1MS + TCNT0;
timestamp++;
}
void Timer::Start(uint32_t time)
{
_nStartTime = millis();
_nTimeOut = _nStartTime + time;
}
void Timer::Stop()
{
_nStartTime = 0;
_nTimeOut = 0;
}
bool Timer::IsElapsed()
{
return millis() >= _nTimeOut;
}