Site Language

Translate

Russian Albanian Arabic Armenian Azerbaijani Belarusian Bulgarian Catalan Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Serbian Slovak Slovenian Spanish Swedish Turkish Ukrainian Yiddish

CashBack Реальный возврат при покупках в интернете

 

Внешние прерывания

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передается обработчику прерывания, который выполняет работу по обработке события и возвращает управление в прерванный код. Arduino так же предоставляет свои функции для работы с прерываниями.

Их всего две:

 attachInterrupt();

 detachInterrupt().

Функция attachInterrupt

Задает функцию обработки внешнего прерывания, т. е. функцию, которая будет вызвана по внешнему прерыванию. Если до этого была задана другая функция, то назначается новая. Вычисляет значение указанного бита (бит 0 — это 1, бит 1 — это 2, бит 2 — это 4 и т. д.).

Синтаксис:

attachInterrupt(interrupt, function, mode);

Параметры:

 interrupt — номер прерывания:

• 0— на цифровом порту 2;

• 1— на цифровом порту 3;

• 2— на цифровом порту 21 (для Arduino Mega);

• 3— на цифровом порту 21 (для Arduino Mega);

• 4— на цифровом порту 21 (для Arduino Mega);

• 5— на цифровом порту 21 (для Arduino Mega);

 function — функция, вызываемая прерыванием (должна быть без параметров и не возвращать  значений);

 mode — задает режим обработки прерывания, допустимо использование следующих констанст:

LOW— вызывает прерывание, когда на порту LOW;

CHANGE— прерывание вызывается при смене значения на порту с LOW на HIGH и наоборот;

RISING— прерывание вызывается только при смене значения на порту с LOW на HIGH;

FALLING— прерывание вызывается только при смене значения на порту с HIGH на LOW.

Возвращаемого значения нет.

Внутри функции обработки прерывания не работает функция delay(), значения, возвращаемые функцией millis(), не изменяются. Возможна потеря данных, передаваемых по последовательному соединению (Serial data) в момент выполнения функции обработки прерывания. Переменные, изменяемые в функции, должны быть объявлены как volatile.

Функция detachInterrupt

Выключает обработку внешнего прерывания.

Синтаксис:

detachInterrupt(interrupt);

Параметр: interrupt — номер прерывания (0 или 1), для Arduino Mega еще 2, 3, 4

или 5.

Возвращаемого значения нет.

приведен пример использования прерывания 0 при наступлении события CHANGE на порту 2. При этом светодиод на выводе 13 Arduino при каждом прерывании меняет статус (горит либо гаснет).

int pin = 13;

volatile int state = LOW;

void setup()

{

pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE);

}

void loop()

{

digitalWrite(pin, state);

}

// функция обработки прерывания void blink()

{

state = !state;

}

 

Программирование, Типы данных int, Управляющие операторы, Унарные операторы, Логические операторы, Типы данных, Синтаксис, Операции с битами и байтами, Арифметические операторы, Внешние прерывания, Операторы сравнения, Унарные операторы, Унарные операторы, Дополнительные фунции ввода/вывода,  Логические операторы, Типы данных, Функции transfer(), Массивы, Константы, Цифровой ввод/вывод, Переменные, Преобразование типов данных, Функции digitalRead(), Цифровой ввод/вывод, Аналоговый ввод/вывод, Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Дополнительные фунции ввода/вывода, Генераторы случайных значений, Операции с битами и байтами, Внешние прерывания, Работа со временем, Математические функции, Математические функции, Тригонометрические функции, Тригонометрические, функции, Типы данных, Генераторы случайных значений, Функции digitalRead(), Типы данных int, Операции с битами и байтами, Функции digitalWrite(), Функции digitalRead(), Внешние прерыванияРабота со временем, Функции pinMode(), Функции attachInterrupt(), Функции analogReference(type),Синтаксис,  Арифметические операторы, Операторы сравнения, Функции setClockDivider(), Функции setDataMode(), Функции transfer(), Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Типы данных int, Программирование, Побитовый свдиг влево (<<), побитовый сдвиг вправо (>>), Управляющие операторы, Константы.