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

 
 
> 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
IgorKossak
сообщение Sep 23 2006, 12:54
Сообщение #4


Шаман
******

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



Цитата(singlskv @ Sep 23 2006, 14:16) *
Упоминается, но там ссылка на стр.203 в EWAVR_CompilerReference.pdf ,
а в этом файле ключевое слово __raw не упоминается smile.gif
Более того, в IDE __raw не выделяется цветом как другие ключевые слова.

И как это народ английский переводит?
Вот цитата:
Цитата
Part2, Extended keywords, page 203
Add the following extended keywords:

__raw
Interrupt functions preserve the content of all used processor registers at function entrance and restore them at exit. However, for some very special applications, it can be desirable to prevent the registers from being saved at function entrance. This can be accomplished by the use of the extended keyword __raw, for example:

__raw __interrupt void my_interrupt_function()

__nested
Use the __nested keyword to implement a nested interrupt, in other words, an interrupt that may be called multiple times.
A nested interrupt service routine acts like a normal interrupt service routine except that it sets the interrupt enable bit before any registers are saved. Example:

__nested __interrupt void my_interrupt_function()

где говорится о том, что на стр. 204 говорится об Extended keywords (там как раз приведён список). Добавьте туда следующие extended keywords. Это же дополнение к мануалу, написанному намного раньше, чем вышла версия 4.20 продукта.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 23 2006, 13:09
Сообщение #5


дятел
*****

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



Цитата(IgorKossak @ Sep 23 2006, 16:54) *
И как это народ английский переводит?
Вот цитата:
Цитата
Part2, Extended keywords, page 203
Add the following extended keywords:

__raw
Interrupt functions preserve the content of all used processor registers at function entrance and restore
.....................

где говорится о том, что на стр. 204 говорится об Extended keywords (там как раз приведён список). Добавьте туда следующие extended keywords. Это же дополнение к мануалу, написанному намного раньше, чем вышла версия 4.20 продукта.


Ну дык я просто пропустил оглавление документа:
"User guide corrections and updates for IAR Embedded Workbench for Atmel AVR V4.20A" smile.gif
Go to the top of the page
 
+Quote Post



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

 


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


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