Таймер, который считает при отключении всех прерываний

Создал простой класс таймера, который засекает время и говорит, что время вышло, если его спросить об этом. Тики этого таймера увеличиваются в прерывании, которое происходит 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;
}

Ответы (0 шт):