Обсуждаем контроллеры компании Atmel.
Ответить

Как разбудить 328P с помощью RTC и внешнего прерывания.

Ср июл 04, 2018 14:00:04

Всем привет! Стоит задача разбудить Atmega328P из power down с помощью часов реального времени (в момент срабатывания будильника нога INTA/INTB переходит в низкое состояние) с использованием внешних прерываний. Загвоздка состоит в том, что INT0 и 1 заняты кнопками, которые тоже будят микру по необходимости. Возможно ли пробуждение из сна от PCINT.. или только INT0, 1?

Если нет, я так понимаю, кнопки нужно вешать на один INT через диоды, а другой INT освобождать для RTC. По аналогии со схемой http://avrproject.ru/more_int/132.png

Re: Как разбудить 328P с помощью RTC и внешнего прерывания.

Пт июл 06, 2018 04:44:18

Вообще--то у 328-й Меги, кроме INT0 и INT1 еще есть и штук 20 PCINTnn (Pin Change INTerrupt), т.е. любой пин GPIO может быть использован для прерывания по изменению его состояния. И эти самые PCINT в ДШ заявлены, как средство пробуждения из Power Down. Я, правда, еще не вникал в использование этих самых PCINT, но в ДШ, вроде-бы, все описано довольно понятно.

Re: Как разбудить 328P с помощью RTC и внешнего прерывания.

Пт июл 06, 2018 12:18:05

Да, но поиск в интернете показал, что заявления по такому способу противоречивы, кто-то уверяет, что можно будить, кто-то нет. Мол, это не для глубокого сна. У меня пока не получается разбудить через PCINT. Вот и хочу понять это я что-то делаю неправильно или это просто невозможно при данном режиме сна.

Re: Как разбудить 328P с помощью RTC и внешнего прерывания.

Пт июл 06, 2018 12:27:35

timklass писал(а):Да, но
никаких но, в даташите (раздел 14.6) сказано без всяких но:
Изображение
Вложения
Screenshot 2018-07-06 13.31.47.png
(27.84 KiB) Скачиваний: 648

Re: Как разбудить 328P с помощью RTC и внешнего прерывания.

Пт июл 06, 2018 12:31:12

заявления по такому способу противоречивы, кто-то уверяет, что можно будить, кто-то нет.
Даташит на эту тему гласит однозначно: можно. Таблица 14-1 на стр. 62, там в секции Wake-up Sources прерывания INT и PCINT прописаны в одной колонке.

Вот и хочу понять это я что-то делаю неправильно или это просто невозможно при данном режиме сна.
Для отладки смени Sleep Mode на Idle и посмотри, разбудит, или нет. В Idle работают все источники побудки, так, что...

Re: Как разбудить 328P с помощью RTC и внешнего прерывания.

Пт июл 06, 2018 13:04:22

Все заработало! Это моя невнимательность, в обработчике прерывания выбрал не тот вектор (( Благодарю за помощь и советы! :))
Ответить