реклама на сайте
подробности

 
 
> IAR, сохранение контекста
viael
сообщение Sep 22 2006, 16:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979



Народ ну кто знает как запретить компилятору сохранять контекст(регисры) при входе в прерывание.
Я уже задавал такой вопрос в основном форуме по AVR на что получил единсвенный ответ:
Код
__raw __interrupt void my_interrupt_function(void)
{
     ...
}


Оказалось что IAR(4.20) ни слухом ни духом не знает о идентификаторе __raw.Перешерстил мануал по компилятору тоже ни одного упоминания.

Самое близкое что нашел по смыслу(это я если я правильно перевел) это идентификатор __task,
но при совмесном использовании с __interrupt компилятор выдает ошибку.Короче мне нужен аналог #pragma savereg- в CodeVision.

И еще по поводу стеков, хотя вопрос неоднократно поднимался: можно ли к.л. образом заставить компилятор использовать под стек (RSTACK) всю доступную(неиспользованную) память, или в любом случае это ручками делается
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Sep 23 2006, 09:29
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(viael @ Sep 22 2006, 19:43) *
Оказалось что IAR(4.20) ни слухом ни духом не знает о идентификаторе __raw.Перешерстил мануал по компилятору тоже ни одного упоминания.

Мануал переписывается только при большом количестве отличий от предыдущей версии.
В данном случае были выпущены дополнения к мануалу, которые лежат в папке avr\doc установленного продукта.
О ключевом слове __raw упоминается в файлах iccavr.htm и manuals.htm.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 23 2006, 11:16
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(IgorKossak @ Sep 23 2006, 13:29) *
Цитата(viael @ Sep 22 2006, 19:43) *

Оказалось что IAR(4.20) ни слухом ни духом не знает о идентификаторе __raw.Перешерстил мануал по компилятору тоже ни одного упоминания.

Мануал переписывается только при большом количестве отличий от предыдущей версии.
В данном случае были выпущены дополнения к мануалу, которые лежат в папке avr\doc установленного продукта.
О ключевом слове __raw упоминается в файлах iccavr.htm и manuals.htm.

Упоминается, но там ссылка на стр.203 в EWAVR_CompilerReference.pdf ,
а в этом файле ключевое слово __raw не упоминается smile.gif
Более того, в IDE __raw не выделяется цветом как другие ключевые слова.

НО, на самом деле __raw работает!
viael
попробуйте вот так:
Код
#pragma vector=TIMER0_OVF_vect
__raw __interrupt void TC0_OVF(void)
{
...............
}

и будет Вам счасьте smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016