Прерывание, запускаемое при RISING, фактически запускается при CHANGE - PullRequest
0 голосов
/ 28 мая 2020

Использование Arduino IDE с Wemos D1 mini и установка прерывания следующим образом:

const int stop1Pin = 14;
void ICACHE_RAM_ATTR stopMotor();

void setup() {

  pinMode(stop1Pin, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(stop1Pin), stopMotor, RISING);

}

void stopMotor() {
  //DO SOMETHING
}

On stop1Pin У меня нормально закрытая кнопка подключена к GND. Запуск программы в первый раз stopMotor не вызывается должным образом, поскольку stop1Pin заземлен. Затем я нажимаю sh кнопку, разрывающую соединение с GND, и, поскольку stop1Pin внутренне подтягивается, запускается условие RAISING и выполняется stopMotor. НО, как только я отпущу кнопку, возвращаясь к GND (ПАДЕНИЕ), снова вызывается stopMotor.

Я не думаю, что у меня проблема с оборудованием, так как я пробовал Убедившись, что уровни напряжения правильные, я пробовал с обычными аппаратными подтягиваниями, а не с мягкими подтягиваниями из примера и события, отключающего кнопку в аппаратном и программном обеспечении, те же результаты. Он ведет себя так, как будто условие - ИЗМЕНЕНИЕ, а не ПОДНЯТИЕ. Кстати, использование FALLING имеет тот же эффект.

...