using external interrupt to wake up atmega8

hi everyone.
I'm trying to run a project using my standalone atmega8, which I burned bootloader on it earlier.
i use an external 16MHz osc.

when i use the following code, there is no problem :

/**************************************************

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "mdo1612";
int interruptPin0= 2;
int LED = 8;
int pinnum1 = 4;
int pinnum2 = 5;
int pinnum3 = 6;
int pinnum4 = 7;
int passcode1=1612206;
int passcode2=16120281;
int passcode3=16120282;
int passcode4=16120283;

void setup() {
pinMode(LED, OUTPUT);
//pinMode(interruptPin0, INPUT);
pinMode(pinnum1, INPUT);
pinMode(pinnum2, INPUT);
pinMode(pinnum3, INPUT);
pinMode(pinnum4, INPUT);
Serial.begin(9600);
radio.begin();
radio.enableAckPayload();
radio.setRetries(15, 15);
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.setDataRate (RF24_250KBPS);
// radio.setDataRate (RF24_2MBPS);
radio.stopListening();
attachInterrupt(digitalPinToInterrupt(interruptPin0), blink, FALLING);
}

void loop() {
// digitalWrite(LED,HIGH);
// delay(2000);
// digitalWrite(LED,LOW);
Going_To_Sleep();
// delay(2000);
}

void blink() {
sleep_disable();//Disable sleep mode
digitalWrite(LED,HIGH);
if (digitalRead(pinnum1)) {
radio.write(&passcode1, sizeof(passcode1));
// Serial.println("passcode1");
delay(50);
detachInterrupt(interruptPin0); //Removes the interrupt from pin 2;
}
if (digitalRead(pinnum2)) {
radio.write(&passcode2, sizeof(passcode2));
// Serial.println("passcode2");
delay(50);
detachInterrupt(interruptPin0); //Removes the interrupt from pin 2;
}
if (digitalRead(pinnum3)) {
radio.write(&passcode3, sizeof(passcode3));
// Serial.println("passcode3");
delay(50);
detachInterrupt(interruptPin0); //Removes the interrupt from pin 2;
}
if (digitalRead(pinnum4)) {
radio.write(&passcode4, sizeof(passcode4));
// Serial.println("passcode4");
delay(50);
detachInterrupt(interruptPin0); //Removes the interrupt from pin 2;
}
delay(50000);
digitalWrite(LED,LOW);
}

void Going_To_Sleep(){
sleep_enable();//Enabling sleep mode
attachInterrupt(digitalPinToInterrupt(interruptPin0), blink, FALLING);//attaching a interrupt to pin d2
// * The 5 different modes are:
// * SLEEP_MODE_IDLE -the least power savings
// * SLEEP_MODE_ADC
// * SLEEP_MODE_PWR_SAVE
// * SLEEP_MODE_STANDBY
// * SLEEP_MODE_PWR_DOWN -the most power savings
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_cpu();//activating sleep mode
// Serial.println("just woke up!");//next line of code executed after the interrupt
delay(50);

}


But when I change the last part in the Going_To_Sleep() function from set_sleep_mode(SLEEP_MODE_IDLE);
to :
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
my mcu goes to sleep and never wakeup again using external interrupt.

I was wondering if you guys could help me handle it .
thanks.

From the datasheet: only level interrupt INT1 and INT0 is available during power-down sleep mode.