Processing:Библиотеки/Hardware I/O/Класс GPIO/noInterrupts()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску


Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



noInterrupts()[1]

Класс

GPIO

Обозначение

noInterrupts()

Описание

Отключает возможность запуска прерываний.

Функции noInterrupts() и interrupts() можно использовать в тандеме – чтобы скетч, выполняя какую-либо задачу, не запускал больше никаких прерываний.

Поскольку пользовательская функция связана с контактом, который проверяется на прерывание, noInterrupts() автоматически блокирует все остальные прерывания, вызываемые на этом контакте. Прерывания на других контактах, впрочем, по-прежнему будут запускаться. Если вы хотите предотвратить и это, поставьте noInterrupts() в самом начале функции обратного вызова, а interrupts() – в ее конце (как показано в скетче-примере ниже).

Синтаксис

.noInterrupts()

Параметры

void

Возвращаемое значение

void

Пример

import processing.io.*;
color bgcolor = 0;

void setup() {
  GPIO.pinMode(4, GPIO.INPUT);
  GPIO.pinMode(5, GPIO.INPUT);
  GPIO.attachInterrupt(4, this, "pinEvent", GPIO.RISING);
  GPIO.attachInterrupt(5, this, "pinEvent", GPIO.RISING);
}

void draw() {
  background(bgcolor);
}

void pinEvent(int pin) {
  GPIO.noInterrupts();
  // с этого момента нас не побеспокоит ни одно прерывание:
  println("Received interrupt on pin" + pin);
      //  "Получено прерывание на контакте: "
  if (bgcolor == 0) {
    bgcolor = color(255);
  } else {
    bgcolor = color(0);
  }
  GPIO.interrupts();
}

См.также

Внешние ссылки