ESP8266 Прерывания (Interrupt)

Прерывания могут быть присоединены к любому контактакту GPIO , за исключением GPIO 16.
Прерывания поддерживаются через следующие функции:
attachInterrupt (int, function, mode) – задает функцию обработки внешнего прерывания, то есть функцию function, которая будет вызвана по внешнему прерыванию.
int – номер прерывания определяемый функцией digitalPinToInterrupt (interruptPin) где interruptPin: номер вывода GPIO который будет использоваться для прерывания основной программы микроконтроллера (например void loop() ) .
function: функция, которую необходимо вызвать при возникновении прерывания;
эта функция должна быть без параметров и не возвращать никаких значений. Такую функцию иногда называют обработчиком прерывания.
mode: определяет условие, при котором должно срабатывать прерывание. Может принимать одно из трез предопределенных значений:
CHANGE – прерывание будет срабатывать всякий раз, когда меняется состояние вывода
RISING – прерывание сработает, когда состояние вывода изменится с низкого уровня на высокий
FALLING – прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий.
*Внутри  функции function не будет работать функция delay () и не будет увеличиваться значение от функции millis (). Кроме того, последовательные данные, посылаемые во время работы этой функции, могут быть утеряны. Также все переменные, которые будут модифицированы внутри этой функции, нужно объявлять как volatile. Более подробно об этом читайте ниже — в разделе об ISR
detachInterrupt (pin) – Запрещает заданное прерывание.
– pin: номер вывода, соответствующее прерывание которого необходимо запретить

const byte interruptPin = D7;
volatile byte state = LOW;
void setup() {
pinMode (LED_BUILTINOUTPUT);
pinMode (interruptPin, INPUT_PULLUP);
//–Задаем  функцию blink , которая будет вызвана по внешнему прерыванию.
attachInterrupt ( digitalPinToInterrupt(interruptPin), blinkCHANGE);
}
void loop() {
digitalWrite (LED_BUILTIN, state);
}
void blink () {
state = !state;
}

Более подробно тут

Комментарии

Популярные сообщения из этого блога

Motor Shield L293D + Arduino

Перенос Armbian на SSD

Радиореле 220В 433МГц c кодировкой сигнала eV1527