kv_addr 0 28 августа, 2005 Опубликовано 28 августа, 2005 · Жалоба Вопрос по AVR, в частности, по AT90S2313. В регистре управления прерыванием MCUCR биты ISC01 и ISC00 отвечают за то, каким событием на входе INT0 вызывается прерывание, а именно: 00 - низким уровнем, 10 - переходом из 1 в 0, 11 - переходом из 0 в 1. Предположим, что в регистре биты установлены в 11. Если на INT0 вход поступает последовательность импульсов, то каждое новое прерывание происходит по фронту. А если нужно, чтобы первое прерывание произошло по фронту, а второе - по спаду, третье - снова по фронту, и т.д.? Могу ли я при обработке прерывания инвертировать бит ISC0 для получения необходимого результата? Правильно ли меня поймет контроллер? Чем может быть чреват такой трюк? Обязательно ли в этом случае перед сменой данных в MCUCR запрещать прерывание, а после модификации - возобновлять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amator 0 28 августа, 2005 Опубликовано 28 августа, 2005 · Жалоба Безусловно можешь. Если следовать правилам хорошего тона, то кроме запрещения прерываний перед последующим разрешением необходимо ещё очистиь флаг INTF записав в него 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 28 августа, 2005 Опубликовано 28 августа, 2005 · Жалоба Могу ли я при обработке прерывания инвертировать бит ISC0 для получения необходимого результата? Правильно ли меня поймет контроллер? Чем может быть чреват такой трюк? Обязательно ли в этом случае перед сменой данных в MCUCR запрещать прерывание, а после модификации - возобновлять? <{POST_SNAPBACK}> Можешь. Правильно. Ничем, надо только успеть до след. события. Нет, после прерывания, оно и так запрещено. Флаг сбрасывает, команда RETI.(так что в ручную не обязательно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 29 августа, 2005 Опубликовано 29 августа, 2005 · Жалоба Есть и минус - помехи. их надо учитывать при обработки. Можно расмотреть старт по фронту, а потом выборки делать и анализировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kalinka16 0 29 августа, 2005 Опубликовано 29 августа, 2005 · Жалоба Как вариант - использовать INT0 и INT1 (сконфигурировать один по фронту, другой по спаду) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 29 августа, 2005 Опубликовано 29 августа, 2005 · Жалоба Нефиг извращаться. Возьми Tiny2313, там можно прерывание по any change включить. Кроме того, 90S2313 все равно EOL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yung 0 29 августа, 2005 Опубликовано 29 августа, 2005 · Жалоба На 8-й Меге я так делал и для очистки совести флаг сбрасывал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Нефиг извращаться. Возьми Tiny2313, там можно прерывание по any change включить. Кроме того, 90S2313 все равно EOL. <{POST_SNAPBACK}> Не использовать"any change", в некоторой степени - защита от помех. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться