Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вмешаться в сохранение регистров
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Flasher
Прерывание по переполнению таймера- хочу загрузить константы в TCNT до сохранения контекста(довольно много регистров) - иначе приходиться делать коррекцию на время сохранения контекста.
vet
режим CTC таймера не подходит?
Flasher
Лучше вмешатьсяsmile.gif
KRS
а если просто поставить в начале свой ообработчик на асм, а потом сделать rjmp на С шный обработчик или вообще поставить их друг за другом с помощью указания сегментов.
Код
        COMMON  INTVEC:CODE:ROOT(1); Align at an even address
          ORG  ...
          RJMP  asm_handler


        RSEG   INTASMCODE:CODE:ROOT(1)
asm_handler:
           ......
       EXTERN c_handler
       REQUIRE c_handler


Код
#pragma location="INTCCODE"
void __monitor c_handler(void)
{
....

и разместить сегменты INTASMCODE, INTCCODE подряд - это сэкономит один jmp
rezident
В IAR для этого существуют директивы типа __raw и __task. См. в хелпе конкретной версии компилятора.
IgorKossak
Цитата(rezident @ Jun 9 2008, 11:29) *
См. в хелпе конкретной версии компилятора.

Только не pdf, а html, где описаны недокументированные ранее особенности.
rezident
Цитата(IgorKossak @ Jun 9 2008, 23:20) *
Только не pdf, а html, где описаны недокументированные ранее особенности.
Именно в pdf и все документировано уже года полтора как.
sKWO
Цитата(rezident @ Jun 9 2008, 23:01) *
Именно и все документировано уже года полтора как.

Не знаю как для АРМ и МСП, а в pdf для АВРов точно нету даже напоминания об этом __raw.
__task - это есть. Ключевое слово __raw и примеры его применения есть только в html, если быть точнее то в iccavr и manuals. Причём полная версия компилятора 3.10А матерится, а на 4.21А всё канает. Точно с какой версии __raw работает сказать не могу, извиняюсь за конкретику но это проверенно на компиляторе для АВР.
rezident
Цитата(sKWO @ Jun 10 2008, 01:47) *
Не знаю как для АРМ и МСП, а в pdf для АВРов точно нету даже напоминания об этом __raw.
__task - это есть. Ключевое слово __raw и примеры его применения есть только в html, если быть точнее то в iccavr и manuals. Причём полная версия компилятора 3.10А матерится, а на 4.21А всё канает. Точно с какой версии __raw работает сказать не могу, извиняюсь за конкретику но это проверенно на компиляторе для АВР.
Ну в IAR ARM такой опции вообще не может быть ввиду особенности архитектуры. А для MSP430 посмотрел состав IAR EW430 3.20A, файл EW430_CompilerReference.pdf датированный 17.06.2004. Там уже есть и __task и __raw. Так что я не вру нисколько laughing.gif В IAR AVR 4.21A (других версий под рукой нету у меня) действительно описана только __task cranky.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.