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

 
 
> Как правильно выйти из "спящего режима"
Jagupop
сообщение Jul 2 2007, 21:17
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 15-05-07
Пользователь №: 27 727



Махаюсь со своим первым проектом - возникает уйма вопросов, большинство из которых решается не без помощи настоящего форума.
Есть задача. ATTINY2313 "спит". По приходу лог. "0" (хотя, схемотехнически несложно поменять и на "1") на INT0 проц должен проснуться и выполнять определенные функции. В дальнейшем, этот же вывод процессора должен уже будет для этого же сигнала использоваться как вход порта. Вот кусок программы:

sei();
set_sleep_mode (SLEEP_MODE_IDLE);
cli ();
....

Процессор, вроде как не просыпается... хотя не уверен. А как определить? Подскажите, что неправильно в исходнике?

Спасибо!!!

Сообщение отредактировал Jagupop - Jul 2 2007, 21:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Snaky
сообщение Jul 3 2007, 02:45
Сообщение #2


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(Jagupop @ Jul 3 2007, 04:17) *
sei();
set_sleep_mode (SLEEP_MODE_IDLE);
cli ();
....

Процессор, вроде как не просыпается... хотя не уверен. А как определить? Подскажите, что неправильно в исходнике?

Видимо WinAVR? Если так, то set_sleep_mode() выбирает режим "сна", но еще не загоняет процессор в сон. Делать надо так:
Код
  set_sleep_mode(SLEEP_MODE_IDLE);    // выбираем "тип сна"
  sleep_enable();    // разрешаем "засыпать"
  ...    // код до засыпания
  sleep_cpu();    // заснуть
  .... // код после просыпания


И еще. Когда прерывание выводит процессор из спящего режима, то прежде чем перейти к обработчику прерывания, процессор выполнит сначала следующую за командой SLEEP команду. Поэтому следующей командой не стоит сразу ставить CLI, если хотите обеспечить обработку прерывания, а лучше поставить NOP.


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 3 2007, 18:03
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Snaky @ Jul 3 2007, 05:45) *
а лучше поставить NOP.

Лучше ничего не ставить, а просто правильно построить программу:

Код
main()
{
   set_sleep_mode(xx)
   sei();

   for(;;)
   {
       do_smth();
       sleep();
   }

}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jagupop   Как правильно выйти из "спящего режима"   Jul 2 2007, 21:17
- - Jagupop   Цитатаmain() { set_sleep_mode(xx) sei(); ...   Jul 3 2007, 21:44
- - defunct   ЦитатаА можно "разжевать" построчно - чт...   Jul 3 2007, 22:01
|- - MSprut   Вообще даташиты рекомендуют выбирать и разрешать р...   Jul 5 2007, 13:38
|- - defunct   Цитата(MSprut @ Jul 5 2007, 16:38) Вообще...   Jul 5 2007, 22:38
|- - acex2   Цитата(defunct @ Jul 6 2007, 02:38) Вообщ...   Jul 6 2007, 12:13
- - Jagupop   Прям не знаю... GIMSK = 0b01000000; set_...   Jul 5 2007, 18:34
- - Jagupop   Ну вот полный... #include <avr/io.h> #inclu...   Jul 6 2007, 06:38
- - defunct   Jagupop Проэмулировал вашу программу в железе. Чип...   Jul 8 2007, 12:59
- - Jagupop   ЛЮДИ!!! ЧЕЛОВЕКИ!!! Помоги...   Jul 9 2007, 23:50
|- - defunct   Цитата(Jagupop @ Jul 10 2007, 02:50) Ну н...   Jul 10 2007, 10:03
- - Jagupop   defunct, я Вас пыталсявыловить в ICQ - все безрезу...   Jul 12 2007, 17:03
|- - defunct   Цитата(Jagupop @ Jul 12 2007, 20:03) defu...   Jul 12 2007, 20:22
- - Jagupop   С прерываниями разобрался - проц. по приходу сигна...   Jul 17 2007, 11:09
- - Pyku_He_oTTyda   ЦитатаПри появлении лог. 0 проц должен проснуться ...   Jul 17 2007, 11:34
- - Jagupop   Чуток не так... По falling edge проц выходит из сп...   Jul 19 2007, 12:26
- - Pyku_He_oTTyda   если так?ЦитатаПо falling edge проц выходит из спя...   Jul 19 2007, 12:43
- - Jagupop   ЦитатаЗалетаем в прерывание и анализируем наличие...   Jul 19 2007, 13:17
- - defunct   Цитата(Jagupop @ Jul 19 2007, 16:17) А ра...   Jul 19 2007, 15:08


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

 


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


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