Как я понимаю: Пользовательский код в ардуино должен быть описан внутри loop(), которая платформой вызывается итеративно, в супер-цикле.
А пользовательский обработчик прерывания handleInterrupt(), регистрируемый вызовом attachInterrupt(..., handleInterrupt, ...) - он в каком контексте будет вызван?
В отдельном контексте аппаратного ISR (как обычное прерывание на микроконтроллере)?
Или он будет вызван в контексте супер-цикла, в котором итеративно выполняется loop()?
Погуглив, нашёл следующую инфу, что среда исполнения Ардуино реализована в виде си-шного:
Код: Выделить всё
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}handleInterrupt() зарегистрированная attachInterrupt() будет также вызвана (последовательно рядом с serialEventRun())?
Или она будет вызвана непосредственно из контекста аппаратного ISR?
