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

 
 
> Выход из прерывания
valeraro
сообщение Jun 12 2013, 07:50
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 24-04-13
Из: Украина
Пользователь №: 76 610



Здравствуйте.
Возможно ли выйти из прерывания (к примеру по INT0) в определенное место основной программы (асм)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
Dmitry Dubrovenk...
сообщение Jun 12 2013, 08:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 3-11-06
Из: Санкт-Ленинград
Пользователь №: 21 949



Теоретически возможно, но "конструкция" может получится довольно сложная (всё зависит от конкретной программы).


--------------------
Obligatus servus.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jun 12 2013, 09:02
Сообщение #3


Знающий
****

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



Цитата(valeraro @ Jun 12 2013, 13:50) *
Возможно ли выйти из прерывания (к примеру по INT0) в определенное место основной программы (асм)?

Да, возможно.

Вам нужно только подменить адрес возврата, который располагается в стековом кадре.

Только обычно так не делается, ну, в смысле -- в нормальных программах. Если у Вас возникли такие мысли, то либо Вы что-то делаете не совсем так, либо преднамеренно хотите ввести людей (и себя в том числе!) в заблуждения и заставить совершать лишнюю работу.

В общих словах -- отлаживать такие проги будет довольно-таки сложновато. А если учесть, что через какое-то время (скажем, через год) Вам, возможно, придется вернуться к исходным кодам программы и что-там изменить, то сами представьте себе как это будет непросто понять -- "а что же я тут хотел изобразить?"

Рекомендую погуглить на тему разработки программ по принципу K.I.S.S. и понять, имеет ли вообще смысл извращаться или нет. И каких при этом следует ожидать осложнений.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
valeraro
сообщение Jun 12 2013, 12:08
Сообщение #4





Группа: Участник
Сообщений: 13
Регистрация: 24-04-13
Из: Украина
Пользователь №: 76 610



Спасибо, решил по другому.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jun 12 2013, 13:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(valeraro @ Jun 12 2013, 10:50) *
Возможно ли выйти из прерывания (к примеру по INT0) в определенное место основной программы (асм)?
Конечно можно.
А если это сигнал пропадания питания то даже нужно.
Я так делаю при выключении изделия для быстрого перехода в спячку.
В стек нужный адрес и выход.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jun 12 2013, 18:07
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Так хорошо работать в подпрограммах МЕНЮ , на каждом шаге подменяя адрес перехода для кнопок


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
V_G
сообщение Jun 12 2013, 23:53
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(zombi @ Jun 12 2013, 23:08) *
Я так делаю при выключении изделия для быстрого перехода в спячку.
В стек нужный адрес и выход.

Ну-ну.
А если прерывание пришло во время работы девайса в подпрограмме (или в туче вложенных), то стек кончится быстро-быстро. Даже если в нужной точке указатель стека всегда сбрасывается, может быть туча неучтенных нюансов.
Единственное, что я себе позволяю в подобных случаях - полный программный ресет. Причем еще до возврата, прямо в процедуре обработки прерывания сбоя питания
Go to the top of the page
 
+Quote Post
zombi
сообщение Jun 13 2013, 03:35
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(V_G @ Jun 13 2013, 02:53) *
Ну-ну... может быть туча неучтенных нюансов.

ТС задал конкретный вопрос можно или нет. Причём здесь нюансы?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 13 2013, 05:27
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(zombi @ Jun 13 2013, 07:35) *
ТС задал конкретный вопрос можно или нет. Причём здесь нюансы?


ТС хочет странного, возможно он не понимает последствий или не знает других путей sm.gif Ему и пытаются объяснить...
Go to the top of the page
 
+Quote Post
Dmitry Dubrovenk...
сообщение Jun 13 2013, 19:47
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 3-11-06
Из: Санкт-Ленинград
Пользователь №: 21 949



Цитата(Непомнящий Евгений @ Jun 13 2013, 09:27) *
ТС хочет странного, возможно он не понимает последствий или не знает других путей
ТС уже давно сказал, что он всё решил другим путём. biggrin.gif


--------------------
Obligatus servus.
Go to the top of the page
 
+Quote Post

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

 


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


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