Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ловить фронт и спад импульса на INT0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
kv_addr
Вопрос по AVR, в частности, по AT90S2313.

В регистре управления прерыванием MCUCR биты ISC01 и ISC00 отвечают за то, каким событием на входе INT0 вызывается прерывание, а именно: 00 - низким уровнем, 10 - переходом из 1 в 0, 11 - переходом из 0 в 1.

Предположим, что в регистре биты установлены в 11. Если на INT0 вход поступает последовательность импульсов, то каждое новое прерывание происходит по фронту. А если нужно, чтобы первое прерывание произошло по фронту, а второе - по спаду, третье - снова по фронту, и т.д.? Могу ли я при обработке прерывания инвертировать бит ISC0 для получения необходимого результата? Правильно ли меня поймет контроллер? Чем может быть чреват такой трюк? Обязательно ли в этом случае перед сменой данных в MCUCR запрещать прерывание, а после модификации - возобновлять?
amator
Безусловно можешь. Если следовать правилам хорошего тона, то кроме запрещения прерываний перед последующим разрешением необходимо ещё очистиь флаг INTF записав в него 1.
muravei
Цитата(kv_addr @ Aug 28 2005, 07:19)
Могу ли я при обработке прерывания инвертировать бит ISC0 для получения необходимого результата? Правильно ли меня поймет контроллер? Чем может быть чреват такой трюк? Обязательно ли в этом случае перед сменой данных в MCUCR запрещать прерывание, а после модификации - возобновлять?
*

Можешь.
Правильно.
Ничем, надо только успеть до след. события.
Нет, после прерывания, оно и так запрещено.

Флаг сбрасывает, команда RETI.(так что в ручную не обязательно)
arttab
Есть и минус - помехи. их надо учитывать при обработки. Можно расмотреть старт по фронту, а потом выборки делать и анализировать.
kalinka16
Как вариант - использовать INT0 и INT1 (сконфигурировать один по фронту, другой по спаду)
Rst7
Нефиг извращаться. Возьми Tiny2313, там можно прерывание по any change включить. Кроме того, 90S2313 все равно EOL.
yung
На 8-й Меге я так делал и для очистки совести флаг сбрасывал.
muravei
Цитата(Rst7 @ Aug 29 2005, 08:38)
Нефиг извращаться. Возьми Tiny2313, там можно прерывание по any change включить. Кроме того, 90S2313 все равно EOL.
*

Не использовать"any change", в некоторой степени - защита от помех.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.