Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Wake up from Power-down Sleep mode
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
CD_Eater
Возник вопрос про то, какие прерывания могут пробудить АВРку из самого глубокой спячки.
Вопрос одинаково применим ко всем АВРкам (для иллюстрации посмотрите любой ДШ).

С одной стороны, в даташите явно перечислены эти прерывания. В частности, эти прерывания могут пробуждать:
(1)INT0 low level interrupt
(2)Pin Change Interrupt

а это прерывание не может:
(3)INT0 triggering interrupt

С другой стороны, указывается, что Power-down режиме отключены ВСЕ КЛОКИ, поэтому сработать могут только асинхронно обрабатываемые прерывания.

Вот, пытаюсь понять, как увязать всё это в одну логическую картину.
В том же разделе, рядом приводится блок-схема обработки (2)Pin Change Interrupt (найдите эту блок-схему и убедитесь сами). Из неё ясно видно, что там ТРЕБУЕТСЯ КЛОК. Тогда как (2) может пробуждать из Power-down спячки?
Более того, чем принципиально (3) отличается от (2), их хардварное детектирование по сути абсолютно одинаково, почему же одно из них пробуждает, а другое нет?

P.S. Навероне, при проверке на живом МК всё окажется именно так, как написано в ДШ - (1),(2) пробуждают, (3) не пробуждает. Я хочу понять ПОЧЕМУ это именно так. Откуда берётся клок для детектирования (2) и почему (2) отличается от (3) ?
kd_Rash
При Power Down нужно когда спит, чтоб на прерывание шел активный уровень, тогда если подать на ногу низкий - он проснется. А так только нормально в этом плане - Idle, но ток при нем очень большой.

Удачи, Дмитрий.
CD_Eater
Наверное, я слишком неясно сформулировал вопрос. Попробую повторить, выделив основную мысль.

В Power-Down режиме все клоки отключены.
В ДШ есть схема обработки PinChangeInterrupt, из которой следует, что для её работы нужен клок.
Значит, PinChangeInterrupt не может пробудить МК из Power-down спячки.
Но пробуждает.
Как такое может быть ?
Abell
У AVR статическая архитектура, clock нужен только для записи состояния пина в регистр. В режиме Power-Down на clock присутствует постоянный логический уровень. Тактовый генератор в этом режиме не работает, соответственно и фиксации флага прерывания не происходит. Уровень на внешнем прерывании должен удерживаться достаточное для запуска тактового генератора время. Читайте datasheet внимательнее.
mse
Цитата(CD_Eater @ Feb 7 2007, 03:04) *
Наверное, я слишком неясно сформулировал вопрос. Попробую повторить, выделив основную мысль.

В Power-Down режиме все клоки отключены.
В ДШ есть схема обработки PinChangeInterrupt, из которой следует, что для её работы нужен клок.
Значит, PinChangeInterrupt не может пробудить МК из Power-down спячки.
Но пробуждает.
Как такое может быть ?

На картинке нарисовано время реакции на изменение. Ченч вырабатывается после "иск или", маскирования и объединения событий по порту. Для этого клок не нужен. Бо после тормоза на СЛК состояние ноги фиксируется ВСЁ РАВНО. ;О) А изменение проходит в обход. И на "иск или" выделяется.
CD_Eater
Цитата(mse @ Feb 7 2007, 15:13) *
Ченч вырабатывается после "иск или", маскирования и объединения событий по порту.
Тогда понятно. Просто не нарисовали ещё один отвод после элемента ИЛИ для логики спящего режима smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.