Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.02.2004, 05:27
|
|
vrt90 АЛЕКСАНДР
Гость
|
выход из прерывания
Написал программу,при отработке подпрограммы временной задержки (10 минут)происходит прерывание,подпрограмма обработки прерывания происходит корректно,но мне нужно вернутся из прерывания не к месту прерывания временной задержки,а к началу программы. Как это сделать
|
|
|
|
20.02.2004, 08:43
|
|
Xandr
Гость
|
что первое на ум пришло - в конце проседуры обработки прерывания запусти сторожевой таймер , по переполнению проц перезапустится... пока более изящного не пришло в ум.
|
|
|
|
20.02.2004, 21:29
|
|
Гость
|
Re: выход из прерывания
Сообщение от vrt90 АЛЕКСАНДР
|
Написал программу,при отработке подпрограммы временной задержки (10 минут)происходит прерывание,подпрограмма обработки прерывания происходит корректно,но мне нужно вернутся из прерывания не к месту прерывания временной задержки,а к началу программы. Как это сделать
|
Условие кривое.
Вы пытаетесь переделать готовую программу, а тут скорее всего проще написать новую. Пишите под конкретную задачу.
|
|
|
|
21.02.2004, 00:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
дык... в чем проблема? периодически проверяй какой-нить флажок, который будет устанавливаться в процедуре обработки прерывания... Как только появился - goto start (или как там у тебя). Мож не сразу сработает, но это как основной цикл сделаешь...
З.Ы. Лично вот я это обходил созданием двух отдельных процедур инициализации. Одна отрабатывала в начеале проги, а вторая в конце обработки прерывания - все установки начальные восстанавливала, и прога как бы заново все начинала.
З.З.Ы. Кстати, а как программно рестарт устроить? Типа, goto 0?
|
|
|
|
22.02.2004, 20:32
|
|
Гость
|
Сообщение от DK
|
З.З.Ы. Кстати, а как программно рестарт устроить? Типа, goto 0?
|
мне кажется, что для пик16 goto 0 это наиболее простой способ Но вообще, по идее, сброс от ВДТ будет корректней, т.к. все устанавливается как надо по умолчанию, и это будет именно сброс.
Кстати, в пик18 кажись даже есть перезагрузка от переполнения стека, и там такой финт (goto 0) может не пройти
|
|
|
|
05.10.2004, 12:18
|
|
AIBO
Гость
|
Изящней будет затолкнуть в верхушку стека адрес места, куда нужно перейти, а затем сделать RETI. Только не забудь сначала снять с верхушки два байта, занесенные при входе в прерывание, а то стек будет переполняться.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:44.
|
|