(deleted)
What purpose does the interrupt serve?
If I got it correctly you want to detect at least 3 second long, uninterrupted button press. I would try to use a FALLING interrupt to start a 3 s timer and at the same time set the interrupt to RISING. If a rising edge is detected while the countdown is still active nothing will happen. If it isn't the LED will turn on.
I would take another approach. Keep the interrupt for falling edge and at every interrupt restart the timer. When 3s timer expires read the button pin. If it is LOW turn on the LED, otherwise do nothing.
(deleted)
(deleted)
Can we assume you are using the RTC to generate 1Hz signal to an atmega328 interrupt pin? If so, you don't need to connect the button to an interrupt pin, any digital input will do. During the RTC interrupt, read the button pin. If it is pressed for 3 interrupts in a row, perform the action.
If you are not using the RTC for interrupts, how will you know when the button has been pressed for 3s?
(deleted)
attachInterrupt(digitalPinToInterrupt(pwrInterruptPin), pushInterrupt, LOW);
With LOW the interrupt will fire continuously while the button is pushed which will very likely starve the rest of your program for CPU time. It is not an appropriate choice for a button.
(deleted)
nic1337:
...wake up the MCU from a SLEEP_PWR_DOWN... it should check that the button pressing is deliberate (at least 3 seconds), otherwise ignore the input.
Right now, your sketch can use millis() to check if the button has been pressed for 3 seconds. But in SLEEP_MODE_PWR_DOWN, how are you going to check that? This is why I asked if you were planning to use a 1s interrupt from the RTC.