Attiny 85 + PINT problemas

Hola buenas tardes. les quiero comentar un proyecto que estoy haciendo donde uso el Attiny85 como control de encendido en el cual me encontré con un problema al generar la interrupción ya que la interrupción la quiero hacer con un button de pulsador que se encuentre en el modo pulsado, y no que se sea solo un pulso.
La idea de esto es que el usuario mantenga pulsado unos segundos para detectar que el pulso es real y luego liberar energía hacia otro micro.

Probe varias formas pero no puedo hacerlo acá va el código.

#include <avr/sleep.h>
int PowerMicrosecundario = 0;

int led0 = 1;
int led1 = 3;
int led2 = 4;

int botondetect = 2;

boolean On = 1;
int Power __attribute__ ((section (".noinit")));
int contador = 0;

void PowerDown () {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
ADCSRA &= ~(1<<ADEN);      
sleep_enable();
sleep_cpu();
}

void sleep() {
  GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
  PCMSK |= _BV(PCINT2);                   // Use PB2 as interrupt pin
  ADCSRA &= ~_BV(ADEN);                   // ADC off
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement
  sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
  sei();                                  // Enable interrupts
  sleep_cpu();                            // sleep

  cli();                                  // Disable interrupts
  PCMSK &= ~_BV(PCINT2);                  // Turn off PB2 as interrupt pin
  sleep_disable();                        // Clear SE bit               

  
  ADCSRA |= _BV(ADEN);                    // ADC on

  sei();                                  // Enable interrupts
  } // sleep



void setup() {
Power = !Power;

//if (!Power) PowerDown();

pinMode(botondetect, INPUT);
digitalWrite(botondetect, 1);
pinMode(led0, OUTPUT);
pinMode(led1, OUTPUT); 
pinMode(led2, OUTPUT);
pinMode(PowerMicrosecundario, OUTPUT);
sleep(); 



}

void loop() {
if(digitalRead(botondetect) == 0){
switch (contador) {
case 0:
     digitalWrite(led0, On);                        
  break;
case 1:
   digitalWrite(led1, On);
  break;
case 2:
 digitalWrite(led2, On);
  break;
case 3:
digitalWrite(PowerMicrosecundario, On);
contador =0;


break;


  
default:
 break;
}
delay(2000);
contador++;
}


}

No entiendo la idea que persigues.
La interrupción sobre el botón para despertarlo?

Hi,
Segun tu explicacion esto fue lo que yo entendi que es lo que estas buscando. Lo que tu esta buscando s es una routina que te lee un switche que al estar cerrado y pase cierto tiempo vaya y ejecuta un trabajo. Segun lo expresado adjunto una rutina que te va permitir hacerlo. La rutina va a leer el switch y si esta cerrado por a tiempo designado va y ejecuta el trabajo asignado. Si abres el switch antes del timpo no hara nada. Mira ver si esto es lo que busca y tratalo para saber si te trabaja.

//******************************************************
void chk_switch_dur() {

  unsigned long switch_dur   =  millis() ;
  do {
    if ((millis() - switch_dur) > 1000) {
      //si la duracion del switch cerrado es mayor de 1000 millsec 
      //ejecuta la accion a tomar
      onoff_led();  //Ve ejecuta la accion 
    }
  } while (digitalRead(botondetect) == 0);
}
//*****************************************************