This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| ru:avr:external_interrupts [2013/08/14 19:26] – eduardtlmk | ru:avr:external_interrupts [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Внешние прерывания ====== | ||
| - | Внешние прерывания (англ. //external interrupt// | ||
| - | |||
| - | Для использования внешнего прерывания следует настроить вывод на обычный режим входа IO (можно использовать и в режиме выхода, | ||
| - | |||
| - | * Логический нуль(напряжение - 0V) | ||
| - | * Изменение логического значения | ||
| - | * Спадающий фронт - логическое изменение из единицы в нуль | ||
| - | * Нарастающий фронт – логическое изменение из нуля в единицу | ||
| - | |||
| - | При выборе логического нуля, прерывание создаётся до тех пор, пока значение вывода равно нулю. Работа основной программы в тот момент остановлена. | ||
| - | |||
| - | Исходя из принципов работы, | ||
| - | |||
| - | ~~PB~~ | ||
| - | |||
| - | <box 100% round # | ||
| - | |||
| - | Требуется заставить вывод ATmega128 номер 9 (вывод 7 шины Е) создать прерывание, | ||
| - | |||
| - | <code c> | ||
| - | #include < | ||
| - | |||
| - | // Программа внешнего прерывания | ||
| - | ISR(INT7_vect) | ||
| - | { | ||
| - | // Сделай что-нибудь | ||
| - | } | ||
| - | |||
| - | int main() | ||
| - | { | ||
| - | // Изменение вывода 7 шины Е входом путём обнуления бита 7 | ||
| - | DDRE &= ~(1 << PIN7); | ||
| - | |||
| - | // Установление pull-up резистора в вывод 7 шины Е от плавания | ||
| - | PORTE |= (1 << PIN7); | ||
| - | |||
| - | // Установление прерывания 7 в логическое изменение | ||
| - | // в регистре конфигурации внешних прерываний | ||
| - | EICRB = (1 << ISC70); | ||
| - | |||
| - | // Разрешение внешнего прерывания 7 | ||
| - | EIMSK |= (1 << INT7); | ||
| - | |||
| - | // Разрешение глобального прерывания | ||
| - | sei(); | ||
| - | |||
| - | // Бесконечный цикл программы | ||
| - | while (1) continue; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | |||
| - | В дополнение к прерываниям, | ||