Во многих учебниках встречаю подобные примеры для ATtiny2313:
Код: Выделить всё
.cseg
.org 0
rjmp INIT ;обработчик Reset
... ;прочие обработчики
INIT:
... ;всякий код
LOOP:
rjmp LOOP
Код: Выделить всё
.cseg
.org 0
rjmp INIT ;обработчик Reset
... ;прочие обработчики
INIT:
... ;всякий код
LOOP:
rjmp LOOP
С какого перепуга?цикл LOOP будет запущен уже в обработчике прерывания
Да логика там тупая как паровоз: стоит бит "i" в SREG - все прерывания работают, нет так нет. Бит автоматом снимается при срабатывании прерывания (аппаратно) и устанавливается при выходе из обработчика (например reti = sei + ret)а из прерывания в прерывание прыгать не будет вроде.
При одновременном возникновении событий на прерывание, первым будет обрабатываться то, у которого меньше адрес вектора.The lowest addresses in the program memory space are by default defined as the Reset and
Interrupt Vectors. The complete list of vectors is shown in “Interrupts” on page 44. The list also
determines the priority levels of the different interrupts. The lower the address the higher is the
priority level.
При срабатывании прерывания I-флаг будет сброшен (в ноль). При выходе из прерывания I-флаг будет установлен (в единицу). Если в обработчике прерывания не будут разрешены вложенные прерывания, то прерывания с меньшим приоритетом будут обрабатываться после выхода из обработчика.When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are dis-
abled. The user software can write logic one to the I-bit to enable nested interrupts. All enabled
interrupts can then interrupt the current interrupt routine. The I-bit is automatically set when a
Return from Interrupt instruction – RETI – is executed.
Точнее адрес вектора, если смотреть по вашей цитате.первым будет обрабатываться то, у которого меньше адрес обработчика.