[SOLVED] ESP8266-01 Interrupts

Status
Not open for further replies.

sairfan1

Full Member level 1
Joined
Jun 12, 2010
Messages
97
Helped
4
Reputation
8
Reaction score
7
Trophy points
1,288
Location
Regina, Canada
Activity points
2,374
I'm trying to setup interrupt in arduino based environment using board ESP8266-01, based on help i found on different sites i wrote following code, but when i program my device it continuously shows interrupt message "Interrupt Ocurred: 1" on serial monitor, while same program running if i pull down the pin it shows "Interrupt Ocurred: 0" that means I'm using correct port and it state changes when i do it on hardware, I pulled up pin externally as well, I also tried same program on NodeMCU for different input pins

C:
#include <ESP8266WiFi.h>

const int InterruptPIN = 2;
volatile byte isrInterrupt_A = 0;

void ICACHE_RAM_ATTR IsrInterruptFunction();

void TestInterrupt();

void setup()
{
   Serial.begin(115200);

   pinMode(InterruptPIN, INPUT_PULLUP);
   attachInterrupt(digitalPinToInterrupt(InterruptPIN), IsrInterruptFunction, FALLING);
   Serial.print("Ready");
} 
void loop()
{
    if (isrInterrupt_A = 1) {
      TestInterrupt();
      delay(1000);
      }
    
}

void IsrInterruptFunction() {
  isrInterrupt_A = 1;
}

void TestInterrupt(){

  Serial.println("Interrupt Ocurred: ");
  Serial.println(digitalRead(InterruptPIN));
  isrInterrupt_A = 0;
}
 

i wrote following code, but when i program my device it continuously shows interrupt message "Interrupt Ocurred: 1" on serial monitor

Do you mean by continuously as happening occasionally, or precisely at a regular interval of 1s? The first scenario would make more sense, since being internal pullups, 'weak' logic inputs, it would be susceptible to the handling you are probably doing.
 

What i expect from code, that when i press button that connects pin 2 to GND it should trigger the interrupt, that is because i pulled up pin 2 internally (thought i also tried external pull up) and i set pin 2 to trigger interrupt on falling edge that means when i push button to ground it should trigger the interrupt and serial monitor should show "Interrupt Ocurred: 0"

But what happens when i turn on the ESP without any interaction serial monitor prints "Interrupt Ocurred: 1" after every 1 second, that means pin 2 is properly pulled up, and its not falling edge but still interrupt was triggered.
 

Ahh found the issue, while writing reply to you i realized i used assignment operator instead of equal so i change isrInterrupt_A = 1 to isrInterrupt_A == 1 and it works, thanks,
 
Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…