ISR

Ciao ragazzi, qualcuno di voi sa quanti cicli macchina sono necessari ad una chiamata a interrupt arrtraverso ISR(xxx_vect)??Perchè sto usando l'interrupt su un PWM e mi sto accorgento che qualcosa non va. Cioè sto usando un PWM a 250Khz con interrupt su overflow basso, e non riesco nemmeno a far cambiare stato ad una porta perchè sembra che la chiamata assorbe piu di di 32 cicli che sono poi il valore di IFRn.

Vi posto il codice

#include <avr/interrupt.h>

//Gestione PWMmode con frequenza base di 250KHz.

ISR(TIMER3_OVF_vect){
PORTE=PORTE | 0b00100000;
}
ISR(TIMER3_COMPB_vect){
PORTE=PORTE & 0b11011111;
}
void setup(void){
//impostazione TIMER3 per PWMmode
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
//Serial.begin(115200);

TCCR3A=0b00110000;
TCCR3B=0b00010000;
ICR3=32;
OCR3B=16;
TCNT3=0;
TIMSK3=0b00000101;
sei();
TCCR3B=0b00010001;
}

void loop(void){

}

Ciao Ragazzi, dalle prove che ho fatto mi sono reso conto che una chiamata a interrupt richiede intorno ai 20 cicli macchina.Volevo chiedervi se esiste un modo piu snello per la gestione degli interrupt?