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

 
 
 
Reply to this topicStart new topic
> Power down mode и rising edge тип прерывания для Ext INT, срабатывает прерывание, будит проц, а не должно бы?
sbw
сообщение Oct 4 2010, 15:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 5-10-07
Из: Харьков, Украина
Пользователь №: 31 107



Проц atmega48PA вводится в Power Down режим:

SMCR = (2<<SM0); // power down
sei ();
sleep_enable ();
sleep_cpu (); // заснул
// ждет прерывания
sleep_disable(); // проснулся
Эта последовательность команд вызывается внутри прерывания по переполнению таймера 0.

Внешнее прерывание настроено так:

void ext_int_init (void) // инициализация внешнего прерывания
{
EICRA = (3<<ISC00); // The rising edge of INT0 generates an interrupt request.
EIMSK = (1<<INT0);
}

Прерывание (вне режима сна) работает правильно.

В пдф-е сказано, что в режиме power down внешние прерывания могут быть только типа level, поскольку входные буфера не тактируются. На входе INT0 у меня "0", и будится импульсами "1" (порядка 1-4мс).
Проверял, действительно ли в power down: насколько я понимаю, да, потому что таймер-счетчик стоит.

Где я ошибаюсь? Кто сталкивался, кто посоветует?
Понимаю, что вопрос может быть даже чисто теоретический, правильно было бы использовать Pin change int и не морочить никому голову, но все же хочется полного понимания процесса, потому что ошибка может закрасться совсем в другом месте.
Go to the top of the page
 
+Quote Post

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

 


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


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