Цитата(scifi @ Aug 20 2013, 13:40)

Описание процессора говорит, что за эти 12 тактов среди прочего он сохраняет в стеке следующие регистры:
- Program Counter (PC)
- Processor Status Register (xPSR)
- r0-r3
- r12
- Link Register (LR)
Если обработчик прерывания использует регистры r4-r11, то их тоже надо сохранить.
Если такты так критичны, пишите обработчик на ассемблере. Тогда можно не трогать регистры r4-r11, и необходимость в их сохранении отпадёт.
Все таки сохраняет/восстанавливает часть - это уж что то
> Если такты так критичны, пишите обработчик на ассемблере. Тогда можно не трогать регистры r4-r11, и необходимость в >их сохранении отпадёт
Очень критичны, применение ас-ма в обработчике прерывания очевидно
Да-а-а-а - возврат из прерывания командой "бранч по содержимому регистр" - это кончно надо додуматься,
хотя экономия одного кода команды - это много.
Спасибо!
Цитата(jcxz @ Aug 21 2013, 11:34)

...или возьмите процессор с ядром ARM7/9 - там есть переключение контекста (на один из теневых наборов регистров) и можно ничего не сохранять (особенно для FIQ)

В LR грузится не старый PC, а спец. значение (ссылка на вектор прерывания). Адрес возврата сохраняется на стеке как вам уже сказали.
В этом процессоре 8 UART чего в других, кроме Ренесанса и Атмела, нет, а мне вообще надо 16 UART.
Использую 2-й такой же процессор в качестве сопроцессора
По поводу LR - я ошибся
Спасибо!
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция