Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Как в Си выйти из обработчика прерывания правильно, но чтоб I в SREG не устанавливался ? т.е. чтоб не было RETI а RET и естественно из стека все что нужно выковыривалось.
Отправлено
avr123.nm.ru
18 апреля 2007 г. 13:34
Составить ответ
|
Вернуться на конференцию
Ответы
Для ИАР АВР можно тупо(+)
—
Quasy
(18.04.2007 14:24:12
80.243.9.34
, 2184 байт)
только нужно очень молиться :о)) инлайновый асм в иаре - это очень хитрая штука :о)) почему - в теле. Вариантов 2 вижу: 1) передумать запрещать прерывания в ISR, заменить маскированием всех необходимых прерываний. 2) написать скрипт, который правит хекс на предмет замены RETI на RET
—
Радиолюбитель без лицензии
(18.04.2007 14:48:23
213.154.220.39
, 855 байт)
(+)
—
Quasy
(18.04.2007 15:18:19
80.243.9.34
, 160 байт)
Вот такой исходник получается(+)
—
Quasy
(18.04.2007 14:28:10
80.243.9.34
, 210 байт)
Спасибо. Не кошерно я делаю так. Компилю - смпотрю в листинге что она там перед RETI накалякал и тоже делаю как АСМ вставку в месте досрочного выхода но с RET.
—
avr123.nm.ru
(18.04.2007 14:52:10
83.167.116.97
, 205 байт)
Этоверный путь к ненужным приключениям. Кручение рук компилеру-признак неверно выбранного пути.
—
pau62
(18.04.2007 16:48:27
88.86.64.165
,
пустое
)
Директивы компилятора для того и делают, чтобы ими пользовались :) В нетривиальных случаях без директив не обойдёшься.
—
Юрий_СВ
(18.04.2007 17:09:47
91.124.107.88
,
пустое
)
Как вы можете сделать вставку - ума не приложу. рети идёт после пролога. любая ваша вставка будет до пролога. Не совсем понял что вы хотите, но без помощи компилятора здесь не обойтись
—
Юрий_СВ
(18.04.2007 16:10:51
91.124.220.114
,
пустое
)
ASM вставка что, в виде отдельной функции?
—
Quasy
(18.04.2007 15:07:37
80.243.9.34
,
пустое
)
Ответ: вызвать функцию из обработчика и в ней все выковарить
—
RUAL
(18.04.2007 13:38:47
217.20.82.57
,
пустое
)
А как ? можно примерчик ? и почему обязательно функцию вызывать ?
—
avr123.nm.ru
(18.04.2007 14:17:31
83.167.116.97
,
пустое
)
функцию писать на асме или делать вставки, как писал quasy выше, но реализации отличаются для разных компиляторов.
—
RUAL
(18.04.2007 14:49:20
217.20.82.57
,
пустое
)
Можно еще использовать Cишный механизм setjmp-longjmp (или свое SaveContext-RestoreContect). Будет выскакивать из прерывания в определенное место основной программы без RETI, по ICALL(в ИАРе так). + имеем код откуда выскочил
—
Quasy
(18.04.2007 15:37:5
80.243.9.34
,
пустое
)
По IJMP вернее :)
—
Quasy
(18.04.2007 15:55:13
80.243.9.34
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
прибавьте тройку к двум:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru