Пока не могу с этим согласиться..На самом деле вектора прерывания - это и есть адрес колбек функций.
Да, типа ДОС-овского системного 21h или там BIOS 10h или 09h (кажется, на 1-е аппаратное прерывание замаплен). Тут как, мне кажется, видение мира у нас одинаковое.Есть прерывания от устройств, а есть прерывания от программ.
Прерывания от программ - это тоже прерывания от железа (процессора или диспетчера памяти).
Раньше их просто называли функциями обработчиками прерываний, ну ок.Колбеком такие функции называются потому, что они будут вызваны не по ходу исполнения кода, как вызываются обычные функции, а когда-то позже, когда возникнет вызывающее их событие.
Картинка почти сложилась. Есть ли где дока по прерываниям ESP? Интересно глянуть какой номер прерывания с чем соотнесен, есть ли приоритеты. Я все еще подозреваю, что wifi модуль живет своей жизнью и висит на одном из прерываний + имеет доступ в отведенную ему область памяти (буфер под принятые пакеты). Типа принял пакет, положил данные и дернул прерывание, по аналогии с UART - мол вам письмо. А на прерывании уже сидит что-то со стороны Wiring.
Вот это смущает. Либо нет разных приоритетов у прерываний, либо (что вероятнее) прерывания на время выполнения колбэк функции запрещаются, типа CLI -> тело функции -> STI. Но это значит, что мы запрещаем все прерывания, в том числе и более приоритетные, что чревато пропуском важных системных событий. А, не, отбой. Увидел слово "должна". Но опять же. Если мы хотим отреагировать на изменение на пине и не хотим монитроить его в цикле - мы навешиваем нашу функцию обработки изменения состояния пина на одно из прерываний, которое соотнесено с этим событием. Делаем это двумя способами: либо в таблице векторов прописываем адрес нашей функции либо каким-то образом добавляем вызов нашей функции из штатной функции обработки прерывания. Ничего страшного, если процессор в это время переключится на выполнение более приоритетной задачи - он же потом обратно вернется в то же место откуда его прервали. Разве что мы словим мелкую задержку. Если мы не строим что-то реалтаймовое, где все события должны происходить с точностью до тика, то это не критично...колбэк функция должна выполняться полностью, без прерываний..