ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
1 июня
1521418 Топик полностью
il-2 (30.05.2025 09:28, просмотров: 71) ответил Codavr на Появилось странное но неутолимое желание принудить обработчик прерывания не сохранять и не восстанавливать регистры. С обычными функциями __task (или как раньше __C_task) решает эту задачу, а вот вкупе с __interrupt дает ошибку. Предложите как утолить мое желание средствами IAR AVR.
Делаешь вызов своей функции в ассемблере. Вот кусок кода из моего старого проекта: 

COMMON INTVEC:CODE:ROOT(1)

ORG TIMER3_CAPT_vect ;Syncronisation from 50Hz, falling edge

PUSH R16

RJMP Sync50Hz_Int


;Code segment CODE4K for interrupt procedures (place near INTVEC segment for RJMP destination)

RSEG CODE4K:CODE:NOROOT(1)

Sync50Hz_Int: ;Do PLL algorytm for averaging syncronization periods

IN R16,SREG

....

OUT SREG,R16

POP R16

RETI