Я не уверен, что вы имеете в виду, что прерывания выполняются синхронно или асинхронно.
Когда происходит прерывание, основная программа останавливается, и процедура обработки прерываний (ISR) выполняется в режиме, когда новые прерывания не распознаются. После выхода из ISR основная программа будет продолжена там, где она была прервана.
Реальное параллельное выполнение на Arduino невозможно, потому что ATMega является одноядерным процессором и может выполнять одновременно только одно. Но он может быстро переключаться :-) Поэтому:
Мой основной цикл требует правильной работы функции millis (),
Пока вы не звоните millis()
внутри ISR это нормально, потому что ваш ISR
функция, которая просто добавляет число к счету
и, следовательно, очень быстро. Это не будет беспокоить millis()
достаточно, чтобы быть замеченным никем.