CD_Eater
Feb 6 2007, 06:27
Возник вопрос про то, какие прерывания могут пробудить АВРку из самого глубокой спячки.
Вопрос одинаково применим ко всем АВРкам (для иллюстрации посмотрите любой ДШ).
С одной стороны, в даташите явно перечислены эти прерывания. В частности, эти прерывания могут пробуждать:
(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
Feb 6 2007, 10:46
При Power Down нужно когда спит, чтоб на прерывание шел активный уровень, тогда если подать на ногу низкий - он проснется. А так только нормально в этом плане - Idle, но ток при нем очень большой.
Удачи, Дмитрий.
CD_Eater
Feb 7 2007, 03:04
Наверное, я слишком неясно сформулировал вопрос. Попробую повторить, выделив основную мысль.
В Power-Down режиме все клоки отключены.
В ДШ есть схема обработки PinChangeInterrupt, из которой следует, что для её работы нужен клок.
Значит, PinChangeInterrupt не может пробудить МК из Power-down спячки.
Но пробуждает.
Как такое может быть ?
У AVR статическая архитектура, clock нужен только для записи состояния пина в регистр. В режиме Power-Down на clock присутствует постоянный логический уровень. Тактовый генератор в этом режиме не работает, соответственно и фиксации флага прерывания не происходит. Уровень на внешнем прерывании должен удерживаться достаточное для запуска тактового генератора время. Читайте datasheet внимательнее.
Цитата(CD_Eater @ Feb 7 2007, 03:04)

Наверное, я слишком неясно сформулировал вопрос. Попробую повторить, выделив основную мысль.
В Power-Down режиме все клоки отключены.
В ДШ есть схема обработки PinChangeInterrupt, из которой следует, что для её работы нужен клок.
Значит, PinChangeInterrupt не может пробудить МК из Power-down спячки.
Но пробуждает.
Как такое может быть ?
На картинке нарисовано время реакции на изменение. Ченч вырабатывается после "иск или", маскирования и объединения событий по порту. Для этого клок не нужен. Бо после тормоза на СЛК состояние ноги фиксируется ВСЁ РАВНО. ;О) А изменение проходит в обход. И на "иск или" выделяется.
CD_Eater
Feb 7 2007, 16:31
Цитата(mse @ Feb 7 2007, 15:13)

Ченч вырабатывается после "иск или", маскирования и объединения событий по порту.
Тогда понятно. Просто не нарисовали ещё один отвод после элемента ИЛИ для логики спящего режима
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.