Выход из прерывания в заданое место
- Войдите на сайт для отправки комментариев
Ср, 20/03/2013 - 15:05
Возможно ли выйдти из функции внешнего прерывания , вызванного нажатим кнопки, в конкретную точку програмы (ну или хотябы в начало цикла)?
Нужно некое подобие оператора goto, к сожалению он в функции прерывания не работает.
В рамках вайринга - вряд ли.
В рамках AVRGCC в коде прерывания можно ассемблером достать из стека адрес возврата и положить туда новый.
Но граблей при этом вагон, лучше имхо внутри прерывания глобальный флаг поставить, а по циклу раскидать его проверок и goto/continue.
Можно если только в стеке подменить значение индексного регистра
Лучше найти другое решение, поскольку граблей будет предостаточно, даже если найдете вариант. Согласен с tsostik
Уж лучше разрешить прерывания, вызвать внешнюю функцию (куда Вы хотите выйти по goto, т.е. оформить это место как функцию), а потом выйти из прерывания. Стек немного может пожрать (что можно в принципе посчитать) из-за вложенных прерываний, но зато всё будет культурней.