[an error occurred while processing this directive]
|
оптимизирует код соответствующим образом. Когда функции находятся в другом файле, компилятор ничего о них не "знает" и, стало быть, никакой оптимизации. При этом в функции обработки прерываний генерируется код для сохранения контекста и пошло-поехало... Элементарно может возникнуть переполнение стека или что-то вроде этого (для PIC).
Поэтому лучше избегать делать вызовы других функций из процедуры обработки прерываний и делать последние как можно короче.