ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
29 сентября
237963 Топик полностью
A_F (09.02.2011 16:56, просмотров: 1) ответил mazur на Не раз читал, что не следует вызывать подпрограммы в прерываниях. Ну а если требуется? Не писать же один и тот же код два раза, один как подпрограмма, второй как обработчик прерывания... Подумываю о варианте с подстановкой байт-кода в прерывание.
Насколько я помню такое невозможно сделать в компиляторах, которые не знают что такое стек. Это было актуально для микроконтроллеров PIC16/18(компилятор HI-TECH) в которых стек возврата сделан аппаратно и локальные переменные не располагались на нем. Никаких особых ограничений на этот счет в других компиляторах нет, если не забывать о понятии thread safe функции которое актуально как для вызова функций из прерывания и основной программы так и для вызова функции из разных потоков при использовании операционной системы. Основное правило при этом: не использовать в функции глобальных(статических) объектов, которые могут быть изменены из разных мест, либо запрещать прерывания внутри таких функций для обеспечения ароматности работы с такими объектами. Никаких дополнительных накладных расходов при вызове функции из прерывания нет.