Я занимаюсь разработкой симулятора Atmega328P MCU, и у меня возникла небольшая проблема с таймером. Таймер в Atmega328P тикает один раз за 62,5 нс (на 16 МГц), и я должен имитировать это. Для решения проблемы я создал этот класс
class DLL_EXPORT Timer : public QThread
...
void Timer::run()
{
CCPU* cpu = dynamic_cast<CCPU*>(parent());
if (cpu == nullptr)
{
exit();
return;
}
QElapsedTimer timer_core;
timer_core.start();
while (1)
{
if (timer_core.nsecsElapsed() >= 62)
{
++cpu->GetIOPorts()[0x26];
timer_core.restart();
}
}
}
Кажется, что работает нормально, но есть небольшая проблема, связанная с процессом переключения задач в CPU. Как я могу отключить этот процесс для этого определенного класса?
А может, есть другой подход к решению?