ATmega8 does not wake up when sleep mode

Hi!

I’m trying to get to sleep some time my Atmega8 to same energy, so it does get to sleep but does not wake up! Can you help me please? Here is the code:

// for ATmega8 low power
#include <avr/interrupt.h>
#include <avr/sleep.h> 
#include <avr/power.h>
#include <avr/wdt.h>

//  sleep mode for ATmega8 low power
ISR(WDT_vect) {
 cli();
 wdt_disable();
 sei();
}
//  End sleep mode for ATmega8 low power

// Pin definitions
int myLed = 9; // Pin 9 for output LED
int SPEAKER = 9; // Pin 9 for output Buzzer

uint16_t count = 0;

// For the buzzer
#define SCALE     2.0  // You can change this to change the tone scale
int freq= 2500;
int timeInMilliseconds = 400; // Time of the beep in milliseconds, 400 ms is the standard but can be changed
  
enum IT {
  IT_50 = 0,  //   50 ms
  IT_100,     //  100 ms
  IT_200,     //  200 ms
  IT_400,     //  400 ms
  IT_800      //  800 ms
};





void setup()
{
      // setup sleep mode for ATmega8 low power

      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    
      // end setup sleep mode for ATmega8 low power
  
  
  // Set up the interrupt pin, its set as active high, push-pull
  pinMode(myLed, OUTPUT);
  //digitalWrite(myLed, HIGH); // Start signal
  // beep(SPEAKER,freq,400);    // output the tone to digital pin 0


} // end setup

void loop()
{  

        timeInMilliseconds = 10;      
        //pinMode(myLed, OUTPUT);
        beep(SPEAKER,freq,timeInMilliseconds);    // output the tone to digital pin 0
       
      delay(1000);
     
      // set sleep mode for ATmega8 low power

 myWatchdogEnable();
 delay(100);
 sleep_mode();
  wdt_reset();
                
}


// Functions for Sleep Atmega8
void myWatchdogEnable() {  // turn on watchdog timer; interrupt mode every 2.0s
 cli();
 MCUSR = 0;
 WDTCR |= B00011000;
 WDTCR = B01000111;
 sei();
}

// End functions for sleep Atmega8


// the sound producing function
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{   // http://web.media.mit.edu/~leah/LilyPad/07_sound_code.html
          int x;   
          long delayAmount = (long)(1000000/frequencyInHertz);
          long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
          for (x=0;x<loopTime;x++)   
          {  
              digitalWrite(speakerPin,HIGH);
              delayMicroseconds(delayAmount);
              digitalWrite(speakerPin,LOW);
              delayMicroseconds(delayAmount);
          }  
}

I’ve checked forums and AVR specifications but I don’t get the solution…
Thanks!