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

 
 
> Выход после Sleep в режиме Idle
dinam
сообщение Sep 28 2005, 08:10
Сообщение #1


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Изучаю ATMEGA 128. И возник вопрос. Можно ли сделать чтобы переход был не по вектору прерывания, а на следующую команду после SLEEP?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BVU
сообщение Sep 28 2005, 08:22
Сообщение #2


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(dinam @ Sep 28 2005, 12:10)
Изучаю ATMEGA 128. И возник вопрос. Можно ли сделать чтобы переход был не по вектору прерывания, а на следующую команду после SLEEP?
*

А как Вы себе это представляете без прерывания? Выход из режима SLEEP может осуществляться либо по прерыванию, либо по WD, либо по внешнему RESET. Вот и выбирайте... Но в Вашем случае необходимо организовать какое нибудь внутреннее прерывание от таймера или внешнее по событию, а в теле прерырания - только возврат от туда. Вот Вам и будет старт со следующей команды.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
dinam
сообщение Sep 28 2005, 08:33
Сообщение #3


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Почему без прерывания? Я имел ввиду, как сделать прерывания, реализованные например как в PICах. Хочу минимальное время реакции на прерывание -> задаю чтобы перехода на вектор прервания не было, а программа продолжала выполняться дальше, начиная со следующей команы после Sleep. А с переходом по вектору прерывания у меня сейчас нормально работает. Но так теряется куча тактов драгоценного времени.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Sep 28 2005, 08:48
Сообщение #4


Местный
***

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



Цитата(dinam @ Sep 28 2005, 11:33)
Почему без прерывания? Я имел ввиду, как сделать прерывания,  реализованные например как в PICах. Хочу минимальное время реакции на прерывание -> задаю чтобы перехода на вектор прервания не было, а программа продолжала выполняться дальше, начиная со следующей команы после Sleep. А с переходом по вектору прерывания у меня сейчас нормально работает. Но так теряется куча тактов драгоценного времени.
*

Что-то совсем запутанно. У пиков вектор события прерывания один. Если на него не ходить то все обработчики прерывания автоматом игнорируются. У AVR для каждого прерывания свой адрес по которому стоит переход на обработчик прерывания. Если вы не хотите обрабатывать прерывание - запретите его.
Может я что не понял, подробнее плиз... wacko.gif

А если Вас смущает то что возврат занимает "драгоценного время", то поставьте вместо JMP "Обработчик прерывания" reti. А что касается быстродействия то 4 такта пика - 1 такт AVR.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:59
Рейтинг@Mail.ru


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