Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Несохранение стека при прерывании.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
_artem_
Есть ли в iar keyword при использования которого перед именем функции компайлер не сохранял регистры при вызове данной функции
zltigo
И каков будет результат???
Сергей Борщ
Цитата(_artem_ @ Apr 17 2007, 23:31) *
Есть ли в iar keyword который указывал на несохранение регистров в стеке для функции обработчика прерываний ?
А хелп почитать? __Ctask, __task, __raw, в зависимости от версии.
_artem_
ОК, ок не бейте ) Лень знаете ли. Просто надо написать одну очень быструю программу работающую только в прерываниях . Подумалось что можно без ассемблера но не получается .

2 Сергей Борщ
версия последняя (обшедоступная), а __task вместе с __interrupt не кушает.
Сергей Борщ
Цитата(_artem_ @ Apr 18 2007, 00:41) *
а __task вместе с __interrupt не кушает.
"Это не к нам, это в медпункт". В какой-то версии для MSP430 было такое дурацкое ограничение, потом убрали. Зачем добавили сюда - не знаю, а проверять сейчас лень. Сделайте обработчики обычными функциями, в конец асм-вставку reti, а на ассемблере оформите вектора.
_artem_
такой подход тоже напрашивается, просто интересно было бы без ассемблера .
Ну вот, еще один повод к религиозной войне.)
dxp
Цитата(Сергей Борщ @ Apr 18 2007, 06:00) *
"Это не к нам, это в медпункт". В какой-то версии для MSP430 было такое дурацкое ограничение, потом убрали. Зачем добавили сюда - не знаю, а проверять сейчас лень. Сделайте обработчики обычными функциями, в конец асм-вставку reti, а на ассемблере оформите вектора.

Немного не так. В прежних версиях __task __interrupt вполне рулили, но начиная с версий 2.21 это запретили. Зато в версиях 3.хх появилось __raw, которое, как раз, и выполняет то, что нужно в связке __raw __interrupt - в этом случае в ISR никакие регистры компилятором не сохраняются/не восстанавливаются - это полностью забота пользователя.
_artem_
Спасибо всем. Попробовал __raw , все нормально , стек не сохраняет. __raw в описании ни ewb ни компилятора не нашел. Любопытно бы узнать откуда описание __raw можно посмотреть?

Вопрос отпал - нашел источник .
Сергей Борщ
Цитата(dxp @ Apr 18 2007, 08:00) *
Немного не так.
"Время сейчас такое - никому верить нельзя. Даже себе. Мне - можно." (с)Мюллер, "17 мгновений весны" smile.gif
Цитата
__task, __raw
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.