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

 
 
> Переход из прерывания
Георгий
сообщение Feb 20 2006, 12:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Как сделать переход к определенному месту программы из программы прерывания. Мне нужно из прерывания по таймеру, при достижении определенного значения счетчика Counter переходить в определенное место программы. На ассемблере решалось просто, искусственно восстанавливаю стек и делаю переход к метке. А В ИАР как это сделать?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Георгий
сообщение Feb 21 2006, 12:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Вся работа программы зависит от ответа устройства, опрос его может быть из разных мест, если после каждого вызова каждой функции проверять флаг, а потом делать многоуровневый откат к началу программы, это тоже не выход. Устройство может быть выдернуто в любой момент, и обнаружение ведется по прерыванию, это нормально. Но уходить надо в определенную точку из прерывания. Я не совсем еще понимаю логику работы ИАРа, но, наверно, как то можно подменить адрес возврата из прерывания на адрес этой точки. Может longjmp это и делает?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 21 2006, 13:19
Сообщение #3


Adept
******

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



Цитата(Георгий @ Feb 21 2006, 18:24) *
Вся работа программы зависит от ответа устройства, опрос его может быть из разных мест, если после каждого вызова каждой функции проверять флаг, а потом делать многоуровневый откат к началу программы, это тоже не выход. Устройство может быть выдернуто в любой момент, и обнаружение ведется по прерыванию, это нормально. Но уходить надо в определенную точку из прерывания.

Ну и зачем делать откат в начало? Пусть себе программа работает, если выдернули устройство, то программа переходит в один режим, если вставили, то в другой. Зачем что-то обнулять? Заведите переменную, обозначающую режим и проверяйте ее. Вот прикинье - вставили/вынули USB дивайс, винда перегрузилась - хорошо это? smile.gif

Цитата(Георгий @ Feb 21 2006, 18:24) *
Я не совсем еще понимаю логику работы ИАРа, но, наверно, как то можно подменить адрес возврата из прерывания на адрес этой точки. Может longjmp это и делает?

Логики IAR'а тут никакой нет - он действует в рамках Стандарта языков С/С++. longjmp действительно может реализовать такое, но все-таки, имхо, это не путь. Имхо, чего-то не того в дизайне проги. Вы бы чуть подробнее изложили преметную область, может чего и посоветовать удалось бы.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Георгий   Переход из прерывания   Feb 20 2006, 12:55
- - GxOST   это делается просто: в прерывании модифицируется ф...   Feb 20 2006, 13:08
- - dxp   Цитата(Георгий @ Feb 20 2006, 18:55) Как ...   Feb 20 2006, 13:14
- - Георгий   Цитатаэто делается просто: в прерывании модифициру...   Feb 20 2006, 13:21
|- - defunct   Цитата(Георгий @ Feb 20 2006, 15:21) где ...   Feb 20 2006, 14:44
- - Rst7   Могут помочь стандартные функции setjmp и longjmp....   Feb 20 2006, 13:55
- - Георгий   Дело в том, что после сброса устройства, программа...   Feb 21 2006, 11:27
|- - dxp   Цитата(Георгий @ Feb 21 2006, 17:27) Дело...   Feb 21 2006, 12:05
- - Aleks17   Не понимаю чем не устраивает вариант с volatile фл...   Feb 21 2006, 12:16
|- - Rst7   Цитата(Георгий @ Feb 21 2006, 14:24) Вся ...   Feb 21 2006, 13:15
- - Aleks17   Иными словами, Вам необходимо перейти к началу как...   Feb 21 2006, 12:36
- - Георгий   Не совсем так, так было бы просто. if Error может ...   Feb 21 2006, 13:12
|- - defunct   Цитата(Георгий @ Feb 21 2006, 15:12) Не с...   Feb 21 2006, 13:29
- - Георгий   Что то инет у меня глючит, начинаю отвечать , отру...   Feb 21 2006, 13:43
|- - defunct   Цитата(Георгий @ Feb 21 2006, 15:43) Функ...   Feb 21 2006, 13:47
- - Георгий   Поправляюсь - функция чтения естественно одна. Но ...   Feb 21 2006, 13:52
|- - defunct   Цитата(Георгий @ Feb 21 2006, 15:52) Попр...   Feb 21 2006, 14:05
- - Георгий   Нет, уж я лучше оставлю все как есть. Иначе из-за ...   Feb 21 2006, 14:11
|- - defunct   Цитата(Георгий @ Feb 21 2006, 16:11) Нет,...   Feb 21 2006, 14:19
- - _artem_   Внутри одной функции переход с одной позиции в дру...   Feb 21 2006, 14:26
- - Георгий   ЦитатаМенять пришлось бы только функцию чтения... ...   Feb 22 2006, 05:08


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

 


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


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