Also I've never seen this mode of passing the mode value to the attachInterrupt function. It might not be properly be setting up the mode correctly.
static const int INTERRUPT_MODE = RISING;
Try setting the mode directly in the attach statement:
attachInterrupt(INTERRUPT_NUMBER, beep, RISING); // or the other defined mode names.
And finally:
void beep(){
tone(7, 440, 1000);
}
Typically it's a bad practice to call a function while inside a ISR function unless you know exactlly what side effects that
might cause. As I said have the ISR set a flag, test the flag in your loop function, call the tone function if true and then reset the flag variable. Life will be more consistent that way. ![]()