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

 
 
 
Reply to this topicStart new topic
> Несохранение стека при прерывании.
_artem_
сообщение Apr 18 2007, 00:31
Сообщение #1


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Есть ли в iar keyword при использования которого перед именем функции компайлер не сохранял регистры при вызове данной функции


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 18 2007, 00:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



И каков будет результат???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 18 2007, 00:48
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_artem_ @ Apr 17 2007, 23:31) *
Есть ли в iar keyword который указывал на несохранение регистров в стеке для функции обработчика прерываний ?
А хелп почитать? __Ctask, __task, __raw, в зависимости от версии.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_artem_
сообщение Apr 18 2007, 01:41
Сообщение #4


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



ОК, ок не бейте ) Лень знаете ли. Просто надо написать одну очень быструю программу работающую только в прерываниях . Подумалось что можно без ассемблера но не получается .

2 Сергей Борщ
версия последняя (обшедоступная), а __task вместе с __interrupt не кушает.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 18 2007, 02:00
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_artem_
сообщение Apr 18 2007, 02:20
Сообщение #6


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



такой подход тоже напрашивается, просто интересно было бы без ассемблера .
Ну вот, еще один повод к религиозной войне.)


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 18 2007, 09:00
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_artem_
сообщение Apr 18 2007, 11:54
Сообщение #8


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Спасибо всем. Попробовал __raw , все нормально , стек не сохраняет. __raw в описании ни ewb ни компилятора не нашел. Любопытно бы узнать откуда описание __raw можно посмотреть?

Вопрос отпал - нашел источник .


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 18 2007, 18:15
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(dxp @ Apr 18 2007, 08:00) *
Немного не так.
"Время сейчас такое - никому верить нельзя. Даже себе. Мне - можно." (с)Мюллер, "17 мгновений весны" smile.gif
Цитата
__task, __raw


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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