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

 
 
> Atmega8:Выход с прерывания по rjmp, с последующей корректировкой указателя стека и установкой флага глоб.прерывания (sei), слишком ли грубый ход ?
DmSk
сообщение Jan 26 2011, 09:43
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 24-07-09
Из: Барнаул
Пользователь №: 51 518



На данный момент существует самодельное устройство автозавода автомобиля по таймеру, управляющий контроллер ATMEGA8. Задумал добавить кнопку, что бы можно было заводить с кнопки.
Получается так: сел в машину, нажал кнопку, и авто завелось, при этом автомобиль мог до этого стоять на «программе прогрева», соответственно «программа прогрева» должна быть прекращена.
Появились небольшие вопросы при реализации задуманного в программе.
Программа написана на асме, весь текст приводить не буду , напишу «обычным языком» и коротко без деталей и ньансов.
Вопрос:
Слишком ли будет грубо переходит из прерывания в основную программу, установив указатель стека в начало и установив флаг гл. прерывания («sei») так как он при вызове прерывания сбрасывается?
Решил сделать так, потому что команды от кнопок будут обрабатываться мгновенно не дожидаясь выполнения подпрограмм(паузы и т.д.)

Существует ли альтернатива этому механизму ?

Вот алгоритм программы
______________________________
Иницируем таймер опроса кнопок
Разрешаем прерывания по IRQ1 для тахометра (считать импульсы, решать завелась или незавелась)
Стек в начало;

Основной цикл:

Проверка статуса кнопок:
Мигаем диодом, авто ждет команды
Rjmp Проверка статуса кнопок

// в основном цикле я разместил оба процесса, прогрев и заводим с кнопки
Прогрев:
Стек в начало;
«Ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16»
установим флаг гл.прерывания «sei»
Пауза 1 час
Rcall ЗавестиМашину
Пауза 5 минут
глушим
Rjmp Прогрев

ЗаводимСКнопки:
Стек в начало; установим флаг гл.прерывания;

//Проверка заведена ли машина
Если машина заведена то
rjmp Проверка статуса кнопок
Иначе rcall ЗавестиМашину
rjmp Проверка статуса кнопок
Rjmp ЗаводимСКнопки

Rjmp Основной цикл

ЗавестиМашину:
Запрещаем прерывание таймера опроса кнопок
Заводим включая зажигание и включая стартер по определенному алгоритму
Разрешаем прерывание таймера опроса кнопок
Ret

Прерывание таймера опроса кнопок:
// если нажали кнопку завести то сразу переходим на программу завести с кнопки
// тем самым команда ret не будет никогда выполнена
// мы заменим её в основной программе возвратом указателя стека и установкой флага
// глобального прерывания?!
Если нажата кнопку 1 (завести авто)
То rjmp ЗаводимСКнопки

Если нажата кнопку 2 (прогрев авто по таймеру)
То rjmp Прогрев

Ret

Сообщение отредактировал DmSk - Jan 26 2011, 09:45
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DmSk   Atmega8:Выход с прерывания по rjmp, с последующей корректировкой указателя стека и установкой флага глоб.прерывания (sei), слишком ли грубый ход ?   Jan 26 2011, 09:43
- - GDI   Вместо такого описания, лучше бы нарисовали алгори...   Jan 26 2011, 10:13
|- - DmSk   Цитата(GDI @ Jan 26 2011, 13:13) И что зн...   Jan 26 2011, 10:40
|- - GDI   Цитата(DmSk @ Jan 26 2011, 13:40) это нап...   Jan 26 2011, 14:12
|- - DmSk   Цитата(GDI @ Jan 26 2011, 17:12) Вот пото...   Jan 27 2011, 03:01
|- - GDI   Цитата(DmSk @ Jan 27 2011, 06:01) пустой ...   Jan 27 2011, 08:11
- - Maik-vs   А! обычная вещь - прерывание длиной в секунду....   Jan 26 2011, 10:45
|- - DmSk   Цитата(Maik-vs @ Jan 26 2011, 13:45)...   Jan 26 2011, 14:02
|- - zombi   Цитата(DmSk @ Jan 26 2011, 17:02) main: ...   Jan 27 2011, 08:50
||- - DmSk   Цитата(zombi @ Jan 27 2011, 11:50) 2: Вых...   Jan 27 2011, 11:14
||- - zombi   Цитата(DmSk @ Jan 27 2011, 14:14) если в ...   Jan 27 2011, 12:18
||- - DmSk   Цитата(zombi @ Jan 27 2011, 15:18) Ну тог...   Jan 27 2011, 14:36
||- - zombi   Цитата(DmSk @ Jan 27 2011, 17:28) дребезг...   Jan 27 2011, 14:42
|- - Maik-vs   Цитата(DmSk @ Jan 26 2011, 17:02) спасибо...   Jan 27 2011, 10:20
- - _Pasha   кнопки по прерыванию можно только в одном случае -...   Jan 26 2011, 12:36
- - ILYAUL   Цитатаесли нажалии кнопку "прогрев по таймеру...   Jan 27 2011, 18:21
|- - DmSk   Цитата(ILYAUL @ Jan 27 2011, 21:21) Конеч...   Jan 28 2011, 03:22
|- - ILYAUL   Цитата(DmSk @ Jan 28 2011, 06:22) Процесс...   Jan 30 2011, 15:11
- - GDI   Цитатастатус процесса Это хорошие слова, еще чуть-...   Jan 28 2011, 12:36


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

 


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


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